Epic: #113 · Milestone: MC7 — TV shell
Why
Zero extra hardware: every TV remote already speaks CEC over HDMI. kernel/src/rpi/hdmi_cec.home (538 lines, includes a button-code table) is the only remote-control code in the tree and has never run. CEC lives in the BCM2712 HDMI block.
Tasks
- CEC controller driver: logical address allocation (Playback Device 1/2/3), physical address from EDID, TX with retries/arbitration, RX interrupts, message framing/opcodes.
- Features: Report Physical Address, Set OSD Name ("HomeOS"), Image View On + Active Source (One Touch Play at boot/wake), Standby (TV off → we sleep; our sleep → TV off, configurable), Routing Change, Give Device Power Status, System Audio Control + volume keys forwarded to the TV/AVR, User Control Pressed/Released → remote grammar.
- Settings: enable/disable each behaviour; OSD name; "wake TV on boot".
- Rig: a USB-CEC adapter on the Mac (or the TV) as the scripted key source for HIL;
cecshell command for diagnostics.
Acceptance
Scripted CEC key sequence navigates the home screen in the capture; TV powers on with the Pi and off at sleep; input-latency measured via CEC.