usb install
put posse on an m9
Plug an Elecrow ThinkNode M9 into this computer with a USB-C cable, pick a mode, and press install. The firmware is written straight from the browser over Web Serial; nothing is uploaded anywhere, and the page never sees the device beyond the serial port you hand it.
Writes the bootloader, the partition table and the app from 0x0. The gaps are padded
with 0xFF, and one of those gaps is where settings live — name, colour, crew key
and compass calibration are erased. This is the one to use on a new board, or on a board in an
unknown state.
Checking for the latest release…
Chrome or Edge, on a desktop. Web Serial does not exist in Safari or Firefox, and is not available on iOS or Android at all. Everything here can be done with esptool instead.
two images what gets written
one of them keeps your crew
first install
posse-thinknode-m9-merged.bin at 0x0. Bootloader, partition table, OTA selector and app as
one image. esptool pads the space between them with 0xFF, which runs straight
through the NVS partition at 0x9000, so the device comes up asking for a name again.
update
posse-thinknode-m9.bin at 0x10000, plus a blank otadata at 0xE000.
The second part matters once a device has updated itself over the air: it may be running from its
second firmware slot, and writing the app alone would leave the bootloader pointing there, so the
device would reboot into the firmware it already had. Clearing otadata sends it to
the first slot, which is the one just written. Nothing else is touched, and leaving the rest of the
flash alone is what preserves the name, the colour, the crew key and the compass calibration.
A device that already runs posse can also update itself over Wi-Fi, from SETUP > u. Every update it downloads is signed and checked against a key built into the firmware before anything is written, so it is safe to do on a network you do not trust. The cable is for a first install, or for a device that cannot reach Wi-Fi.
by hand the command line
esptool, if you would rather
Once the latest release is found, the images to download appear here.
# update — settings preserved
# erase_region clears the bootloader's slot choice, so a device that updated
# itself over the air boots the image written here rather than its old one.
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 \
erase_region 0xe000 0x2000
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 \
write_flash -z 0x10000 posse-thinknode-m9.bin
# first install — settings erased
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 \
write_flash -z 0x0 posse-thinknode-m9-merged.bin
Building from source instead is pio run -e thinknode_m9 -t upload; see
firmware/docs/M9-BUILD.md.
when it sulks troubleshooting
no port in the list
The M9's USB-C socket goes through a CH340K bridge into UART0, so the board appears as an
ordinary serial port rather than as a USB device of its own. macOS does not bind that chip on its
own: install WCH's CH34x driver (brew install --cask wch-ch34x-usb-serial-driver),
open it, press Install and approve it in System Settings, then replug. Windows usually has it.
Check the power slider is on.
it will not enter the bootloader
There is no BOOT button on this board — the bridge's DTR/RTS lines do the reset, which the flasher drives for you. If it fails anyway, cycle the power slider and press install again immediately.
which build is this?
SETUP shows the version on the device. Release builds carry their tag (posse-v0.1.0);
a build that says dev came off someone's laptop. Quote whichever it says in a bug
report.
next