Updating the NINA firmware
The JedEye's Bluetooth and WiFi are handled by a small co-processor (a u-blox NINA-W102 module) that runs its own firmware, independent of the JedEye application firmware. Devices shipped with JedEye firmware up to and including v2.2.x carry NINA firmware 1.5.0. JedEye firmware v2.3 and newer uses host libraries that need NINA firmware 3.0.1 or newer — the old NINA firmware silently breaks Bluetooth (and may break WiFi).
Do I need to do this?
On JedEye firmware v2.6 and newer the radio is updated over the air — when a newer radio firmware is published it is downloaded and flashed as part of OTA Update, in the same step as the JedEye firmware (see Option F).
On JedEye firmware v2.4.3–v2.5.x this is automatic at boot — the device updates the radio for you on the first boot after an upgrade (see Option E). The rest of this page applies to older firmware, or as a manual fallback.
You need this update only if you have just upgraded the JedEye application firmware to v2.3 or newer and you notice any of:
- The Bluetooth icon never appears in the Distance Meter screen.
- TopoDroid (or any other BLE scanner) cannot find the JedEye device.
- WiFi may keep working — only Bluetooth silently fails.
If you have not upgraded the JedEye firmware yet, or you are happy on v2.2.x, leave the NINA firmware alone.
What it does (and what to expect)
The update procedure flashes NINA firmware 3.0.1 onto the radio module. There are several paths, from easiest to most involved. On firmware v2.6 and newer the radio firmware is delivered over the air alongside the JedEye firmware (Option F below), so you normally do nothing. On v2.4.3–v2.5.x the JedEye updates the radio by itself on the first boot after an upgrade (Option E). On v2.4–v2.4.2 the recommended path is the in-device self-update you start from the menu (Option D).
Option F — Over the air (JedEye v2.6+)
Available on JedEye application firmware v2.6 and newer. You do not flash the radio separately — it travels with the OTA Update.
When you run OTA UPDATE (or accept the offer shown when you switch WiFi on), the JedEye compares the published radio firmware version against what the radio currently reports. If a newer radio firmware is available, it is downloaded and flashed as part of the same update — you see the familiar RADIO FW UPDATE progress screen — before the device reboots into the new JedEye firmware. If the radio is already current, this step is skipped.
v2.6 and newer no longer carries a bundled copy of the radio firmware (so the once-per-upgrade automatic flash of Option E does not run); the radio is kept current through OTA instead. The manual paths below remain available as a fallback.
Option E — Automatic at boot (JedEye v2.4.3+)
Available on JedEye application firmware v2.4.3 and newer. You do not start this — the JedEye does it for you.
On the first start-up after you flash a new JedEye firmware, the device checks the radio module's firmware against what the new JedEye build requires. If it doesn't match what this build last installed, the JedEye reflashes the radio automatically: you see the familiar RADIO FW UPDATE screen with the target version and a percent counter climbing to 100% (a few minutes), then Done. Restarting JedEye… and the device reboots itself with the new radio firmware loaded.
- It only happens once per upgrade — once the radio is current, normal start-ups are unaffected.
- If you are upgrading from a JedEye version earlier than v2.4.3, expect one automatic reflash on the very first boot, even if you already ran Radio FW Update manually on the previous version. The JedEye records the installed radio firmware version in EEPROM the first time it does the flash itself; on devices that have never run v2.4.3+, that record is empty, so the auto-update fires once to populate it. After that, subsequent start-ups are silent.
- It is skipped when waking from sleep.
- If the automatic flash cannot finish (for example a flaky USB power source), the JedEye shows Update failed — Retry via Tools menu for a moment and then starts up normally so the device is still usable. It will try again on the next start-up, and you can also run it by hand any time using Option D below.
If your JedEye firmware was built without the bundled radio firmware (offline / opt-out builds), there is nothing to install automatically and the device boots straight to normal operation.
Option D — In-device self-update from the menu (JedEye v2.4+)
Available on JedEye application firmware v2.4 and newer. The JedEye carries its own copy of nina-fw and writes it directly onto the radio over an internal serial link. No PC, no host-side tools, no re-flashing of the application firmware afterwards.
- On the JedEye, go to OPTIONS > SETTINGS > SYSTEM > RADIO FW UPDATE.
- A confirmation submenu opens. Pick Confirm to start (pick Back to abort).
- The screen shows the radio's running firmware version on top (
Current: 1.5.0) and the bundled target underneath (Target: 3.0.1), with a percent counter that climbs to 100% as the flash runs. Total time is a few minutes. - When it finishes, the screen shows Done. Restarting JedEye… for two seconds and the device reboots itself. The JedEye comes back up with the new radio firmware loaded.
If the in-device flash cannot run — typically because the JedEye firmware was built without the bundled nina-fw blob (offline build, opt-out) — the action falls through automatically to the legacy passthrough mode (Option A below), so an Arduino-IDE or arduino-fwuploader flash from a PC still works as a fallback.
If you want to verify which
nina-fwversion a build is shipping, look forNINA_FW_VERSIONinscripts/fetch_nina_fw.pyin the JedEye firmware source tree. The bundled blob adds about 1.3 MB to the firmware image.
Option A — Radio FW Update passthrough (JedEye v2.3, or v2.4+ fallback)
On JedEye application firmware v2.3, the Radio FW Update menu entry opens a USB-to-radio passthrough mode that lets a PC-side tool drive the radio's bootloader. The JedEye application firmware on the RP2040 stays intact through the update — power-cycle when the PC tool reports success and you are back to normal operation. On v2.4+ this is also the automatic fallback when no nina-fw blob was bundled into the JedEye firmware.
-
On the JedEye, go to OPTIONS > TOOLS > RADIO FW UPDATE (v2.3) or OPTIONS > SETTINGS > SYSTEM > RADIO FW UPDATE → Confirm (v2.4+, falls through to passthrough automatically when no blob is bundled). The screen switches to a "RADIO FW UPDATE — Run update tool on your PC — Power-cycle to exit" view. The device is now bridging USB ↔ the NINA radio.
-
From your PC, run one of the host-side update tools. Whichever you use, the JedEye application firmware is not touched — the host tool drives the radio module's reset / GPIO0 lines through the bridge.
Arduino IDE 2.x — select board Arduino Nano RP2040 Connect, select the JedEye's COM port, then Tools → Firmware Updater → pick
3.0.1→ Install.arduino-fwuploaderCLI (no IDE needed):arduino-fwuploader firmware flash \
--fqbn arduino:mbed_nano:nanorp2040connect \
--address COM4 \
--module NINA@3.0.1Replace
COM4with your actual port (macOS/Linux:/dev/cu.usbmodem*or/dev/ttyACM*).Windows PowerShell convenience wrapper (ships with the JedEye firmware repository):
.\scripts\update_nina_firmware.ps1 -
When the tool reports success, power-cycle the JedEye (unplug USB, wait a couple of seconds, plug back in). The device boots straight into normal operation, with the Bluetooth icon back in the Distance Meter.
That is it — no re-flashing of the JedEye application firmware is needed.
Option B — Arduino IDE Firmware Updater (no menu item)
Use this if you are still on JedEye application firmware older than v2.3 (no Radio FW Update menu item yet). The procedure works, but it temporarily replaces the JedEye application firmware on the RP2040 with a passthrough sketch, so you will need to re-flash the JedEye application firmware afterwards.
- Install Arduino IDE 2.x from https://www.arduino.cc/en/software if you do not have it.
- In the Arduino IDE Boards Manager, install "Arduino Mbed OS Nano Boards" (one-time).
- Connect the JedEye via USB.
- Tools → Board → Arduino Mbed OS Nano Boards → Arduino Nano RP2040 Connect.
- Tools → Port → select the JedEye's COM port (Windows: e.g.
COM4; Linux:/dev/ttyACM0; macOS:/dev/cu.usbmodem*). - Tools → Firmware Updater. The dialog opens and reads back the current NINA firmware version (likely
1.5.0). - Select 3.0.1 (or the newest version offered) and click Install. Wait for the success message — about 1–2 minutes. Do not unplug.
- Re-flash the JedEye application firmware (see Firmware Update).
- Unplug the USB and plug it back in to power-cycle the device.
The Bluetooth icon should now appear in the Distance Meter.
Option C — arduino-fwuploader CLI (no menu item)
Same constraint as Option B: temporarily replaces the JedEye application firmware on the RP2040, then you re-flash it. Use this on JedEye firmware older than v2.3 if you do not want the Arduino IDE.
One-time setup
- Download the latest
arduino-fwuploaderfor your OS from https://arduino.github.io/arduino-fwuploader/. - Extract and place the executable on your PATH (e.g.
C:\Tools\on Windows added to PATH;/usr/local/bin/on macOS / Linux).
Update
Find the COM port for your JedEye:
- Windows: Device Manager → Ports (COM & LPT). Typically
COM4. - macOS:
ls /dev/cu.usbmodem* - Linux:
ls /dev/ttyACM*
Run:
arduino-fwuploader firmware flash \
--fqbn arduino:mbed_nano:nanorp2040connect \
--address COM4 \
--module NINA@3.0.1
(Replace COM4 with your actual port.)
Then re-flash the JedEye application firmware (see Firmware Update) and power-cycle.
Windows convenience wrapper
scripts/update_nina_firmware.ps1 (in the JedEye firmware repository) wraps the above and auto-detects the COM port. From a PowerShell prompt at the repo root:
.\scripts\update_nina_firmware.ps1
Troubleshooting
- "Failed to detect an Arduino board" — Another program is holding the COM port (PlatformIO Serial Monitor, Arduino IDE Serial Monitor, a BLE test client). Close it and retry.
- "Timeout waiting for the chip to respond" — Usually a flaky USB cable or hub. Use a direct USB port on the PC and a known-good cable.
- Update finished but TopoDroid still can't see the device — Power-cycle the JedEye (unplug USB, wait a few seconds, replug). The NINA needs a cold boot after the firmware flash; a soft reset is not always enough.
- WiFi works but Bluetooth doesn't — This is the signature symptom of a host library / NINA firmware mismatch. Confirm the JedEye is running v2.3+ firmware (which pins the matching host libraries) and that the NINA firmware update finished without errors.
Verifying
The quickest verification:
- Switch the JedEye to Distance Meter. The Bluetooth icon should now appear in the bottom-right corner.
- Open TopoDroid → Device screen → BT Scan. You should see
JedEye_<your-serial>in the list.
If you have the Arduino IDE installed, Tools → Firmware Updater also reads back the current NINA version on a connected board — it should now show 3.0.1 (or newer).