Help ! Samsung TV Bindings with >2016 Samsung TV

@Mark_Webster

Yes, my test binding should send WOL packets similar to the original binding. I did rework the logic, as i found the original binding did not always work.

The test binding now sends 10 WOL packets, 100ms apart (takes 1 second), then waits to see if the TV wakes up, it repeats this every 10 seconds for a total of 30 seconds, before giving up. You should see this in the log if you have it set to TRACE.

Here is my log output of WOL events:

2021-11-08 09:57:01.777 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Received channel: samsungtv:tv:family_room:artMode, command: ON
2021-11-08 09:57:01.778 [INFO ] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: Send WOL packet to 10:2b:41:01:6d:27
2021-11-08 09:57:01.778 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:01.879 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:01.979 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:02.079 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:02.179 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:02.279 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:02.379 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:02.479 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:02.579 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:02.679 [TRACE] [.samsungtv.internal.WakeOnLanUtility] - Sent WOL packet from /192.168.100.60 to /192.168.100.255 10:2b:41:01:6d:27
2021-11-08 09:57:04.442 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.100.73: remoteDeviceAdded: MediaRenderer, http://192.168.100.73:9197/dmr, upnpUDN=ea645e34_d3dd_4b9b_a246_e2947f8973d6

I am still working on the test binding, just adding launching of apps support for >2020 TVā€™s right now. I will post a new binding when I have this working properly.

NOTE: I have found that WOL does not work if you have a soundbar connected to the ARC HDMI and you are using wired ethernet. Also, you have to enable the feature on the TV.

@FranzS

The getSupportedChannelNames is the polling job, it polls every x seconds (which you can configure) 1 second is the default, so yes, it will run forever.

What is the output of http://192.168.3.39:8001/api/v2/ (you can enter this in a web browser).

There is something odd as well, as the WebSocketArt channel connects, but Frame TV (with art Channel) werenā€™t launched until 2017, and the websocket interface wasnā€™t launched until 2016.

You should try my test binding posted earlier to see if it works better, it tries to auto discover the TV settings.

This does not seem to be a Tizen TV though, so you should use the legacy interface on port 55000, as the websocket interface may not work correctly (itā€™s sort of assumed that websocket TVā€™s are Tizen OS). The "ed.installedApp.get" command is a Tizen command to get installed apps, which wonā€™t work on your TV.

You may have to find the correct port on your TV, 55000 is the default, but it might be different on your TV. You wonā€™t be able to turn the TV on, but you can turn it off, and get basic controls, including the KeyCode channel (which is the most useful).

These are the common Samsung TV legacy ports:
1515, 7001, 15500, and 55000

Hey Nicholas,
thanks for the fast support here.
This is the output

http://192.168.3.39:8001/api/v2
{
ā€œstatusā€: 404,
ā€œmessageā€: ā€œNot Foundā€,
ā€œcodeā€: 404
}

image

When I try it with HTTPs the output is the same.

image

Iā€™ll take a look on the test binding :slight_smile:

you forgot ā€œ/ā€ in the end :slight_smile:
Correct is: http://192.168.3.39:8001/api/v2/

cheers

Just wanted to give my positive feedback. The binding hasnā€™t lost connection to the TV (2020 The Frame) during this time period. On/off and Artmode works perfect.

Many many thanks for your efforts.

Hi @sintei & @Nicholas_Waterton,

sorry I am stupid :slight_smile:
Iā€™ve installed 3.2.0 as addon and tested again.
Unfortunately itā€™s not fixed, but the output is much better than before.

Thanks for your support
/Franz

http://192.168.3.39:8001/api/v2/
returns:

{
  "id": "uuid:19284214-b84a-4ab7-971e-83018d4f9255",
  "name": "[TV] UE48J6250",
  "version": "2.0.25",
  "device": {
    "type": "Samsung SmartTV",
    "duid": "uuid:19284214-b84a-4ab7-971e-83018d4f9255",
    "model": "15_HAWKM_2D",
    "modelName": "UE48J6200",
    "description": "Samsung DTV RCR",
    "networkType": "wireless",
    "ssid": "88:c3:97:c5:dc:d6",
    "ip": "192.168.3.39",
    "firmwareVersion": "Unknown",
    "name": "[TV] UE48J6250",
    "id": "uuid:19284214-b84a-4ab7-971e-83018d4f9255",
    "udn": "uuid:19284214-b84a-4ab7-971e-83018d4f9255",
    "resolution": "1920x1080",
    "countryCode": "DE",
    "msfVersion": "2.0.25",
    "smartHubAgreement": "true",
    "wifiMac": "FC:8F:90:AC:84:55",
    "developerMode": "0",
    "developerIP": ""
  },
  "type": "Samsung SmartTV",
  "uri": "http://192.168.3.39:8001/api/v2/"
}

https://192.168.3.39:8002/api/v2/ returns

{
  "id": "uuid:19284214-b84a-4ab7-971e-83018d4f9255",
  "name": "[TV] UE48J6250",
  "version": "2.0.25",
  "device": {
    "type": "Samsung SmartTV",
    "duid": "uuid:19284214-b84a-4ab7-971e-83018d4f9255",
    "model": "15_HAWKM_2D",
    "modelName": "UE48J6200",
    "description": "Samsung DTV RCR",
    "networkType": "wireless",
    "ssid": "88:c3:97:c5:dc:d6",
    "ip": "192.168.3.39",
    "firmwareVersion": "Unknown",
    "name": "[TV] UE48J6250",
    "id": "uuid:19284214-b84a-4ab7-971e-83018d4f9255",
    "udn": "uuid:19284214-b84a-4ab7-971e-83018d4f9255",
    "resolution": "1920x1080",
    "countryCode": "DE",
    "msfVersion": "2.0.25",
    "smartHubAgreement": "true",
    "wifiMac": "FC:8F:90:AC:84:55",
    "developerMode": "0",
    "developerIP": ""
  },
  "type": "Samsung SmartTV",
  "uri": "https://192.168.3.39:8002/api/v2/"
}

if I use 8001 and WEBSOCKET as connection

2021-11-08 18:52:19.808 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(346)] : Declared Method java.lang.Object.activate([interface org.osgi.service.component.ComponentContext]) not found
2021-11-08 18:52:19.809 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(346)] : activate method [activate] not found, ignoring
2021-11-08 18:52:19.810 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(346)] : Set implementation object for component
2021-11-08 18:52:19.812 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(346)] : Changed state from satisfied to active
2021-11-08 18:52:19.853 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Create a Samsung TV Handler for thing 'samsungtv:tv:ca54caf4b9'
2021-11-08 18:52:19.918 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Initializing Samsung TV handler for uid 'samsungtv:tv:ca54caf4b9'
2021-11-08 18:52:19.941 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Updated artModeIsSupported: false and PowerState: true
2021-11-08 18:52:19.942 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Check and create missing UPnP services
2021-11-08 18:52:19.944 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Device was NOT online
2021-11-08 18:52:19.946 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.3.39: Creating a Samsung TV RemoteController service: is UPNP:false
2021-11-08 18:52:19.948 [INFO ] [rnal.service.RemoteControllerService] - 192.168.3.39: Using WebSocket interface
2021-11-08 18:52:19.957 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: openConnection()
2021-11-08 18:52:19.958 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: RemoteControllerWebSocket start Client
2021-11-08 18:52:19.960 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: WebSocketClient starting
2021-11-08 18:52:19.976 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: WebSocketClient started
2021-11-08 18:52:19.978 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: connectWebSockets()
2021-11-08 18:52:19.979 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote connecting to: ws://192.168.3.39:8001/api/v2/channels/samsung.remote.control?name=b3BlbkhBQg==
2021-11-08 18:52:19.982 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@1f7f4b1[Not completed, 1 dependents]
2021-11-08 18:52:19.984 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt connecting to: ws://192.168.3.39:8001/api/v2/channels/com.samsung.art-app?name=b3BlbkhBQg==
2021-11-08 18:52:19.986 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@1bcacb1[Not completed, 1 dependents]
2021-11-08 18:52:19.987 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketV2 connecting to: ws://192.168.3.39:8001/api/v2?name=b3BlbkhBQg==
2021-11-08 18:52:19.990 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@a9db3d[Not completed, 1 dependents]
2021-11-08 18:52:19.991 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Start refresh task, interval=1000
2021-11-08 18:52:20.009 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote connection established: 192.168.3.39
2021-11-08 18:52:20.019 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote: onWebSocketText: {"event":"ms.channel.connect","data":{"id":"9e91fe40-40bc-11ec-8bff-772240083197","clients":[{"id":"9e91fe40-40bc-11ec-8bff-772240083197","connectTime":1636393940004,"attributes":{"name":"b3BlbkhBQg=="},"deviceName":"b3BlbkhBQg==","isHost":false}]}}
2021-11-08 18:52:20.026 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt connection established: 192.168.3.39
2021-11-08 18:52:20.027 [DEBUG] [tv.internal.protocol.WebSocketRemote] - Remote channel connected. Token = null
2021-11-08 18:52:20.029 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt: onWebSocketText: {"event":"ms.channel.connect","data":{"id":"9e92e8a0-40bc-11ec-8bff-772240083197","clients":[{"id":"9e92e8a0-40bc-11ec-8bff-772240083197","connectTime":1636393940010,"attributes":{"name":"b3BlbkhBQg=="},"deviceName":"b3BlbkhBQg==","isHost":false}]}}
2021-11-08 18:52:20.030 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote: sendCommand: {"method":"ms.channel.emit","params":{"event":"ed.installedApp.get","to":"host"}}
2021-11-08 18:52:20.032 [DEBUG] [ungtv.internal.protocol.WebSocketArt] - 192.168.3.39: Art channel connected
2021-11-08 18:52:20.041 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote: onWebSocketText: {"event":"ms.error","data":{"message":"unable to handle message : Cannot read property 'session' of null"}}
2021-11-08 18:52:20.043 [DEBUG] [tv.internal.protocol.WebSocketRemote] - WebSocketRemote Unknown event: {"event":"ms.error","data":{"message":"unable to handle message : Cannot read property 'session' of null"}}

if I use 8002 and secure Websockets:

2021-11-08 18:54:10.942 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(349)] : activate method [activate] not found, ignoring
2021-11-08 18:54:10.943 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(349)] : Set implementation object for component
2021-11-08 18:54:10.945 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(349)] : Changed state from satisfied to active
2021-11-08 18:54:10.986 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Create a Samsung TV Handler for thing 'samsungtv:tv:ca54caf4b9'
2021-11-08 18:54:11.051 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Initializing Samsung TV handler for uid 'samsungtv:tv:ca54caf4b9'
2021-11-08 18:54:11.072 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Updated artModeIsSupported: false and PowerState: true
2021-11-08 18:54:11.073 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Check and create missing UPnP services
2021-11-08 18:54:11.075 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Device was NOT online
2021-11-08 18:54:11.077 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.3.39: Creating a Samsung TV RemoteController service: is UPNP:false
2021-11-08 18:54:11.079 [INFO ] [rnal.service.RemoteControllerService] - 192.168.3.39: Using SecureWebSocket interface
2021-11-08 18:54:11.089 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: openConnection()
2021-11-08 18:54:11.090 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: RemoteControllerWebSocket start Client
2021-11-08 18:54:11.092 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: WebSocketClient starting
2021-11-08 18:54:11.109 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: WebSocketClient started
2021-11-08 18:54:11.111 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: connectWebSockets()
2021-11-08 18:54:11.112 [WARN ] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: webSocketRemote connecting without Token, please accept the connection on the TV within 30 seconds
2021-11-08 18:54:11.114 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote connecting to: wss://192.168.3.39:8002/api/v2/channels/samsung.remote.control?name=b3BlbkhBQg==
2021-11-08 18:54:11.117 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@1daf535[Not completed, 1 dependents]
2021-11-08 18:54:11.118 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt connecting to: wss://192.168.3.39:8002/api/v2/channels/com.samsung.art-app?name=b3BlbkhBQg==
2021-11-08 18:54:11.121 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@1ce7eb9[Not completed, 1 dependents]
2021-11-08 18:54:11.122 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketV2 connecting to: wss://192.168.3.39:8002/api/v2?name=b3BlbkhBQg==
2021-11-08 18:54:11.125 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@1bead1e[Not completed, 1 dependents]
2021-11-08 18:54:11.152 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Start refresh task, interval=1000
2021-11-08 18:54:11.234 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt connection error
javax.net.ssl.SSLHandshakeException: Abruptly closed by peer
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:752) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:164) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:79) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:169) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
        at java.lang.Thread.run(Thread.java:829) [?:?]
        Suppressed: javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
                at sun.security.ssl.Alert.createSSLException(Alert.java:133) ~[?:?]
                at sun.security.ssl.Alert.createSSLException(Alert.java:117) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:336) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:292) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:283) ~[?:?]
                at sun.security.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:733) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.closeInbound(SslConnection.java:965) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:749) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:164) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:79) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:169) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
                at java.lang.Thread.run(Thread.java:829) [?:?]
2021-11-08 18:54:11.248 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote connection error
javax.net.ssl.SSLHandshakeException: Abruptly closed by peer
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:752) ~[?:?]
        at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:164) ~[?:?]
        at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:79) ~[?:?]
        at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) ~[?:?]
        at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:169) ~[?:?]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[?:?]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) ~[?:?]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
        at java.lang.Thread.run(Thread.java:829) [?:?]
        Suppressed: javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
                at sun.security.ssl.Alert.createSSLException(Alert.java:133) ~[?:?]
                at sun.security.ssl.Alert.createSSLException(Alert.java:117) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:336) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:292) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:283) ~[?:?]
                at sun.security.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:733) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.closeInbound(SslConnection.java:965) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:749) ~[?:?]
                at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:164) ~[?:?]
                at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:79) ~[?:?]
                at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) ~[?:?]
                at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:169) ~[?:?]
                at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[?:?]
                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) ~[?:?]
                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
                at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
                at java.lang.Thread.run(Thread.java:829) [?:?]
2021-11-08 18:54:11.318 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.3.39: Connection error: Abruptly closed by peer
2021-11-08 18:54:11.278 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketV2 connection error
javax.net.ssl.SSLHandshakeException: Abruptly closed by peer
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:752) ~[?:?]
        at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:164) ~[?:?]
        at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:79) ~[?:?]
        at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) ~[?:?]
        at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:169) ~[?:?]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[?:?]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) ~[?:?]
        at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) ~[?:?]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
        at java.lang.Thread.run(Thread.java:829) [?:?]
        Suppressed: javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
                at sun.security.ssl.Alert.createSSLException(Alert.java:133) ~[?:?]
                at sun.security.ssl.Alert.createSSLException(Alert.java:117) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:336) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:292) ~[?:?]
                at sun.security.ssl.TransportContext.fatal(TransportContext.java:283) ~[?:?]
                at sun.security.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:733) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.closeInbound(SslConnection.java:965) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:749) ~[?:?]
                at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:164) ~[?:?]
                at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:79) ~[?:?]
                at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) ~[?:?]
                at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:169) ~[?:?]
                at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[?:?]
                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) ~[?:?]
                at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) ~[?:?]
                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
                at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) ~[bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
                at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
                at java.lang.Thread.run(Thread.java:829) [?:?]

@FranzS

I donā€™t think websockets connections will work for your TV. Am I right in thinking that itā€™s not a Tizen OS TV? As I said, the websocket connection assumes you have a Tizen OS. There is no great advantage to using the websockets interface either (a lot of stuff doesnā€™t work over websockets). Itā€™s used for remote control, but the legacy protocol actually works better.

What happens when you try the legacy interface with the ports I suggested? does that just not work at all? You should get volume and mute control at a minimum, that works via UPNP (no ports/protocols required).

Can you post more of your log when you try commands, the WebSocketRemote error message (on the unsecured websocket) doesnā€™t mean anything, the port is still connected, and should respond to commands.

Seeing as you canā€™t discover your TV, there may be a problem with UPNP on your network - is it possible that you are blocking UPNP? Iā€™m asking, because a lot of stuff depends on discovering the Mediarenderer UPNP service that all Samsung TVā€™s support. Without that being discovered, a lot of automatic stuff wonā€™t work.

I would take a close look as to why UPNP is not working on your network. Do you have UPNP enabled on your router? is igmpsnooping enabled? (if so disable it) - what kind of router do you have?

My test binding doesnā€™t log all the polling stuff, so you wonā€™t see anything unless you try a command.

Hi

Further testing has shown that there needs to be a bit of a delay between powering the TV off and back on which is fine given that in normal use these event wonā€™t happen one after anotherā€¦

Further issues Iā€™m seeingā€¦

The sourceApp channel never changes from NULL even when using different apps (Plex, Amazon TV, Youtube, TikTok etc)
The sourceName channel never changes from NULL even when using different sources (HDMI1, HDMI2 etc)
The brightness channel never updates to the brightness value set on the TVā€¦ Same goes for contrast, sharpness and colorTemperature

Volumeā€¦ When I try to set the volume using the binding I see warnings in the logsā€¦

2021-11-08 19:04:28.782 [WARN ] [rnal.service.RemoteControllerService] - Remote control: unsupported command type 20 for channel volume

I donā€™t know if this is due to having a Sonos soundbar connected? Itā€™s connected via an optical connection not HDMI eARC.

The mute channel works fine

Iā€™m unable to test other channels as I only have a cable TV STB connected

Hi @Nicholas_Waterton,

thanks so far for the analytics.

Am I right in thinking that itā€™s not a Tizen OS TV?

|- I guess it is a Tizen OS TV at least what i remember and it can run modern APPS like SKY, Netflix and HBB TV apps. Also in some forums they talk about this tv in context with Tizen.

legacy 8001 remains offline and shows:

2021-11-08 20:26:33.489 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(355)] : activate method [activate] not found, ignoring
2021-11-08 20:26:33.491 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(355)] : Set implementation object for component
2021-11-08 20:26:33.492 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202110241625 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(355)] : Changed state from satisfied to active
2021-11-08 20:26:33.537 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Create a Samsung TV Handler for thing 'samsungtv:tv:ca54caf4b9'
2021-11-08 20:26:33.603 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Initializing Samsung TV handler for uid 'samsungtv:tv:ca54caf4b9'
2021-11-08 20:26:33.620 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Updated artModeIsSupported: false and PowerState: true
2021-11-08 20:26:33.621 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Check and create missing UPnP services
2021-11-08 20:26:33.623 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Device was NOT online
2021-11-08 20:26:33.625 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Start refresh task, interval=1000

none 8001 remains offline and shows:

2021-11-08 20:27:59.810 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote connecting to: ws://192.168.3.39:8001/api/v2/channels/samsung.remote.control?name=b3BlbkhBQg==
2021-11-08 20:27:59.814 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@4e2574[Not completed, 1 dependents]
2021-11-08 20:27:59.816 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt connecting to: ws://192.168.3.39:8001/api/v2/channels/com.samsung.art-app?name=b3BlbkhBQg==
2021-11-08 20:27:59.818 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@186b19b[Not completed, 1 dependents]
2021-11-08 20:27:59.819 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketV2 connecting to: ws://192.168.3.39:8001/api/v2?name=b3BlbkhBQg==
2021-11-08 20:27:59.829 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@efa93c[Not completed, 1 dependents]
2021-11-08 20:27:59.831 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Start refresh task, interval=1000
2021-11-08 20:27:59.926 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote connection established: 192.168.3.39
2021-11-08 20:27:59.939 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote: onWebSocketText: {"event":"ms.channel.connect","data":{"id":"fb635d00-40c9-11ec-8bff-772240083197","clients":[{"id":"fb635d00-40c9-11ec-8bff-772240083197","connectTime":1636399679184,"attributes":{"name":"b3BlbkhBQg=="},"deviceName":"b3BlbkhBQg==","isHost":false}]}}
2021-11-08 20:27:59.956 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt connection established: 192.168.3.39
2021-11-08 20:27:59.956 [DEBUG] [tv.internal.protocol.WebSocketRemote] - Remote channel connected. Token = null
2021-11-08 20:27:59.959 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt: onWebSocketText: {"event":"ms.channel.connect","data":{"id":"fb65a6f0-40c9-11ec-8bff-772240083197","clients":[{"id":"fb65a6f0-40c9-11ec-8bff-772240083197","connectTime":1636399679199,"attributes":{"name":"b3BlbkhBQg=="},"deviceName":"b3BlbkhBQg==","isHost":false}]}}
2021-11-08 20:27:59.960 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote: sendCommand: {"method":"ms.channel.emit","params":{"event":"ed.installedApp.get","to":"host"}}
2021-11-08 20:27:59.961 [DEBUG] [ungtv.internal.protocol.WebSocketArt] - 192.168.3.39: Art channel connected
2021-11-08 20:27:59.971 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote: onWebSocketText: {"event":"ms.error","data":{"message":"unable to handle message : Cannot read property 'session' of null"}}
2021-11-08 20:27:59.972 [DEBUG] [tv.internal.protocol.WebSocketRemote] - WebSocketRemote Unknown event: {"event":"ms.error","data":{"message":"unable to handle message : Cannot read property 'session' of null"}}

Iā€™ve installed openhab-transport-upnp, checked my router for blockings.

feature:install openhab-transport-upnp

Iā€™ve found a UPnP Analyzer on my old Macbook that found the device.

thanks for helping
/Franz

@Mark_Webster ,

Regarding the sourceApp - unfortunately Samsung removed support for this in >2020 TVā€™s There is no way that I know of to get around this.

I am working on being able to launch apps from OH (in which case it does get updated - but not by selecting apps on the TV). You also need to know the appID to send (they are on the web, but there is no way to get this from the TV as Samsung removed that function as well), and the appID varies depending on the age of the TV.

Regarding sourceName etc - Samsung does not support this functionality on websocket TVā€™s (>2016), so it can not be updated. Itā€™s supported on older TVā€™s < 2016 only (along with brightness, contrast, sharpness and colorTemperature channels).

Volume is fixed in the latest test binding (just posted). Volume is tricky as there are two different methods of controlling it via two different interfaces. One takes an Up/Down or Increase/Decrease command, and the other a Number (from say a slider or setpoint). I think I have them separated out in the latest version.

The soundbar may not respond to volume changes if itā€™s connected via optical though.

Hi @Nicholas_Waterton ,

so i took a look in the Neighborhood and found this: Samsung J Series

Simply said: it should be Port 8000 but ā€¦
It seems the access needs to be authorized to an appID, User and a DeviceID
then a Pin is written on the screen which needs to be typed in and you get back something like this:

You get back something like this:

{"session_key":"3dce1b71bf017c6c2eed9335b1b5db5c","session_id":"1"}

can this behavior be used in the plugin?
Should be somewhere here in the Neighborhood around line 488

BR
/Franz

@FranzS ,

OK, that explains a lot - I should have guessed it was one of the encrypted TVā€™s.

You seem to have some fundamental misunderstandings about how the protocols/ports work though.

You MUST select a protocol None is not an option. If you leave it at None, the binding will try to figure out the protocol itself, and if it canā€™t the binding will stop. maybe I should rethink thisā€¦

The protocol MUST match the port. ie you must use legacy with a legacy port - like 5500, websocket with a websocket port - like 8000, 8001, and websocketsecure with a secure websocket port - 8002 is the only one I know of.

You canā€™t mix and match protocolā€™s and ports. legacy and port 8001 will never work, neither will none and 8001, or legacy and 8000. It looks like the only option you have is websocket and port 8000 or 8001.

Having said that, unfortunately the samsungtv binding does not support H/J version encrypted TVā€™s, for remote control, and it would be almost impossible to add it from scratch now. This is for the remote control channels (power, keyCode etc), UPNP channels should still work (volume, mute etc), but as I say, the MediaRenderer and MainTVServer2 services donā€™t seem to be discovered (actually no service is discovered - which is odd). I will take a look at this.

What you could do is use samsungctl (see GitHub - kdschlosser/samsungctl: Remote control Samsung televisions via a TCP/IP connection) which is a command line python program which does support H/J version TVā€™s.

You would have to integrate it into OH yourself, but calling python programs from OH is relatively straightforward. Not as simple as using the binding, but at least an option.

@FranzS ,

I have updated the test binding to work with protocol None. Please download and install it. detete your Thing, and reinstall it.

Leave the protocol as None, and the port does not matter (leave it at 55000).

If UPNP is working, the binding should discover something. If it finds the MediaRenderer and/or MainTVServer2 UPNP services, this will give you some basic channels.

MediaRenderer supports VOLUME, MUTE, BRIGHTNESS, CONTRAST, SHARPNESS, COLOR_TEMPERATURE channels, and
MainTVServer2 supports SOURCE_NAME, SOURCE_ID, BROWSER_URL, STOP_BROWSER channels.

You will get POWER (read only) but not KEY_CODE channels.

If these services are not supported by your TV, then unfortunately, you will get nothing, and the binding will not help you. let me know what happens.

Download link org.openhab.binding.samsungtv-3.2.0-SNAPSHOT.jar

HI @Nicholas_Waterton

thanks for your efforts so far.
The way doing it like you said ended up like this: None + 55000

2021-11-09 16:43:59.954 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091457 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(349)] : Declared Method java.lang.Object.activate([interface org.osgi.service.component.ComponentContext]) not found
2021-11-09 16:43:59.955 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091457 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(349)] : activate method [activate] not found, ignoring
2021-11-09 16:43:59.956 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091457 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(349)] : Set implementation object for component
2021-11-09 16:43:59.958 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091457 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(349)] : Changed state from satisfied to active
2021-11-09 16:44:47.088 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Create a Samsung TV Handler for thing 'samsungtv:tv:3a0ac83797'
2021-11-09 16:44:47.112 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Initializing Samsung TV handler for uid 'samsungtv:tv:3a0ac83797'
2021-11-09 16:44:47.117 [DEBUG] [.samsungtv.internal.WakeOnLanUtility] - 192.168.3.39: os: linux
2021-11-09 16:44:47.466 [DEBUG] [.samsungtv.internal.WakeOnLanUtility] - 192.168.3.39: MAC address of host 192.168.3.39 is fc:8f:90:ac:84:55
2021-11-09 16:44:47.558 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Updated Configuration macAddress:fc:8f:90:ac:84:55
2021-11-09 16:44:47.559 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: updated macAddress: fc:8f:90:ac:84:55
2021-11-09 16:44:47.566 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:1515'
2021-11-09 16:44:47.573 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: Connection refused (Connection refused)
2021-11-09 16:44:47.575 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:7001'
2021-11-09 16:44:47.581 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: Connection refused (Connection refused)
2021-11-09 16:44:47.582 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:15500'
2021-11-09 16:44:47.589 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Connection successfully opened...querying access
2021-11-09 16:44:47.640 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:55000'
2021-11-09 16:44:47.648 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: Connection refused (Connection refused)
2021-11-09 16:44:47.779 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.initialize()' on 'org.openhab.binding.samsungtv.internal.handler.SamsungTvHandler@1a77e4a': null
java.lang.NullPointerException: null
        at org.openhab.binding.samsungtv.internal.handler.SamsungTvHandler.discoverConfiguration(SamsungTvHandler.java:317) ~[?:?]
        at org.openhab.binding.samsungtv.internal.handler.SamsungTvHandler.initialize(SamsungTvHandler.java:393) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
        at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]
2021-11-09 16:44:47.785 [ERROR] [core.thing.internal.ThingManagerImpl] - Exception occurred while initializing handler of thing 'samsungtv:tv:3a0ac83797': null
java.lang.NullPointerException: null
        at org.openhab.binding.samsungtv.internal.handler.SamsungTvHandler.discoverConfiguration(SamsungTvHandler.java:317) ~[?:?]
        at org.openhab.binding.samsungtv.internal.handler.SamsungTvHandler.initialize(SamsungTvHandler.java:393) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
        at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]

@FranzS ,

Ok, I must have made a mistake in the discovery process. Let me look at thatā€¦

@FranzS ,

Found it, missed a null check. try it again, hopefully itā€™s fixed nowā€¦

Hi @Nicholas_Waterton,
did youā€™ve published an updated binary?
Do I need one?

@FranzS ,

Yes, you need to download the updated .jar file, put it in addons etc. just as before. Iā€™m fixing problems for a TV I donā€™t have, so itā€™s a bit of guesswork, but good testing.

Same link as before, Iā€™ve overwritten it.

Hi @Nicholas_Waterton ,

thanks for your efforts. Iā€™m always willing to test things :slight_smile:
it looks better, slow steps :slight_smile:

If i select 5500 none I get this: (and offline)

cipant(367)] : Querying state unsatisfiedReference
2021-11-09 18:21:15.533 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Querying state unsatisfiedReference
2021-11-09 18:21:15.534 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Activating component from state unsatisfiedReference
2021-11-09 18:21:15.535 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Querying state unsatisfiedReference
2021-11-09 18:21:15.536 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Querying state unsatisfiedReference
2021-11-09 18:21:15.537 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Changed state from unsatisfiedReference to satisfied
2021-11-09 18:21:15.538 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : registration change queue [registered]
2021-11-09 18:21:15.542 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Checking constructor public org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant()
2021-11-09 18:21:15.543 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Found constructor with 0 arguments : public org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant()
2021-11-09 18:21:15.544 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : This thread collected dependencies
2021-11-09 18:21:15.545 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : getService (single component manager) dependencies collected.
2021-11-09 18:21:15.546 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Querying state satisfied
2021-11-09 18:21:15.547 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Querying state satisfied
2021-11-09 18:21:15.548 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : getting activate: activate
2021-11-09 18:21:15.549 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Locating method activate in class org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant
2021-11-09 18:21:15.550 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Declared Method org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant.activate([interface org.osgi.service.component.ComponentContext]) not found
2021-11-09 18:21:15.551 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Locating method activate in class java.lang.Object
2021-11-09 18:21:15.552 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Declared Method java.lang.Object.activate([interface org.osgi.service.component.ComponentContext]) not found
2021-11-09 18:21:15.553 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : activate method [activate] not found, ignoring
2021-11-09 18:21:15.554 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Set implementation object for component
2021-11-09 18:21:15.555 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(367)] : Changed state from satisfied to active
2021-11-09 18:21:15.610 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Create a Samsung TV Handler for thing 'samsungtv:tv:950fd12d7c'
2021-11-09 18:21:15.684 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Initializing Samsung TV handler for uid 'samsungtv:tv:950fd12d7c'
2021-11-09 18:21:15.685 [DEBUG] [.samsungtv.internal.WakeOnLanUtility] - 192.168.3.39: os: linux
2021-11-09 18:21:16.722 [WARN ] [rg.openhab.core.io.net.exec.ExecUtil] - Timeout occurred when executing commandLine '[arping, -r, -c, 1, -C, 1, 192.168.3.39]'
2021-11-09 18:21:16.725 [DEBUG] [.samsungtv.internal.WakeOnLanUtility] - 192.168.3.39: Problem executing command arping -r -c 1 -C 1 192.168.3.39 to retrieve MAC address for 192.168.3.39: null
2021-11-09 18:21:16.726 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:1515'
2021-11-09 18:21:17.230 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: connect timed out
2021-11-09 18:21:17.232 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:7001'
2021-11-09 18:21:17.734 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: connect timed out
2021-11-09 18:21:17.735 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:15500'
2021-11-09 18:21:18.238 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: connect timed out
2021-11-09 18:21:18.240 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Open connection to host '192.168.3.39:55000'
2021-11-09 18:21:18.742 [DEBUG] [rnal.protocol.RemoteControllerLegacy] - 192.168.3.39: Cannot connect to Legacy Remote Controller: connect timed out
2021-11-09 18:21:19.822 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Cannot connect to TV: java.util.concurrent.ExecutionException: java.net.NoRouteToHostException: No route to host
2021-11-09 18:21:19.824 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Check and create missing services
2021-11-09 18:21:19.826 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Device was NOT online
2021-11-09 18:21:19.829 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Start refresh task, interval=1000

If i select 8002 and secure sockets it comes online yaaaaah :beers:

2021-11-09 18:23:54.747 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(370)] : Set implementation object for component
2021-11-09 18:23:54.748 [DEBUG] [covery.SamsungTvDiscoveryParticipant] - bundle org.openhab.binding.samsungtv:3.2.0.202111091617 (311)[org.openhab.binding.samsungtv.internal.discovery.SamsungTvDiscoveryParticipant(370)] : Changed state from satisfied to active
2021-11-09 18:23:54.819 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Create a Samsung TV Handler for thing 'samsungtv:tv:950fd12d7c'
2021-11-09 18:23:54.926 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Initializing Samsung TV handler for uid 'samsungtv:tv:950fd12d7c'
2021-11-09 18:23:54.933 [DEBUG] [.samsungtv.internal.WakeOnLanUtility] - 192.168.3.39: os: linux
2021-11-09 18:23:55.971 [WARN ] [rg.openhab.core.io.net.exec.ExecUtil] - Timeout occurred when executing commandLine '[arping, -r, -c, 1, -C, 1, 192.168.3.39]'
2021-11-09 18:23:55.974 [DEBUG] [.samsungtv.internal.WakeOnLanUtility] - 192.168.3.39: Problem executing command arping -r -c 1 -C 1 192.168.3.39 to retrieve MAC address for 192.168.3.39: null
2021-11-09 18:23:57.977 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Cannot connect to TV: java.util.concurrent.TimeoutException: Total timeout 2000 ms elapsed
2021-11-09 18:23:57.980 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Check and create missing services
2021-11-09 18:23:57.982 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.3.39: Creating a Samsung TV RemoteController service: is UPNP:false
2021-11-09 18:23:57.998 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: openConnection()
2021-11-09 18:23:58.000 [DEBUG] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: RemoteControllerWebSocket start Client
2021-11-09 18:23:58.002 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: WebSocketClient starting
2021-11-09 18:23:58.041 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: WebSocketClient started
2021-11-09 18:23:58.042 [TRACE] [l.protocol.RemoteControllerWebSocket] - 192.168.3.39: connectWebSockets()
2021-11-09 18:23:58.044 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote connecting to: ws://192.168.3.39:8002/api/v2/channels/samsung.remote.control?name=b3BlbkhBQg==
2021-11-09 18:23:58.047 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@1717eac[Not completed, 1 dependents]
2021-11-09 18:23:58.048 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt connecting to: ws://192.168.3.39:8002/api/v2/channels/com.samsung.art-app?name=b3BlbkhBQg==
2021-11-09 18:23:58.052 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@18d2ded[Not completed, 1 dependents]
2021-11-09 18:23:58.053 [DEBUG] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketV2 connecting to: ws://192.168.3.39:8002/api/v2?name=b3BlbkhBQg==
2021-11-09 18:23:58.056 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: Connecting session Future: java.util.concurrent.CompletableFuture@eb79f4[Not completed, 1 dependents]
2021-11-09 18:23:58.059 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Started service for: , RemoteControlReceiver ()
2021-11-09 18:23:58.061 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Device was online
2021-11-09 18:23:58.066 [DEBUG] [tv.internal.handler.SamsungTvHandler] - 192.168.3.39: Start refresh task, interval=1000
2021-11-09 18:23:59.103 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketRemote connection error
java.net.NoRouteToHostException: No route to host
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:?]
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:777) ~[?:?]
        at org.eclipse.jetty.io.SelectorManager.doFinishConnect(SelectorManager.java:355) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector.processConnect(ManagedSelector.java:347) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector.access$1700(ManagedSelector.java:65) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector$SelectorProducer.processSelected(ManagedSelector.java:676) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:535) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produceTask(EatWhatYouKill.java:360) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:184) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
        at java.lang.Thread.run(Thread.java:829) [?:?]
2021-11-09 18:23:59.103 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketArt connection error
java.net.NoRouteToHostException: No route to host
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:?]
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:777) ~[?:?]
        at org.eclipse.jetty.io.SelectorManager.doFinishConnect(SelectorManager.java:355) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector.processConnect(ManagedSelector.java:347) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector.access$1700(ManagedSelector.java:65) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector$SelectorProducer.processSelected(ManagedSelector.java:676) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:535) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produceTask(EatWhatYouKill.java:360) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:184) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
        at java.lang.Thread.run(Thread.java:829) [?:?]
2021-11-09 18:23:59.118 [DEBUG] [rnal.service.RemoteControllerService] - 192.168.3.39: Connection error: No route to host
2021-11-09 18:23:59.119 [TRACE] [ngtv.internal.protocol.WebSocketBase] - 192.168.3.39: WebSocketV2 connection error
java.net.NoRouteToHostException: No route to host
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:?]
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:777) ~[?:?]
        at org.eclipse.jetty.io.SelectorManager.doFinishConnect(SelectorManager.java:355) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector.processConnect(ManagedSelector.java:347) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector.access$1700(ManagedSelector.java:65) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector$SelectorProducer.processSelected(ManagedSelector.java:676) ~[?:?]
        at org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:535) ~[?:?]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produceTask(EatWhatYouKill.java:360) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:184) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.40.v20210413]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.40.v20210413]
        at java.lang.Thread.run(Thread.java:829) [?:?]

@FranzS ,

I think you are still misunderstanding. Anything other than protocol None will NEVER work. The code for encryption it is simply not in the binding.

You MUST leave the protocol as None, and port does not matter.

Also the errors you are seeing Timeout occurred when executing commandLine and No route to host mean that your TV is turned off. The binding will not discover or communicate with a TV that is off.

Please turn your TV on (and ensure that you can ping it), set Protocol to None, and see if we get any further alongā€¦