Hey Everyone, Ryan again. We’ve been really busy since the last update. Things are moving along well. I wanted to fill you in on some of the things we've been working on.
We received more requests for Nikon D850 support than any other camera. We managed to get one in a few weeks ago. Everything worked great (with no changes on our part), so we added it to the list of supported cameras. We haven’t been able to get the A7Riii in yet, but since the A9 and A7Rii both work, I’m very confident the A7Riii will work also. We’re scheduled to get one in a few weeks from now, but sometimes those rental dates get pushed back (as happened with the D850), so we’ll see. Hopefully we can get one in soon and add it to the list.
Phillip and I just got back from a trip overseas to work with some of our vendors. The trip went really well. We’re fortunate that Arsenal is a fairly simple product, but it still takes a ton of coordination to get everything together for production runs. Major thanks to Phillip for handling most of the back and forth.
Some of our custom USB cables for the beta run
Rubin (our mechanical engineer) has been working hard on our enclosure. The enclosure has been through more iterations than we expected, but the changes we’ve made have really improved the product. Creating a case that fits together perfectly, is strong and durable, looks good, is easy to manufacturer, and easy to assemble takes a lot of changes and testing. Working on tooling for injection molding is a long cycle. Thanks to Rubin for pushing hard on things. In this last iteration, we made a few changes to improve the electrostatic discharge protection.
Our training set has expanded quite a bit over the past few months. While this doesn’t increase our neural network’s model size, it does increase our image feature/settings database size. Fortunately, I was able to make some big changes to the way we store the images and we now have quite a bit more RAM available to other parts of the code. Not the most exciting change, but it improves performance in a lot of other areas.
We’ve been spending some time lately working through the way Arsenal handles various edge cases on different cameras. A lot of these issues involve when a camera battery is dying or when the usb connection is unplugged/turned off in the middle of operation (For example, some cameras disable the USB connection when a battery is below 5%, but the camera will still run). Knocking these issues out takes a bit of grunt work on our part, but makes for a better experience.
Arsenal runs Linux under the hood. We’ve been spending quite a bit of time lately working on bringing some control features into our Linux kernel. We wanted some features from a more recent version of linux, but our processor shipped with an older version. (Which is really common, since the processor vendors tend to fork Linux when they start developing a processor. That means when the processor is released, the Linux version is usually at least three or four years behind.) We only need a few features brought over from the older kernel, but it’s taken a bit of time. These features mainly revolve around exposing the power management system to linux, so it can better handle frequency and voltage scaling and give us a better look into the cpu thermal performance.
Ben finished up the software side of the firmware update process this week. Having code that runs on both a device and in an app presents some interesting challenges when it comes to firmware updates. The main things we tried to balance were:
As software developers, ideally you want it so both the app code and device code are always on the same version. Trying to make app code and device code run different versions results in a complex matrix of version interactions that’s best avoided. The solution here is to make sure app and device code always run within the same version.
On past projects I’ve done, I’ve noticed there’s usually a small group of users who hate firmware updates. (Having been burned by failed updates in the past), so we were hoping to make it so users could maintain a version if they really wanted. The challenge here is that apps auto-update on some devices.
Since some phones are set by default to auto-update apps, we need the device code to update with the app.
The last point is the one we haven’t solved yet, but it’s something I want to figure out before we ship. As an aside, I own a drone from a popular drone maker. A few months ago I drove out to a small lake very far “off the beaten path.” I got the drone out, went to connect to it from my phone, then the app on my phone told me that I needed to update the software on the drone. Unfortunately, I was nowhere near cell service. The app wouldn’t let me connect without connecting to the internet. So I had to drive 30 minutes back until I got cell service, then another 30 minutes back to the lake. All in all this was a pretty bad user experience and something we would like to avoid.
We’re still trying to figure out a good solution to this problem. We need the update to be downloaded to the phone and ready so when you first connect to Arsenal we can push the update. For smaller updates we can include the device firmware update file in the app. Unfortunately, we can’t free that space after the device updates. That’s not a big deal for code updates, but for AI model updates thats a lot of wasted space. (~200Mb) Another option is to implement background fetch, to check for updates and download the update.
Anyway, probably more info that you wanted to know about our firmware update process. We’re planning to have lots of updates even after we ship, so we want to make sure our update process is solid and provides a good experience for our users.
Corey has been spending most of his time lately tracking down some bugs. Not the most exciting thing ever, but I’m glad he’s working hard on it.
Now that our packaging dies are close to finalized, we’ve started working on the packaging design. (There is lots of weird laws about packaging we’ve been spending time on to make sure we’re in compliance)
We’ve been celebrating our Thanksgiving holiday here in the states this past week, and we’ve been talking a lot about the things we're thankful for. I've hired a few people in my life. For whatever reason they tend to be either really good or... let’s say not so good... at their job. This year I've been fortunate to find a few great new employees and bring on a few great people I've worked with in the past. It's been awhile since I’ve worked on a project at this scale and I'm really grateful for the current team.
I’m also really grateful for the community that is starting to form around Arsenal. Thanks to everyone for the encouragement and kind words.
P.S. Here’s some shots from a recently testing (wildlife and portrait.)