31 lines
2.4 KiB
Markdown
31 lines
2.4 KiB
Markdown
# Wired gaze-link bench — 2026-09-27
|
||
|
||
Hardware: DFRobot DFR1154 V1.1 camera (MAC `E8:F6:0A:87:0B:4C`), Waveshare eye Board 1 (`…CF:F8`), and Board 2 (`…D2:10`). Camera GPIO43 TX fans out to both eye GPIO44 RX pins, with common ground. All three use their separate USB diagnostic/power ports; the eye UART USB-C ports are unplugged.
|
||
|
||
## Normal tracking
|
||
|
||
Command: `python3 firmware/tools/capture_gaze.py --camera /dev/cu.usbmodem11401 --eye1 /dev/cu.usbmodem11201 --eye2 /dev/cu.usbmodem11101 --duration 12`. Both receivers reported `GAZE_READY ... recent=1 bad_format=0 bad_sequence=0` and accepted the same live sequence/coordinates, including `seq=31 x=655 y=774 valid=1` and `seq=37 x=830 y=715 valid=1`. Both also accepted `valid=0` idle commands. Joshua confirmed both screens switched to `TRACK` and their irises followed together when moving left and right in front of the camera. This is a user-observed bench result; no video was saved.
|
||
|
||
## Malformed/stale injection
|
||
|
||
The camera was temporarily built with `FREDDY_GAZE_LINK_SELF_TEST=1` and flashed to its MAC-verified board. At boot it sent sequence 61440 (`valid=0`), the duplicate 61440, old sequence 61439, a wrong-version 61441, a bad-CRC 61441, and fresh recovery sequence 61442. Both eye USB logs showed:
|
||
|
||
```text
|
||
39.227 eye1 GAZE_ACCEPT board=1 seq=61440 x=500 y=500 valid=0
|
||
39.229 eye2 GAZE_ACCEPT board=2 seq=61440 x=500 y=500 valid=0
|
||
39.385 eye1 GAZE_REJECT board=1 reason=sequence
|
||
39.543 eye1 GAZE_REJECT board=1 reason=sequence
|
||
39.545 eye2 GAZE_REJECT board=2 reason=sequence
|
||
39.545 eye2 GAZE_REJECT board=2 reason=sequence
|
||
39.701 eye1 GAZE_REJECT board=1 reason=format
|
||
39.702 eye2 GAZE_REJECT board=2 reason=format
|
||
39.859 eye1 GAZE_REJECT board=1 reason=format
|
||
39.861 eye2 GAZE_REJECT board=2 reason=format
|
||
40.018 eye1 GAZE_ACCEPT board=1 seq=61442 x=500 y=500 valid=0
|
||
40.097 eye2 GAZE_ACCEPT board=2 seq=61442 x=500 y=500 valid=0
|
||
```
|
||
|
||
Each board's next `GAZE_READY` reported `bad_format=2 bad_sequence=2`. The diagnostic send is compiled out in the normal build. After restoring that build, the camera application flash was hash-verified and both eyes again accepted matching normal sequences, including 43–46. The restored application SHA-256 is `0acc763624b20a09afbf512e20afad51ffc9de4276102ffa639a0345d39d70a5`.
|
||
|
||
The camera was powered/reset during this bench, and the receivers reported `recent=0`, but no active-`TRACK` loss-of-signal timeout was observed. That visual test remains open.
|