own-your-glass
Privacy hardening for rooted LG webOS TVs, as a Homebrew Channel app. Stops ACR, ads, telemetry and the mic pipelines at the source. Fully reversible.
- Sideload / dev mode
- Beta
- Medium brick risk
- Reversible
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
Install
Needs a rooted TV with Homebrew Channel (root status OK).
Homebrew Channel: Settings → Add repository, enter
https://raw.githubusercontent.com/fivefold3/webos-homebrew-repo/main/repo.json,
then install Own Your Glass from the list. Updates show up there too.
Manually over SSH: turn on the SSH server in Homebrew Channel's settings, download org.ownyourglass.app_1.6.0_all.ipk below, then
scp org.ownyourglass.app_1.6.0_all.ipk root@<tv-ip>:/tmp/oyg.ipk
ssh root@<tv-ip> "luna-send -i -f luna://com.webos.appInstallService/dev/install '{\"id\":\"com.ares.defaultName\",\"ipkUrl\":\"/tmp/oyg.ipk\",\"subscribe\":true}' </dev/null"
Once it prints "state": "installed", press Ctrl-C and remove /tmp/oyg.ipk.
Installing changes nothing. Open the app, pick a protection level and press Own the glass. Everything is undone by Give the glass back or by uninstalling the app.
Upgrading from 1.5.0: install over the top and press Own the glass. The new protections join your preset at once. A Custom selection is kept, rewritten as its changes from its base preset, so the new protections that preset carries reach it too; if your Custom selection had Phone apps on, DIAL stays blocked, and if it had Phone apps off on a Strict or Lockdown base, DIAL stays open.
What's new in 1.6.0
New protections
- Screenshot shield (every preset). The TV keeps a picture of the app on screen for Home's Recents row in a folder every app can list; it is now root-only, and Recents keeps its pictures. A paired phone app could ask the TV for a screenshot three ways; the calls are taken out of the phone API, and everything else phone apps do keeps working (verified on the C5: the phone app still finds, pairs with and controls the TV). A phone that used the TV before the shield went on keeps the calls until a restart; status says so.
- Web-app debugger (every preset). Every LG TV runs the web-app debugger on port 9998 with no password, Developer Mode or not: anyone on your network could attach to the open web app, Homebrew Channel included, and run code in it. The port is closed to the network and stays reachable from the TV itself, so
ares-inspectandssh -L 9998:localhost:9998still work. - Network printing port (every preset). The TV listens on port 515 for print jobs from anyone on your network, with no login; nothing on the TV prints through it. Closed on IPv4 and IPv6.
- Phone apps starting TV apps (DIAL) is its own option (Strict and Lockdown). DIAL lets any device on your network start apps on the TV and turn it off, without asking. Its ports are closed by a firewall rule as well as the service being blocked, so the block holds when DIAL loaded before Own Your Glass at start-up. With it on, Spotify and other phone apps can cast only to an app already open on the TV; the Strict description says so.
- The "Who.Where.What?" consent (recognition of people, places and products on screen) is declined with the other tracking consents.
Fixes
- Turning Phone apps off again asks for the restart LG's phone server needs in any boot, not only the one in which it was turned off. Before, undoing the option after a restart left phones unable to find the TV, with no notice.
- On BusyBox 1.29 to 1.31 (webOS 5.6, 6.5 and a 2023 C3 on 8.3) every system setting Own Your Glass writes failed to build, because of an awk construct those versions misread. Fixed.
- The firewall chains (LAN firewall, debugger, DIAL) are built complete under a new name and swapped in, so re-applying, or adding a device with
oyg lan allow, never opens a port in between. - The screen-capture shield keeps its root-only files in
/run, which no app sandbox can write, and trusts nothing it finds in/tmp: a link planted at a shielded path is left alone and reported. Status checks that OLED care is still getting its screen samples through the shield. - A setting the settings service refuses to put back stays recorded, is tried again at the next undo, and status says so instead of reporting the option as restored.
- A Custom selection is saved as its changes from a base preset. Saving every option froze a protection that was not yet verified at the time as off for good.
- The uninstall's last message says what needs a restart.
Docs
docs/RESEARCH.md: what the screen shields are built on (OLED pixel care's screen samples, Home's Recents pictures, the phone API's screenshot calls), the open ports a C5 answers on the LAN, and how DIAL behaved from boot to boot.docs/COMPATIBILITY.md: the print server per webOS generation.
Known limits
- Verified on webOS 10.3 only; the other releases are surveyed, not run. HbbTV options are untested (no broadcast reception on the reference TV).
- The firewall is IPv4 only (these kernels have no IPv6 netfilter). The LAN firewall option turns IPv6 off; the debugger and DIAL options warn when the TV has an IPv6 address they cannot cover.
Before you start
- How hard is it?
- MediumInstall an app on your computer and follow its steps.
- What you need
- Comfort with the command line
- Another hack installed first
- Can it break my device?
- Small chance of trouble, with a way to recover.
- Can I undo it?
- Yes. You can go back to the official software.
Did it work for you?
Did own-your-glass v1.6.0 work on your LG OLED C3?
No reports yet for v1.6.0.
One-tap reports from owners. Bricked reports are checked before they count.
Compatibility
Devices: LG OLED C3.
No compatibility information yet.
Getting started
From the project's README ("Install"):
You need a rooted TV with Homebrew Channel (see ).
Homebrew Channel
Homebrew Channel > Settings > Add repository, and enter:
https://raw.githubusercontent.com/fivefold3/webos-homebrew-repo/main/repo.json
Over SSH
Turn on the SSH server in Homebrew Channel's settings, download the .ipk from the latest release (or build it yourself with tools/build-ipk.sh, which writes dist/org.ownyourglass.appall.ipk; no LG SDK needed), then hand it to the TV's own installer:
scp org.ownyourglass.app<version>all.ipk root@<tv-ip>:/tmp/oyg.ipk ssh root@<tv-ip> "luna-send -i -f luna://com.webos.appInstallService/dev/install
'{"id":"com.ares.defaultName","ipkUrl":"/tmp/oyg.ipk","subscribe":true}' </dev/null"The installer reports its progress; once it prints "state": "installed" press Ctrl-C and remove /tmp/oyg.ipk. (luna-send needs its stdin closed, hence the </dev/null, or it prints nothing.)
tools/deploy.sh root@ --launch does the same in one go: it builds the ipk, copies it over, waits for "installed", deletes the copy and opens the app (--no-build uses the newest ipk already in dist/).
Installing changes nothing; open the app and press Own the glass. The main screen shows whether the glass is owned by you or by LG, plus a notice when something needs you ("Restart required", "LG Account signed in", "Not re-applied at start-up"). Settings (top right) holds the protection level, Customize (every option, with what it breaks), the actions, undo and uninstall.
Risk and recovery
- Brick risk
- Medium
- Reversible
- Yes
- Requires opening the device
- No
From the project's README ("Undo"):
- Give the glass back (Settings) restores every change and keeps the app. Nothing is re-applied at start-up until you press Own the glass again.
- Restore and uninstall restores, then removes the app.
- Undo is faithful, so it also puts back what "Remote support and root hygiene" had closed: Homebrew Channel's telnet root shell (port 23, no password) is allowed again if Homebrew Channel has it on, and its files go back to world-writable. The log and a toast say so (this toast is shown even with Notifications off).
- Uninstalling from Homebrew Channel also works: on the next boot the hook restores the TV and deletes itself.
Releases
| Version | Name | Released |
|---|---|---|
| v1.6.0 | —Latest | 18 October 2026 |
| v1.5.0 | — | 27 September 2026 |
| v1.2.4 | — | 25 September 2026 |
| v1.2.3 | — | 23 September 2026 |
Credits, license and support
- License
- MIT