Today, we announce the official launch of BloxOsLite, a lightweight new software designed to add VLANS, link aggregation, and other network management features to UbiSwitch. This will enable customers to use network management on the UbiSwitch.
Previously no network management was available on UbiSwitch
BloxOsLite addresses this challenge by offering an expanding suite of features, including:
VLANs
Link Aggregation (LAG)
Port status/auto-negotiation
These features will help answer the most common customer requests for management that we get for the UbiSwitch meaning customers will no longer be required to reach out to us for custom-made firmware.
We are also working on more features to be released soon to BloxOsLite including QoS (Quality of Service stack) and much more. The firmware comes with a bootloader which you can use to upgrade the application over UART when deployed in the field, meaning that you wonât have to rely on flashing firmware over JTAG.
More to come in the future
BloxOsLite currently only runs on UbiSwitch revision B. We are currently developing new revisions of the SwitchBlox Industrial and GigaBlox Nano, which will be compatible with BloxOsLite.
We are aware that customers who want more advanced networking features, such as multicast querying or STP, BloxOsLite may not be the correct solution for you. However, we already have a plug-on board for SwitchBlox Rugged, called RuggedSOM, which you can try. Its software is still considered in beta and is features/bugs are being actively developed.
Congrats to the release! Iâm glad to see you decided for MIT license. Can I already somehow access the sources? Iâd like to get inspiration for our Rev A firmware if thatâs possible.
We seem to need your assistance getting the UbiSwitch CLI up running.
Using STLINK-V3SET we managed to download âzephyr.hexâ and âzephyr.signed.confirmed.hexâ, the latter file with option âSkip flash erase before programingâ enabled. Both files downloaded and verified successfully.
Then your instruction say: âPower cycle the board and wait for the boot LED to turn off. You are then able to open a serial console into the CLI over UARTâ.
What is the correct com port settings (baudrate, data bits, parity and stop bit)?
We also tried to use the mcumgr-client to download âzepyr.signed.confirmed.binâ but we ended with an Error: rc = 3
On licensing, I apologize if Iâve added confusion with the licensing - Iâll clear it up here. We went with MIT licensing for the released binaries to dispel any hesitation to integrate our product into designs that may be sensitive to licensing. We wanted to encourage permissive use.
In terms of the source code, publicly releasing this isnât something we feel good about doing for three key reasons. (1) Whilst weâre going to add features and fix bugs on BloxOsLite, accepting PRs from others isnât something I feel I can manage at this stage (maybe that will change once we begin expanding the team). (2) We want to protect our hard work. Finally (3) we know that customers may want particular firmware created (indeed, that was what youâre asking for!), we actually already have an internal BSP layer that weâve been using for customers up until now. Producing custom firmware is already something we can do. BloxOsLite makes this BSP layer pretty much irrelevant for most customer use cases going forward though.
As an aside, you mentioned UbiSwitch Rev A. This would be very unlikely to run any application similar to BloxOsLite (especially with a bootloader / built with the same framework as BloxOsLite). The MCU onboard is simply too small (flash and RAM). Instead, weâve made use of the aforementioned internal BSP layer to create custom firmware, which has worked rather well for customers. If that isnât suitable, Iâm very happy to offer my suggestions as to what you can do and where to look to produce your firmware.
Re. UART - Iâve updated the docs with the relevant UART configuration - 115200 8N1 are the parameters (115200 bps, 8-bit characters, no parity check, 1 stop bit).
Regarding mcumgr-client usage, Iâm curious about when you attempted to list the images, it sent an empty array back. Youâre meant to get back the image hash.
Are you sure this board was programmed with the application in your earlier step in STM32CubeProgrammer? I didnât need to select âSkip flash erase before programmingâ for either the bootloader or the application.
Iâve programmed the two files, first zephyr.hex then zephyr.signed.confirmed.hex, which you updated two days ago. Their filenames are still not âbootloader.hexâ and âapp.hexâ after I download the files (but this shouldnât matter, should it?).
And yes, I did also try programming both files without selecting âSkip flash erase before programmingâ. But still, the array remains empty.
Also, erasing the STM32G07 Flash Memory before programming the two files didnât help much.
Looking at the Flash memory listing inside STM32CubeProgrammer after programming the two files I find code in the following memory locations:
I just tested with exactly your bin dump (so we have a like-for-like comparison) and still managed to list the image hash and perform an upgrade. So Iâm thinking there may be an issue with using mcumgr-client on Windows (I swap between Linux and macOS during development myself). Even though its documentation does state it can work on Windows, it may be worth trying another MCUmgr client. One Iâve used before is mynewt-mcumgr-cli (see here). Iâll outline the steps below.
Install the tool (requires go>=1.18):
go install github.com/apache/mynewt-mcumgr-cli/mcumgr@latest
The only way I could replicate this is if I did not program the app.hex file with STM32CubeProgrammer but even in that scenario, I was still able to upload the app_dfu.bin to the image slot.
Just tried the same setup on Windows with STM32CubeProgrammer and Tera Term and I managed to boot the application and perform an upgrade so can rule out the operating system.
A couple of general things to check:
Have you tried this on only one UbiSwitch revision B? In order to rule out if this is due to a faulty board, if you have other UbiSwitch rev B, it would be good to try them.
Have you checked your USB-UART connection wiring? RX, TX and GND connected securely to the signals on UART header J18
You could leave the MCUmgr upgrades for now and just let the board boot after programming it to application (as would be the case normally if there were no upgrades). You can then open a serial console using Tera Term and use the application as normal. It would be good to get the MCUmgr upgrades working for your setup but at least it could unblock you in the short term.
Good to hear this works with Windows. Unfortunately, this means Iâm doing something wrong on my end. Hopefully we can sort out what this is in todayâs afternoon meeting.
Considering the fact that âapp.hexâ resides in the memory area above address 0x08010000, in other words above 64 kBytes, there is no room for âapp.hexâ on this 64kByte version of the chip.
I guess I need a UbiSwitch with the 128kBytes device version is required for this to work.
Thank you for bringing this up. It has occurred that the UbiSwitch that you received had the 64Kb MCU, rather than the 128Kb MCU as intended. Weâre working to resolve this with the manufacturer but in the meantime, Iâve made a new release, v0.1.1, with new instructions on programming for 64Kb UbiSwitch.
Note that this only affects customers who have UbiSwitch with the 64Kb MCU who want to use BloxOsLite; all future UbiSwitch Rev B boards are going to have the 128Kb MCU and hence can follow the bringup outlined before.