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