cbiffle / keypad-go-updater

A cross-platform tool for easily updating firmware on Keypad:GO!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Keypad:GO! firmware updater

This is a simple cross-platform program for updating firmware on Keypad:GO!. It is intended to make the update as robust as possible by detecting which board variant you have and making sure the firmware matches it.

This is the program I use to flash boards in production.

About firmware packages

The Keypad:GO! update is distributed as a firmware package, which is a ZIP file. The package contains different builds of the firmware for each board variant.

You can get a prebuilt firmware package from the firmware section of the user manual, the releases page on GitHub or you can build your own using the package.sh script in the firmware repository.

Updating the firmware / running this program

You will need a Rust toolchain installed via rustup.

Check out a copy of this repository and open a terminal inside it.

Connect Keypad:GO! to your computer using a TTL serial cable as described in its user manual. Your TTL serial cable will show up as a named serial port, but the name will depend on your operating system and how many other ports are available -- usually something like /dev/ttyUSB1 or COM3. For these instructions, we'll call it PORT; replace PORT below with the correct name for your computer.

Press and hold Keypad:GO!'s UPDATE button, and, while holding it, tap the RESET button. This will reset Keypad:GO! into firmware update mode. (You can then release the UPDATE button.)

Run:

cargo run -p PORT path/to/your/firmware/archive.zip

It will print some stuff describing the chip it found and indicate progress. On success, the final line printed will be OK.

Command line help

You can get a description of current options by running cargo run -- --help. It will print something like the following (note: this output is probably out of date, run the current code for the modern equivalent):

Updater for Keypad:GO! firmware

Usage: keypad-go-updater [OPTIONS] -p <PORT> <ARCHIVE>

Arguments:
  <ARCHIVE>  Path to the firmware archive (.zip file)

Options:
  -p <PORT>
          Name of serial port to use. Specific to your operating system. Often
          something like `/dev/ttyUSB0` or `COM3`
  -b <BAUD_RATE>
          Programming baud rate. Rates up to 115200 work well in practice, but
          may corrupt the "target's first words" printed after programming since
          we have to downshift to 19200 there [default: 19200]
      --run-baud-rate <RUN_BAUD_RATE>
          Expected output baud rate of target. Must match firmware. Probably want
          to leave this the default [default: 19200]
  -v, --verbose
          If set, spams more information to your terminal
  -h, --help
          Print help

About

A cross-platform tool for easily updating firmware on Keypad:GO!

License:Mozilla Public License 2.0


Languages

Language:Rust 100.0%