We put a game on the LCD of an SR-260, driven by the remote's own keys, with zero Control4 equipment on the network. The game is the excuse: what it proves is that the screen is a legitimate write target from Home Assistant. And the test produced something that existed nowhere else — the datasheet for that display.
A Control4 installation with no controller — because it burned out, because the licence was never renewed, or because the integrator who installed it is long gone — leaves the owner with expensive hardware that stopped responding. The keypads, dimmers and remotes are still there, still working over radio, and nothing is talking to them.
The question that opened this line of research is a blunt one: can that hardware be rescued? Not by emulating a controller, but by speaking its own protocol from an open system.
That the loop closes in both directions: that the Control4 device talks to us, and that we can talk back to it.
The previous investigation had already closed the input direction: the red button on an SR-260 switches a SONOFF device — a different brand — with no Control4 processor anywhere in the installation. The remote talks; we listen.
What was missing was output, the harder half: us writing to proprietary equipment. And the best possible target is the remote's screen, because the result is visible — you don't have to take a log file's word for it.
Every Zigbee device publishes a descriptor stating what it can do. The SR-260's declares
mac_capability_flags = 140, and bit 3 of that value means receiver always on:
a device you can write to at any moment.
It does not honour that. A burst of 30 writes with the remote idle failed entirely, at nearly 15 seconds per attempt. The same writes land without trouble while the user is holding a key down.
The remote can only be drawn to while it is transmitting. Holding a key wakes it every 487 ms, and that is the entire window.
That measurement is not a curiosity of the game. It is what you need to know before attempting any integration with these remotes: a label pushed "when something happens" never arrives, and the system looks broken without being broken.
Neither Control4's documentation nor the community has this written down. It came out of probing the screen character by character, code by code.
The character ROM stops at 0x7E. No blocks, no arrows, no silhouettes: any drawing has to be made out of ASCII.
" \ ] — the command's delimiter and escape; they are swallowed by the frameEvery one of those lines cost a test, and several contradict the documentation we started from. When the hardware and the paper disagree, the hardware wins.
With a single line of text and no graphical glyphs, the result was going to be poor. The protocol documentation also carried a warning: do not use the list menu, because it suppresses button events.
The warning was overstated, and it nearly killed the best design. It suppresses two keys, not all of them. What prompted a second look was a common-sense observation: with a real Control4 processor, the remote's Watch key shows a list of sources across several rows. If the device can already do that, it can be used.
Three rows of free text plus a highlight bar, repaintable twice a second, is a complete user interface on a device that was assumed to be read-only.
The white bar is the ground: it is the menu's selected row, drawn in inverse video by the remote itself. The dino jumps by changing rows, and the cactus passes underneath.
It is not played with the red button: that is one of the keys that dismiss any list on screen. We found out by running into it.
Our own bench: one SR-260, a generic Zigbee coordinator and Home Assistant. No other Control4 equipment.
The game is useless in production. What is useful is what it took to build it:
The code is open and published, with the game logic separated from the networking: 26 automated tests run with no radio, no Home Assistant and no remote. Three of those tests exist because of bugs found on real hardware, and they are there so those bugs do not come back.
Research that overstates its reach produces confident, wrong decisions. The limits, written in the same type as the results:
If the document and the hardware disagree, the hardware wins: note it and fix the document. In this investigation that happened twice, and both times the document was wrong.