i want to see log when my app is not launch because i send dail request to that app but lg can not launch my app so see log why lg reject dail request.
so i use this command to see log ares-log -d your-tv-name
but the error show chnage profile i already set that to tv profile i share image also.
thank you,
please give me some solution also to see lg tv log without launch app.
phone log for dail
2026-02-26 11:56:48.265 17855-18766 DIALClient com.example.app D DIAL discovery completed. Found 1 devices
2026-02-26 11:56:48.265 17855-18766 FireTVCastPlugin com.example.app D DIAL discovery completed. Found 1 DIAL devices
2026-02-26 11:56:48.467 17855-18767 FireTVCastPlugin com.example.app D
Found 1 DIAL device(s)
2026-02-26 11:56:51.122 17855-17855 Capacitor/Plugin com.example.app V To native (Capacitor plugin): callbackId: 128592045, pluginId: FireTVCast, methodName: connectToDevice
2026-02-26 11:56:51.123 17855-17855 Capacitor com.example.app V callback: 128592045, pluginId: FireTVCast, methodName: connectToDevice, methodData: {“deviceId”:“dial_192_168_1_6”,“host”:“192.168.1.6”,“port”:8008,“type”:“DIAL”,“packageName”:“com.wisedv.wiseott”}
2026-02-26 11:56:51.124 17855-17944 FireTVCastPlugin com.example.app D Connecting to DIAL device: dial_192_168_1_6 at 192.168.1.6:8008
2026-02-26 11:56:51.125 17855-17944 FireTVCastPlugin com.example.app D Connected to DIAL device: [LG] webOS TV UA82006LA
2026-02-26 11:56:51.126 17855-18773 FireTVCastPlugin com.example.app D
Launching DIAL app: com.wisedv.wiseott on 192.168.1.6
2026-02-26 11:56:51.126 17855-18773 FireTVCastPlugin com.example.app D
DIAL URL: http://192.168.1.6:36866/apps/com.wisedv.wiseott
2026-02-26 11:56:51.126 17855-18773 DIALClient com.example.app D
DIAL Launch URL: http://192.168.1.6:36866/apps/com.wisedv.wiseott
2026-02-26 11:56:51.126 17855-18773 DIALClient com.example.app D
Application-URL: http://192.168.1.6:36866/apps/
2026-02-26 11:56:51.126 17855-18773 DIALClient com.example.app D
App Name: com.wisedv.wiseott
2026-02-26 11:56:51.131 17855-18773 CapacitorCookies com.example.app I Getting cookies at: ‘http://192.168.1.6:36866/apps/com.wisedv.wiseott’
2026-02-26 11:56:51.429 17855-17888 RenderInspector com.example.app W QueueBuffer time out on com.example.app/com.example.app.MainActivity, count=1, avg=29 ms, max=29 ms.
2026-02-26 11:56:56.094 17855-17956 Capacitor/NetworkPlugin com.example.app V Notifying listeners for event networkStatusChange
2026-02-26 11:56:56.094 17855-17956 Capacitor/NetworkPlugin com.example.app D No listeners found for event networkStatusChange
2026-02-26 11:57:02.523 17855-18773 DIALClient com.example.app E
FAILED: Exception - timeout
java.net.SocketTimeoutException: timeout
at com.android.okhttp.okio.Okio$3.newTimeoutException(Okio.java:214)
at com.android.okhttp.okio.AsyncTimeout.exit(AsyncTimeout.java:263)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:217)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:307)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:301)
at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:197)
at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:188)
at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:129)
at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:750)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:622)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:475)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
at com.wiseott.firetvcast.DIALClient.launchApplicationWithDetails(DIALClient.java:243)
at com.wiseott.firetvcast.FireTVCastPlugin.lambda$launchDialAppEmpty$2(FireTVCastPlugin.java:154)
at com.wiseott.firetvcast.FireTVCastPlugin.$r8$lambda$d0zpbf10PekaCQR-b92KnE_FoH0(Unknown Source:0)
at com.wiseott.firetvcast.FireTVCastPlugin$$ExternalSyntheticLambda5.run(D8$$SyntheticClass:0)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.net.SocketException: Socket closed
at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:144)
at com.android.okhttp.okio.Okio$2.read(Okio.java:138)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:213)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:307)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:301)
at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:197)
at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:188)
at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:129)
at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:750)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:622)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:475)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
at com.wiseott.firetvcast.DIALClient.launchApplicationWithDetails(DIALClient.java:243)
at com.wiseott.firetvcast.FireTVCastPlugin.lambda$launchDialAppEmpty$2(FireTVCastPlugin.java:154)
at com.wiseott.firetvcast.FireTVCastPlugin.$r8$lambda$d0zpbf10PekaCQR-b92KnE_FoH0(Unknown Source:0)
at com.wiseott.firetvcast.FireTVCastPlugin$$ExternalSyntheticLambda5.run(D8$$SyntheticClass:0)
at java.lang.Thread.run(Thread.java:923)
2026-02-26 11:57:02.523 17855-18773 FireTVCastPlugin com.example.app D
Launch result (length=27): ‘FAILED: Exception - timeout’
2026-02-26 11:57:02.523 17855-18773 FireTVCastPlugin com.example.app D
Starts with ‘SUCCESS’: false
2026-02-26 11:57:02.523 17855-18773 FireTVCastPlugin com.example.app D
First 10 chars: ‘FAILED: Ex’
2026-02-26 11:57:02.524 17855-18773 FireTVCastPlugin com.example.app E
DIAL app launch failed: FAILED: Exception - timeout
2026-02-26 11:57:02.524 17855-18773 Capacitor com.example.app D Sending plugin error: {“save”:false,“callbackId”:“128592045”,“pluginId”:“FireTVCast”,“methodName”:“connectToDevice”,“success”:false,“error”:{“message”:“LAUNCH_FAILED”,“code”:“FAILED: Exception - timeout”}}
2026-02-26 11:57:07.331 17855-17888 RenderInspector com.example.app W QueueBuffer time out on com.example.app/com.example.app.MainActivity, count=1, avg=22 ms, max=22 ms.
2026-02-26 11:57:08.232 17855-17956 Capacitor/NetworkPlugin com.example.app V Notifying listeners for event networkStatusChange
2026-02-26 11:57:08.232 17855-17956 Capacitor/NetworkPlugin com.example.app D No listeners found for event networkStatusChange
2026-02-26 11:57:10.827 17855-17855 Capacitor/Plugin com.example.app V To native (Capacitor plugin): callbackId: 128592046, pluginId: FireTVCast, methodName: discoverDevices
2026-02-26 11:57:10.827 17855-17855 Capacitor com.example.app V callback: 128592046, pluginId: FireTVCast, methodName: discoverDevices, methodData: {}
2026-02-26 11:57:10.827 17855-17944 FireTVCastPlugin com.example.app D Starting DIAL device discovery (Fire TV + Google TV)…
2026-02-26 11:57:10.829 17855-18785 FireTVCastPlugin com.example.app D Starting DIAL discovery (Fire TV + Google TV)…
2026-02-26 11:57:10.831 17855-18785 DIALClient com.example.app D DIAL discovery packet sent
2026-02-26 11:57:10.878 17855-18785 DIALClient com.example.app D DIAL response from 192.168.1.6:
HTTP/1.1 200 OK
Location: http://192.168.1.6:1574/
Cache-Control: max-age=1800
Server: WebOS/1.5 UPnP/1.0 webOSTV/1.0
EXT:
USN: uuid:b40e8f01-af7c-46c2-8898-7bedee850562:
dial-multiscreen-org:service:dial:1
ST: urn:dial-multiscreen-org:service:dial:1
Date: Thu, 26 Feb 2026 06:27:09 GMT
WAKEUP: MAC=64:75:da:40:41:a6;Timeout=60
2026-02-26 11:57:10.884 17855-18785 CapacitorCookies com.example.app I Getting cookies at: ‘http://192.168.1.6:1574/’
2026-02-26 11:57:10.888 17855-18785 CapacitorCookies com.example.app I Getting cookies at: ‘http://192.168.1.6:1574/’
2026-02-26 11:57:10.908 17855-18785 DIALClient com.example.app D Device description XML: 1 0 urn:dial-multiscreen-org:service:dial:1 [LG] webOS TV UA82006LA LG http://www.lge.com 43UA82006LA.DTRDLJL http://www.lge.com WEBOS uuid:b40e8f01-af7c-46c2-8898-7bedee850562 urn:dial-multiscreen-org:service:dial:1 urn:dial-multiscreen-org:serviceId:dial /WebOS_Dial/b40e8f01-af7c-46c2-8898-7bedee850562/scpd.xml /WebOS_Dial/b40e8f01-af7c-46c2-8898-7bedee850562/control.xml /WebOS_Dial/b40e8f01-af7c-46c2-8898-7bedee850562/event.xml
2026-02-26 11:57:10.909 17855-18785 DIALClient com.example.app D Normalized Application-URL with trailing slash: http://192.168.1.6:36866/apps/
2026-02-26 11:57:10.909 17855-18785 DIALClient com.example.app D DIAL device discovered: dial_192_168_1_6 at http://192.168.1.6:36866/apps/
2026-02-26 11:57:10.909 17855-18785 DIALClient com.example.app D DIAL response from 192.168.1.6:
HTTP/1.1 200 OK
Location: http://192.168.1.6:1574/
Cache-Control: max-age=1800
Server: WebOS/1.5 UPnP/1.0 webOSTV/1.0
EXT:
USN: uuid:b40e8f01-af7c-46c2-8898-7bedee850562:
dial-multiscreen-org:service:dial:1
ST: urn:dial-multiscreen-org:service:dial:1
Date: Thu, 26 Feb 2026 06:27:09 GMT
WAKEUP: MAC=64:75:da:40:41:a6;Timeout=60
lg tv setup
“requiredPermissions”: [
"internet"**,**
"tv.display"**,**
"tv.window"**,**
"network.operation"**,**
"tv.dial"
],
“dialAppName”: “com.wisedv.wiseott”,
“handlesRelaunch”: true**,**
“transparent”: false**,**
“disableBackHistoryAPI”: true**,**
“visible”: true**,**
“supportPackaging”: true**,**
“deeplinkingParams”: “videoUrl,title,vodType,thumbnail”,
“checkUpdateOnLaunch”: false**,
dail handler file in my app ipk
**
/**
* LG webOS DIAL Handler (FIXED for URL Query Parameters)
* Handles DIAL protocol launch parameters from Android mobile app
* ES5 compatible for LG webOS packaging/minification
*
* IMPORTANT: LG webOS receives DIAL parameters via URL query string,
* NOT via POST body. This handler parses window.PalmSystem.launchParams
* which contains the URL query string.
*/
(function() {
'use strict'**;**
console**.**log('\[DIAL Handler\] Initializing (Fixed for URL params)...')**;**
*// Check if running on LG webOS*
**if** (**typeof** window**.***PalmSystem* **===** 'undefined') {
console**.**log('\[DIAL Handler\] Not running on LG webOS, skipping initialization')**;**
**return;**
}
console**.**log('\[DIAL Handler\] LG webOS detected')**;**
*/\*\**
*\* Parse launch parameters from URL query string*
*\* LG webOS passes the URL query string as launchParams*
*\* Format: videoUrl=...&title=...&vodType=...&thumbnail=...&contentId=...*
*\*/*
function parseLaunchParams() {
**try** {
var launchParams **=** window**.***PalmSystem***.***launchParams***;**
console**.**log('\[DIAL Handler\] Raw launch params:'**,** launchParams)**;**
**if** (**!**launchParams) {
console**.**log('\[DIAL Handler\] No launch parameters found')**;**
**return** null**;**
}
*// Handle both formats:*
*// 1. Direct query string: "videoUrl=...&title=..."*
*// 2. JSON format: {"videoUrl": "...", "title": "..."}*
var params **=** {}**;**
*// Try parsing as JSON first (for system launches)*
**try** {
params **=** JSON**.**parse(launchParams)**;**
console**.**log('\[DIAL Handler\] Parsed as JSON:'**,** JSON**.**stringify(params))**;**
*// If it's just system params (no videoUrl), return empty*
**if** (**!**params**.***videoUrl*) {
console**.**log('\[DIAL Handler\] System launch detected (no video data)')**;**
**return** null**;**
}
**return** params**;**
} **catch** (jsonError) {
*// Not JSON, parse as URL query string*
console**.**log('\[DIAL Handler\] Parsing as URL query string...')**;**
}
*// Parse URL query string format*
var pairs **=** launchParams**.**split('&')**;**
**for** (var i **=** 0**;** i **<** pairs**.**length**;** i**++**) {
var pair **=** pairs\[i\]**.**split('=')**;**
var key **=** pair\[0\]**;**
var value **=** pair\[1\]**;**
**if** (key **&&** value) {
params\[key\] **=** decodeURIComponent(value)**;**
}
}
console**.**log('\[DIAL Handler\] Parsed URL parameters:'**,** JSON**.**stringify(params))**;**
*// Return params even if incomplete (for app open vs video cast detection)*
**return** params**;**
} **catch** (error) {
console**.**error('\[DIAL Handler\] Error parsing launch params:'**,** error)**;**
**return** null**;**
}
}
*/\*\**
*\* Navigate to video player with DIAL parameters*
*\* If no params, app just opens to profile/home page (normal launch)*
*\*/*
function launchVideo(**params**) {
**try** {
*// Check if this is just an app open (no video data) or actual video cast*
**if** (**!**params **||** **!**params**.***videoUrl*) {
console**.**log('\[DIAL Handler\] App opened without video data - showing profile/home page')**;**
**return;**
}
console**.**log('\[DIAL Handler\] Launching video:'**,** params**.***title*)**;**
console**.**log('\[DIAL Handler\] Video URL:'**,** params**.***videoUrl*)**;**
console**.**log('\[DIAL Handler\] VOD Type:'**,** params**.***vodType*)**;**
console**.**log('\[DIAL Handler\] Content ID:'**,** params**.***contentId*)**;**
var contentId **=** params**.***contentId***;**
*// Fallback: Extract from thumbnail URL if contentId not provided*
**if** (**!**contentId **&&** params**.***thumbnail*) {
var idMatch **=** params**.***thumbnail***.**match(/\_(\\d**+**)\\//)**;**
**if** (idMatch **&&** idMatch\[1\]) {
contentId **=** idMatch\[1\]**;**
console**.**log('\[DIAL Handler\] Extracted content ID from thumbnail:'**,** contentId)**;**
}
} **else** **if** (contentId) {
console**.**log('\[DIAL Handler\] Content ID from params:'**,** contentId)**;**
}
var playerUrl **=** null**;**
**if** (params**.***vodType* **===** 'MOVIE' **&&** contentId) {
playerUrl **=** '/user/movie/' **+** contentId **+** '/watching'**;**
console**.**log('\[DIAL Handler\] Routing to movie player:'**,** playerUrl)**;**
} **else** **if** (params**.***vodType* **===** 'EPISODE' **&&** contentId) {
playerUrl **=** '/user/tvshow/' **+** contentId **+** '/season/1/watching'**;**
console**.**log('\[DIAL Handler\] Routing to episode player:'**,** playerUrl)**;**
} **else** {
console**.**warn('\[DIAL Handler\] Could not determine route, using sessionStorage fallback')**;**
var videoData **=** {
url**:** params**.***videoUrl***,**
title**:** params**.***title***,**
thumbnail**:** params**.***thumbnail***,**
type**:** params**.***vodType***,**
contentId**:** contentId
}**;**
sessionStorage**.**setItem('dialCastVideo'**,** JSON**.**stringify(videoData))**;**
playerUrl **=** '/user/home'**;**
}
console**.**log('\[DIAL Handler\] Final navigation URL:'**,** playerUrl)**;**
*// Navigate to video player after Angular bootstrap*
setTimeout(function() {
window**.***location***.***href* **=** playerUrl**;**
console**.**log('\[DIAL Handler\] Navigation complete')**;**
}**,** 1500)**;**
} **catch** (error) {
console**.**error('\[DIAL Handler\] Error launching video:'**,** error)**;**
}
}
*/\*\**
*\* Initialize DIAL handler on app load*
*\*/*
function initialize() {
console**.**log('\[DIAL Handler\] Checking for launch parameters...')**;**
var params **=** parseLaunchParams()**;**
**if** (params **&&** params**.***videoUrl*) {
console**.**log('\[DIAL Handler\] Video cast detected from mobile app')**;**
launchVideo(params)**;**
} **else** {
console**.**log('\[DIAL Handler\] Normal app launch (no video cast)')**;**
}
}
*// Initialize when DOM is ready*
**if** (document**.***readyState* **===** 'loading') {
document**.**addEventListener('DOMContentLoaded'**,** initialize)**;**
} **else** {
initialize()**;**
}
*// Expose handler for debugging*
window**.***DIALHandler* **=** {
parseLaunchParams**:** parseLaunchParams**,**
launchVideo**:** launchVideo
}**;**
console**.**log('\[DIAL Handler\] Ready (URL params mode)')**;**
})()**;
**
