Trying to update Sofar Spotter and Dev Kit and having trouble

Trying to update Sofar Spotter (from v2.15.1 to v2.15.6 THEN to v2.16.4) and Dev Kit (v0.11.1 trying to go to v0.13.5) and I’m having a lot of trouble. I tried going with the SD card and renaming the file like the README said:

But I got these errors in the Spotter serial port:

I think it may be because I don’t have the bootloader (MCUboot?) so I’m attempting to install it following this guide: bm_protocol/src/apps/bootloader/README.md at develop · bristlemouth/bm_protocol · GitHub

and I’ve made a directory

But I’m really unsure what to do from here.

This is what I am trying to install to the Dev Kit becuase when I tried to update the spotter first I got an error that I think said something like update the Dev Kit. How do I install the bootloader to make updating the Dev Kit possible? And how should I best go about updating the spotter, because I read that I need to update it through another version before I get it up to date. Any help is appreciated!

Hi there I’m sorry that you ran into an issue updating the firmware. It can be very tricky.

It looks like your target versions are the right ones. But before diving into your questions it may be best to reset and try fresh to identify where the most valuable next step we can help you might be. Generally it’s best to do it in this order:

Update the Dev Kit mote by putting the image you want on the Spotter SD card and using Bristlemouth. Pay special attention to the target node ID so you don’t accidentally flash the bridge instead of the dev kit. Also pay special attention to right binary file, each one is used for a different update process (sd card versus other methods) Notion

If that doesn’t work you can try to use DFU-Util. Notion

If you are unsuccessful here, let me know and we’ll dig in on this.

Next, you’ll want to update the Bridge. This is the board inside the electronics box on Spotter that is also the Bristlemouth Mote internal to the Spotter. This can be the most difficult part. As before try the method via the SD card first and if that doesn’t work you can try the alternative methods: Notion

If you run into issues here please let us know and we can outline some of the steps you referenced above in more detail.

Then and only then attempt to update the Spotter main deck through the normal methods shown here: Notion

@clarak you’re doing great, and those file opening errors are actually expected. TLDR: just continue with the upgrde steps! Once everything is up-to-date the errors will go away. No need to update the bootloader unless you want to.

I understand that it’s easy for the release notes to lose visibility over time, but check out the release notes for v0.12.0 which was released in October 2024. These errors are related to the main breaking change between the v0.11 line and v0.12 line.

The main notable snippet is this:

BREAKING CHANGE: Requires Spotter firmware v2.15.2 and above!

If you use Bristlemouth modules v0.12.0 and above with a Spotter on v2.15.1 or below, then data will NOT be written to files in the bm folder, and you will see lines like this in the Spotter USB serial terminal:

"/bm/2b64cf4c62a575a0/.power.lo" Error opening file after 4 retries [6]
/bm/2b64cf4c62a575a0/.power.lo LOG Error re-opening file /bm/2b64cf4c62a575a0/.power.lo [6]

Thank you for your help! I was able to get the Spotter to v.15.6 using dfu-util. But right now the serial for the dev kit looks like this: It’s missing the rtc, is this something I should be worried about?

and the dev kit prints this information with “info” that I think it is updated to v0.13.5

Once both were updated the serial from the spotter looks like this:

And now I’ll update the bridge through the SD card. Is this the right release to download for it? And what do you mean by not accidentally flashing the bridge instead of the dev kit?

Screenshot 2026-01-21 at 11.35.42 AM

I’m also sure I renamed the correct file that I put on the SD card correctly.

I think I’ve only done two updates, one using the SD card on the spotter to the Dev Kit, and one updating the spotter through dfu-util.

How many more of these updates do I need: Notion

It looks like there are Bristlemouth modules, Spotter Bristlemouth Bridge, and the Spotter Main processor. How do I find the node ID of the bridge?

I have these two right now:

And I want to also see data from a temperature sensor show up on https://spotter.sofarocean.com/ but it says the most recent data was received two years ago. How can I send data online again?

Hi @clarak — are you using your system indoors? If so, the Spotter probably does not have a GPS fix. It needs GPS to measure waves, know its location, and to calibrate its realtime clock.

Please see the section of the documentation here: Notion - you can see how to access data that was measured without a GPS fix, by using the raw-messages API.

If you would prefer to engage in a full test, then you can please leave the Spotter outdoors, powered on, in RUN mode, with a clear 360° view of the horizon, for ideal GPS connectivity. Allow the Spotter to run for 3-5 hours, so it can complete multiple wave samples (which by default are transmitted each hour). Do not reboot or otherwise manipulate the Spotter during this time period.

You will also need to ensure the Spotter has active telemetry subscriptions - I would recommend having both cellular and Iridium satellite available while testing on land.

I just tried updating the spotter to v2.16.4 using the usb update instructions in the readme in sunflower_v3.3-spotter_bm-v2.16.4 and now it looks like this:

and the messages continue like this:

2026-01-21T20:48:59.093Z [SYS] [INFO] Upper Deck HW Version: 02

2026-01-21T20:48:59.093Z [SYS] [INFO] Bootloader Information:

Version: v2.16.4

SHA: 47F628CF

Signature support: 1

Encrytion support: 0

Swap Type: NONE

2026-01-21T20:48:59.105Z [BRIDGE] [INFO] Bridge Enabled

2026-01-21T20:48:59.273Z [GPS] [WARNING] TXT: ANTSTATUS=OK

2026-01-21T20:48:59.406Z [ORC] [INFO] Iridium modem enabled

2026-01-21T20:48:59.429Z [SYS] [INFO] Iridium IMEI: 300534064523610

2026-01-21T20:48:59.445Z [IRI] [INFO] ATI0 - 2400

2026-01-21T20:48:59.464Z [IRI] [INFO] ATI1 - 0000

2026-01-21T20:48:59.476Z [IRI] [INFO] ATI2 - OK

2026-01-21T20:48:59.492Z [IRI] [INFO] ATI3 - TA21004

2026-01-21T20:48:59.515Z [IRI] [INFO] ATI4 - IRIDIUM 9600 Family

2026-01-21T20:48:59.531Z [IRI] [INFO] ATI5 - 8816

2026-01-21T20:48:59.546Z [IRI] [INFO] ATI6 - 1QH

2026-01-21T20:48:59.574Z [IRI] [INFO] ATI7 - BOOT07d4/9602NrvA-D/04/RAW0d

2026-01-21T20:48:59.593Z [IRI] [INFO] AT+CGMI - Iridium

2026-01-21T20:48:59.625Z [IRI] [INFO] AT+CGMM - IRIDIUM 9600 Family SBD Transceiver

2026-01-21T20:48:59.648Z [IRI] [INFO] AT+CGSN - 300534064523610

2026-01-21T20:48:59.699Z [IRI] [INFO] AT+CGMR - Modem DSP Version: 1.7 svn: 2358

2026-01-21T20:48:59.714Z [IRI] [INFO] AT+CGMR - DBB Version: 0x0001 (ASIC)

2026-01-21T20:48:59.730Z [IRI] [INFO] AT+CGMR - RFA Version: 0x0007 (SRFA2)

2026-01-21T20:48:59.738Z [IRI] [INFO] AT+CGMR - NVM Version: KVS

2026-01-21T20:48:59.765Z [IRI] [INFO] AT+CGMR - Hardware Version: BOOT07d4/9602NrvA-D/04/RAW0d

2026-01-21T20:48:59.789Z [IRI] [INFO] AT+CGMR - BOOT Version: 2004 TD2-BLB960X-27 R4710

2026-01-21T20:48:59.792Z [ERR] [INFO] IridiumErrorState changed from N/A to OK

2026-01-21T20:48:59.792Z [ORC] [INFO] Iridium modem disabled

2026-01-21T20:48:59.816Z [ERR] [INFO] Visibility LEDErrorState changed from N/A to OK

2026-01-21T20:49:00.230Z [BRIDGE] [ERROR] Bridge RX Processing Packet Failure: -6

2026-01-21T20:49:05.238Z [SYS] [WARNING] New lowest heap size: 112720

2026-01-21T20:49:05.402Z [BRIDGE] [ERROR] Bridge RX Processing Packet Failure: -6

2026-01-21T20:49:05.531Z [MS] [INFO] Notecard powered on!

2026-01-21T20:49:05.531Z [MS] [INFO] Notecard enabled successfully

2026-01-21T20:49:05.574Z [SYS] [INFO] Notecard IMEI: 860322060426993

2026-01-21T20:49:05.574Z [SYS] [INFO] Notecard sku: NOTE-WBNA-500

2026-01-21T20:49:05.574Z [SYS] [INFO] Notecard Board Version: 1.11

2026-01-21T20:49:05.574Z [SYS] [INFO] Notecard Firmware Version: notecard-4.2.1.4015688

2026-01-21T20:49:05.578Z [MS] [INFO] Removing old notecard tx messages

2026-01-21T20:49:09.101Z [BRIDGE] [INFO] Requesting self test

2026-01-21T20:49:09.101Z [BRIDGE] [DEBUG] Self test attempts remaining: 3

2026-01-21T20:49:09.101Z [BRIDGE] [DEBUG] Self test request sent

2026-01-21T20:49:09.109Z [BRIDGE] [INFO] Self test result from 069df48c315932ee - 1

2026-01-21T20:49:09.109Z [ERR] [INFO] bridgeErrorState changed from N/A to OK

2026-01-21T20:49:09.109Z [BRIDGE] [INFO] Self test successful

2026-01-21T20:49:09.199Z [BM_DFU] [INFO] Bm bridge dfu init complete

2026-01-21T20:49:09.199Z [BM_DFU] [INFO] Transitioning to state: idle

2026-01-21T20:49:09.210Z [MS] [INFO] Checking for update (and clearing successful one!)

2026-01-21T20:49:09.230Z [ERR] [INFO] CellularErrorState changed from N/A to OK

2026-01-21T20:49:09.906Z [MS] [INFO] Entering Transmit cellular state.

Neighbor information:

Node ID: 069df48c315932ee

VID: 0000 PID: 0000

Serial number 0000000000000000

GIT SHA: 5E42D19B

Version: 0.12.4

HW Version: 0

VersionStr: bridge@v0.12.4

Device Name: 203538484d305010004d0041

2026-01-21T20:49:15.238Z [SYS] [WARNING] New lowest heap size: 111464

2026-01-21T20:49:47.773Z [ERR] [INFO] GpsErrorState changed from NO_SIGNAL to OK

2026-01-21T20:49:47.804Z [MS] [INFO] Added message(id: 0 len: 170) to queue MS_Q_LEGACY: (1)!

2026-01-21T20:49:47.804Z [MFLT] [INFO] Sending memfault message!

Message: Current bit offset: 134

Rounded bit offset: 136

New bit offset: 712

2026-01-21T20:49:47.804Z [MS] [INFO] Added message(id: 1 len: 89) to queue MS_Q_LEGACY: (2)!

2026-01-21T20:49:47.804Z [MFLT] [INFO] Message 1 added to queue.

2026-01-21T20:49:47.808Z [MS] [INFO] Added message(id: 2 len: 37) to queue MS_Q_LEGACY: (3)!

2026-01-21T20:49:47.808Z [ERR] [INFO] OrchErrorState changed from OK to SCHEDULE_SAMPLE_ALIGNMENT

2026-01-21T20:49:47.812Z [MS] [DEBUG] Has message 0 expired? queuedTime: 52814, now64: 52821, remaining: 86399993

2026-01-21T20:49:47.812Z [MS] [DEBUG] Sending legacy messages to Notecard.

2026-01-21T20:49:47.835Z [MS] [DEBUG] Notecard is 4.000000 pct full.

2026-01-21T20:49:47.835Z [MS] [INFO] Queuing message 0 2000FB10

2026-01-21T20:49:48.191Z [MS] [DEBUG] Has message 1 expired? queuedTime: 52816, now64: 53200, remaining: 86399616

2026-01-21T20:49:48.191Z [MS] [INFO] Queuing message 1 200225D0

2026-01-21T20:49:48.242Z [MS] [DEBUG] Has message 2 expired? queuedTime: 52817, now64: 53252, remaining: 86399565

2026-01-21T20:49:48.242Z [MS] [INFO] Queuing message 2 20023AB0

2026-01-21T20:49:48.285Z [MS] [INFO] Setting GPS coordinates lat:37.834465, lon: -121.950493

2026-01-21T20:49:48.351Z [MS] [DEBUG] Attempting to Sync.

2026-01-21T20:49:48.363Z [MS] [DEBUG] Waiting for TX

2026-01-21T20:49:48.453Z [SYS] [WARNING] Logging queue hit new lowest ever spaces available. Dropped from 236 to 233 out of 256.

2026-01-21T20:49:55.230Z [SYS] [WARNING] New lowest heap size: 103272

2026-01-21T20:49:59.070Z [GPS] [INFO] Max CNO changed from -1 to 42

2026-01-21T20:50:05.230Z [SYS] [WARNING] New lowest heap size: 103072

2026-01-21T20:50:15.226Z [SYS] [WARNING] New lowest heap size: 102520

2026-01-21T20:50:25.226Z [SYS] [WARNING] New lowest heap size: 101944

2026-01-21T20:50:35.222Z [SYS] [WARNING] New lowest heap size: 101912

2026-01-21T20:51:00.250Z [BRIDGE] [ERROR] Bridge RX Processing Packet Failure: -6

2026-01-21T20:51:00.250Z [BRIDGE] [INFO]

Processing Packet Stats:

Packets Received: 6

Dropped Packets: 0

Max Processing Time: 1ms

Max Processing Message Type: 2

2026-01-21T20:51:05.238Z [BRIDGE] [ERROR] Bridge RX Processing Packet Failure: -6

2026-01-21T20:52:05.238Z [BRIDGE] [ERROR] Bridge RX Processing Packet Failure: -6

What did I do wrong? How can I get it printing data again?

@clarak it looks like you may have flashed the wrong application onto the Bridge.
The correct application to flash is the following:


Not the aanderaa_release-v0.13.9.zip file you pointed out.
You will now have to go through a manual process of updating the bridge utilizing dfu-util.
Let me get back to you with a step by step guide on how to update the bridge application while it is in this state.

@clarak, the following is a step-by-step guide to recover your bridge:

  1. Remove the Spotter ebox from the hull and attach a Micro-USB cable to the bridge, the following is a guide on how to access the Bridge’s USB connector. Make sure the USB is connected to the Bridge and your computer before continuing to the next step.
  2. Power on spotter with a USB cable attached, and wait ~120 seconds for the device to initialize and be in a ready state for the next step
  3. Access the Spotter’s serial console as you have been doing and execute the following command gpio set 3v3_bridge_en
  4. Attempt to gain access to the serial console for the bridge, if you do not see the Bridge enumerate as a new serial device, make sure the micro-usb cable is attached to your computer and the bridge and repeat steps 2-3.
  5. Follow this guide(Updates over USB DFU), and use the bridge_release-v0.13.9.elf.unified.bin in replacement to YOUR_APP.elf.unified.bin in the below command (see this section of the linked guide):
  $ dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D PATH/TO/YOUR_APP.elf.unified.bin

Once step 5 has been completed with the right firmware artifact. The bridge will respond as expected and your data will appear again.
Please don’t hesitate to reach out for further assistance.

1 Like

@matt001k I’m trying this and I have a micro USB from the spotter bridge, and USB-C to my computer from the port on the outside of the spotter.

I was able to get this command

but in my terminal I still don’t see any new ports. I’ve tried both USB-C ports on my mac. Do you know what might be the problem?

I am seeing some form of packet failure in the line from the Bridge:
image
Did you wait the full 120 seconds before attempting to send the command as laid out in step 2?
Reason being: Spotter will disable the bridge if it has not passed a self-test. This occurs within the first 30 seconds of being powered on. If the command in step 3 is invoked (gpio set 3v3_bridge_en) before then, the SSpotter might attempt to power off the bridge.
I would recommend waiting the full 120 seconds before invoking that command!

@matt001k Yes, I did. I just tried again waiting longer and still no new serial device detected.

Okay, I think I see a new port!

Should I connect to the EE1 or EE3 device?

I’m connected to the EE1 device. I’m going to follow the guide you linked in step 5. Should I disconnect the cable going from the outside of the spotter to my computer in order for there to be room to plug in the dev kit via USB-C?

You will need to connect to the EE1 device!

You should not have to have your dev kit plugged in at all for this process.

So here, I should do the bootloader command in the terminal window connected to EE1?

Yes that is correct.

For this step, does it matter what directory I flash from? should I cd to the folder with bridge_release-v0.13.9.elf.unified.bin