cargo-hf2
Replaces the cargo build command to include flashing over usb to connected uf2 devices using hf2 flashing over hid protocol.
prerequisites
Utilizes the hidapi-sys crate which uses libusb.
linux
Youll need libusb depending on your distro you might do sudo apt-get install libudev-dev libusb-1.0-0-dev
.
If you'd like to not use sudo, you'll need udev rules. With your board plugged in and in bootloader mode, use lsusb
to find your vendorid, seen here as 239a
Then put your vendorid below and save to something like /etc/udev/rules.d/99-adafruit-boards.rules
ATTRS{idVendor}=="239a", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idVendor}=="239a", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="239a", MODE="0666"
Then reboot or run
mac
On mac, as of Catalina you will get a permissions prompt and must follow directions to allow "Input Monitoring" for the Terminal application.
install
cargo install cargo-hf2
use
From a firmware directory you can run all the usual cargo build commands, --example and --release, with build replaced by hf2. Assuming the builds succeeds we open the usb device using a hardcoded whitelist and copy the file over.
)
Optionally you can leave off pid and vid and it'll attempt to query any hid devices with the bininfo packet and write to the first one that responds
)
If it cant find a device, make sure your device is in a bootloader mode. On the PyGamer, 2 button presses enables a blue and green screen that says PyGamer.
)
troubleshooting
If it cant find a device, make sure your device is in a bootloader mode ready to receive firmware.
On the PyGamer, 2 button presses enables a blue and green screen that says PyGamer and also generally creates a flash drive which you should be able to see (though this doesn't use that method).
If you find another error, be sure to run with debug to see where in the process it failed and include those logs when reporting
RUST_LOG=debug