NVIDIA Shield always transcodes when connected to a local server.

For me Plex for Android TV is always transcoding or even refusing to play a file due to no bandwidth.

Network Setup: 172.16.10.216 (Shield) --[gbit ethernet]--> switch --[gbit ethernet]--> 172.16.10.150 (server)
Both IP’s are static.

As you can see in the log from the shield it thinks 172-16-10-150.c072ff6fa4e14e5797205e4dd934b5ba.plex.direct is not local.
I double checked the DNS resolver:

~$ dig +short A 172-16-10-150.c072ff6fa4e14e5797205e4dd934b5ba.plex.direct 172.16.10.150

This seems to have been introduce with the 5.x releases, or with streaming brain… which happened around the same time.

Not sure if it is related but https://plex.tv/pms/resources.xml does not list the shield as a client.

For now setting remote play back quality to Original steps it from doing transcoding but it will also effects real remote servers.

Edit: this should probably go in the non-beta forum now I think about it, as it effects the non beta release too. I just noticed it again after upgrading to the beta so I opened the thread here.

Edit 2: There are 2 playback attempts in the log, one were I still had remote quality set to original and one were I had it set to my preference of 4mbps 720p.

It’s also odd that 172-16-10-150.c072ff6fa4e14e5797205e4dd934b5ba.plex.direct seems to be marked both local and not local throughout the log.

Better logs, I set the settings on the shield as they should be (original for local, 4mbps 720p for remote).
Enabled logging on the server and restarted both the server and the shield.

Then I tried to play 1080p content that is > 4mbps. I get a bandwidth warning and playback failure.

Workaround:
Server -> Network -> Local Networks: 172.16.10.0/24
Shield -> Settings -> Remote Quality: Original

It’s most likely something to do with your IP range. I don’t think the SHIELD likes non 192.168.x IP ranges for some reason and this may have something to do with it.

Then that is clearly a bug in their code, rfc1918 covers :
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

172.16.10.0/24 is a clean subset of 172.16.0.0/12 that even confirms to the older fixed /8, /16 or /24 prefixes.
I just checked my Nexus 6 (which I don’t really use when home) and it also marks suffers from it, so it looks like a issue with Plex for Android (TV) or maybe even the Plex Media Server given firefox on the Nexus 6 also reports Remote when accessing the web interface.

But it is an interesting theory, sadly reworking my entire network to use 192.168.0.0/16 is not an option :frowning:

Some more results:

  • PMP does not detect the server as remote, even without the workaround!
  • PlexWeb does detect the server as remote (but that seems to be because sometimes my external IP responds faster than the internal one)
  • iOS does not seem to detect the server as remote.

Still present in latest version, only the android client it seems as everything else is back to normal.
I was kind of hoping the Cronet updated mentioned in https://github.com/google/ExoPlayer/blob/1e472fd9bb5951fc2ec22bd5ab75b8c7b6703508/RELEASENOTES.md would have fixed it.

Well with the release of the Plex for Kodi addon, I guess we can rule out a generic android issue!

Plex for Kodi running on the same shield, detects the server as nearby even without the workaroud in server settings! It’s just Plex for Android TV and Plex for Android that seem to have the issue. It may be related to the Cronet network stack the introduced in recent ExoPlayer 1.5 releases.

This bug is still present in the latest release, The shield is also on the nougat build :frowning:

I like the Android TV app more but I have been using the Plex for Kodi a lot lately just because of all the work around needed since the streaming brain server release.

The shield did start showing up in resources.xml

<?xml version="1.0" encoding="UTF-8"?> <MediaContainer size="2"> <Device name="artemis" product="Plex Media Server" productVersion="1.3.3.3148-b38628e" platform="Linux" platformVersion="4.3.0 (BrandZ virtual linux)" device="PC" clientIdentifier="[striped]" createdAt="1462381686" lastSeenAt="1485572373" provides="server" owned="1" publicAddress="81.82.yyy.xx" httpsRequired="0" synced="0" relay="1" publicAddressMatches="1" presence="1"> <Connection protocol="http" address="172.16.aa.bbb" port="32400" uri="http://172.16.aa.bbb:32400" local="1"/> <Connection protocol="http" address="81.82.yyy.xx" port="32400" uri="http://81.82.yyy.xx:32400" local="0"/> </Device> <Device name="emerald" product="Plex for Android" productVersion="5.5.0.61" platform="Android" platformVersion="7.0" device="SHIELD Android TV" clientIdentifier="[striped]-com-plexapp-android" createdAt="1476286408" lastSeenAt="1485551688" provides="player,pubsub-player,controller" owned="1" publicAddress="81.82.yyy.xx" publicAddressMatches="1" presence="1"> </Device> </MediaContainer>

Recent changes for high latency links didn’t change anything, admittedly I did not expect it to because when the remote quality is set to Original everything works smooth. It’s just being detected as remote.

I’ve switched to Plex for Kodi for now, although I like the android client better this bug is still not fixed.

So for anybody else running into this, switching seems to be the only option for now.

Finally had a long weekend to rework my entire network and switch away from 172.16.0.0/12 to 10.0.0.0/8
The server is now detected as local.

So it is a bug where 172.16.0.0/12 is not properly detected on Android TV, Android Mobile, iOS, … are all fine with that subnet.

For those still having this issue, the latest client update should resolve it.