Contents

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:

http://cdn.samsungcloudsolution.com/Public/network/files/check.xml

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.

WEB

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.

/2020/samsung-spytv-offline/synology-vhost.png

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.

/2020/samsung-spytv-offline/synology-fake-xml.png

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.

DNS

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:

/2020/samsung-spytv-offline/pihole.png

Test

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>

It works.

TV

Just make sure the TV is using the correct DNS (PiHole?) and you should be ok.