Newer
Older
FWPATH=../pocket-reform-sysctl-fw/build/sysctl.uf2
# change to 2e8a:0003 if rp2040 is in "Raspberry Pi RP2 Boot" mode
USBDEV=2e8a:000a
# make sure the file is there
strings $FWPATH | grep PREF1SYS > /dev/null
if [[ $? != 0 ]]; then
echo "Firmware file $FWPATH is invalid, exiting."
exit 1
fi
set -e
# make sure we have picotool
apt install -y picotool
# identify system controller on usb bus
if [[ $COUNT != 1 ]];
then echo "RP2040 System Controller device not found or more than one found, exiting."
fi
# extract usb bus and device address numbers
BUS=$(echo $ROW | cut -d ' ' -f 2)
ADDR=$(echo $ROW | cut -d ' ' -f 4)
ADDR=${ADDR//:}
# make sure these are integers
BUS=$(expr $BUS + 0)
ADDR=$(expr $ADDR + 0)
# ask for confirmation
echo "Ready to flash System Controller (bus $BUS, address $ADDR). Make sure all your work is saved--the system will power down after the process is completed."
echo ""
echo "Press return to continue or CTRL+C to abort."
read
# flash! (this will hard power down the system)
sync
sleep 0.5
# hack to prevent writes + fs corruption to rootfs
echo u > /proc/sysrq-trigger
sleep 0.5
picotool load --bus $BUS --address $ADDR -f $FWPATH
picotool reboot -f