Compare commits
4 Commits
main
...
lux/animat
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23f23f1f1e | ||
|
|
f52a528340 | ||
|
|
df6465267f | ||
|
|
2192312bb7 |
38
CLAUDE.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Lux — LED Panel BLE Agent
|
||||
|
||||
## Role
|
||||
You are **lux**, the BLE protocol reverse-engineering agent for the LED backpack panel project. You run on saltylab-orin (Jetson Orin Nano) where the panel and BLE hardware are physically connected.
|
||||
|
||||
## Mission
|
||||
1. Capture the BLE protocol between the Amusing LED app and the panel
|
||||
2. Decode slot switching, image upload, brightness/mode commands
|
||||
3. Update the ESP32 glove firmware with correct commands
|
||||
4. (Stretch) Enable direct pixel control from Orin/ESP32
|
||||
|
||||
## Key Locations
|
||||
- **This repo:** /home/seb/led-panel
|
||||
- **Glove firmware:** /home/seb/glove/ (PlatformIO, ESP32 WROOM)
|
||||
- **BLE capture proxy:** ~/ble-capture-only.py
|
||||
- **BLE client tester:** ~/led-panel-ble.py
|
||||
- **Capture logs:** ~/ble-capture-log.jsonl, ~/ble-mitm-log.jsonl
|
||||
- **Panel BLE MAC:** E0:6E:41:94:39:70
|
||||
- **BLE adapter:** hci0
|
||||
|
||||
## Communication
|
||||
- **MQTT inbox:** Check for messages from max (PM): AGENT_NAME=lux ~/agent-mqtt/agent-read 2>/dev/null | tail -30
|
||||
- **Report to max:** AGENT_NAME=lux ~/agent-mqtt/agent-send max "message"
|
||||
- Messages from max (PM) take priority over other work
|
||||
|
||||
## Workflow
|
||||
1. Always read README.md first for full protocol context
|
||||
2. Work in the led-panel repo, commit to branches named lux/issue-N-slug
|
||||
3. Use git for all code changes
|
||||
4. Report progress to max via MQTT after completing each phase
|
||||
5. Before pushing: git fetch origin && git rebase origin/main
|
||||
|
||||
## Rules
|
||||
- You are a coding/RE agent — do the work yourself
|
||||
- Run BLE tools with sudo when needed (GATT server requires root)
|
||||
- Log all captures to captures/ directory in the repo
|
||||
- Document protocol findings in docs/
|
||||
- Tab name convention: printf '\e]1;%s\a' "lux - <status>"
|
||||
BIN
animations/face_alert/face_alert.gif
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
animations/face_alert/frame_001.png
Normal file
|
After Width: | Height: | Size: 355 B |
BIN
animations/face_alert/frame_002.png
Normal file
|
After Width: | Height: | Size: 428 B |
BIN
animations/face_alert/frame_003.png
Normal file
|
After Width: | Height: | Size: 454 B |
BIN
animations/face_alert/frame_004.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_005.png
Normal file
|
After Width: | Height: | Size: 504 B |
BIN
animations/face_alert/frame_006.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_007.png
Normal file
|
After Width: | Height: | Size: 500 B |
BIN
animations/face_alert/frame_008.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_009.png
Normal file
|
After Width: | Height: | Size: 504 B |
BIN
animations/face_alert/frame_010.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_011.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_012.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_013.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_014.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_015.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_016.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_017.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_018.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_019.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_alert/frame_020.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
animations/face_following/face_following.gif
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
animations/face_following/frame_001.png
Normal file
|
After Width: | Height: | Size: 548 B |
BIN
animations/face_following/frame_002.png
Normal file
|
After Width: | Height: | Size: 558 B |
BIN
animations/face_following/frame_003.png
Normal file
|
After Width: | Height: | Size: 558 B |
BIN
animations/face_following/frame_004.png
Normal file
|
After Width: | Height: | Size: 559 B |
BIN
animations/face_following/frame_005.png
Normal file
|
After Width: | Height: | Size: 551 B |
BIN
animations/face_following/frame_006.png
Normal file
|
After Width: | Height: | Size: 549 B |
BIN
animations/face_following/frame_007.png
Normal file
|
After Width: | Height: | Size: 553 B |
BIN
animations/face_following/frame_008.png
Normal file
|
After Width: | Height: | Size: 557 B |
BIN
animations/face_following/frame_009.png
Normal file
|
After Width: | Height: | Size: 569 B |
BIN
animations/face_following/frame_010.png
Normal file
|
After Width: | Height: | Size: 561 B |
BIN
animations/face_following/frame_011.png
Normal file
|
After Width: | Height: | Size: 554 B |
BIN
animations/face_following/frame_012.png
Normal file
|
After Width: | Height: | Size: 556 B |
BIN
animations/face_following/frame_013.png
Normal file
|
After Width: | Height: | Size: 554 B |
BIN
animations/face_following/frame_014.png
Normal file
|
After Width: | Height: | Size: 554 B |
BIN
animations/face_following/frame_015.png
Normal file
|
After Width: | Height: | Size: 554 B |
BIN
animations/face_following/frame_016.png
Normal file
|
After Width: | Height: | Size: 555 B |
BIN
animations/face_following/frame_017.png
Normal file
|
After Width: | Height: | Size: 555 B |
BIN
animations/face_following/frame_018.png
Normal file
|
After Width: | Height: | Size: 555 B |
BIN
animations/face_following/frame_019.png
Normal file
|
After Width: | Height: | Size: 555 B |
BIN
animations/face_following/frame_020.png
Normal file
|
After Width: | Height: | Size: 561 B |
BIN
animations/face_following/frame_021.png
Normal file
|
After Width: | Height: | Size: 556 B |
BIN
animations/face_following/frame_022.png
Normal file
|
After Width: | Height: | Size: 556 B |
BIN
animations/face_following/frame_023.png
Normal file
|
After Width: | Height: | Size: 555 B |
BIN
animations/face_following/frame_024.png
Normal file
|
After Width: | Height: | Size: 563 B |
BIN
animations/face_happy/face_happy.gif
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
animations/face_happy/frame_001.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_002.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_003.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_004.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_005.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_006.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_007.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_008.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_009.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_010.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_011.png
Normal file
|
After Width: | Height: | Size: 571 B |
BIN
animations/face_happy/frame_012.png
Normal file
|
After Width: | Height: | Size: 504 B |
BIN
animations/face_happy/frame_013.png
Normal file
|
After Width: | Height: | Size: 571 B |
BIN
animations/face_happy/frame_014.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_015.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_016.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_017.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_018.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_019.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_020.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_021.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_022.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_023.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_024.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_025.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_026.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_027.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_028.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_029.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_happy/frame_030.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
animations/face_idle/face_idle.gif
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
animations/face_idle/frame_001.png
Normal file
|
After Width: | Height: | Size: 394 B |
BIN
animations/face_idle/frame_002.png
Normal file
|
After Width: | Height: | Size: 394 B |
BIN
animations/face_idle/frame_003.png
Normal file
|
After Width: | Height: | Size: 394 B |
BIN
animations/face_idle/frame_004.png
Normal file
|
After Width: | Height: | Size: 394 B |
BIN
animations/face_idle/frame_005.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_006.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_007.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_008.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_009.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_010.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_011.png
Normal file
|
After Width: | Height: | Size: 391 B |
BIN
animations/face_idle/frame_012.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_013.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_014.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_015.png
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
animations/face_idle/frame_016.png
Normal file
|
After Width: | Height: | Size: 357 B |
BIN
animations/face_idle/frame_017.png
Normal file
|
After Width: | Height: | Size: 283 B |
BIN
animations/face_idle/frame_018.png
Normal file
|
After Width: | Height: | Size: 357 B |
BIN
animations/face_idle/frame_019.png
Normal file
|
After Width: | Height: | Size: 394 B |
BIN
animations/face_idle/frame_020.png
Normal file
|
After Width: | Height: | Size: 394 B |
BIN
animations/face_idle/frame_021.png
Normal file
|
After Width: | Height: | Size: 394 B |