From b7b8e3f5ca6cefed8584f93b01e9a579e99902ab Mon Sep 17 00:00:00 2001 From: Brian Pugh Date: Thu, 21 May 2026 21:02:16 -0400 Subject: [PATCH] must specify board target (e.g. waveshare_amoled_216), fixes 'flash all environments' bug. --- README.md | 12 ++++++++---- flash-mac.sh | 22 +++++++++++++++++----- flash.sh | 25 ++++++++++++++++++++----- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index bce0541..7ab6940 100644 --- a/README.md +++ b/README.md @@ -52,10 +52,12 @@ The macOS host pieces — Python daemon, LaunchAgent, and flash helper — were ### Flash the firmware ```bash -./flash-mac.sh # auto-detects /dev/cu.usbmodem* -./flash-mac.sh /dev/cu.usbmodem1101 # or pass an explicit USB serial port +./flash-mac.sh waveshare_amoled_216 # auto-detects /dev/cu.usbmodem* +./flash-mac.sh waveshare_amoled_18 /dev/cu.usbmodem1101 # or pass an explicit USB serial port ``` +The board env name is required. Run `./flash-mac.sh` with no args to see the available envs (scraped from `firmware/platformio.ini`). + ### Pair the device After flashing, open **System Settings → Bluetooth** and click *Connect* next to "Clawdmeter". The daemon will discover it on its next scan (~30 s). @@ -84,10 +86,12 @@ launchctl load -w ~/Library/LaunchAgents/com.user.claude-usage-daemon.plist # st ### Flash the firmware ```bash -cd firmware -pio run -t upload --upload-port /dev/ttyACM0 +./flash.sh waveshare_amoled_216 # defaults to /dev/ttyACM0 +./flash.sh waveshare_amoled_18 /dev/ttyACM1 # or pass an explicit USB serial port ``` +The board env name is required. Run `./flash.sh` with no args to see the available envs (scraped from `firmware/platformio.ini`). + ### Pair the device After flashing, the device advertises as "Claudemeter". Pair it once: diff --git a/flash-mac.sh b/flash-mac.sh index 1a3540d..125d543 100755 --- a/flash-mac.sh +++ b/flash-mac.sh @@ -1,12 +1,23 @@ #!/bin/bash # Build and flash Clawdmeter firmware on macOS. # Usage: -# ./flash-mac.sh # auto-detect /dev/cu.usbmodem* -# ./flash-mac.sh /dev/cu.usbmodem1101 # explicit USB serial port +# ./flash-mac.sh # auto-detect /dev/cu.usbmodem* +# ./flash-mac.sh /dev/cu.usbmodem1101 # explicit USB serial port +# +# is the PlatformIO env name, e.g. waveshare_amoled_216 or waveshare_amoled_18. set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -PORT="$1" +BOARD="$1" +PORT="$2" + +if [ -z "$BOARD" ]; then + echo "Error: board env name is required." + echo "Usage: $0 [port]" + echo "Available boards:" + grep -E '^\[env:' "$SCRIPT_DIR/firmware/platformio.ini" | sed 's/\[env:/ /;s/\]//' + exit 1 +fi if [ -z "$PORT" ]; then PORT=$(ls /dev/cu.usbmodem* 2>/dev/null | head -1) @@ -23,11 +34,12 @@ if ! command -v pio >/dev/null; then fi echo "=== Flashing Clawdmeter ===" -echo "Port: $PORT" +echo "Board: $BOARD" +echo "Port: $PORT" echo "" cd "$SCRIPT_DIR/firmware" -pio run -t upload --upload-port "$PORT" +pio run -e "$BOARD" -t upload --upload-port "$PORT" echo "" echo "=== Done ===" diff --git a/flash.sh b/flash.sh index 2bbada8..b3d09ee 100755 --- a/flash.sh +++ b/flash.sh @@ -1,16 +1,31 @@ #!/bin/bash -# Build and flash firmware to the SC01 Plus. +# Build and flash Clawdmeter firmware on Linux. +# Usage: +# ./flash.sh # default port /dev/ttyACM0 +# ./flash.sh /dev/ttyACM1 # explicit USB serial port +# +# is the PlatformIO env name, e.g. waveshare_amoled_216 or waveshare_amoled_18. set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -PORT="${1:-/dev/ttyACM0}" +BOARD="$1" +PORT="${2:-/dev/ttyACM0}" -echo "=== Flashing Claude Usage Tracker ===" -echo "Port: $PORT" +if [ -z "$BOARD" ]; then + echo "Error: board env name is required." + echo "Usage: $0 [port]" + echo "Available boards:" + grep -E '^\[env:' "$SCRIPT_DIR/firmware/platformio.ini" | sed 's/\[env:/ /;s/\]//' + exit 1 +fi + +echo "=== Flashing Clawdmeter ===" +echo "Board: $BOARD" +echo "Port: $PORT" echo "" cd "$SCRIPT_DIR/firmware" -~/.platformio/penv/bin/pio run -t upload --upload-port "$PORT" +~/.platformio/penv/bin/pio run -e "$BOARD" -t upload --upload-port "$PORT" echo "" echo "=== Done! ==="