https://github.com/akavel/rumbac
a simple commandline flasher for Arduino Nano 33 BLE / Sense boards
https://github.com/akavel/rumbac
arduino-nano-33-ble arduino-nano-33-ble-sense bossa bossac flash nrf52840 sam-ba
Last synced: about 1 month ago
JSON representation
a simple commandline flasher for Arduino Nano 33 BLE / Sense boards
- Host: GitHub
- URL: https://github.com/akavel/rumbac
- Owner: akavel
- License: gpl-3.0
- Created: 2025-04-10T23:01:07.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-04-20T11:23:53.000Z (3 months ago)
- Last Synced: 2025-06-10T01:47:02.777Z (about 1 month ago)
- Topics: arduino-nano-33-ble, arduino-nano-33-ble-sense, bossa, bossac, flash, nrf52840, sam-ba
- Language: Rust
- Homepage:
- Size: 40 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-embedded-rust - rumbac - BA protocol to talk with the Arduino-provided bootloader, porting just enough of the `bossac` tool to Rust (Tools / Paid and commercially available materials)
- rust-embedded - rumbac - BA protocol to talk with the Arduino-provided bootloader, porting just enough of the `bossac` tool to Rust (Tools / Paid and commercially available materials)
README
# rumbac - a simple flasher for _Arduino Nano 33 BLE Rev2 / Sense Rev2_
`rumbac` is a simple commandline tool for uploading .bin files with compiled
programs to the _Arduino Nano 33 BLE Rev2_ or _... Sense Rev2_ board
(with the _nRF52840_ microcontroller).The boards come preprogrammed with a builtin bootloader,
communicating over a serial port over USB.
The protocol used for that is a very simple, text-based one, called "SAM-BA".
`rumbac` implements a very minimal subset of that protocol,
just enough to allow flashing a .bin file to one of those supported boards.
The implementation is based on a popular `bossac` tool,
in [a variant forked by the Arduino team for the _Nano_ board][arduino fork].[arduino fork]: https://github.com/shumatech/BOSSA/compare/master...arduino:BOSSA:nrf
_Note:_ the tool does not currently implement variants of the "SAM-BA"
protocol for any other boards, because I don't own them, and thus cannot
test. If you'd like to have support added for your favourite bossac-compatible
board, this project is open to contributions/forks - or,
you could send me a specimen of that board and I will try to add it.To install the tool, run:
cargo install --git https://github.com/akavel/rumbac
An example usage session then looks like below:
_Remember to first double-press the button on the device
such that the LED will start pulsating._```
C:> rumbac
Found 1 serial port:
"COM13" = UsbPort(UsbPortInfo { vid: 9025, pid: 90, serial_number: Some("00000000000000007F65FDABFE86A5EB"), manufacturer: Some("Microsoft"), product: Some("Urządzenie szeregowe USB (COM13)") })C:> rumbac COM13
Initializing "COM13"...
> "V#"
< "Arduino Bootloader (SAM-BA extended) 2.0 [Arduino:IKXYZ]\n\r"
> "I#"
< "nRF52840-QIAA\n\r"
Feats { chip_erase: true, write_buffer: true, checksum_buffer: true, identify_chip: true, reset: true }
Flash { name: "nRF52840-QIAA", addr: 0, pages: 256, size: 4096, planes: 1, lock_regions: 0, user: 0, stack: 0 }C:> rumbac COM13 myprogram.bin
Initializing "COM13"...
> "V#"
< "Arduino Bootloader (SAM-BA extended) 2.0 [Arduino:IKXYZ]\n\r"
> "I#"
< "nRF52840-QIAA\n\r"
> "N#"
< "\n\r"
> "S00000000,00001000#"
> "Y00000000,0#"
< "Y\n\r"
> "Y00000000,00001000#"
< "Y\n\r"
> "K#"
```_The device should now automatically disconnect and start running
the newly flashed program._