iLG remote

Rating: 
5
Your rating: None Average: 5 (3 votes)

A native Sailfish OS remote control for LG webOS televisions. It speaks the LG SSAP WebSocket protocol (over TLS) directly - d-pad, volume, channels, inputs, media keys, a pointer/touchpad, a number pad and app launching - and powers the TV on with Wake-on-LAN. Switched-on TVs are found by SSDP discovery with a scan of the local subnet behind it, and several TVs can be stored and switched between. A TV that is asleep answers nothing and cannot be discovered — switch it on once, and from then on the app knows it and can wake it.

Everything runs on the device and stays on your own network: it talks only to the TV you paired with. The first connection shows a pairing prompt on the TV; the key the TV returns is stored locally on the phone. No account, no cloud, no telemetry.

FEATURES
- Full remote: d-pad, OK/back/home, volume and channel, inputs, media transport keys
- Pointer / touchpad mode and a number pad
- Six quick-launch tiles: five you assign yourself (press and hold one and pick
  any app or input the TV reports), plus a fixed one that takes a screenshot of
  the TV and puts it in the gallery
- Apps and inputs listed with the icons the TV serves, sorted by name
- Wake-on-LAN power-on; SSDP discovery, with a fallback scan of the local subnet
- Store several TVs and switch between them
- Auto-reconnect: the connection keeps itself alive and comes back on its own
- The TV's certificate is pinned on the first connection and checked from then on
- Error log and glossary, both under About

STATUS
Proof of concept / work in progress, shared as is, no warranty. Built and used on a Sony Xperia 10 III (Sailfish OS 5.x). English user interface with a German translation. Works with newer LG webOS models that speak SSAP.

ARCHITECTURES
aarch64 (Sailfish OS 5.0+). No armv7hl build.

Written with Claude Code (Anthropic).

Source, issues, releases: https://github.com/JimKnopfIoT/harbour-ilg-remote

Screenshots: 
Application versions: 
AttachmentSizeDate
File harbour-lgremote-1.1.4-1.aarch64.rpm187.91 KB30/08/2026 - 10:57
Changelog: 

- Display cutout: on a phone with a notch the three carousel pages kept their
content out from under it. Silica frees that margin by itself, but only
where a PageHeader sits - and those three pages carry none, so the pointer
page put its swipe strip right under the cutout.
- Pointer pad: a tap is a click again. Two pixels between two move events
decided whether a gesture counted as a drag, which is less than a fifth of a
millimetre - no finger holds that still, so almost every tap was taken for a
drag and the click on release was dropped. The distance from the touch-down
point is now measured against Theme.startDragDistance.
- Addresses the TV names are checked before they are used. The key channel
(socketPath), the screenshot (imageUri) and every app icon must point back at
the TV over https/wss. An app on the TV states its own icon address, and it
must not decide where this phone opens a connection - over plain http there
is no handshake and so no pinned certificate to check either.
- Certificate pinning compares the peer certificate. Accepting when any
certificate in the presented chain matched let anyone in who attached a copy
of the remembered certificate as decoration - certificates are public. Only
the leaf proves possession of its key in the handshake. A fingerprint stored
before 1.1.2 no longer matches: reset the pairing once.
- Downloads are capped (4 MB per icon, 32 MB per screenshot) and the subnet
probe opens at most 256 connections at a time. A /24 still goes in one sweep;
a wider network used to open more sockets than the process may hold open.
- Typed text no longer goes into the error log. It was recorded when the TV
reported no focused field - which is exactly when somebody is typing into a
form on the TV.

Comments

projectmoon's picture

Oh also, sending text to TV doesn't seem to send the text, but it seems to press a key on the onscreen keyboard.

JimKnopfIoT's picture

@projectmoon Please try the new 1.1.2 Version. The app wakes the TV with a magic packet that needs its MAC address which is now stored.

Try a long press — it opens the list of inputs and apps and switches directly. The short tap sends the remote's input key, which not every model acts on.

Text is a webOS limitation. Some apps draw their own keyboard that can't be skipped or i didn't found a way to skip it. YouTube is one of them. On top of that the app used to press ENTER first to open the keyboard,
and when no field was focused that simply hit whatever was highlighted.

The text row now (1.1.2)  has two separate buttons: the check mark sends text into a field on the TV, and the magnifier sends your term to YouTube as a launch parameter, without any keyboard involved.

That second one is the reliable way to search. 

projectmoon's picture

Generally seems to work. Can't turn my TV on with it (app only seems to find TV while it'd on). And source input button doesn't work. Everything else important does.

Vieno's picture

Hi,

this app work brilliant with my LG TV. Auto discovery didn't work, but after keying in the IP and MAC all was good. Thanks a lot for sharing it.

Best regards,

Wolfgang

JimKnopfIoT's picture

@Vieno You may retry auto discover with the actual version (=> 1.0.1). 

Vieno's picture

Now discovery works smoothly, but it does not draw the MAC address from the found TV. Hence, no WOL.

One minor glitch I found is that if you add a shortcut, such as Netflix, to the second page, the icon remains blank if it hasn't been loaded onto the selection list yet. Once all the icons have been loaded, everything is fine.

What is the meaning of the symbol that looks like a lens with a rainbow circle around it? Is it for TVs with cameras?

JimKnopfIoT's picture

@Vieno I added error log function, fixed the tile issue and changed the Screenshot Icon. This Button let you take a screenshot from TV. It's stored on your phone. Please try the new v1.1.3.

Vieno's picture

I've just tried again. Now I can access the MAC address — I mean, a lot of them! Wi-Fi, LAN and Wi-Fi Direct.

The screenshot button is a cool feature. In the meantime, I figured it out myself, stumbling upon all the  new pictures in the gallery ;-)

Thanks again for the app and for resolving the issues so quickly.