Is it possible to have dual firmware versions in the Unleashed?

Anything else that doesn't fit in the other more specific Forums
Unfoolishly
Posts: 293
Joined: June 24th, 2020, 2:43 am

September 11th, 2020, 3:32 pm

Hi All,

Is it possible to have dual firmware versions in the Unleashed, of which one is active and one is not active, but can be switched using the Unleashed App?
Why I am asking? Simple: if this is possible, you could work with a stable firmware version for working with the Unleashed/camera and a beta firmware version for beta-testing by users.

Sort of Dual-Bios like Gigabyte offers on their motherboards, but then for embedded devices.

It would be great to being able to swith between stable/current version and upcoming (beta) versions, also in the App. That way beta-testers can give feedback faster while still in development process.

Greetings,
Unfoolishly
Retired customer of the Unleashed. I have given up on this project, it's a never-ending story of bugs. Goodbye everyone!
Andy
Posts: 225
Joined: October 4th, 2018, 4:18 pm

September 11th, 2020, 4:00 pm

No, but you could have a separate beta app with beta firmware.
Andy
Firmware developer at Foolography
Unfoolishly
Posts: 293
Joined: June 24th, 2020, 2:43 am

September 11th, 2020, 4:59 pm

Andy wrote:
September 11th, 2020, 4:00 pm
No, but you could have a separate beta app with beta firmware.
That would be cool to have:
Fast ring Unleashed App + firmware (beta's + release candidate = beta testing version = fast updates)
Slow ring Unleashed App + firmware (release to manufacturer = customer version = slow updates)

Useful imho.

Greetings,
Unfoolishly
Retired customer of the Unleashed. I have given up on this project, it's a never-ending story of bugs. Goodbye everyone!
Oliver
Posts: 1127
Joined: October 9th, 2018, 4:17 pm

September 14th, 2020, 11:02 pm

Yes, that process already works.
Founder & CEO of Foolography, Hardware & Firmware developer.
Unfoolishly
Posts: 293
Joined: June 24th, 2020, 2:43 am

September 20th, 2020, 10:41 pm

Oliver wrote:
September 14th, 2020, 11:02 pm
Yes, that process already works.
Hi Oliver, Andy,

I am not sure we are on the same page? To be more specific: I was thinking like this: is it possible to have one firmware file embedded into the chip that contains two firmware versions, by which you can use the App to switch between these two versions anytime possible (switch inside the chip to execute a different piece of the code)? If that is not possible, you could have two types of Apps with a single firmware that can be updated in the chip. Like the process how it is done right now, but with a different (second) App that holds a new firmware version for beta testers and gets updated more frequently. But with the possibility to upgrade/downgrade from/to the firmware version of the other App. Like Unleashed App vs Unleashed Beta App.

It would be really great if you don't need an extra App but can ship two firmware versions in one App version both for the regular (non beta) users and for the beta users. Making the App switch between firmwares back and forth between regular and beta. That way the user can test out new features that may or may not work the way it is expected, and fall back on the regular version when needed for normal operations.

Have you already shipped a dual version firmware App update before?

Greetings,
Unfoolishly
Retired customer of the Unleashed. I have given up on this project, it's a never-ending story of bugs. Goodbye everyone!
Andy
Posts: 225
Joined: October 4th, 2018, 4:18 pm

September 21st, 2020, 10:04 am

While it is technically feasible to do what you're asking, it's not practical at all.

The firmware sometimes has changes that are not compatible with other versions of the app. For example, the upcoming version of the Unleashed breaks compatibility with every version of the app we've published until now, and we are still weighing if an effort for backwards compatibility is necessary.

It's easier to handle things if the app ships with the FW version that is compatible with it.
Andy
Firmware developer at Foolography
Unfoolishly
Posts: 293
Joined: June 24th, 2020, 2:43 am

September 21st, 2020, 2:13 pm

Andy wrote:
September 21st, 2020, 10:04 am
While it is technically feasible to do what you're asking, it's not practical at all.

The firmware sometimes has changes that are not compatible with other versions of the app. For example, the upcoming version of the Unleashed breaks compatibility with every version of the app we've published until now, and we are still weighing if an effort for backwards compatibility is necessary.

It's easier to handle things if the app ships with the FW version that is compatible with it.
Hi Andy,

I didn't know that the upcoming version breaks compatibility. That is a problem indeed.
To me this comes a bit as a surprise, because the BT interface doesn't change much (I assume), but the communication over the BT can change due to other commands between different designs. I was assuming that you can keep track within the App which communication commands each version of App can handle. Then you have decoupled the commands from the UI/UX, making it more flexible in terms of backwards compatibility.

Another thing is that you split the firmware delivery and App use into two separate Apps instead of one big App.
1) Unleashed App to control the Unleashed/camera.
2) Firmware App to upgrade/downgrade the firmware in the Unleashed.

That way you do not restrict yourself to wait for a new finished firmware update to be released with the next App update of the Unleashed App.
You can update the Unleashed App multiple times, without having to update the firmware too, and ship that with the Unleashed App.

If you want to update the Unleashed App because an iOS bug was discovered in the App itself, but the bug is not in the Android App, then you can release new App updates much quicker. Now customers have to wait very long before a new release is made which also bumps the firmware version to a new versionnumber. Imho is that not preferred: you can better detach the Unleashed App from the firmware (and likewise firmware App), some minor changes can be released quicker.

The latest firmware release is from April 2020 (5 months ago): https://www.foolography.com/products/un ... /firmware/
We all know that a lot of bugs have been fixed already and are ready for delivery.

I think it would be wise to separate the firmware and App updates in different Apps (Firmware App and Unleashed App), so you can have multiple updates independent of Unleashed firmware or Unleashed App. Only when you plan for a complete new architecture, a full package update (firmware+App) is the only option for delivery.

You do not need to update the Unleashed App when the Firmware App only updates internals of the Unleashed without breaking external interfaces (APIs).

Just my 2cts.

Greetings,
Unfoolishly
Retired customer of the Unleashed. I have given up on this project, it's a never-ending story of bugs. Goodbye everyone!
Oliver
Posts: 1127
Joined: October 9th, 2018, 4:17 pm

September 21st, 2020, 3:21 pm

Hi,
Unfoolishly wrote:
September 21st, 2020, 2:13 pm
I didn't know that the upcoming version breaks compatibility. That is a problem indeed.
To me this comes a bit as a surprise, because the BT interface doesn't change much (I assume), but the communication over the BT can change due to other commands between different designs. I was assuming that you can keep track within the App which communication commands each version of App can handle. Then you have decoupled the commands from the UI/UX, making it more flexible in terms of backwards compatibility.
Well, until now, we never broke compatibility until now. That's why this next update is taking a lot longer than all previous updates - we really need to get this one right, and it requires changes on every front, and they need to be tested in much more depth with to find any kind of issues with Firmware, iOS and Android.

Well, depends on what you call "Interface". We're changing a lot of Services and Characteristics, so that could be called Interface if you want. Anyway. I will not go into anymore details so no need to ask ;-)
But what we hope to achieve is to reduce the likelihood of reaching the undocumented limitations and bugs of the Android Bluetooth stack. This will also allow us to add functionality and features in the near and far future without having to fear known and unknown new limitations. We also expect to reduce the bugs that arise from the diversity of Android hardware and drivers out there.

Of course Bluetooth communication is decoupled from the UI in our apps, what Andy was talking about is that we will most likely not try to maintain two versions of this bluetooth communication "module" in our apps from here on out, just to be compatible with old firmware versions of the Unleashed, since we recommend for everyone to stay up to date anyway.

Nonetheless, aside from this one-time breaking change, we always had and will have possibility of releasing app versions fairly quickly with "just" a firmware update, and a beta app can have a different firmware set than the AppStore app. And we've done that several times in the past.
If you want to betatest new features, they'll usually need some UI changes too, so obviously you'll need two app versions, I don't see any reason not to stick with this method, so we'll stick with it for the time being.
Founder & CEO of Foolography, Hardware & Firmware developer.
Unfoolishly
Posts: 293
Joined: June 24th, 2020, 2:43 am

September 21st, 2020, 4:38 pm

Oliver wrote:
September 21st, 2020, 3:21 pm
Hi,
Unfoolishly wrote:
September 21st, 2020, 2:13 pm
I didn't know that the upcoming version breaks compatibility. That is a problem indeed.
To me this comes a bit as a surprise, because the BT interface doesn't change much (I assume), but the communication over the BT can change due to other commands between different designs. I was assuming that you can keep track within the App which communication commands each version of App can handle. Then you have decoupled the commands from the UI/UX, making it more flexible in terms of backwards compatibility.
Well, until now, we never broke compatibility until now. That's why this next update is taking a lot longer than all previous updates - we really need to get this one right, and it requires changes on every front, and they need to be tested in much more depth with to find any kind of issues with Firmware, iOS and Android.
Hi Oliver,
This makes me very curious what is cooking under the hood concerning the new architecture. It must be really a lot of changes. Is this new architecture mainly because of all the Android problems of the past, or is it also because of iOS? Or is it also because of more camera accessories are added to the product life cycle and the old archtecture could not provide extensibility the way it is designed right now?
Greetings,
Unfoolishly
Retired customer of the Unleashed. I have given up on this project, it's a never-ending story of bugs. Goodbye everyone!
Andy
Posts: 225
Joined: October 4th, 2018, 4:18 pm

September 21st, 2020, 5:09 pm

The new firmware is the result of addressing years of technical debt, building up the foundations for new, future features, and finally taking advantage of many small opportunities for improvements and optimizations that either provide better reliability or better performance.
Andy
Firmware developer at Foolography
Post Reply