Skip to content

Instantly share code, notes, and snippets.

@Ircama
Last active March 23, 2024 13:48
Show Gist options
  • Star 92 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Ircama/1f29c2d2def75da6604756a3c91a8ab4 to your computer and use it in GitHub Desktop.
Save Ircama/1f29c2d2def75da6604756a3c91a8ab4 to your computer and use it in GitHub Desktop.
Replacing Netflix and Amazon keys of the webOS LG TV LG Magic Remote with other apps

Replacing Netflix and Amazon keys of the webOS LG TV LG Magic Remote with other apps

This procedure allows substituting one or both Netflix and Amazon keys of the Magic Remote Control Unit with other apps or TV control menus of the webOS LG TV.

Netflix and Amazon keys can be found just over the Red-Green-Yellow-Blue color buttons of such remote.

Assumption for this procedure is that you accept to uninstall the apps related to the keys to be substituted. Example: if you want to replace the Netflix key, you need to uninstall Netflix (possibly, you are not using Netflix if you do not need such key).

To uninstall Netflix or Amazon Prime, press the Home key of the Magic Remote, select the "LG Content Store" app, press "APP" at the top of the screen, press "My Apps", press the "Remove" button at the top-right corner and select the apps you want to remove.

Also, you need to setup your LG TV in developer mode. If the service you need to start is a webOS App that you already can recompile, simply change its "id" in appinfo.json. Otherwise, you have to install specific webOS apps that launch the features that you need to activate by pressing the keys. The following steps help to setup the environment, develop the launcher apps, compile and install them on the TV.

Follow the instructions in App Testing page to:

Follow Deploying a Web App page to get acquainted with the CLI usage.

At the end of the previous steps, open the "webOS TV CLI" app on your PC. The following procedure is tested with Windows 10. The apps are tested on webOS TV release 4.1.4, API 4.1.0.

To connect to your TV, you might want to get your passphrase; this can be done through the "Developer mode" app on the TV or with the following command:

ares-setup-device -listfull | findstr "passphrase"

Notice that the passphrase is case sensitive.

With the following command, check the configured name of your TV device (deviceinfo: prisoner@...):

ares-setup-device -list

this is the same as:

ares-device-info --device-list

The output should be:

name      deviceinfo                   connection  profile
--------  ---------------------------  ----------  -------
oled      prisoner@<ip address>:9922   ssh         tv
emulator  developer@<ip address>:6622  ssh         tv

We suppose that the label used to reach your TV is "oled".

Check proper connection by retrieving the system information of your TV:

ares-device-info --device oled

You need to have developer mode active to connect (run the "Developer Mode" app and check that Dev Mode Status is ON). Also check your IP address. If it needs to be changed, run ares-setup-device and modify your TV configuration (oled).

First you need to discover the App ID of the applications you need to connect to the keys. Run the app you want to start. The following command allows to discover most of the appIds running on your TV.

ares-novacom --device oled --run "ps -ef|sed -n '/sed -n/d;/appId/{s/.*appId.:\([^,]*\).*/\1/;p;}'"

After discovering the ID, use the command ares-launch --device oled <appid> to test launching the app from your PC.

Here are some app ID that you can check:

ares-launch --device oled com.webos.app.livetv
ares-launch --device oled com.webos.app.hdmi1
ares-launch --device oled com.palm.app.settings
ares-launch --device oled com.webos.app.browser
ares-launch --device oled com.webos.app.photovideo
ares-launch --device oled com.webos.app.discovery
ares-launch --device oled com.webos.app.connectionwizard
ares-launch --device oled com.webos.app.miracast
ares-launch --device oled com.webos.app.notificationcenter
ares-launch --device oled com.webos.app.tvuserguide
ares-launch --device oled com.webos.app.scheduler
ares-launch --device oled com.webos.app.channelsetting
ares-launch --device oled spotify-beehive
ares-launch --device oled amazon
ares-launch --device oled netflix

Notice that the last two ones, amazon and netflix, should not be installed.

There are configuration files like this one in webOS, that are references for the OS action of WebOS.Key_webOS_Netflix and WebOS.Key_webOS_Amazon keys, that by default run appId = "netflix" and appId = "amazon" respectively. Check this for instance:

ares-novacom --device oled --run "cat /usr/lib/qt5/qml/KeyFilters/appLaunch.js"|clip

The previous command copies the file to the clipboard. Paste it to an editor (e.g., Notepad++) to inspect the file. All OS files are readonly and cannot be changed. Anyway, if amazon and netflix apps are not installed, the related appIds can be resused by app launchers.

Let us consider you want to substitute netflix with youtube, so that when pressing the netflix key, youtube is launched.

Test launching Youtube from your PC:

ares-launch --device oled youtube.leanback.v4

You can discover "youtube.leanback.v4" appId with the previously described method.

Now we need to create the launcher app. Read Build Your First App for webOS TV to understand how to create an app using the CLI.

Change directory to your local development path (let us consider Downloads for instance):

cd %HOMEPATH%\Downloads

Use ares-generate to create the basic Web App template for webOS TV. Let us call it "launcher". We need to set the custom property id to the name of the key. netflix in our case. Title should be set to a description name related to the launched app:

ares-generate -t basic -p "id=netflix" -p "title=YouTube App Launcher with the Netflix key" -p "vendor=open source" -p "transparent=true" launcher

The previous command creates the launcher directory, including a working source.

Edit appinfo.json in the launcher directory and remove the double quotes from the true value of transparent parameter, so that it is set as follows:

  "transparent": true

Other App Metadata can be optionally set, but are not strictly necessary.

Replace the index.html file in the launcher directory with the following:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=1920, user-scalable=no">
	<script src="webOSTVjs-1.2.0/webOSTV.js" charset="utf-8"></script>
	<script src="webOSTVjs-1.2.0/webOSTV-dev.js" charset="utf-8"></script>
	<script type="text/javascript">
    (function() {
        // Launching app without parameter
        var request = webOS.service.request("luna://com.webos.applicationManager", {
            method: "launch",
            parameters: { "id": "youtube.leanback.v4" },
            onSuccess(response) {
              window.close();
            },
            onFailure(error) {
              window.close();
            },
        });
    })();
	</script>
</head>
<body>
</body>
</html>

We use the webOS.service.request LS2 API to call a webOS Service from the Web App, including the appropriate URI (e.g., luna://com.webos.applicationManager), method (launch), parameters ({ "id": "<appId>" }) and setting up callbacks to close the application.

The id parameter in the javascript shall be assigned to the feature or the app to launch; in our case, YouTube is youtube.leanback.v4:

            parameters: { "id": "youtube.leanback.v4" },

Create a package with the name of the original ID (in our case, netflix):

ares-package launcher

The local directory will include a file named with the original ID of the application, followed by the version and "_all.ipk" (netflix_0.0.1_all.ipk in our case).

Install the created app to the TV:

ares-install --device oled netflix_0.0.1_all.ipk

Done.

Note. Connecting your TV via SSH is not needed. In case you have SSH installed and you want to test it, use the following command:

ssh -i %HOMEPATH%\.ssh\oled_webos prisoner@<ip address> -p 9922 "/bin/bash -i"

Custom installed applications are stored in folder /media/developer/apps/usr/palm/applications/. Files can be edited online.

Notice that luna-send is protected and luna-send-pub should be used instead:

# Get TV data:
luna-send-pub -n 1 -f luna://com.palm.systemservice/osInfo/query '{ "subscribe": false }'
cat /var/run/nyx/device_info.json
cat /var/run/nyx/os_info.json

# Start YouTube application
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{ "id": "youtube.leanback.v4" }'

# Run Netflix application
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "netflix", "params":{}}'

# Welcome popup 
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.webos.app.mystarter", "params": {}}'

# Configuration menu:
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.palm.app.settings", "params": {"target":"picture"}}'
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.palm.app.settings", "params": {"target":"sound"}}'
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.palm.app.settings", "params": {"target":"channel"}}'
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.palm.app.settings", "params": {"target":"network"}}'
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.palm.app.settings", "params": {"target":"general"}}'
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.palm.app.settings", "params": {"target":"accessibility"}}'

# Show TV User Guide:
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.webos.app.tvuserguide"}'

# Switch to TV
luna-send-pub -n 1 "luna://com.webos.applicationManager/launch" '{ "id": "com.webos.app.livetv" }'

# Toggle TV/Radio
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.webos.app.livetv", "params": {"id":"tvKey"}}'

# Subtitle menu
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.webos.app.tvhotkey", "params": {"activateType":"subtitle"}}'

# Multi-sound menu
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.webos.app.tvhotkey", "params": {"activateType":"multi-sound-setting"}}'

# Audio-description
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.webos.app.tvhotkey", "params": {"activateType":"audio-description"}}'

# Channel menu
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.webos.app.livemenu", "params": {"activateType":"channels"}}'

# Virtual keyboard Search
luna-send-pub -n 1 -f "luna://com.webos.applicationManager/launch" '{"id": "com.webos.app.voice", "params": {"activateType":"mrcu", "launchMode":"vkb"}}'

# listing launch points is not allowed:
luna-send-pub -n 1 "luna://com.palm.applicationManager/listLaunchPoints" "{}"

# Also, closing an application or getting app info is denied:
luna-send-pub -n 1 -f "luna://com.webos.service.applicationmanager/closeByAppId" '{"id":"youtube.leanback.v4"}'
luna-send-pub -n 1 -f "luna://com.webos.service.applicationmanager/getAppInfo" '{"id":"youtube.leanback.v4"}'
luna-send-pub -n 1 -f "luna://com.webos.service.applicationmanager/getForegroundAppInfo" '{}'
@ai-bits
Copy link

ai-bits commented Dec 17, 2020

While I appreciate your example to redefine the Netflix key a lot, it just gave me the worst half hour of my 40-year programming life!

Guess one pivotal point (not mentioned?) to really change the Netflix key was to switch off Quickstart+ to make Developer Mode > Empty Cache work?!

The bummer: Once it worked, the TV switched to YouTube innert a second, no matter what I switched to on the remote or in the CLI!
No chance to switch off developer mode or Extend Session Time to get rid of the modification, because it immediately returned to YouTube!

Thankfully, to reprogram to a non-existent app did the trick. I fed it com.webos.app.developermode, contemplating it would switch there if it existed, giving me one way out -- or stop running in circles if not.

Any idea why it recurses?

Just realized I have the IDE working and can delete the mod from there. Currently the mod doesn´t do any harm due to the non-existent com.webos.app.developermode.
Thanks
G.

@Ircama
Copy link
Author

Ircama commented Dec 17, 2020

Yes, I also verified of this recurse now, it did not happen in the past. There should be a way to avoid it. I made this hack note essentially for myself, I found it rather useful while I was double testing a custom app not been used recently. If I am not able to overcome the current issue, I'll delete the gist.

@ai-bits
Copy link

ai-bits commented Dec 17, 2020

Thanks a ton for the quick response and verification!
Boy did it give me the sweats when I realized it wouldn´t let me do my thing in the Dev Mode app and I didn´t know a way from the command line to delete the hack.

Any suspicion why it goes circles? As opposed to me you seem to be very proficient on webOS.
Thanks
G.

@ai-bits
Copy link

ai-bits commented Dec 17, 2020

FIY, this is on a pretty new 48CX9LB with webOS TV 5.1.1-3707 and firmware 03.11.30.

@ai-bits
Copy link

ai-bits commented Dec 17, 2020

I get the feeling there is some interaction with the quick start of apps on numeric button long-press.
With at least two ways out I got brave, installed a different app on the Netflix button and as soon as I long-pressed a number key there it was again - the vicious circle.

@andrewfraley
Copy link

I realize this isn't related to your gist here, but do you know if there's a way for me to reprogram the volume buttons on the magic remote with custom IR hex codes? The device connection app doesn't support my device, but considering it can program the remote, I assume I can create my own custom app to do the same thing with my custom IR codes.

@Ircama
Copy link
Author

Ircama commented Dec 17, 2020

I realize this isn't related to your gist here, but do you know if there's a way for me to reprogram the volume buttons on the magic remote with custom IR hex codes? The device connection app doesn't support my device, but considering it can program the remote, I assume I can create my own custom app to do the same thing with my custom IR codes.

Not sure I got your point.

In case the remote is not programmable, it is rather easy to translate IR codes through a wide carrier range IR receiver, IR LED and some cheap microcontroller. That said, I might suspect that when the TV is powered on, the magic remote is no more transmitting IR sequences (but Radio Frequencies).

@Ircama
Copy link
Author

Ircama commented Dec 18, 2020

I'm afraid window.close() is not permitted with webOS and results are unpredictable. I'm not aware of alternative methods at the moment. To remove an application with "applid" APP_ID:

ares-install --device oled -r applid

@ai-bits
Copy link

ai-bits commented Dec 18, 2020

Buongiorno! Guess the most recent post is for me.
I studied up a bit and yes, the remove argument to ares-install is one of the ways to skin the cat.
And as said, I got the Eclipse webOS IDE configured. I decided to get rid of the netflix hack the GUI-way instead of only defusing the prg with a non-existent appID.

Do you know if it does make any sense to ask on the LG dev forum, or is it as bad as Samsung´s was coupla years ago?

If we get this behaving it would be interesting to know the config file of the Movies key and the appID of Rakuten TV to replace the assignment.
Also, I couldn´t find the appID of Developer Mode yet.

Thanks
G.

@Ircama
Copy link
Author

Ircama commented Dec 18, 2020

@ai-bits, I'm afraid there is no documented API to close an active webOS app; I think that such use case (closing an app without user intervention) is not in line with webOS, which autonomously manages apps, including user interaction (which, e.g., can terminate an app by clicking the "X (close)" button). With the current firmware versions, using the unallowed window.close() appears to still work until the TV is switched off and then on. Turning it on with the haked key produces the loop as the operating system always tries to automatically restart the died app.

I'm not sure that I got your other point, anyway to remove the app with netflix APP_ID (and automatically close it), other than the GUI you can simply issue:

ares-install --device oled -r netflix

Besides, a new installation automatically updates a previous one and kills the related running process.

@ai-bits
Copy link

ai-bits commented Dec 18, 2020

Yup, removing or replacing the hack is no problem.

Re app closing I found ares-launch --device Lucky --close youtube.leanback.v4, but then it said
ERR! ares-launch: Error: luna-send command failed (Only Dev app should be closed using /dev category_API), which I don´t understand.

Chugging along
G.

@Ircama
Copy link
Author

Ircama commented Dec 18, 2020

ERR! ares-launch: Error: luna-send command failed (Only Dev app should be closed using /dev category_API), which I don´t understand.

You can only close development apps, e.g., yours, not production ones.

@ai-bits
Copy link

ai-bits commented Dec 28, 2020

You can only close development apps, e.g., yours, not production ones.

Yeah, thanks, was pretty obvious on second glance. Was just out of time.

Wanting to help to debug ChanSort for webOS 5 I cut my teeth into the LG CX over the last coupla days.

I had a peek at the here referenced appLaunch.js, but I couldn´t find anything like WebOS.Key_webOS_Netflix in the 500,000 file system entries, so I´m wondering where you found this. Rather looks like some code snippet
Thanks
G.

@Ircama
Copy link
Author

Ircama commented Dec 28, 2020

I had a peek at the here referenced appLaunch.js, but I couldn´t find anything like WebOS.Key_webOS_Netflix in the 500,000 file system entries, so I´m wondering where you found this. Rather looks like some code snippet

I should have found it by analyzing some internals of the webOS TV operating system if I remember well, years ago.

@ai-bits
Copy link

ai-bits commented Dec 28, 2020

Ahh, found in /usr/lib/qml/KeyFilters/easytv.js, same path as appLaunch.js
Time for bed a bit earlier today.

@gpregger
Copy link

gpregger commented Oct 8, 2021

The bummer: Once it worked, the TV switched to YouTube innert a second, no matter what I switched to on the remote or in the CLI! No chance to switch off developer mode or Extend Session Time to get rid of the modification, because it immediately returned to YouTube!

Thankfully, to reprogram to a non-existent app did the trick. I fed it com.webos.app.developermode, contemplating it would switch there if it existed, giving me one way out -- or stop running in circles if not.

Any idea why it recurses?

Hi

Sorry for digging out the old thread, but I stumbled upon the same issue after rooting my TV yesterday. I packaged an app that would also launch YouTube when pressing the Netflix key on the remote, but then after a reboot, the TV would automatically keep switching to the YouTube app.

Long story short, I think I figured out why it happens:
According to the log in /var/log/messages something called the com.webos.service.preloadmanager kept calling the netflix package which of course in turn starts the YouTube app.

Some digging revealed an API:

root@LGwebOSTV:/etc/configd/layers/base# cat /usr/share/luna-service2/api-permissions.d/com.webos.service.preloadmanager.api.json
{
    "system" : [
        "com.webos.service.preloadmanager/getPreloadPolicy",
        "com.webos.service.preloadmanager/setPreloadPolicy",
        "com.webos.service.preloadmanager/setPreloadStatus"
    ]
}

Unfortunately I couldn't find any documentation for this anywhere, so I just started brute forcing:

root@LGwebOSTV:/etc/configd/layers/base# luna-send -n 1 -f luna://com.webos.service.preloadmanager/getPreloadPolicy '{}'
{
    "applications": [
        {
            "isEnabled": true,
            "id": "com.webos.app.container",
            "preloadType": "periodic",
            "preloadMode": "partial",
            "requiredMemory": 71,
            "staticPriority": 10
        },
        {
            "isEnabled": true,
            "id": "netflix",
            "preloadType": "periodic",
            "preloadMode": "partial",
            "requiredMemory": 100,
            "staticPriority": 10
        },
        {
            "isEnabled": true,
            "id": "com.webos.app.browser",
            "preloadType": "oneshot",
            "preloadMode": "partial",
            "requiredMemory": 72,
            "staticPriority": 10
        },
        {
            "isEnabled": true,
            "id": "com.webos.app.tips",
            "preloadType": "oneshot",
            "preloadMode": "partial",
            "requiredMemory": 55,
            "staticPriority": 10
        },
        {
            "isEnabled": true,
            "id": "youtube.leanback.v4",
            "preloadType": "oneshot",
            "preloadMode": "semi-full",
            "requiredMemory": 135,
            "staticPriority": 10
        },
        {
            "isEnabled": true,
            "id": "amazon",
            "preloadType": "oneshot",
            "preloadMode": "partial",
            "requiredMemory": 100,
            "staticPriority": 10
        },
        {
            "isEnabled": true,
            "id": "vudu",
            "preloadType": "oneshot",
            "preloadMode": "partial",
            "requiredMemory": 73,
            "staticPriority": 10
        },
        {
            "isEnabled": true,
            "id": "pooq",
            "preloadType": "oneshot",
            "preloadMode": "partial",
            "requiredMemory": 100,
            "staticPriority": 10
        }
    ],
    "returnValue": true
}

Intuitively this looks like webos just tries to keep "periodically" "preloading" the netflix app probably so it starts a little faster when needed.

After some more trial and error I came up with this command:

root@LGwebOSTV:~# luna-send -n 1 -f luna://com.webos.service.preloadmanager/setPreloadPolicy '{"application": {"id":"netflix"}}'
{
    "returnValue": true
}

where upon the getPreloadPolicy output changes like so:

root@LGwebOSTV:~# luna-send -n 1 -f luna://com.webos.service.preloadmanager/getPreloadPolicy '{}'
{
    "applications": [
        {
            "isEnabled": false,
            "id": "netflix",
            "preloadType": "periodic",
            "preloadMode": "partial",
            "requiredMemory": 100,
            "staticPriority": 10
        },
...

And indeed as soon as that is done, the YouTube app no longer keeps autostarting! Almost there, just have to hope this persists upon reboot...

Aaaand of course it doesn't.

So I had to dig out my barely existing shell scripting skills and cobble this together:

root@LGwebOSTV:/var/lib/webosbrew/init.d# cat disableNetflixPreload 
#!/bin/sh
until grep -Fxq '    "returnValue": true' /tmp/disable_preload_log
do
    /usr/bin/luna-send -n 1 -f luna://com.webos.service.preloadmanager/setPreloadPolicy '{"application": {"id":"netflix"}}' > /tmp/disable_preload_log
done
/usr/bin/luna-send -n 1 -f luna://com.webos.service.preloadmanager/setPreloadPolicy '{"application": {"id":"amazon"}}'
rm -f /tmp/disable_preload_log

And it actually seems to work. For now at least.

Just wanted to have this documented somewhere... And if more elegant solutions exist, I'm all ears :)

@ai-bits
Copy link

ai-bits commented Oct 14, 2021

Good to know it is solved / works again with newer OSes! Thanks for digging into it!

For my part I've come to realize that I only really use a handful of basic keys for my purpose and not even the shortcut number keys (long press).

Cheers
G.
PS: Love the LG remote with its wealth of keys. If it were for the remote I'd not buy a recent Samsung, but I'm in the market for the 8k 55" QN700A as a monitor. Currently use a 49" UHD.

@dxwil
Copy link

dxwil commented Nov 15, 2021

I have a little problem with this. The code above doesn't show all the installed app ids, it shows just a few and not the one I am looking for. Is there a way to see all the app ids.
P.S. I am searching for an app called Plex

@Z0l
Copy link

Z0l commented Nov 29, 2021

You can try the https://github.com/klattimer/LGWebOSRemote to fetch all app id-s (lgtv MyTV listApps). By the way, the Plex app Id is "cdp-30" without the quotes, so the relevant line in index.html should look like this:

parameters: { "id": "cdp-30" },

On a separate note, can somebody shed some light how the Google Assistant and Amazon Alexa keys can be remapped? Are those also bound to apps just like the Netflix button? I was able to find the packages for Google Assistan ("google.assistant") and Amazon Alexa ("amazon.alexapr") but since I don't see either in the list of applications, I'm not sure how to uninstall them.

@GuillaumeSmaha
Copy link

@ai-bits I found the ID for RakutenTV, it is ui30.

Other AppID I found:

  • Amazon Prime Video: amazon
  • AppleTV: com.apple.appletv
  • Disney+: com.disney.disneyplus-prod
  • MototovTV: com.molotov.weboslg
  • Netflix: netflix
  • Twitch: tv.twitch.tv.starshot.lg
  • RakutenTV: ui30

@MikeDabrowski
Copy link

I've managed to make this hack to substitute Rakuten with Spotify.

Be aware that current webos.js version is 1.2.4 (at least on my tv). The copy-pasted solution with 1.2.0 silently didn't work.

How can I preserve this hack? As far as I know, developer mode session timeouts at some point, and the launcher app gets uninstalled.
What would be the least painful workaround ?

I'd rather not root the TV, nor push 'prod' app to the store just with this stuff. I've seen some ssh solutions: apparently making ssh calls can extend the session - but that requires some other device working all daily.

@Arretu
Copy link

Arretu commented May 5, 2022

I've managed to make this hack to substitute Rakuten with Spotify.

Be aware that current webos.js version is 1.2.4 (at least on my tv). The copy-pasted solution with 1.2.0 silently didn't work.

How can I preserve this hack? As far as I know, developer mode session timeouts at some point, and the launcher app gets uninstalled. What would be the least painful workaround ?

I'd rather not root the TV, nor push 'prod' app to the store just with this stuff. I've seen some ssh solutions: apparently making ssh calls can extend the session - but that requires some other device working all daily.

Using the key you got in this post, ssh into your TV and run

cat /var/luna/preferences/devmode_enabled

Copy the resulting token, then go to ifttt.com, and using a timed trigger of your choice (below 50 hours) set a webhook for the following URL:

https://developer.lge.com/secure/ResetDevModeSession.dev?=<yourtokenhere>

All credit to other people, but the links I no longer have to hand.

@bricktror
Copy link

Hi all,
Was lookin into trying this and did some research to solve the preload issue.

Could it be solved by wrapping the app launch in a listener for the weboslaunched event (https://webostv.developer.lge.com/develop/app-developer-guide/web-app-lifecycle/)?

E.g.
document.addEventListener('webOSLaunch', function(){webOS.service.request(...); })

@triumfas
Copy link

triumfas commented Jun 16, 2022

Can anyone share Tidal App ID/ App name so I could start ir when remapping? Another option could help - how to make HTTP Post request upon opening the app (I could use it with webhook and home assistant)?
Thanks

@Maschine2501
Copy link

Maschine2501 commented Nov 26, 2022

Google

This would interesst me too....

I tried remapping the rakutenTV Button with the sideloaded crunchyroll app, but the tv blanked after hitting the Rakuten Button...
After some testing I found out that my TV (65C2) had a newer Java Version, 1.2.4, not 1.2.0 as in the instructions.
This is the example that worked for me:

script src="webOSTVjs-1.2.4/webOSTV.js" charset="utf-8"></script
script src="webOSTVjs-1.2.4/webOSTV-dev.js" charset="utf-8"></script

@andrewfraley
Copy link

Greetings, I've built what I think is an easier and persistent solution to solve this, but it does require a rooted TV. You don't have to mess with creating a custom app, this is just a Python script that is run on boot that watches for button presses on the remote. You can use this to make any button launch any app, and it also provides built in functionality to adjust the energy management and oled backlight settings via button presses (for example I use the yellow button to cycle energy savings modes and the blue button to toggle eye comfort mode).

https://github.com/andrewfraley/magic_mapper

@maatthc
Copy link

maatthc commented Apr 27, 2023

Just a fyi, for those with a rooted tv, you can control the Netflix "preloading" by editing /var/preferences/webos-preload-manager-conf.json and changing "netflix":true to "netflix":false... tested on webOS TV 7.3.0

@sdellava
Copy link

sdellava commented Sep 8, 2023

Super cool!!

I found this page looking for a way to remap a remote key. I guess the remote is missing one importa key: the "quit" command. It is used in almost all menù of the setopbox but it is missing as fisical key. So my question is: is it possible to remap, i.e., the red key to the "quit" code?

@5moufl
Copy link

5moufl commented Oct 21, 2023

Super cool!!

I found this page looking for a way to remap a remote key. I guess the remote is missing one importa key: the "quit" command. It is used in almost all menù of the setopbox but it is missing as fisical key. So my question is: is it possible to remap, i.e., the red key to the "quit" code?

Long-pressing the back key seems to do the trick for me.

@sdellava
Copy link

Long-pressing the back key seems to do the trick for me.

WOW ... IT WORKS !! Years looking for that function and it was always under my thumb !!!!

Thank you very much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment