TECHNOLOGY
Developer Releases R2D2, an Open-Source Home Screen, Private Browser and Voice Assistant for LG webOS TVs
A project on GitHub called r2d2-tv adds a local home screen, a remote browser and a push-to-talk voice assistant to webOS TVs. It needs root access, and so far it has been shown working on only one TV and firmware build.
Image: r2d2
A developer has published r2d2-tv, an open-source project that adds a local home screen, a private remote browser and a push-to-talk voice assistant to webOS TVs. The code is on GitHub under anubhavmalhotra, and a demo video is linked from the project page.
The setup splits the work between two devices. A Linux computer, which the project calls the compute host, runs the Chromium browser and the voice models. The TV handles the display, the apps and the remote control.
On the host side, the project describes an aarch64 Linux machine. It runs a sandboxed Chromium session in a private display and audio session, then streams that to the TV over the home network. It also runs local speech recognition and intent models, plus a closed command registry, which is a fixed list of commands the assistant is allowed to carry out.
On the TV side, there is a Home app and a browser viewer that sends remote-control input back to the host. A root-level component picks up the remote's voice key and sends short bursts of audio to the host over mutual TLS. That means both sides check each other's identity before any audio is sent.
The project also includes pinned filter rules for content protection. These are loaded into each disposable browser profile. The README says the voice models run on the host, but websites, searches, streaming apps and the optional weather feature still contact their own providers.
The README is blunt about the risks. The TV components run as root and modify vendor system services on one specific firmware build. The project calls this unsupported, says it may void the warranty, and warns it can leave the TV unusable until a reboot or factory reset. Patches hook or replace vendor services, so a mistake could disable the remote, the Home button or voice.
The code also depends on details of one firmware build, including checksums, code offsets and symbol names. Anyone with a different build would have to work these out again. The README says never to force a mismatched pin.
The author says it works end to end on one reference TV and firmware: the Home screen, the browser and remote voice commands. Other TVs, firmware versions, remotes and host setups are untested. The repository offers source code and offline tests, not a universal root, firmware or host installer.
The requirements are not light. The host needs a non-root service account, the Chromium snap with its sandbox on, Xvfb, PipeWire, WirePlumber and GStreamer plugins. It also needs FFmpeg with hardware HEVC encoding, a CUDA-capable GPU and Python 3.12 for the local models, which come to about 10 GB of weights. The TV must be one you have root access to and an authorized way to install packages on, and both devices must be on the same LAN. The README adds that a nominal link speed does not prove good playback quality.
The build step is local. A Python script produces an unsigned Home package, host services and TV service sources, and building does not install anything or contact a device. The README says the output contains deployment addresses and possibly the browser key, so it should be kept private. Brand logos are not included, and Home shows text tiles unless the user supplies logos they have the right to use.
The project says it is independent and not affiliated with or endorsed by LG Electronics, Lucasfilm, The Walt Disney Company or any streaming service. The software comes without warranty.