Pico 1 W angelegt
This commit is contained in:
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
# Flash-Skript fuer Pico 1 W im BOOTSEL-Modus.
|
||||
# Wartet auf das RPI-RP2 Massenspeichergeraet, mountet es, kopiert die uf2.
|
||||
#
|
||||
# Nutzung: ./flash.sh <pfad/zur/firmware.uf2>
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Nutzung: $0 <firmware.uf2>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
UF2="$1"
|
||||
if [ ! -f "$UF2" ]; then
|
||||
echo "Datei nicht gefunden: $UF2" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Der Bootrom vom RP2040 exponiert eine FAT-Partition mit Label RPI-RP2.
|
||||
# udev legt bei Erscheinen automatisch diesen Symlink an — unabhaengig davon,
|
||||
# ob der Kernel das Device als sda, sdb, sdc, ... zaehlt.
|
||||
BY_LABEL="/dev/disk/by-label/RPI-RP2"
|
||||
TIMEOUT=30
|
||||
|
||||
echo "Warte bis zu ${TIMEOUT}s auf Pico im BOOTSEL-Modus (BOOTSEL druecken, dann einstecken)..."
|
||||
for ((i = 0; i < TIMEOUT; i++)); do
|
||||
if [ -e "$BY_LABEL" ]; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
if [ ! -e "$BY_LABEL" ]; then
|
||||
echo "Kein RPI-RP2 nach ${TIMEOUT}s gefunden." >&2
|
||||
echo "Ist BOOTSEL gehalten worden beim Einstecken?" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEV="$(readlink -f "$BY_LABEL")"
|
||||
echo "Pico gefunden: $DEV"
|
||||
|
||||
MNT="$(mktemp -d -t pico-XXXXXX)"
|
||||
trap 'sudo umount "$MNT" 2>/dev/null || true; rmdir "$MNT" 2>/dev/null || true' EXIT
|
||||
|
||||
echo "Mounte nach $MNT ..."
|
||||
sudo mount -o uid=$(id -u),gid=$(id -g) "$DEV" "$MNT"
|
||||
|
||||
echo "Kopiere $(basename "$UF2") ..."
|
||||
cp "$UF2" "$MNT/"
|
||||
sync
|
||||
|
||||
# Nach dem Schreiben rebootet der Pico von selbst und das FS verschwindet.
|
||||
# umount kann daher "target is busy" oder "not mounted" liefern — beides okay.
|
||||
sudo umount "$MNT" 2>/dev/null || true
|
||||
rmdir "$MNT"
|
||||
trap - EXIT
|
||||
|
||||
echo "Fertig. Pico sollte jetzt in die neue Firmware booten."
|
||||
Reference in New Issue
Block a user