Alex Rechen is RepOne's Coach of the Month
Firmware 0.7.15 Update
Huge new firmware upgrade coming to all RepOne Sensors
In short, it’s the most comprehensive improvement in RepOne Sensor reliability since 2019. The firmware update is available now in the settings tab of the RepOne Personal app. Read the summary here and more below if interested in the nuts and bolts.
Changes in Firmware Version 0.7.15
- All of our measurements made using RepOne Sensor are significantly more reliable in this firmware version. In short, a bug at the silicon level in the microcontroller we use caused an issue that in some rare cases reduces range of motion by one to two inches. In very rare cases it would cause reductions of 10+ inches, which we would catch during QC and not ship. The fix we implemented erased the issue, and actually slightly improved reliability even further across all units.
- Huge upgrades in Over The Air Firmware Updates. Faster uploads and fixes device incompatibility for some iOS versions, Samsung Galaxy devices, and more. These upgrades take effect after the upgrade to 0.7.15, since the firmware you’re currently running is the one affected by the issues.
- Battery charge indicator (the little lightning bolt) now displays over the low battery screen to indicate compatibility with charger.
- Reduced the amount of time it takes from switching on to being able to record the first rep.
- Fixed some low power issues that allow the device to last longer in light sleep mode (between five minutes and 20 minutes of inactivity) and deep sleep (20+ minutes of inactivity).
- Big stability upgrade to all bluetooth functionality. Fixes several disconnect bugs, rare lost reps, increases communication speed, and is more fuel efficient.
- A lot of work done that we can’t really talk about now. Scant details added below.
Measurement quality improvement
At RepOne, measurement validity is king. We’re the only company anywhere near our price point that individually hand calibrates each one of the devices we ship. You can likely understand why we were pretty concerned that a mystery bug caused about 3% of RepOne Sensors to fail quality control since the very first batch. We disaffectionately called this the ‘encoder bug’. We were able to sequester the electronics that were impacted since we do this thorough hand calibration, but over time that 3% accumulated to significant loss. On top of that, we noticed some repairs came back to us with an issue reminiscent of the encoder bug, but to a lesser degree.
It’s no secret that we have been through a grand total of five firmware developers in under three years. This is primarily due to pandemic-related chip-shortages and huge companies hiring these developers left and right to develop for replacement components. This has caused huge delays to things like 3D sensing features (which are still coming), but it allowed new perspectives on existing issues. We’re lucky that our current engineer, Matej, noticed a note in a support document written by Espressif, the company that makes the brains of our electronics, that described a problem that causes the exact symptoms we were experiencing.
If you speak tech and you’re a bit of a masochist feel free to read along, otherwise skip to the next paragraph. Basically we used simple hardware interrupts to measure when our encoder sent measurement signals. The microcontroller used those interrupts to stop everything it was doing, note the time, and then continue on running other code. It turns out Espressif had a silicon level bug where if more than one interrupt (our encoder uses two) is on the same group of pins, there’s some stochastic probability that one of the encoder counts will be missed. That resulted in about a 3% occurrence rate, and it grew slowly over time, affecting units in the field. Luckily the fix was to use a counter peripheral instead of hardware interrupts, meaning we could deploy it to all units ever shipped, we would just need to overhaul how we measure our metrics.
Skipped the last paragraph? We don’t blame you. We don’t even judge you. You’re living in your zone of genius, and we can respect that.
At the end of the day we redid how we calculate our metrics and the issue is gone forever, and our firmware is much better for it. Most users will see no noticeable change. If you do notice a difference, it could be some confirmation bias but it could also be improved measurements. Your original calibration is still valid, so the new calculations will bring all units back to the original standard of accuracy and reliability.
OTA firmware update improvements
One of the largest investments we made in RepOne Sensor vs OpenBarbell (the open source device we made back in 2016) was a very custom Over The Air Firmware Update system that works through Bluetooth. No clunky direct WiFi connection and SSID/password sharing, just hit a button in settings and off you go. Our early version of this system left some things to be desired, including some mobile device incompatibility, frequent 0% progress errors, or dropped connections.
As it turns out, a lot of that was due to the bloated Bluetooth framework used by default in our development environment. We decided to switch to a library called NimBLE, which significantly reduces file size, increases speed, and reduces the occurrence of a lot of the bugs we were experiencing. It does this by removing a lot of Bluetooth Classic functionality that we never use, as we use what’s called Bluetooth LE.
What this means is for 0.7.15 and on, all bluetooth functionality will experience speed, reliability, and battery use improvements. OTA updates will be faster, less error prone, and will be compatible with more mobile devices *after* this update. Unfortunately we can’t improve the firmware that’s currently on your RepOne Sensor, so if you have mobile device that isn’t compatible with our OTA updates, you’ll have to borrow a phone one more time before it’s hopefully fixed for good.
Nothing major to expand upon here. The bullet points above include the remaining issues we fixed in this firmware version. Some battery indicator stuff, boot time, and low power improvements round out this release.
We can’t talk a lot about what we’re working on that follows 0.7.15, but we really want to. Basically, we’ve been working on a version 0.8 almost the entire duration of the development of this firmware update that’s going to change a lot of what you know about RepOne. Some changes we included in the list above were required before we could work on 0.8, and we also included some secret things in 0.7.15 hidden deep in the code. If 0.7.15 was all quality of life, reliability, and under the hood improvements, 0.8 is the opposite. I’ve already said too much, but if you’re reading this far then you deserve a nice treat.
Thanks for reading, and if you haven’t already go ahead and hit that button and update your firmware. We love nothing more than to keep delivering value to our customers, even our day 1’s. More things to come.