Outbound Firmware Update & Monitor Mode (for LEDs) at the same time

Hi,

I figure that I cannot use outbound host firmware update and monitor mode (to enable external LEDs) at the same time, but would like to verify that here. I had been successfully performing OTA host firmware updates, but after adding monitor mode to my code (and uploading via USB), I get the following error when trying another subsequent OTA host firmware update:

DFU of host firmware aborted: cannot update host: outboard DFU using AUX pins requires using a supported card.aux mode such as ‘dfu’

Snippet added to the setup of my code causing the firmware update abortion:

  req = NoteNewRequest("card.aux");
  JAddStringToObject(req, "mode", "monitor");

  NoteRequest(req);

Snippet I had been using for OTA host updates:

req = notecard.newRequest("card.dfu");
  if (req != NULL) {
    JAddStringToObject(req, "name", "stm32");
    JAddBoolToObject(req, "on", true);
    notecard.sendRequest(req);
  }

  req = notecard.newRequest("dfu.status");
  if (req != NULL) {
    JAddStringToObject(req, "version", firmwareVersion());
    notecard.sendRequest(req);
  }

I am using the Notecarrier-F with the swan, and I recognize that if I had a different notecarrier, I would need to use the aux2-4 pins for the required wiring.

Is there any way I can still accomplish using monitor mode for external LEDs while still being able to perform OTA host firmware updates? Or should I avoid monitor mode and make the requests on my MCU to set LED colors based on the notecard response?

Hi @tsuzenski,

Good news! You are correct that Outboard DFU does conflict with monitor mode, but we have a similar and compatible mode, neo-monitor.

Instead of having multiple LEDs hooked to the AUX pins, you can use a strip of neo-pixels (ranging from 1-5 in length) to display the status.

This should help you get back on track!

Cheers,
Zak

2 Likes