Add inStart and ezAdjust commands to open the factory menus - #192
Merged
Merged
Conversation
The factory menus (In-Start, EZ Adjust) live in the hidden app
com.webos.app.factorywin. A plain launch starts the app in the
background but keeps it invisible: it only shows up when launched
with the executeFactory trigger params and unlocked by sending the
service PIN digits over the pointer input socket.
Add an LGTVInStart helper which launches factorywin with
{"id": "executeFactory", "irKey": "inStart"|"ezAdjust"}, opens the
pointer socket via getCursorSocket and sends the PIN, mirroring the
existing LGTVCursor pattern.
- lgtv --name MyTV --ssl inStart [pin]
- lgtv --name MyTV --ssl ezAdjust [pin]
The PIN defaults to the widely documented default 0413 and can be
overridden as an optional argument. Like sendButton, these commands
bypass parseargs and are not listed in the --help epilog.
klattimer
approved these changes
Oct 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds two commands that open the TV's factory service menus:
Why
Both menus live in the hidden app
com.webos.app.factorywin. A plainsystem.launcher/launchof that app id starts it in the foreground but keeps it invisible (it silently closes whatever app was running, showing nothing). The menu only actually displays when the app is launched with the factory trigger params and unlocked by sending the service PIN as button presses over the pointer input socket:ssap://system.launcher/launchwith payload{"id": "com.webos.app.factorywin", "params": {"id": "executeFactory", "irKey": "inStart"}}(ezAdjustfor the other menu)ssap://com.webos.service.networkinput/getPointerInputSocket) and sendtype:buttonpresses for each PIN digit (default0413, the widely documented default; override with the optional argument)Implementation
LGTV/instart.pywithLGTVInStart, mirroring the existingLGTVCursorpattern (main connection for the launch +getCursorSocket, then re-init the websocket on the pointer socket path to send the digits).LGTV/__init__.pyspecial-cases the two commands, likesendButton(they bypassparseargs, so they are not listed in the--helpepilog).Testing
Tested end to end against a webOS 5 TV (OLED CX series) over
--ssl: bothinStartandezAdjustlaunch the app, and the menu becomes visible after the PIN is sent. Sending an incorrect PIN simply leaves the menu hidden (no harm), andcloseApp com.webos.app.factorywinexits it.