Files
clawdmeter/docs/boards/waveshare-amoled-2.06.md
T
wenilandClaude Opus 4.8 1f739d0267 docs: document the Waveshare AMOLED-2.06 board port
Add docs/boards/waveshare-amoled-2.06.md (pins, CO5300 col offset 22,
Windows UTF-8 flashing gotcha, daemon name + address fixes) and list the
board in README.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:51:14 +03:00

2.6 KiB
Raw Permalink Blame History

Waveshare ESP32-S3-Touch-AMOLED-2.06 (watch)

Port of Clawdmeter to the Waveshare ESP32-S3-Touch-AMOLED-2.06 smartwatch dev board. PlatformIO env: waveshare_amoled_206.

This board shares its display controller (CO5300), PMU (AXP2101), IMU (QMI8658) and I²C bus with the existing 2.16 / 1.8 ports, so the port mostly combines drivers already in the tree: the CO5300 display path from the 2.16 board and the FocalTech inline touch reader from the 1.8 board.

Hardware

Block Part Pins
Display CO5300 AMOLED, 410×502, QSPI CS=12, SCLK=11, D0D3=4/5/6/7, RESET=8, TE=13
Touch FT3168 (FocalTech), I²C @ 0x38 INT=38, RST=9
PMU AXP2101, I²C @ 0x34 battery, USB VBUS
IMU QMI8658, I²C @ 0x6B INT=21 (rotation disabled)
RTC PCF85063 on I²C bus
I²C bus shared SDA=15, SCL=14
Buttons BOOT (Space/PTT) / PWR (screens, brightness, pairing) BOOT=0, PWR=10

Fixed orientation (non-square panel — IMU auto-rotation is off). Display power comes from the AXP2101 rail and needs no explicit enable (same as the 2.16 board); if a future panel revision boots dark, see the commented AXP rail-enable block in power.cpp.

Display column offset

The CO5300 GRAM is wider than the 410 px active area, so the image needs a horizontal start offset or a band of uninitialised memory shows on the right:

#define CO5300_COL_OFFSET  22   // board.h — verified on this panel

Build & flash

pio run -e waveshare_amoled_206
pio run -e waveshare_amoled_206 -t upload --upload-port <PORT>   # COMx / /dev/ttyACM0 / /dev/cu.usbmodem*

Windows flashing gotcha

esptool's progress output crashes the upload on a non-UTF-8 Windows console (UnicodeEncodeError, cp1251). Force UTF-8 before running pio:

$env:PYTHONIOENCODING="utf-8"; $env:PYTHONUTF8="1"
pio run -e waveshare_amoled_206 -t upload --upload-port COM7

Host daemon notes

The device advertises as Clawdmeter (matching firmware/src/ble.cpp).

Two Windows-daemon fixes ship with this port:

  1. daemon/claude_usage_daemon_windows.py scans for Clawdmeter (the upstream value Claude Controller never matched the firmware name).

  2. Once the device is bonded as a BLE HID keyboard, Windows keeps it connected and it stops advertising, so a name scan can't find it. Set CLAWDMETER_ADDRESS to its BLE address to connect directly:

    setx CLAWDMETER_ADDRESS "<AA:BB:CC:DD:EE:FF>"
    

    The BLE address is the chip MAC (from esptool ... flash_id) +1.