This is happening on both my iPad and iPhone. My server has 100 Mbps up, and my iPhone/iPad has at least 50 Mbps down. When I test with OpenSpeedTest to my server (direct connection between server and device), I get around 60 Mbps or so, so I know it’s not a bandwidth issue.
This only seems to happen on iOS. On macOS at least, I can see all options:
I know it’s not going through the Relay server because the app doesn’t give me a warning about indirect connections, and also because the “Play Original Quality” option shows up. I have Remote Access disabled on Plex, have turned off the relay server checkbox and am connecting to the server via Tailscale.
@anon18523487 since you asked for a ping on Reddit here it is.
I do have the iOS logs but I’m not sure how much of it is anonymized. Can you tell me what parts I should look for? I’m looking in the com.plexapp.plex 2022-07-22--13-38-45-190.log file but I’m not seeing anything regarding playback quality negotiation.
I’ve checked both the iOS logs and the server logs and I can’t figure out how the server and player negotiate the maximum transcode quality.
The Plex server correctly identifies that I’m streaming remotely on cellular (since the Tailscale IP is not part of LAN, the server logs show I’m connecting via WAN, and the request URL shows that Plex knows I’m streaming over cellular). The logs also show that direct play is available and that’s what the Plex server/app tries first.
However, I’m not sure where the 480p limit comes in. Looking through the logs none of the lines indicate that there is some problem that limits the transcode quality to 480p.
My guess is this is some sort of bug with the iOS app and it’s trying to limit the stream to 480p because maybe parts of the app think I’m streaming over Relay? Maybe the Tailscale IP address is tripping up the detection or something. (Edit: nothing to do with Relay) Can anybody help me out with this?
The only things private in your logs maybe your public IP address and the name of the files you are playing. You can PM the logs to me if you do not want to share publicly.
There isn’t any information on why qualities it will show. This is done directly by the client app. I wanted to look to see what quality the app was seeing for the video. Does this happen on everything or just specific videos?
After debugging I am really suspecting the app confusing the network connection as a Relay. I do have a Plex Pass, and the maximum bitrate specified in the documentation for Relay servers for people with a Plex Pass is 2 Mbps, which is why I only get options to convert up to 480p (2 Mbps).
I suspect the iOS Plex app is getting confused with the Tailscale VPN, as I currently use a domain that has a DNS entry mapped to the server’s internal Tailscale IP (plex.example.com → 180.20.1.xx (example Tailscale IP)) and maybe the app thinks I’m going through a Relay server to access the server? At least parts of it anyway. It does know I have a direct connection, which is why it shows me the original quality option (and shows so in the log), but I’m guessing the part that checks what quality options to present the user has a faulty check that thinks I’m going through a Relay server. (Edit: nothing to do with Relay)
Yup, it is due to relay. The app is seeing the connection to your server as remote and not local. But your server isn’t configured properly for remote access. You’ve got something wrong with your network configuration on your server end. It’s likely something to do with your VPN connection. Unfortunately, that’s not something can help with.
But I’ve disabled relay connections in the server settings and Plex only connects when I have my VPN turned on (when I’m not at my home LAN). The logs indicate that both the server and the app recognize that they have a direct connection to each other.
I think this is a bug with the iOS app where it thinks it’s going through a relay server if it connects via the custom server URL defined in the server settings. Can this please be fixed? (Edit: nothing to do with Relay)
@anon18523487 to be clear, most of the iOS app recognizes that while I’m remote, I do have a “direct” connection to the server via the Tailscale VPN. It’s just the quality dropdown that incorrectly assumes I’m connected via a Relay server. (Edit: nothing to do with Relay)
If this cannot be fixed it’d be great if a toggle can be added in the advanced settings to force all quality options to show even when the app assumes a certain connectivity situation.
Here is what happens if I play with “Original Quality” enabled. It shows that I’m directly connected to the server via Tailscale and correctly shows the “Direct Play” status. However, the quality options still max out at convert to 480p, below the original quality and convert automatically options.
I’m not sure how the quality dropdown “guesses” (incorrectly) about the indirect playback, but I think it should be better if it can query the direct play status from the playback info page and allow me to use all quality options available.
Okay, I forwarded the 32400 port, enabled Remote Access, turned off the Tailscale VPN, fully quit and restarted the Plex app and I still get convert options up to 480p only. What the heck? Under the server’s “Remote Access” page, it says the server is fully accessible outside my network. So it must be something else. @anon18523487 any ideas on what is going on?
This indicates to me that this isn’t some sort of problem with the server or network connection type or anything like that (which I’ve already disproven by port forwarding, and that didn’t work) but rather a visual glitch in the iOS client app that does not display all the convert options in the list. I think this is a rather simple visual bug. @anon18523487 can this be submitted as a bug report?
I think the iOS app is aware that there’s a VPN, and it’s reasonable to treat a VPN connection as Remote instead of Home. I think the iOS app uses something more than subnet mask to determine this - perhaps SCNetworkReachability.
The support page says Home is for “local Wi-Fi streaming on a home network”, and I would argue Tailscale doesn’t (and shouldn’t) count as that.
It might be nice to have a third choice, but I don’t think the current behavior is wrong. And the iOS app should indicate when playback is Home or Remote - this wasted a lot of your time.
And I agree that looks like a UI glitch, the way the Quality setting goes empty like that.
Yes, it is correct that when I use Tailscale the Plex app should classify my connection as remote, which it correctly does. Unfortunately, I chased a red herring because I thought the quality options not showing up was because the Plex app thought I was going through an indirect connection. Experimenting with the “recommended” setup – i.e. port forwarding and remote access enabled – showed that this assumption was wrong.
So the bug is in fact just a visual glitch when Plex determines I am streaming remotely, and does not display all the quality options. Since I’m not a Plex developer I don’t know why this might be the case. Hopefully a Plex developer can help fix this problem as it is annoying having to use the Settings workaround to change the quality.
I’m not very familiar with VPNs but I thought a VPN should create a local connection, not a remote one. When I saw the remote connection, I had assumed it was the relay connection being used since I didn’t think it was possible to have a remote connrction with a VPN.
Having the remote quality setting set to something other than “Maximum” will also cause those other qualities to not appear. The odd part is that it should not have allowed a direct playback at the original quality either. If there is a bug, it’s that it failed to follow the quality setting and allowed the direct playback. I will look into this.
I guess it might differ based on the level of VPN. Tailscale runs on L3, something like ZeroTier runs on L2 I believe, allowing *.local addresses (don’t quote me on this though).
Plex is correctly detecting that the VPN network is remote as it is on a different subnet (home DHCP server hands out 192.168.x.x addresses, Tailscale is on something like 10.18.x.x I believe). Therefore it shouldn’t classify as a local connection, which is the behavior I want.
What about the bug where not all the quality options show up, even if I have remote quality set to maximum? Honestly that’s the worst bug that ruins the experience for me right now.
Oh, I thought that went away when you changed it to “Maximum”. The expected behavior is that it will only show bitrates up to the quality setting you have enabled. At “maximum” you should see all of them. Can you try connecting without using the VPN to see if the issue persists. If it has something to due with the VPN, that may be harder to fix.