Plex @ aTV - think different...

Wow this is a nice little project. Great work so far guys.

Yesterday I managed to get Plex Media Server transcoding to work with PlexConnect, so now I'm able to stream all my movies.

I will clean up my code and send a pull request on GitHub when I'm ready (If you want it).

Great work, you have a PM.

Wow this is a nice little project. Great work so far guys.

Yesterday I managed to get Plex Media Server transcoding to work with PlexConnect, so now I'm able to stream all my movies.

I will clean up my code and send a pull request on GitHub when I'm ready (If you want it).

Sure... bring it on!

With all the preparation done, it was not to much work to get PMS to transcode, was it? I haven't had a chance to look into the transcoding in detail (as I was busy prepping the base :-), but my guess is, that adding the "capabilities header" to the PMS requests should do the trick. Hey, we are very interested in the approach you took!

Sure... bring it on!

With all the preparation done, it was not to much work to get PMS to transcode, was it? I haven't had a chance to look into the transcoding in detail (as I was busy prepping the base :-), but my guess is, that adding the "capabilities header" to the PMS requests should do the trick. Hey, we are very interested in the approach you took!

No not much work at all. I used the javascript from this post http://forums.plexapp.com/index.php/topic/22303-plex-transcode-api/page-2 and converted it to python.

I'm at work right now, but when I get home you can get it :-)

New to this topic. Tried setting it up. On my ATV when I go to Trailers, I get Trailers us unavailable.

Log file on Mac:

DNSServer : Starting up.
DNSServer : intercept: trailers.apple.com
[...]

Hi mgworek!

It is confusing that there is NO log output from the WebServer itself. Please confirm, that the IPAddr to the Plex Media Server is correctly entered in Settings.py (...and don't take 127.0.0.1, as this should be the address as seen from aTV).

Could this solution work on the ATV3?

Could this solution work on the ATV3?


Yes it does. The guys are working on making sure the base of it is setup correctly at the moment but it is progressing nicely.
You can test the code if you understand what you are doing but expect there to be issues; if you don't understand what you are doing then it is probably best to stay away for the time being until a few more things have been worked out.

I already manually set my ATV3 DNS in order to use a service that spoofs location for certain websites (unblockus). Would I be able to use Plexconnect and this service at the same time?

I already manually set my ATV3 DNS in order to use a service that spoofs location for certain websites (unblockus). Would I be able to use Plexconnect and this service at the same time?

I guess...

You could point aTV to PlexConnect's DNS, which in turn would forward the non-local requests to your other DNS Address. Might also work the other way around...

I already manually set my ATV3 DNS in order to use a service that spoofs location for certain websites (unblockus). Would I be able to use Plexconnect and this service at the same time?

Should work, Like Baa said, change your ATV DNS to the address of the computer running PlexConnect then in the PlexConnect setting file point the DNSmaster to unblockus.

OK, thx for the help.

Nice work by the way, I look forward to trying it out. I currently Airplay Plex from my iPad but the idea of having it directly on the ATV appeals to me.

I just wanted to thank you for your work so far!  :D .. I tried your latest build today and it is really coming along nicely.. Just missing subtitle support so I can ditch my ATV2 and buy an ATV3. But watching movies and series works like a charm!

I can't imagine the Plex development team wouldn't integrate this into the Plexserver as a really nice add-on.

Cheers and looking forward to more awesomeness!

Is there an easy tutorial on how to do this? Reading through the posts I don’t really get it, and would love to try :slight_smile:

Is there an easy tutorial on how to do this? Reading through the posts I don't really get it, and would love to try :)

Sorry, no - Nothing more than the Readme on the github page.

But then... it really isn't that complicated.

- download the sources

- adapt your local IPs in "Settings.py"

- point your aTV DNS to the PlexConnect/Plex Media Server

- sudo ./PlexConnect.py

Then... just let the magic begin!

 
Ran the full node installer package and rebooted but command not found. Any ideas why?
 
-bash-3.2$ cd ATVBrowser
-bash-3.2$ ls
ReadMe.txt assets atv.js mime.js utils.js
-bash-3.2$ sudo node atv.js
Password:
sudo: node: command not found
-bash-3.2$

I know it is installed but I am damned if I an get it to run:

Node was installed at

 

   /usr/local/bin/node

 

npm was installed at

 

   /usr/local/bin/npm

 

Make sure that /usr/local/bin is in your $PATH.

 

Any help here anyone?

 

 

Last login: Fri May  3 15:27:02 on ttys000
-bash-3.2$ cd ATVBrowser
-bash-3.2$ ls
ReadMe.txt assets atv.js mime.js utils.js
-bash-3.2$ sudo node atv.js
Password:
sudo: node: command not found
-bash-3.2$ cd /usr/local/bin/
-bash-3.2$ ls
fdisk440 lame node npm
-bash-3.2$ node
-bash: node: command not found
-bash-3.2$

 
Ran the full node installer package and rebooted but command not found. Any ideas why?
 
-bash-3.2$ cd ATVBrowser
-bash-3.2$ ls
ReadMe.txt assets atv.js mime.js utils.js
-bash-3.2$ sudo node atv.js
Password:
sudo: node: command not found
-bash-3.2$

Well. No. "ATVBrowser" was only a first try (javascript). Outdated since.

Use PlexConnect (https://github.com/iBaa/PlexConnect, branch XML_Template, all python, no extra installs necessary) and you should have more fun.

Tried but getting the AppleTV unable to get the date and time settings at start up.

Here is what Plexconnect.py displays:

Last login: Fri May  3 16:13:31 on ttys000
-bash-3.2$ sudo /Users/newrobertsnow/PlexConnect-XML_templates/PlexConnect.py 
Password:
PlexConnect : ***
PlexConnect : PlexConnect
PlexConnect : Press ENTER to shut down.
PlexConnect : ***
DNSServer : ***
DNSServer : Starting up.
DNSServer : intercept: trailers.apple.com
DNSServer : forward other to higher level DNS: 202.216.224.67
DNSServer : ***
WebServer : Shutting down.
Process Process-2:
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 114, in run
  File "/Users/newrobertsnow/PlexConnect-XML_templates/WebServer.py", line 130, in Run
    server.socket.close()
UnboundLocalError: local variable 'server' referenced before assignment
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 57638)
DNSServer : Domain: time.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 63194)
DNSServer : Domain: ax.init.itunes.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 59422)
DNSServer : Domain: ax.init.itunes.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 54851)
DNSServer : Domain: www.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 59003)
DNSServer : Domain: www.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 50922)
DNSServer : Domain: phobos.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 54030)
DNSServer : Domain: phobos.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 55393)
DNSServer : Domain: data.iana.org
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 61754)
DNSServer : Domain: data.iana.org
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 65331)
DNSServer : Domain: time.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 64940)
DNSServer : Domain: time.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 60104)
DNSServer : Domain: time.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 62431)
DNSServer : Domain: gs-loc.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 58270)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 63276)
DNSServer : Domain: www.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 50205)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 63276)
DNSServer : Domain: www.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 59495)
DNSServer : Domain: www.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 51927)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 54856)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 63104)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 64575)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 54933)
DNSServer : Domain: cydia.saurik.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 60870)
DNSServer : Domain: cydia.saurik.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 60405)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 61181)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 50643)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 64774)
DNSServer : Domain: p01-keyvalueservice.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 50484)
DNSServer : Domain: files.firecore.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 63805)
DNSServer : Domain: files.firecore.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 59628)
DNSServer : Domain: mesu.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 50280)
DNSServer : Domain: gs-loc.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 56173)
DNSServer : Domain: time.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 58403)
DNSServer : Domain: ax.init.itunes.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 52163)
DNSServer : Domain: ax.init.itunes.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 60281)
DNSServer : Domain: setup.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 52957)
DNSServer : Domain: setup.icloud.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 57436)
DNSServer : Domain: phobos.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 62735)
DNSServer : Domain: phobos.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 49771)
DNSServer : Domain: init-p01st.push.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 57697)
DNSServer : Domain: init-p01st.push.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 63252)
DNSServer : Domain: push.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 60983)
DNSServer : Domain: www.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 63225)
DNSServer : Domain: www.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 49349)
DNSServer : Domain: data.iana.org
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 53536)
DNSServer : Domain: data.iana.org
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 65211)
DNSServer : Domain: time.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 55860)
DNSServer : Domain: ax.init.itunes.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 58204)
DNSServer : Domain: ax.init.itunes.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 51894)
DNSServer : Domain: phobos.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 54533)
DNSServer : Domain: phobos.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level
DNSServer : DNS request received!
DNSServer : Source: ('192.168.0.3', 64457)
DNSServer : Domain: push.apple.com
DNSServer : ***forward request
DNSServer : -> DNS response from higher level

And here is my settings.py

#!/usr/bin/python
 
"""
Global Settings...
"""
 
# Plex Media Server
def getIP_PMS():
    return '192.168.0.8'  # todo: auto-discovery (Bonjour, GDM?)
def getPort_PMS():
    return 32400
 
# AppleTV/Client
def getIP_aTV():
    return '192.168.0.3'  # todo: how about more than one aTV?
 
def getIP_DNSmaster():  # Router, ISP's DNS, ...
    return '202.216.224.67'
 
# AppleTV capabilities
def getForceDirectPlay():  # if true, this has higher priority than transcoding
    return False
 
def getForceTranscoding():
    return False

Odd.  If I set:

def getIP_DNSmaster():  # Router, ISP's DNS, ...
    return '202.216.224.67'
 
using my ISP's primary DNS server. the ATV cannot connect to the net. It can't set the data and time and I see nothing on the TV except Setting and Computer.
 
If I set:
 
def getIP_DNSmaster():  # Router, ISP's DNS, ...
    return '192.168.0.1'
 
which is my Airport express DNS server and router Gateway, it connects to the internet and I can see all the usual stuff but nothing shows from PMS!
 
And I am slightly confused by the line
 
def getIP_DNSmaster():  # Router, ISP's DNS, ...
 
Does that mean I am supposed to set:
 
def getIP_DNSmaster():  # Router, ISP's DNS, ...
    return '192.168.0.1, 202.216.224.67'
 
I tried that and it results in an error in the PlexConnect.py log.
 
It would be nice if the documentation was a lot clearer for dumbasses like me!
 
 
 
 
 
 
 

>> [IP stuff]

The "DNSmaster" address should be the one, your aTV pointed to before you changed it's settings. This would be the address of your router - if you have one - or the one of your ISP. In your case, I guess, you should pick the router: 192.168.0.1.

Why it won't work with your ISP-DNS I don't know. Maybe your router doesn't let those calls pass directly?

>> but nothing shows from PMS!

What do you mean? Where does "nothing show"? It won't change the main screen, you won't notice anything really. Unless you navigate into the "trailers app", that is.