Samsung SpyTV - offline
My Samsung Smart TV is on its separate VLAN, far far away from the rest of the network. From this VLAN, you can reach the internet and a specific port on my NAS.
I need access to the NAS because of Synology Video: an application on my NAS that handles all the media stored on id. There’s a companion app on the Samsung Smart TV, also called “DS Video”, that makes the video fruition really good.
Here come the catch
Sometimes my internet connection goes away, for hours, because of bad weather, and this is a fact. Without internet you can’t have Netflix, Amazon Video, and so on.
So you think you can use DS Video, because it’s a local thing: you have an app on your TV and you’re accessing a NAS via the local network.
You’re wrong: if there’s no internet, your Smart TV is not so smart anymore. The app launches, and connects to the NAS correctly, you can browse all the media, but as soon as you start playing, if internet is not online the playback stops in less than a minute.
Why this happens
I can only imagine one explanation: the DS Video application on the TV has to use some internal SDK/APIs to play video, and the “video management library” assumes that an application on a smart TV should work only when there’s internet connection, so in its absence, it stops playing.
Let’s skip on the fact that this is stupid, just because we can’t fight this originating stupidity, but we can fix this behaviour.
How this happens
After a bit of digging, i fount that the TV is CONSTANTLY checking for internet connectivity.
It’s doing that by fetching a file at this URL:
If you’re curious, here’s the content:
1<?xml version="1.0" encoding="UTF-8"?> 2<rsp>ok</rsp>
How to solve
The obvious answer is: we have to fake this URL and let the Smart TV know that we’re online even if we aren’t.
Two steps: WEB and DNS.
This is easy, I’m using my Synology NAS as a webserver to serve that location. I have a share where I store all the virtual hosts I need, so I created in “web station” a new virtualhost called cdn.samsungcloudsolution.com with its root folder located in my “vhost” share.
Now, inside the root of the virtual host, we have to create the directory structure and an XML file. The structure must be Public / network / files, (pay attention at the capital P, we’re in case-sentitive territory here) and the XML file should be named check.xml.
For the content of the file, you can just copy and paste the one from above. Here’s mine:
1<?xml version="1.0" encoding="UTF-8"?> 2<rsp>fuck you, Samsung!</rsp>
As you can see, I changed some letters for testing purposes.
We need a way to force the TV to resolve cdn.samsungcloudsolution.com with the IP of the Synology NAS. You need a DNS server to do that.
If you have a router “for grown ups” you may have the possibility to create a fake DNS record. An altertative is to use something like PiHole for your entire network and use its interface to create the fake DNS record.
Go to the pihole admin interface, select Local DNS/DNS Records, enter cdn.samsungcloudsolution.com as the domain and the IP address of the NAS:
1~ curl http://cdn.samsungcloudsolution.com/Public/network/files/check.xml 2<?xml version="1.0" encoding="UTF-8"?> 3<rsp>fuck you, Samsung!</rsp>
Just make sure the TV is using the correct DNS (PiHole?) and you should be ok.