I have applied the Blackb0x jailbreak to my ATV 3,2 running the latest 7.8 software (I think that’s basically iOS 8.4.4). It seems to have worked and I can ssh into the ATV.
I have performed all the obvious steps (installing git etc) and used the new ‘Add Site’ hack to add PlexConnect and it’s there and running and available from the Home screen. But…
I am unable to connect to my PMS. It does see one server (presumably mine but it mentions no names), but I am unable to log in. I enter the username and password, but just get an interminable daisy wheel.
I have Remote Access disabled as I only have need to access PMS from on my LAN and all the other Plex clients (Mac, iPhone, iPad, Apple TV) work perfectly and I know of no reason why PlexConnect should require PMS to have Remote Access enabled. It just needs to connect to the PMS (which is in fact a mere 2 ft. away from this Apple TV).
I have never fully grasped Plex’s log in and authorisation process as it’s never made any sense to me and I have in any case always been able to log in from any client (even a previous installation of PlexConnect on a different ATV).
Could someone please suggest how I can get PlexConnect to access my PMS?
Ah, so much information dotted around the place it was hard gathering together what I needed to do and I missed that. Thank you.
However, I have found that Settings.cfg gets overwritten when rebooting. I tried to reduce it to just what you have suggested (elsewhere - just about 5 lines), but after rebooting, it’s back to the same 20 or 30 as before I edited it. I think it’s Settings.py that does this but I’ve not figured how to prevent this, so the changes you suggest to allow access to my local PMS (all I need, I don’t allow remote login anyway) will get wiped out on next reboot (or PlexConnect restart, not figured which).
How can I best stop Settings.cfg being overwritten each time?
It appears that the PlexConnect startup routine validates entries in Settings.cfg and adds them if not already there. So changing the settings as recommended do stick. However, I’d still like to know how to prevent them being added as there’s stuff in there about certs and Trailers that are not relevant and I would think better to not have that stuff in there.
I also have to point out that FAQ7 states set " ip_pms = x.x.x.x (where x.x.x.x is the ip address of the ATV3)" which of course does not work as it’ll never find any PMS on the ATV itself. It needs ip_pms set to the IP of the actual PMS host. Then PlexConnect finds it and loads the libraries.
Which presents another problem and prompts another question.
It displays all libraries, even ones I keep ‘unpinned’ in other clients. Is there a way to suppress some libraries (they’re not relevant as media exists in another library which would be displayed)?
The problem is that when I try to access any of the libraries I just get “Accessing PlexConnect” and the spinning daisy wheel. I cannot actually access any media.
I’ll keep looking at how to get around that problem, but advice here as to how to avoid it would really speed things up.
I new realise I was not waiting long enough (or a reboot has changed things), anyway, I am now able to access the media in the libraries. However, I have to wait 45 seconds for the list of ‘All Movies’ to appear. Any way to speed that up? Particularly as every access to that top level menu takes the same time. Can it not be cached so subsequent access (to what would be the same list) would be so much faster?
I have also found a problem with Music. I had not noticed that recent PMS now splits up an Artist’s content as Albums, Live, Soundtracks etc. This is a BIG problem I have to look into for other Plex usage, but PlexConnect lists ONLY the ‘Albums’ sub group. So any Live, or Soundtrack albums etc. don’t appear at all. This means PlexConnect cannot access any such Music. Is it possible to allow PlexConnect to receive and make available the full list of available albums?
Not found a way to hide some Libraries. How does PMS see connections from PlexConnect? Since there is no logging in, I thought it would be as Guest. So I restricted Guest access to only the Libraries I want showing, but made no difference to PlexConnect which still shows ALL Libraries. Surely there has to be a way to tell PMS to NOT show some Libraries to PlexConnect clients?
Found the way to stop PMS from grouping albums into Live, Soundtracks etc and then PlexConnect shows them all, but without its own method of Grouping like this, it should really just display ALL albums for that Artist, independent of how PMS is grouping them. Is there a way to force PlexConnect to receive ALL albums, no matter whether PMS is grouping them or not?
Not that I’m aware of. ATV’s are very very slow when compared to today’s PCs, and this activity takes place in the ATV. It’s however possible to speed up thumbnail generation.
I’ll put this on my todo list, but I can’t grant that it will be handled. When PlexConnect development stopped the music part was unfinished and there are several known issues, notably if you usec flac codec.
This is only possible if you login to plex.tv, otherwise PlexConnect uses admin privileges.
Why did you install PlexConnect in a ATV ? Normally you would install it in the same PC/NAS as PMS. The idea of installing PlexConnect in a ATV was for remote access, but as this is no longer possible why should one go for it ?
Ha, now you’ve opened a can of worms. Install PlexConnect on the PMS host? Just hadn’t considered that. What I want is to use Plex on the ATV 3. I have 2 of them doing nothing and it makes more sense than buying more ATV4s - if I can get it to work, which it is now. But, your question is very interesting.
First of all, why hide some libraries? Because I have a separate library for recorded media (mainly, but not limited to TV) but also a main library that includes recorded and other stored content of that type. So I just need to see the main library, although I want to keep the ‘recorded content only’ library as sometimes for admin purposes it’s handy. In other Plex clients I only ‘pin’ the main version of the library, so the recorded one is there, but not ‘in your face’ as it were. It could be completely hidden from PlexConnect.
However, I like the idea of running PlexConnect on the PMS host as that would presumably help the speed problem? Forgive my ignorance, but what is then run on the ATV that accesses PlexConnect on the PMS host? What is the division? What goes where?
Currently PMS is running on a Mac, but I am switching to a fast Linux machine. Presumably I can run PlexConnect OK on either?
Raises another question. Is there any way in PlexConnect to be able to switch between multiple (2 in my case - maybe) PMSs? I realise we cannot use Plex.tv, but is it not possible to use GDM discovery to find all the servers and simply to which it should connect?
Also, can PlexConnect running on the PMS host handle more than one ATV3? That would be a distinct advantage from a maintenance point of view.
I really appreciate your responses as they’re opening my mind to new possibilities.
PlexConnect can serve multiple ATV’s. The faster the processor the larger number of ATV’s that can be connected. There was an user with 40+ ATV’s served by a single PlexConnect instance. Simply point ATV’s DNS to where PlexConnect is installed, load the same cert in all ATV’s and off you go.
Mac and Linux both support python 2.7.18 so accessing plex.tv is no problem. You can assign different home users to each ATV if you wish. Pls note however that if you want to use other ATV apps (such as Netflix) you need to maintain PlexConnect active so that it redirects ip traffic accordingly.
GDM should be able to find multiple PMS instances (if they are in the same lan/vlan) but login to plex.tv is preferrable.
Final remark: if you plan to use several ATV3’s pls try to build your movie library in H264, if you use H265 the cpu load required by transcoding can be too high and viewing experience will be bad.
I am only thinking of 2 or 3 ATV3s and realistically it’s unlikely to be more than 1 at a time. so should be no problem.
So PlexConnect obviously has to be installed and running on the PMS host (with Settings.cfg configured appropriately) and running permanently as a daemon. But what is done on the ATV? How does that access PlexConnect on the PMS host? Does PlexConnect need to be run on the ATV as well? That makes it easy as I have already got it running there anyway on the JB’d ATV3.
With PlexConnect on the PMS host and later Python, does that mean login via Plex.tv is then operational? Presumably that would mean it is user based and hence libraries available on the ATV would be configurable in PMS which presumably does not need to be configured to allow unauthorised access from the ATV’s IP address?
Sorry to keep asking questions. I’d pretty much got it sorted in my head to get the ATV running PlexConnect, now it’s a whole different paradigm that I need to get my head around.
So the access to PlexConnect on the PMS host HAS to be via a hijacked app? In which case, there is NO way to change the displayed name of the app?
Is there any way to get an app with the right name and icon as I now have achieved by jailbreaking and using ‘Add Site’? Is there no way after a JB to be able to change the app name or can PlexConnect on the ATV just act as a front end to PlexConnect on the PMS host. as e.g. Trailers does, thereby keeping the correct name and icon?
Using an hijacked app you can modify its icon but not its name. The process is described in the wiki. You can hijack any app available in your country.
Can we not hijack PlexConnect? That would be the right icon and name? Hmm, I guess for an app to be suitable, it has to be basically just an http renderer, whereas PlexConnect is doing rather more so not a suitable candidate for hijacking?
Alternatively, has anyone thought of creating an app just as the front end for PlexConnect on the PMS host and that could then be added using ‘Add Site’ on a JB’d ATV3? That would be ideal.
Why does the ATV DNS have to be set to that of the PMS host? I realise that queries from the hijacked app need to go there, but can that not be done just in /etc/hosts? Do we know the host names of all requests? Surely each app only tries to access a single server and that could be directed using the hosts file? That would mean all other apps on the ATV continue to work whether or not PlexConnect is running on the PMS host?
PlexConnect on the ATV actually is comprised of 2 components is it not? The back end that runs as a daemon and the front end user interface that is the app we see on the home screen, run and with which we interact, yes?
So doesn’t that mean we can direct the front end to access the remote PlexConnect daemon running on the PMS host rather than its own local daemon which we then simply don’t run? Shouldn’t then be hard to be able to flip PlexConnect between remote and local operation - all from the same PMS.
With an untethered JB now readily available and PlexConnect easily added directly as an app with ‘Add Site’, this would be the ultimate solution, with the right name and icon. Could PlexConnect be configured to run ‘client/server’ like this?
PlexConnect has two components written in python2:
a DNS server - analyzes ATV requests and redirects them to their “normal” destination or to PlexConnect’s web server. Some people prefer to use an external DNS server instead
a Web server - has the menus displayed in the ATV, receives requests from them and relays them to PMS (with some transformation). Also receives responses from PMS, formats them to something that the ATV understands, and sends them to the ATV
It also has a js component that runs inside each ATV. This component manages streaming, for example.
I have no experience with “add site”. In theory you can use it to create a Plex app in the ATV, parametrize settings.cfg so that PlexConnect traffic is handled not by the ATV itself but by an external PlexConnect server. But I have never tested this.
First of all, I really appreciate our on-going discussion about PlexConnect. Particularly as I think we have the basics for the perfect solution to running Plex on an ATV3, an actual PlexConnect app on the ATV (so correct name and icon) served by a backend on the PMS host and hence speedy operation with only the http rendering being required of the ATV, i.e. just like when hijacking a standard app like Trailers. I really want to continue with this idea and it will be so much quicker with your help. However, if it is not something that interests you, I will (try to) stop bothering you. So just let me know if that’s the case. I hope not.
I have PlexConnect already running on a (Blackb0x) JB’d ATV3,2, as an independent app by using ‘Add Site’ which also opens the opportunity for other apps to be added. Anyway, PlexConnect is working, but it is slow to receive the information and hence following your suggestion of running it on the PMS host. The important point is that it is possible and not particularly hard and I think I’ve refined the exact steps required to do this so it will be simple to repeat.
It seems to me that there must then be 3 components to PlexConnect. The 2 you mention, plus the front end that runs on the ATV. This has to be a separate component as it is completely superfluous when running as a daemon on the PMS host. So it must be an independent component that only runs when on the ATV and looks to its web server for information (lists of media etc) to display and it looks to me like Settings.cfg could be used to tell that front end to look at a different web server, i.e. PlexConnect on the PMS host.
In theory the PlexConnect app on the ATV can
The DNS server component is not needed as I think it’s only required to redirect the requests because there’s no other way if the ATV is not JB’d. Having done that though and with PlexConnect on the ATV, we can (hopefully) configure that to look at the PMS host and no need to mess with DNS at all.
So PlexConnect on the PMS host only requires the web server component and on the ATV it only needs the front end component. Do you have any idea what that front end component is? Presumably it is simply Python. But what happens if we try to execute the app on the ATV without the daemons running? Guess I have to try that, but would help to know what Python files comprise that front end and how we can enable it to run independently.
I realise you are not the original developer of PlexConnect, but would I be correct in thinking you are conversant in Python? I am not. For some time I have been thinking I should start using it, but not so far, so figuring this all out will be slow and hence would really like to be able to progress this idea with your input, like further comments on my points above.
I think the front end is the …assets/js/application.js. Looks to me like that ‘js’ folder contains all the front end stuff which is entirely javascript. Makes sense as it is designed for html rendering.
As you may have noticed on Github, I have achieved what I wanted. So PlexConnect is fully installed and running (web only, not DNS) on the PMS host Mac server. On the JB’d ATV3 I’m using just bag.plist, ExtraInternetCategories.plist and the special folder required for Add-Site. Having said that, Add-Site is not actually required so maybe that folder is not required either. Have to try that next time.
I think this is a really good solution for Plex on an ATV 2/3, now that it’s simple to JB them.
I want to look into the Albums categories issue and also some playback improvements to suit what I want. I’d also like to incorporate the ability to play Internet Radio. Can’t be that hard and would put PlexConnect one up on Plex’s own ATV4 app.
Still learning Python though, so won’t be quick and any help would be appreciated.
One remaining issue however is that the ATV aggressively caches the icons to use and the original PlexConnect install only specified the same 720 icon for both that and also 1080. I made a 1080 one and have linked to them both in bag.plist, but the ATV refuses to follow those new links and insists on only using the original 720 one which is rather small when used in 1080. A new site set up pointing to the correct icons uses them both correctly, but the original PlexConnect install insists on using the cached icon. I guess it uses the ‘merchant’ and/or ‘menu-title’ to decide it’s the same and so doesn’t read the new icon(s). How can the cache be flushed so the ATV reads the new correct icons? Nothing I have tried has made any difference. Any ideas how to update the cache?