Unable to play anything on any Android TV Devices

Honourable mentions: Android app not connecting to custom SSL domain - #8 by invar

Hey guys!
I have seen this mentioned quite a bit but the resolution is usually to downgrade the app or something unproductive and I really wish to fix this properly.

Now, my Plex server has been running smoothly for months but in the past few weeks, it has not worked for any Android TV based devices. I have tried on Chromecast with Google TV (An Android TV box, don’t let the name fool you!) and on a Sony Smart TV with Android TV; both had the same problem.

My setup:
Server Version#: 1.23.5.4862
Server on Dedicated Server over the internet. https://plex.domain.com behind NGINX Reverse Proxy Manager

Player Version#: 8.20.1.26670 (Chromecast with Google TV)
All devices except for Android TV based-boxes work.

The problem:
Upon launching a video on a Android TV box, the following error appears:
“An error occurred while attempting to play this video. Please check your connection and try again”.

Now, I’d just like to add, this problem could previously be resolved by going into the Advanced Settings and “Turning off New Player”. This wasn’t a viable solution and understandably you removed this feature, however, this problem was still very real and unresolved.

Nothing interesting in the logs on the service side, however on the client side I have managed to find this which I believe to be the problem (plex.domain.com is intentional!):

07-28 21:11:32.580  i: [FFmpeg] [INFO] [Cache] Opening source from https://plex.domain.com:32400/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=wan&maxVideoBitrate=200000&mediaBufferSize=157248&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F29033&protocol=hls&session=484ecd845c51e726-com-plexapp-android&subtitleSize=100&videoBitrate=200000&videoQuality=100&videoResolution=3840x2160&X-Plex-Client-Identifier=484ecd845c51e726-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D51)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%2Cmpeg2video%26audioCodec%3Daac%2Cac3%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dac3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dmpeg2video)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Chromecast&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(TV)&X-Plex-Token=...QTAj&X-Plex-Version=8.20.1.26670.
07-28 21:11:32.581  i: [FFmpeg] [INFO] Adding option: reconnect 1
07-28 21:11:32.725  i: [FFmpeg] [ERROR] [tls @ 0xebc3cfc0] The certificate's owner does not match hostname plex.domain.com
07-28 21:11:32.733  i: [FFmpeg] [ERROR] [DemuxerPipeline] Failed to open cache.
07-28 21:11:32.734  e: [FF] Demuxer failed to open input from `https://plex.domain.com:32400/video/:/transcode/universal/start.m3u8?audioBoost=100&autoAdjustQuality=0&directPlay=0&directStream=1&directStreamAudio=1&fastSeek=1&hasMDE=1&location=wan&maxVideoBitrate=200000&mediaBufferSize=157248&mediaIndex=0&partIndex=0&path=%2Flibrary%2Fmetadata%2F29033&protocol=hls&session=484ecd845c51e726-com-plexapp-android&subtitleSize=100&videoBitrate=200000&videoQuality=100&videoResolution=3840x2160&X-Plex-Client-Identifier=484ecd845c51e726-com-plexapp-android&X-Plex-Client-Platform=Android&X-Plex-Client-Profile-Extra=add-limitation(scope%3DvideoCodec%26scopeName%3Dh264%26type%3DupperBound%26name%3Dvideo.level%26value%3D51)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.width%26value%3D3840%26replace%3Dtrue)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DupperBound%26name%3Dvideo.height%26value%3D2160%26replace%3Dtrue)%2Badd-transcode-target(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26container%3Dmkv%26videoCodec%3Dh264%2Chevc%2Cmpeg2video%26audioCodec%3Daac%2Cac3%2Cdca%2Cmp3%26subtitleCodec%3Dass%2Cpgs%2Csubrip%2Cdvd_subtitle%2Cmov_text%2Cvtt%2Cdvb_subtitle%26replace%3Dtrue)%2Badd-transcode-target-settings(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26CopyMatroskaAttachments%3Dtrue)%2Badd-limitation(scope%3DvideoAudioCodec%26scopeName%3Daac%26type%3DupperBound%26name%3Daudio.channels%26value%3D8%26replace%3Dtrue)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dmp3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Dac3)%2Badd-transcode-target-audio-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26audioCodec%3Ddca)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3D*%26type%3DNotMatch%26name%3Dvideo.anamorphic%26value%3D999%26replace%3Dtrue)%2Badd-transcode-target(type%3DsubtitleProfile%26context%3Dstreaming%26protocol%3Dhttp%26container%3Dmkv%26subtitleCodec%3Dsrt)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dmpeg2video)%2Bappend-transcode-target-codec(type%3DvideoProfile%26context%3Dstreaming%26protocol%3Dhls%26videoCodec%3Dhevc)%2Badd-limitation(scope%3DvideoCodec%26scopeName%3Dhevc%26type%3DMatch%26name%3Dvideo.profile%26list%3Dmain%7Cmain%2010)%2Badd-limitation(scope%3DvideoTranscodeTarget%26scopeName%3Dhevc%26scopeType%3DvideoCodec%26context%3Dstreaming%26protocol%3Dhls%26type%3Dmatch%26name%3Dvideo.colorTrc%26list%3Dsmpte2084%7Cbt709%7Cbt470m%7Csmpte240m%7Csmpte170m%7Cbt470bg%7Cbt2020-10%26isRequired%3Dfalse)&X-Plex-Device=Chromecast&X-Plex-Platform=Android&X-Plex-Platform-Version=10&X-Plex-Product=Plex%20for%20Android%20(TV)&X-Plex-Token=...QTAj&X-Plex-Version=8.20.1.26670`.
07-28 21:11:33.735  i: [FFmpeg] [INFO] Adding option: ignore_chapters 1
07-28 21:11:33.736  i: [FFmpeg] [INFO] Adding option: live_start_index 0
07-28 21:11:33.737  i: [FFmpeg] [INFO] Adding option: ca_file /data/user/0/com.plexapp.android/ca.pem
07-28 21:11:33.737  i: [FF] Setting additional option: tls_verify: 1
07-28 21:11:33.738  i: [FFmpeg] [INFO] Adding option: reconnect 1

As I mentionned before, my plex server (https://plex.domain.com) is behind a reverse proxy. I have tried importing my reverse proxy’s generated certificate by following this tutorial: Setup Let's Encrypt certificate for use with Plex Media Server on Ubuntu · GitHub

therefore my Custom certificate domain is set to “https://plex.domain.com:32400”. Although, going to this address results in the same

NET::ERR_CERT_COMMON_NAME_INVALID (subject xxxxxxxx.plex.direct!)

My theory is that perhaps the Android TV clients are more strict on certificates and my PMS’s certificates aren’t working properly. However, I have no idea what else I can do to fix it. Going to https://plex.mtthi.eu/ works fine and HTTPS is okay but if I try enabling force https in the PMS Settings, I get an Error 502.

I would love someone to help me!
Thank you

Hey guys!
So after having had issues with Android TV and my plex server over the internet, I looked high and low for solutions but was unable to find one. I have now understood what causes it and if you are also experiencing it, you need to change something but PLEX also has to update its error messages to help you do so.

The problem you see
Everything works fine on all devices, you can watch Game of Thrones on your laptop, your grandma can watch your baby videos on her iPad… You, however, finally want to take it to the big screen and so you download the Android TV app, login, unpin the Plex content and change the default quality to something OTHER THAN 720p 2mbps!!! However, upon attempting to actually play something you get a An unknown error has occurred. Please try again. style message, which is absolutely useless. You will scratch your head, try to toggle all the settings in the Plex client, google the message… No solution seems to work!

What is actually happening
Most Plex clients, it seems, connect via Plex.TV or directly to your IP:32400. However, the Plex Android TV app is picky and only connects to a valid, secure connection. Most people won’t have a valid HTTPS certificate for the Plex Media Server, they will only have it for the reverse proxy and therefore when the Android Plex app goes to https://plex.yourdomain.com:32400, it will get a broken certificate as the one that plex gives you only works for the plex proxy they use. Okay, I might be making some confusion here but at least that’s what I understood.

The solution
For you: Import your Plex’s Reverse Proxy’s Certificate into the Plex Server itself. If you are using Let’s Encrypt and 99% of you will, follow this guide: Setup Let's Encrypt certificate for use with Plex Media Server on Ubuntu · GitHub
For Plex: Make the error message more explicit, please. The only way I figured this out was by mistake, when I realised that setting Secure Connections to “Required” broke my setup.

Hope this helps someone, Cheers!

No need for a separate thread. I combined them.

In this setup, do you have “Secure connections” set to “Required” in Plex settings?

Thanks.

I just tried blocking port 32400, changing the plex server’s certificate domain port to 443 and disabling remote access and it is still perfectly accessible from the outside world. It also now works on my Android TV.

So basically, the solution was to set the same certificate to plex than the reverse proxy was issued by Let’s Encrypt. By the way, I use NGINX Proxy Manager with a Docker installation as well. So I imported by certificate into Plex and it fixed the problem!

Yes i do, but the problem is fixed now! I had to import my Reverse Proxy’s certificate

Thanks! What about @sevenalive, do you have “Secure connections” set to “Required” in Plex settings with you’re setup?

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.