Unofficial Cobalt-based YouTube app modification for LG webOS TVs with ad blocking and SponsorBlock support.
This project patches the webOS YouTube application by replacing or modifying the Cobalt runtime used by YouTube TV on webOS. The goal is to keep the original YouTube TV experience while adding ad blocking, SponsorBlock support and related improvements.
This project is unofficial and is not affiliated with YouTube, Google, LG or webOS.
The latest release is available from the GitHub releases page:
https://github.com/RF1705/youtube-webos-cobalt-adfree/releases
The standard package uses the original Leanback app id, youtube.leanback.v4,
to keep YouTube sign-in and phone pairing compatible. Installing it replaces
the official YouTube application with the patched version.
A separate compatibility package is available for the LG CineBeam HU710PB-GL
and potentially other PJTR/k7lp devices. It uses the stock PJTR app id,
youtube.leanback.v4-pjtr, and must only be used on compatible devices.
- YouTube for LG webOS TVs
- Cobalt-based runtime modification
- Advertisement blocking
- SponsorBlock support
- Return YouTube Dislike support
- Automatic account selection on startup
- Playback speed support
- Optional autostart integration
- Installable as patched
.ipkpackage
The configuration screen can be opened with the GREEN button on the LG remote. While a video is playing, press 1 to decrease the playback speed or 3 to increase it. Press 0 to toggle subtitles on or off. The available playback speeds range from 0.25× to 2×.
- LG TV with webOS
- Homebrew Channel, Developer Mode or root access
- Docker
- Git
- Linux or macOS build environment
- Required tools:
sudo apt install jq git sed binutils squashfs-tools rename findutils xz-utilsThe standard patched app uses youtube.leanback.v4 and therefore replaces the
official YouTube application. The PJTR compatibility package uses
youtube.leanback.v4-pjtr and replaces the stock PJTR YouTube application.
Keep a copy of the appropriate official package if you want to restore it later.
The closest currently tested match to a working stock LG installation for the standard package is:
Cobalt: 23.lts.6
Starboard: API 13
Architecture: ARMv7 softfp
Starter: original LG webOS Cobalt starter from the same stock runtime
This combination has been tested successfully on the TV from which the stock runtime was collected. The patched Cobalt library keeps the original ABI and raises Cobalt's combined persistent cookie/local-storage limit from 4 MiB to 16 MiB. It also logs the serialized storage size and rejects oversized writes explicitly instead of failing silently.
The separate PJTR/k7lp compatibility package uses:
Cobalt: 23.lts.6
Starboard: API 12
Architecture: ARMv7 softfp
Starter: stock LG k7lp/PJTR Cobalt starter
App ID: youtube.leanback.v4-pjtr
The issue tracker contains the following explicit confirmations. A device is only listed here when a reporter confirmed that the app starts and is usable; reports that only confirm installation are not counted. Any reported limitations are included in the result column.
| Model | webOS | Firmware | Release | Confirmed result |
|---|---|---|---|---|
| LG C1 OLED | 6.5.0 | 03.51.16 | v1.2.0 standard package | Clean installation, sign-in, playback, ad blocking and SponsorBlock work. (#33) |
| LG CineBeam HU710PB-GL | 6.3.1 | 03.00.27 | v1.2.1 PJTR package | Installation, home screen, sign-in, playback, ad blocking, SponsorBlock and launch after restart work. webOS required selecting Update in the Content Store prompt before the first successful launch. (#1) |
The standard v1.2.1 package uses the same Cobalt 23.lts.6 / Starboard 13 compatibility baseline as v1.2.0, but has not yet received a separate standard package device confirmation in the issue tracker. A C1 report for v1.2.0 confirms that 4K was still unavailable on that device (#2).
| Model | webOS | Firmware | Release | Confirmed result |
|---|---|---|---|---|
| LG TV65QNED (exact suffix not reported) | 6.5.3 | 03.53.45 | v1.0.0 | Playback and ad blocking work; maximum quality is 1080p. (#2) |
| LG 43UP8000PTB | 6.5.3-47 | 03.53.45 | v1.0.0 | Starts and works after installation through Developer Mode; reporter did not provide a feature-by-feature test. (#7) |
| LG C1 OLED | 6.5.3-47 | 03.53.45 | v1.0.0 | Playback and SponsorBlock work after the initial black-screen start; limited to 1080p and RYD did not work in this build. (#3) |
| LG 65QNED913PA | 6.5.3-47 | 03.53.45 | v1.0.0 | Playback works at up to 1080p; the stock app reaches 2160p on the same TV. (#2) |
| LG OLED55G19LA | 6.5.3 | 03.53.45 | v1.0.0 | Playback works at up to 1080p. (#2) |
| LG 7070NANO75SPA | 6.5.3-47 | Not reported | v1.0.0 | Playback works below 4K; sponsored recommendations were still visible. (#2) |
| LG OLED65A1PVA | 6.5.3 | 03.53.45 | v1.0.0 | Playback works at up to 1080p. (#2) |
| LG OLED55C1AUB | 6.5.3 | 03.53.45 | v1.1.1 | Playback works, including 4K on a tested AV1 video; a tested VP9 video was limited to 1080p. (#2) |
| LG OLED55C14LB | 6.5.3 | 03.53.45 | v1.1.0 | Playback works, but the 1/3 playback-speed shortcuts did not work in this release. (#22) |
| LG OLED55A16LA | Not reported | 03.53.45 | v1.1.1 / v1.1.2 | Signed-in playback and SponsorBlock work at up to 1080p; signed-out regular videos remain black. (device report, working result) |
| LG OLED55A19LA | 6.2.0-31 | Not reported | v1.1.3 | Sign-in, playback, 4K and HDR work; still working after a TV restart. (test, restart) |
| LG OLED48CXRLA | 5.5.0 | 04.50.90 | v1.1.4, repacked | Starts, plays video and survives reboot after repacking the IPK with non-epoch timestamps. The unmodified release IPK is rejected by this firmware. (#29) |
| LG OLED83C17LA | Not reported | 03.53.45 | v1.1.4 | Works normally; v1.1.5 crashes on the same TV. (#30) |
| LG OLED65C15LA | 6.5.3 | 03.53.45 | v1.1.0 | Works normally; later tested releases did not start on the same TV. (#10) |
| LG OLED48C14LB | 6.5.3-47 | Not reported | v1.1.1 | Playback works, but the progress bar and chapter scrubbing can become incorrect. (#26) |
| LG G1 | Not reported | Not reported | v1.1.6 | App and video controls work, but 4K is unavailable. (#2) |
These are individual community reports, not guarantees for every regional variant of the same model. Firmware, installation method, sign-in state and the exact release can change the result. In particular, the repacked webOS 5.5 entry is not a confirmation of the normal downloadable standard IPK.
Community-reported device, firmware and feature results are collected in the device compatibility matrix. The matrix also contains the reporting template and unpatched baseline test packages used for compatibility investigations.
Owners of rooted TVs can help investigate older firmware by collecting the starter from a working stock YouTube installation. See the stock starter collection guide.
Download the package matching your device from the release page and install it using one of the following methods.
Use this package for the standard youtube.leanback.v4 application:
youtube.leanback.v4_1.2.1_arm.ipk
The release also contains youtube.leanback.v4.manifest.json for installation
of the standard package through the webOS Homebrew Channel.
Use this package only for the LG CineBeam HU710PB-GL or another confirmed
PJTR/k7lp device using the stock app id youtube.leanback.v4-pjtr:
youtube.leanback.v4-pjtr_1.2.1_arm.ipk
SHA-256:
6dce6805b13cc008743d3cfb5d9ec45018728303e0b89c4fb0655636fb4589cb
Because this package uses the same app id as the stock PJTR YouTube application, webOS may display an Update or Launch prompt after installation. On the tested HU710PB-GL, selecting Update and completing the Content Store update was required before the application could be launched. The patched app continued to work normally afterwards.
The PJTR package is an unofficial community compatibility build containing a stock LG Cobalt starter. The original starter archive and standalone proprietary binaries are not distributed separately.
This project also provides a custom Homebrew Channel repository for the standard package:
https://raw.githubusercontent.com/RF1705/youtube-webos-cobalt-adfree/main/repo.json
In Homebrew Channel, open Settings, choose Add repository, and enter the URL above.
Important: The standard package uses the same app id (
youtube.leanback.v4) as the YouTube AdFree entry in the default WebOSBrew repository. Do not install both variants at the same time: choose one repository entry and uninstall the other variant first.
The PJTR/k7lp package is currently available as a manual release download and is not included in the custom Homebrew Channel repository.
Use the webOS Device Manager and install the downloaded .ipk package.
Standard package:
ares-install youtube.leanback.v4_1.2.1_arm.ipkPJTR/k7lp package:
ares-install youtube.leanback.v4-pjtr_1.2.1_arm.ipkDownload the appropriate release package to /media/developer/temp and install
it through the webOS app install service.
Standard package:
mkdir -p /media/developer/temp
cd /media/developer/temp
wget https://github.com/RF1705/youtube-webos-cobalt-adfree/releases/download/v1.2.1/youtube.leanback.v4_1.2.1_arm.ipk
luna-send-pub -i 'luna://com.webos.appInstallService/dev/install' '{"id":"com.ares.defaultName","ipkUrl":"/media/developer/temp/youtube.leanback.v4_1.2.1_arm.ipk","subscribe":true}'PJTR/k7lp package:
mkdir -p /media/developer/temp
cd /media/developer/temp
wget https://github.com/RF1705/youtube-webos-cobalt-adfree/releases/download/v1.2.1/youtube.leanback.v4-pjtr_1.2.1_arm.ipk
luna-send-pub -i 'luna://com.webos.appInstallService/dev/install' '{"id":"com.ares.defaultName","ipkUrl":"/media/developer/temp/youtube.leanback.v4-pjtr_1.2.1_arm.ipk","subscribe":true}'After installation, the downloaded package can be removed:
rm /media/developer/temp/youtube.leanback.v4*_1.2.1_arm.ipkClone the repository:
git clone https://github.com/RF1705/youtube-webos-cobalt-adfree.git
cd youtube-webos-cobalt-adfreeMaintainer build images are stored separately in the private
RF1705/YouTube-webos-images repository. Authorized maintainers can clone or
update them with:
make imagesThe files are checked out into the ignored .private-images directory and
verified against that repository's SHA256SUMS. Locally built Cobalt archives
in cobalt-bin/ take precedence over the private copy.
Patch your official YouTube IPK:
make package PACKAGE=./your-tv-youtube.ipkFor maintainers, a plain make builds the current standard package from the
private youtube-official-1.1.5.tar.gz base and the tested
23.lts.6/Starboard 13 runtime:
makeDo not commit or publish the stock application backup. It can contain
LG/YouTube-protected files such as drm.nfz; the packaging process removes
that file from the patched IPK.
The HU710PB-GL stock starter uses the application id
youtube.leanback.v4-pjtr, ARMv7 softfp and Starboard API 12. Build its
separate package with:
make pjtr-packageThe target updates the private images, verifies the exact starter contents and
uses .private-images/cobalt-bin/23.lts.6-12.xz to create:
output/youtube.leanback.v4-pjtr_1.2.1_arm.ipk
Override PROJECT_VERSION when preparing another release. The starter archive
is private input and must remain outside Git. The build checks the exact file
list, app id, k7lp metadata and known SHA-256 hashes of cobalt and
appinfo.json before packaging.
Only the finished compatibility IPK is published. Do not publish the original
starter archive, a standalone stock cobalt binary or device dump files.
By default the patched package uses:
App ID: youtube.leanback.v4
Name: YouTube webOS Cobalt AdFree
The patched IPK will be created in the output/ directory.
The standalone launcher path builds an app that only starts Cobalt with the YouTube TV URL. It does not copy files from an official YouTube package.
make standalone-packageDefault values:
App ID: com.cobalt.youtube.launcher
Name: YouTube Cobalt
URL: https://www.youtube.com/tv?launch=menu
Cobalt: Evergreen 7.1.2, arm-softfp, sbversion-18
This target needs a free Cobalt runtime directory containing:
cobalt-bin/7.1.2-arm-softfp-sb18/cobalt
cobalt-bin/7.1.2-arm-softfp-sb18/lib/libcobalt.lz4
cobalt-bin/7.1.2-arm-softfp-sb18/content/
libcobalt.lz4 and content/ can come from the official Cobalt Evergreen
release asset:
cobalt_evergreen_7.1.2_arm-softfp_sbversion-18_release_compressed_20260627021609.crx
The release asset does not include the webOS app starter. Provide a
webOS-compatible Cobalt starter from the matching 27.lts.1 source/port and
copy it into the runtime directory as cobalt. Cobalt's Evergreen
loader_app target may produce a shared object on Evergreen platforms; that is
not by itself the executable webOS main file.
The older patch archives usually only contain libcobalt.so, because they
reuse the official YouTube app's Cobalt starter. In that case the standalone
target stops with a clear error instead of falling back to official app files.
The app id, title and URL can be changed:
make standalone-package \
STANDALONE_APP_ID=com.cobalt.youtube.launcher \
STANDALONE_DISPLAY_NAME="YouTube Cobalt" \
STANDALONE_YOUTUBE_URL="https://www.youtube.com/tv?launch=menu"For a compatibility proof of concept that uses the extracted webOS starter with
the matching 23.lts.6-12 runtime:
make standalone-poc-packageThis still builds a separate app and does not patch the official YouTube app. The extracted starter is only a temporary compatibility bridge until a free webOS Cobalt starter is available.
Autostart can make the app appear as an input source next to HDMI/Live TV.
Enable autostart for the standard package:
luna-send-pub -n 1 'luna://com.webos.service.eim/addDevice' '{"appId":"youtube.leanback.v4","pigImage":"","mvpdIcon":""}'Disable autostart for the standard package:
luna-send-pub -n 1 'luna://com.webos.service.eim/deleteDevice' '{"appId":"youtube.leanback.v4"}'For the PJTR package, replace youtube.leanback.v4 with
youtube.leanback.v4-pjtr in these commands.
Autostart may improve startup time because the app can stay loaded in the background. This can increase idle memory usage.
The repository may include prebuilt Cobalt binaries in cobalt-bin.
To build Cobalt yourself, the build process clones Cobalt, applies the patches from cobalt-patches, builds libcobalt.so, and packages the result.
Example:
make BUILD_COBALT_PARALLEL=4 BUILD_COBALT_DEBUG=0 WEBAPP_DEBUG=0 \
cobalt-bin/23.lts.6-12/libcobalt.so \
cobalt-bin/23.lts.6-12.xzFor the standard SB13 runtime:
make BUILD_COBALT_PARALLEL=4 BUILD_COBALT_DEBUG=0 WEBAPP_DEBUG=0 \
cobalt-bin/23.lts.6-13/libcobalt.so \
cobalt-bin/23.lts.6-13.xzFor a clean rebuild after changing the Cobalt patch:
make clean-workdir/cobalt-23.lts.6
rm -rf cobalt-bin/23.lts.6-13 cobalt-bin/23.lts.6-13.xz
make BUILD_COBALT_PARALLEL=4 BUILD_COBALT_DEBUG=0 WEBAPP_DEBUG=0 \
cobalt-bin/23.lts.6-13/libcobalt.so \
cobalt-bin/23.lts.6-13.xzInstall the Developer Mode app on the TV, enable Developer Mode and enable the keyserver. Then download the private key:
http://TV_IP:9991/webos_rsa
Configure the TV:
ares-setup-device -a webos \
-i "username=prisoner" \
-i "privatekey=/path/to/webos_rsa" \
-i "passphrase=PASSPHRASE" \
-i "host=TV_IP" \
-i "port=9922"Enable SSH in the Homebrew Channel app, copy your public SSH key to the TV, then configure the device:
ares-setup-device -a webos \
-i "username=root" \
-i "privatekey=/path/to/id_rsa" \
-i "passphrase=SSH_KEY_PASSPHRASE" \
-i "host=TV_IP" \
-i "port=22"This project is community maintained. YouTube TV, Cobalt and webOS can change at any time. Ad blocking, SponsorBlock, login behavior or playback features may break after updates from YouTube or LG.
This project builds on research and work from the webOS Homebrew, Cobalt and YouTube TV modification communities.
Special thanks to these projects and maintainers whose work made this project possible:
Thanks to the contributors in issue #1 for providing the PJTR starter, device information and compatibility testing.
If this project helps you, you can support the maintainer here:
https://buymeacoffee.com/rf1705
See the included license files for details.