Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 Software Version

    BNO055 Software Version


    Hi all,

    In the data sheet of the BNO055 certain fields in the register map (e.g. ACC_BSX_DRDY)  are marked to be only available with software version 3.14 and above.

    Which software version is this referring to? The firmware running on the MCU inside the package?
    How do I know which software version I am running on?


    Thanks for your help.

    31 REPLIES 31

    Community Moderator
    Community Moderator

    Dear user, thank you for your message. We gladly publish all publicly available information, but unfortunately we are not able to share the requested information within the community as it requires an NDA. If you need any further information on this topic, please get in contact with one of our official distributors or sales representatives to allow us to review each project on a case-by-case basis. If you are unable to share your company or project details with our official partners at this time, please use our contact form to submit your request and also refer to the question posed in the community.

    So is the final verdict here that firmware upgrade is impossible without either an NDA or buying a USB stick (which is no longer sold by DigiKey) and desoldering the chip from it? If so, that is ridiculous.

    An NDA shouldn't be required to be able to get a data ready interrupt out of an IMU, a simple feature that practically every other IMU on the market has. This chip is used by many hobbyists, like me, who likely won't get a response from your salespeople.

    I could see the firmware image itself being NDA-able (even though it is available through the DD software), but why is the method for programming a Cortex M0+ MCU secret?

    Additionally, is the firmware update procedure described here for updating the BNO-055 itself, or just for the USB stick's ATSAM3S MCU? I have some reasons to believe the "BNOinUSBStick_Vx.x.fwu3" file is for that MCU instead of the M0+ MCU in the BNO.

    BNOinUSBStick_Vx.x.fwu3 is the FW for USB stick not the FW for BNO055.   

    I attached BNO055 formal FW here. 

    You can get BNO055 shuttle boards,  then update FW via DD2.0,  then resolder on your own boards. 

    Thanks for the firmware! I was able to decrypt it using DD2.0 and upload it to a BNO055 on my own board using openOCD.


    Instructions for anyone who is interested:

    1. Create a .NET 4.0 Windows Forms app in Visual Studio 2019, and add BNO055.dll (and its dependencies) from your DD2.0 installation to the project. Create a dummy BNO055.FirmwareUpdate object, and feed in the firmware file. Something along the lines of

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    using System.Reflection;
    using System.IO;
    namespace BNO055
        static class Program
            static void Main()
                BSTSensors.CSAMN166 thing = new BSTSensors.CSAMN166();
                BNO055 bno = new BNO055();
                FirmwareUpgrade fu = new FirmwareUpgrade(thing, bno);
                var field = fu.GetType().GetField("_hexData", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
                byte[] hexdata = (byte[])field.GetValue(fu);
                File.WriteAllBytes(@"BNO_Firmware_0.3.2.0.hex.decrypted", hexdata);

    2. Patch this file by replacing the 0x00 padding at the end with 0xFF bytes, and moving the 0xAA55AA55 checksum to the end of the file.

    3. Connect an SWD debugger (e.g. Atmel ICE) to the target BNO055's SWDIO and SWCLK pins.

    4. Connect with openOCD and upload the new firmware to base address 0x4000.

    source [find interface/cmsis-dap.cfg]
    source [find target/at91samdXX.cfg]
    program BNO_Firmware_0.3.2.0.hex.decrypted.patched verify reset exit 0x4000


    Registers 5 and 4 should now read 0x03 and 0x20, respectively, for version 3.20.