~/guides/lg-tv-wake-on-lan
$ cat guides/lg-tv-wake-on-lan.md

Turn on an LG TV over the network, with a USB adapter.

A USB Ethernet adapter makes an LG TV two to three times faster on the wire. But Wake on LAN, Turn on via Wi-Fi, the ThinQ app and Home Assistant can't wake the TV through it. Here's why, and how to keep all of them working on a rooted TV.

Why the adapter can't wake the TV

Standby resets the TV's USB ports, so the adapter is gone by the time a wake-up packet arrives. LG's network wake listens on Wi-Fi instead, and on the built-in port when it has a cable. So with an adapter, Wi-Fi is how the TV gets woken.

Two things get in the way of that:

  • Some TVs drop off Wi-Fi in standby while the adapter is the main connection. A G6 on webOS 26 did (discussion #19): connected while on, unreachable once off.
  • Some TVs turn Wi-Fi off when a cable is connected. A 2022 C2 on webOS 25 turned it off at boot with the adapter in, and didn't join Wi-Fi again on its own.

And once Wi-Fi is kept on next to the adapter, webOS's connection manager can move the TV's traffic to Wi-Fi. It ranks a connection it has checked as online ahead of one that's only ready, so when Wi-Fi reconnects, the internet goes through Wi-Fi. On the C2 that meant apps slowed down or stopped loading until Wi-Fi was turned off again.

The fix: Wi-Fi wake in standby

LG-USB-2-ETH0, which makes the adapter the TV's eth0, has a Wi-Fi wake in standby switch (--wifi-wake over SSH) that handles all three:

  • While the TV is on, it keeps Wi-Fi on and joined to your saved network, and keeps the adapter ahead of Wi-Fi so traffic goes over the cable. Every 10 seconds it checks the internet hasn't moved to Wi-Fi, and moves it back if it has.
  • Just before standby, if Wi-Fi is connected and Turn on via Wi-Fi is on, it disconnects only the adapter's network session. The adapter stays plugged in and stays eth0, and Wi-Fi stays ready for the wake-up.
  • When the TV is on again, or at the next boot if it lost power in standby, it connects the adapter again (up to 10 tries, as the adapter can take a few seconds to come back) and puts it ahead of Wi-Fi.

Tested on a 2022 C2, woken from standby over Wi-Fi with the adapter back as the main connection afterwards, and on a G6 on webOS 26.

Set it up

  1. Root the TV and install the Homebrew Channel (see the install guide), then LG-USB-2-ETH0, and turn on Run at every boot.
  2. Turn on Turn on via Wi-Fi in the TV's settings, usually under General, Devices, External Devices, TV On With Mobile.
  3. Join your Wi-Fi network once in the TV's network settings. If you use fixed IPs, give Wi-Fi its own, not the adapter's: two connections with the same IP break the TV's connection.
  4. Turn on Wi-Fi wake in standby in the app. It starts right away, no restart needed.

Or over SSH:

$ sh LG-USB-2-ETH0.sh install --wifi-wake

Wake the TV

Send the wake-up to the TV's Wi-Fi MAC address, not the adapter's. status prints the one to use:

Turning the TV on over the network (Turn on via Wi-Fi, apps, Home Assistant)
goes through Wi-Fi, not the adapter: standby resets the USB ports.
Wake it by wlan0's MAC, aa:bb:cc:dd:ee:ff.

Send it to your network's broadcast address (like 192.168.1.255) on port 9:

  • A phone app: any Wake on LAN app, with the Wi-Fi MAC, the broadcast address and port 9.
  • Linux or a Pi: wakeonlan -i 192.168.1.255 aa:bb:cc:dd:ee:ff
  • Home Assistant: wake_on_lan.send_magic_packet with the Wi-Fi MAC and broadcast address, for example in the LG webOS integration's Turn on automation.
  • The LG ThinQ app uses Turn on via Wi-Fi on its own.

If Home Assistant or an app learned the TV's "wired" MAC after the adapter became eth0, that's the adapter's. Point it at the Wi-Fi MAC.

Check it's working

Everything it does goes in /var/lib/webosbrew/lg-usb-2-eth0.log, with why it did or didn't hand over. A full standby and wake on a C2:

=== power: Active Standby ===
=== standby: disconnected the adapter's network session, so Wi-Fi stays ready for wake ===
=== power: Active Standby (Prepare Power Off) ===
=== power: Power Off ===
=== boot hook (wait 120s, module .../r8152_oot.ko) ===
Done: the USB adapter is eth0, the built-in port is eth2.
=== awake: try 1 of 10: the adapter has no cable link yet ===
=== awake: the adapter is connected again (try 2) ===
Following standby for Wi-Fi wake.
=== power: Active ===

With the TV on, the internet should go through the adapter, with Wi-Fi ready behind it:

$ ip route | head -1
default via 192.168.1.1 dev eth0
$ connmanctl services | head -2
*AO Wired              ethernet_..._cable
*AR YourNetwork        wifi_..._managed_psk

The full guide on GitHub lists every log line and what it means, plus troubleshooting.

Related

FAQ

Can an LG TV wake up through a USB Ethernet adapter?
No. Standby resets the TV's USB ports, so the adapter is gone by the time the wake-up arrives. LG's network wake listens on Wi-Fi, and on the built-in port when it has a cable.
Which MAC address do I send the wake-up to?
The Wi-Fi MAC address, not the adapter's. On a rooted TV, LG-USB-2-ETH0's status prints the right one. If the built-in port has a cable in it, its MAC works too.
Why does the internet stop working when I turn Wi-Fi back on?
webOS's connection manager ranks a connection it has checked as online ahead of one that's only ready, so Wi-Fi can take over the TV's traffic. Wi-Fi wake in standby keeps the adapter first, and checks every 10 seconds.
Does Wi-Fi need its own IP address?
Yes, if you set fixed IPs. Wi-Fi and the adapter with the same IP break the TV's connection. Letting the router hand out addresses, with a reservation for each MAC, is easiest.
Why did the TV boot instead of just turning on?
After a longer time off, the TV can be in deeper standby, and waking it boots it fresh. That's normal, and the adapter is connected again either way.