Experimental: a USB companion build for the Elecrow ThinkNode M9 (#52), for setting up M9s from a computer without pairing. This build ran on an M9 on the bench with a test client. Please tell us how it does with yours.
What experimental builds are. Use MeshCore-ThinkNodeM9-Cairn131-2026-11-11-usb-full.bin.
Cairn 131 for the Elecrow ThinkNode M9 -- USB companion test build (2026-11-11)
For the Elecrow ThinkNode M9. It is the normal Cairn 131 M9 build (the same screen, keys and
Bluetooth) with the companion protocol also on the USB cable, so a laptop script (meshcore_py, or
the MeshCore apps over USB serial) can talk to an M9 without pairing.
What to know:
- The protocol runs over the M9's USB port (its CH340 bridge) at 115200 baud. Bluetooth stays on, so
the phone app still works on the same device.
- Opening the port restarts the M9: the USB bridge drives the chip's reset line, so every open is a
fresh boot. Send a device query about once a second until one is answered; on our M9 the first
reply came about 4.5 seconds after the open.
- Before that first reply the line carries the chip's own boot banner and a few start-up lines
(nothing can turn the banner off), so skip anything that isn't a frame until then. After it, only
protocol frames come down the cable: the build closes its log on that port when the companion
starts.
- Tested on an M9 with a client that counts every byte outside a frame: device query, app start,
time, battery and storage, contacts, channels, writing the node name and channels, three full
rounds and a minute idle. Not one stray byte after the first reply.
Online update: this build carries the M9's normal update name, so Settings > System > Firmware
update installs the normal (Bluetooth only) M9 build from the latest release, not a USB one. To stay
on the USB build, flash the next one by hand.
File: MeshCore-ThinkNodeM9-Cairn131-2026-11-11-usb-full.bin
FLASH IT (Chrome or Edge on a computer)
1. Open https://espressif.github.io/esptool-js/
2. Plug the M9 in with a USB-C data cable. Click Connect and pick its port (on Windows, install
WCH's CH340 driver if no COM port appears). The M9 has no download buttons: if it won't connect,
replug it and try again.
3. To keep your identity, contacts and settings (from Cairn on the M9): skip the erase.
From other firmware: click Erase Flash first, and back up your node's private key from the app
before that.
4. Flash Address 0x0, the -usb-full.bin above, then Program.
5. When it says done, press Disconnect, then replug the M9.
WHAT TO TELL US
- Does your script or app connect cleanly with the wait above?
- How long does a full set-up run take per device?
- Any byte on the line after the first reply that isn't a frame?
- If it restarts or hangs: what the script sent last, and the time.