Host CLI/TUI for the HARDWARIO TOWER console link. The tower binary connects to a
TOWER device over the USB serial port and renders the framed host↔target protocol
(COBS + CRC + postcard) emitted by the tower firmware
— logs, events, and an interactive shell. (A plain serial monitor shows that link as raw
frame bytes; tower decodes it.)
The wire format is shared with the firmware via the tower-protocol crate (pinned to a
firmware tag), so the two cannot drift.
Grab the archive for your platform from the latest release,
extract it, and put tower on your PATH:
# macOS / Linux
tar -xzf tower-vX.Y.Z-<target>.tar.gz
sudo mv tower-vX.Y.Z-<target>/tower /usr/local/bin/
# verify the download against its checksum
shasum -a 256 -c tower-vX.Y.Z-<target>.tar.gz.sha256On Windows, extract the .zip and put tower.exe on your PATH.
| Platform | Target |
|---|---|
| Linux x86_64 | x86_64-unknown-linux-gnu |
| Linux ARM64 | aarch64-unknown-linux-gnu |
| Linux ARMv7 (Raspberry Pi) | armv7-unknown-linux-gnueabihf |
| macOS Intel | x86_64-apple-darwin |
| macOS Apple Silicon | aarch64-apple-darwin |
| Windows x86_64 | x86_64-pc-windows-msvc |
tower --help # all commands
tower --version # print the tower-cli version
tower # open the TUI console on the detected porttower can program the device's STM32L0 over its UART bootloader (toggling
NRST/BOOT0 through the USB-UART bridge), so a separate flashing tool isn't
needed. The bootloader engine is the jolt
crate, integrated as a library:
tower flash firmware.bin # erase, write, verify, then reset into the app
tower flash firmware.bin --no-verify --no-run
tower erase # erase the whole flash, reset into the app
tower reset # reset into the application
tower reset --bootloader # reset into the system bootloaderFirmware must be a raw .bin (convert .elf/.hex with
arm-none-eabi-objcopy -O binary in.elf out.bin). The port is auto-detected when
exactly one USB serial device is present; otherwise pass --port.
Requires a Rust toolchain. On Linux the serialport dependency needs libudev:
sudo apt-get install -y libudev-dev pkg-config # Debian/Ubuntu
cargo build --release # binary at target/release/tower