Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

webostv-webos26-fix

Unofficial drop-in fix that restores Home Assistant's built-in LG webOS TV integration on TVs updated to webOS 26 (LG firmware 43.00.92+).

After the webOS 26 update, the stock integration shows the TV as off with no sources and can't control anything — even though pairing looks successful. This override makes it work again.

  • Based on: the webostv component from home-assistant/core 2026.6.1
  • Library: aiowebostv 0.7.5
  • Upstream issue: home-assistant/core#172703

⚠️ Unofficial workaround, use at your own risk. Remove it once an official fix ships (see § Remove later).


The problem

Home Assistant talks to the TV via the aiowebostv library, which pairs using the classic "LG Remote App" manifest (appId: com.lge.test + a baked-in LG signature). webOS 26 blacklisted that identity. The TV still issues a client-key (pairing "succeeds"), but grants the client zero permissionsevery request and subscription, including getPowerState and getVolume, returns:

401 insufficient permissions (not registered)

So the integration connects but can read nothing and control nothing.

The fix

Register with a generic manifest (neutral appId, no LG signature) — the same approach LGTV Companion uses. After re-pairing, webOS 26 grants normal permissions again.

The fix does not edit the installed library (HAOS overwrites that on update). It ships a copy of the webostv component plus _webos26_patch.py, which replaces six aiowebostv.WebOsClient methods at runtime:

# Method Purpose
1 registration_msg the fix — generic manifest instead of the blacklisted LG one
2 _create_input_ws tolerate the pointer-input socket being denied (don't abort connect)
3 _rx_msgs_input_ws park instead of ending the connection early when there's no input socket
4 get_software_info on a 401, return {} instead of aborting connect
5 subscribe on a 401, skip that subscription instead of aborting connect
6 callback_handler a state callback that chokes on a payload must not stall the connection

Full commented walkthrough: custom_components/webostv/README.md.

It self-disables if aiowebostv is newer than 0.7.5, is idempotent, and is wrapped so it can never crash Home Assistant startup.


Install (Home Assistant OS / Container / Supervised)

  1. Copy the custom_components/webostv/ folder from this repo into your HA config, so the final path is /config/custom_components/webostv/__init__.py. Use Studio Code Server, File editor, Samba, or SSH.
    • Quick shell method:
      cd /config
      git clone https://github.com/Orishas/webostv-webos26-fix /tmp/webos26fix
      mkdir -p custom_components
      cp -r /tmp/webos26fix/custom_components/webostv custom_components/
  2. Restart Home Assistant (Settings → System → Restart).

No configuration.yaml change is needed — a custom_components/ copy overrides the built-in integration. A one-time "you are using a custom integration webostv" warning is expected.

Re-pair each webOS 26 TV (required once)

A TV already paired under the old manifest holds a zero-permission key. It needs a fresh key under the generic manifest:

  • Settings → Devices & Services → LG webOS TV
  • If HA shows a Reconfigure / re-authentication prompt for the TV, complete it (keeps the entity ID + history). Otherwise, on the TV entry ⋮ → Delete, then re-add it (SSDP usually re-discovers it, or Add Entry → type the TV's IP).
  • Accept the pairing prompt on the TV screen (TV must be on).

The prompt appearing is itself proof the generic manifest works — the blacklisted one showed no prompt at all. TVs on older firmware are unaffected and don't need re-pairing.

Verify

The entity should show real state (on/off, volume, current source) with a populated source_list. The log prints:

Applied webOS 26 patch (generic manifest + 401 tolerance) to aiowebostv 0.7.5

Remove later

When a fixed aiowebostv / webostv ships in a Home Assistant release, delete /config/custom_components/webostv/ and restart — HA falls back to the built-in integration. On each HA update, check:

python -c "import aiowebostv; print(aiowebostv.__version__)"

If it's newer than 0.7.5, or issue #172703 is closed, remove this override. (The patch also self-disables automatically on a newer library.)


Notes & limitations

  • While installed, HA runs the 2026.6.1 copy of the component regardless of your core version, so you miss later webostv improvements. Don't keep it longer than needed.
  • On some webOS 26 firmware the generic manifest even restores the pointer input socket, so remote buttons work again. On others LG keeps that denied — then everything except button/pointer emulation works.

Credits

License & attribution

custom_components/webostv/ is a copy of the webostv integration from home-assistant/core (version 2026.6.1), which is licensed under the Apache License 2.0 — see LICENSE. The only additions are _webos26_patch.py, a small hook in __init__.py, and version in manifest.json. Not affiliated with or endorsed by LG or the Home Assistant project.

About

Restore Home Assistant's LG webOS TV integration on webOS 26 (firmware 43.00.92+)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages