Holybro RM3100 compass CAN update --> bricked?

Hi,
when I was connecting MissionPlanner (1.3.81) via USB to a CubeOrange (4.5.3) with a Holybro RM3100 compass (connected via “CAN 2”, working & calibrated), I received a message that there would be a new firmware for the compass and I should update.
I navigated to Setup → Optional Hardware → DroneCAN/UAVCAN. I clicked on MAVlink-CAN2, an my compass appeared on the list (HW version 4.64, SW version something with 1.5 or 1.6). Then I clicked on the Menu button and on “Update”, clicked “Yes” (search internet for update). A progress bar appeared with “fw.bin”, and the progress bar filled up. Then it closed and now my compass SW version is 1.0.0. The compass mode now is “MAINTENANCE” and health “OK”.
Additionally I get the messages “Compass not healthy” and “DroneCAN: Node 124 unhealthy”. Rebooted several times, tried the update several times, no change.
I guess it was not a wise decision to update the compass firmware. But is there anything I can do to make it work again…?

Let’s see if the holybro customer support can help here…

@Willa I have the same problem.
Did you manage to solve this issue?

Having the same issue here. I couldn’t see any documentation from Holybro on firmware for the device

I got some firmwares from Holybro. But nothing worked. They said, I need to connect the compass to a programmer (not ftdi or something similarly simple, but a proper µC programmer), that’s when I lost interest. I can’t recommend to use this compass at all after this experience.

Oh FFS, just done the same for a client’s aircraft. What utter rubbish this is. Surely they can release a .bin file to be manually uploaded.

I had exactly the same problem

Just heard they are aware there is a firmware issue and apparently working on a fix

What a pity that they didn’t tell me. I think I already throwed the RM3100 in the trash bin.

I’m working on this issue with Holybro. One of the Holybro engineers has reproduced the issue once and I’m hoping they will be able to send me an affected compass soon.
What I really need is to know the VSSC from the NodeStatus message when the compass is in the MAINTAINCE state. When in MAINTAINENCE it means it is stuck in the bootloader and refusing to boot the main firmware. There can be several reasons for this, and the reason code is sent in the VSSC field of NodeStatus. I need to know that reason code so I can know why it is refusing to boot.
Here is an example from a different DroneCAN compass:
image
If someone has an affected compass then please use the “Inspector” button in MissionPlanner to show that field (VSSC is “vendor specific status code”. If will be one of these error codes:
image
Note that I’m sure we can fix the issue, but I would like to know why the issue occurred before you fix it.
In the above example I deliberately powered off the device while updating the firmware. That is what led to it being in status 11 which is FAIL_REASON_BAD_LENGTH_APP. It is bad length as the application descriptor hadn’t been written yet when I power cycled it during the firmware update. The bootloader is staying in MAINTAINENCE state as it is waiting for the user to load a good firmware.
What I’m trying to determine is if this is a MissionPlanner bug where it loads a bad firmware, or an issue with this specific type of device where it loads a good firmware but it watchdogs. The VSSC will help me determine the cause.
Thanks!

btw, if someone has an affected compass in the bad state and you are on ArduPilot discord then please send me a PM and we can work on it together. It will likely be trivial to fix by loading the right firmware, no cabling changes needed or soldering needed. I just need someone to work with me to document the procedure and to determine how this happened.

The vendor_specific_status_code of my bricked device is also 11.

I am not on discord, but I am happy to let you access my computer via teamviewer with an attached FC and Holybro compass. I am usually available between 9 a.m. and 4 p.m. Berlin time.

Many thanks to @Luigiman54 for working with me to document a process for fixing these devices.
The process is as follows:
Step 1: Install DroneCAN GUI Tool
https://firmware.ardupilot.org/Tools/CAN_GUI/
Step 2: Download this firmware:
https://firmware.ardupilot.org/Tools/misc/HolybroG4_Compass/
the firmware name is HolybroG4_Compass_BL_Update.bin. This is a special small firmware meant for just bootloader update. We will use this to get the newer bootloader on the device then we can load the normal release firmware again.
Step 3: Use DroneCAN GUI tool to load that special bootloader update firmware


notice in particular that the Software Version of the bootloader (when in MAINTAINENCE mode) is 1.0. When we have successfully updated the bootloader it will be 2.0
When you have loaded this firmware the board will show as OPERATIONAL, but it won’t have a compass. This is because this bootloader update firmware has compass support removed to make the firmware smaller.
Step 4: Fetch parameters using DroneCAN GUI tool and then set FLASH_BOOTLOADER to 1
image
image
Step 5: power cycle the device and then use DroneCAN GUI tool to load the latest stable AP_Periph.bin from here: ArduPilot firmware : /AP_Periph/stable/HolybroG4_Compass
image

You should then have a fully working compass again

1 Like

you saved my compass! Good job and really thanks you for your work.

1 Like

Hi, can someone explain how to get to the “Node properties” of the DroneCAN tool?
No matter what COM port I connect to, I only see node 10. And setting a local node ID (whatever this means) also doesn’t change anything. Please see the attached screenshots.
In mission planner, I can see the compass, but in the DronecanGUI, I can’t (but I also have no clue where to click).


dronecangui_starting

Ok, found that there is a small box where you can enter a “bus number”. This apparently tells the tool to which connector your compass is connectoed to. I had to set it to “2”.

1 Like

Note that you can do all these steps with MissionPlanner, but I suspect the MissionPlanner firmware upload is not fully reliable yet which is why I showed the steps with DroneCAN GUI tool

Thanks @tridge , this save my comapss