BUG: Flinging to iPad fails with Plex Home

Server Version#: 4.135.2
Player Version#: 8.38.1

One feature we use a lot with our kids is flinging something accessible to us (but not their account) from our phones to the TV. On Roku, this works perfectly: they log into the unlocked “All” account that has always-available family-friendly content, and then we fling whatever special thing we’re letting them watch now.

However, I’ve discovered that this doesn’t work on an iPad. If I try flinging something that a managed account doesn’t have access to, the iPad thinks about it, but then fails with the message, “Playback Stopped: Couldn’t create the playback session for this item”.

Here’s the relevant excerpt from the server logs when the iPad is logged into the unlocked All account and it fails:

Aug 09, 2024 13:39:14.535 [140120148237112] Debug — [Req#d0ca/Transcode] TranscodeUniversalRequest: using augmented profile iOS
Aug 09, 2024 13:39:14.535 [140120148237112] Debug — [Req#d0ca/Transcode] Downloading document http://127.0.0.1:32400/library/metadata/12805?includeBandwidths=1&offset=-1&X-Plex-Incomplete-Segments=1&X-Plex-Session-Identifier=FD60A097-4A70-40B1-873D-08984F843972
Aug 09, 2024 13:39:14.535 [140120148237112] Debug — [Req#d0ca/Transcode/Req#d0e6] Auth: authenticated user 355586562 as All
Aug 09, 2024 13:39:14.537 [140120148237112] Warning — [Req#d0ca/Transcode/Req#d0e6] Invalid library metadata ID 12805 passed.
Aug 09, 2024 13:39:14.537 [140120148237112] Error — [Req#d0ca/Transcode] downloadContainer: expected MediaContainer element, found html
Aug 09, 2024 13:39:14.537 [140120148237112] Error — [Req#d0ca/Transcode] TranscodeUniversalRequest: unable to get container: /library/metadata/12805?includeBandwidths=1&offset=-1&X-Plex-Incomplete-Segments=1&X-Plex-Session-Identifier=FD60A097-4A70-40B1-873D-08984F843972
Aug 09, 2024 13:39:14.538 [140120241261368] Debug — Completed: [192.168.0.233:63126] 400 GET /video/:/transcode/universal/decision?advancedSubtitles=text&audioBoost=100&autoAdjustQuality=0&directPlay=1&directStream=1&directStreamAudio=1&location=lan&mediaBufferSize=20000&partIndex=0&path=%2Flibrary%2Fmetadata%2F12805&protocol=hls&subtitleSize=100&subtitles=auto&useDoviCodecs=1&videoResolution=4096x2160 (8 live) #d0ca TLS GZIP 3ms 384 bytes (pipelined: 7)

And for reference, here’s what happens when I switch to my account on the iPad and fling from my phone and it succeeds:

Aug 09, 2024 13:40:55.774 [140120154446648] Debug — [Req#d82e/Transcode] TranscodeUniversalRequest: using augmented profile iOS
Aug 09, 2024 13:40:55.774 [140120154446648] Debug — [Req#d82e/Transcode] Downloading document http://127.0.0.1:32400/library/metadata/12805?includeBandwidths=1&offset=-1&X-Plex-Incomplete-Segments=1&X-Plex-Session-Identifier=FD60A097-4A70-40B1-873D-08984F843972
Aug 09, 2024 13:40:55.783 [140120154446648] Debug — [Req#d82e/Transcode] We're going to try to auto-select an audio stream for account 1.
Aug 09, 2024 13:40:55.783 [140120154446648] Debug — [Req#d82e/Transcode] Selecting best audio stream for part ID 20078 (language: xn)
Aug 09, 2024 13:40:55.783 [140120154446648] Debug — [Req#d82e/Transcode] Audio Stream: 54726, Subtitle Stream: 0
Aug 09, 2024 13:40:55.784 [140120154446648] Debug — [Req#d82e/Transcode] MDE: Selected protocol http; container: mp4
Aug 09, 2024 13:40:55.784 [140120154446648] Debug — [Req#d82e/Transcode] MDE: analyzing media item 20001
...
Aug 09, 2024 13:40:55.784 [140120154446648] Debug — [Req#d82e/Transcode] Streaming Resource: Added session 0x7f7049686cb8:FD60A097-4A70-40B1-873D-08984F843972
Aug 09, 2024 13:40:55.785 [140120154446648] Debug — [Req#d82e/Transcode] Streaming Resource: Reached Decision id=12805 codes=(General=1000,Direct play OK. Direct Play=1000,Direct play OK.) media=(id=20001 part=(id=20078 decision=direct play protocol=http streams=(Video=(id=54725 decision= width=960 height=540) Audio=(id=54726 decision= channels=2 rate=48000))))
Aug 09, 2024 13:40:55.786 [140120241261368] Debug — Completed: [192.168.0.233:63176] 200 GET /video/:/transcode/universal/decision?advancedSubtitles=text&audioBoost=100&autoAdjustQuality=0&directPlay=1&directStream=1&directStreamAudio=1&location=lan&mediaBufferSize=20000&partIndex=0&path=%2Flibrary%2Fmetadata%2F12805&protocol=hls&subtitleSize=100&subtitles=auto&useDoviCodecs=1&videoResolution=4096x2160 (20 live) #d82e TLS GZIP 13ms 2516 bytes (pipelined: 2)

Flinging to the Roku looks much the same when flinging from my phone to the All account:

Aug 09, 2024 13:46:06.825 [140120179759928] Debug — [Req#e7bf/Transcode] TranscodeUniversalRequest: using augmented profile Roku-7.x
Aug 09, 2024 13:46:06.825 [140120179759928] Debug — [Req#e7bf/Transcode] Downloading document http://127.0.0.1:32400/library/metadata/12805?includeBandwidths=1&offset=0&X-Plex-Client-Capabilities=videoDecoders%3dh264%7bprofile%3ahigh%26resolution%3a1080%26level%3d41%7d%3baudioDecoders%3daac%7bchannels%3a2%7d%2cac3%7bchannels%3a6%7d%2ceac3%7bchannels%3a8%7d&X-Plex-Incomplete-Segments=1&X-Plex-Session-Identifier=fdce77d25be51974618ef197193eceef
Aug 09, 2024 13:46:06.831 [140120179759928] Debug — [Req#e7bf/Transcode] We're going to try to auto-select an audio stream for account 1.
Aug 09, 2024 13:46:06.831 [140120179759928] Debug — [Req#e7bf/Transcode] Selecting best audio stream for part ID 20078 (language: xn)
Aug 09, 2024 13:46:06.831 [140120179759928] Debug — [Req#e7bf/Transcode] Audio Stream: 54726, Subtitle Stream: 0
Aug 09, 2024 13:46:06.832 [140120179759928] Debug — [Req#e7bf/Transcode] Streaming Resource: Added session 0x7f70496d1b38:fdce77d25be51974618ef197193eceef
Aug 09, 2024 13:46:06.832 [140120179759928] Debug — [Req#e7bf/Transcode] Streaming Resource: Reached Decision id=12805 codes=(MDE=1000,Direct play OK.) media=(id=20001 part=(id=20078 decision=direct play protocol=hls streams=(Video=(id=54725 decision= width=960 height=540) Audio=(id=54726 decision= channels=0 rate=0))))
Aug 09, 2024 13:46:06.833 [140120243370808] Debug — Completed: [192.168.0.206:54244] 200 GET /video/:/transcode/universal/decision?protocol=hls&mediaIndex=0&waitForSegments=1&videoQuality=100&session=56543da0-cad3-4a06-a24a-33a31f0de4c3-585&mediaBufferSize=50000&offset=0&partIndex=0&location=lan&videoResolution=3840x2160&directPlay=1&path=%2Flibrary%2Fmetadata%2F12805&directStream=1&hasMDE=1&skipSubtitles=1 (17 live) #e7bf TLS GZIP 23ms 2505 bytes (pipelined: 5)

So it looks like there’s some permissions check happening for iOS that’s causing the fling to fail. If that’s the intended behavior, please change it to match Roku and please don’t change the Roku behavior! That’s a major use case for us!

Confirmed that this is still an issue with Server Version# 4.136.0.

Can you please get the full server logs and the ios logs.

Sure. Is there some way to send those to you without posting them publicly?

Click on my username/avatar for option to message me directly

@peter7653 I’m not fully understanding the steps here. You have a Roku device on your TV, correct? You are trying to cast from your iPad to your Roku, is that correct?

Ok @BigWheel helped me out. You’re trying to cast from a phone to an iPad.

I’m not able to easily reproduce this. I’ve attempted multiple accounts, various restrictive profiles, and various owned and shared content. Really once the casting connection is made the receiving device (iPad) is just a source or screen to receive whatever the controller is casting. If the iPad has some child protections on it that could be the issue. Thanks for sharing your logs we’ll see if our Apple team members can identify the issue.

You’re trying to cast from a phone to an iPad.

Right. The Roku was simply a comparison case where the same user permissions work.

Here are the scenarios:

  1. Cast from phone (admin) to iPad as myself: works
  2. Cast from phone (admin) to iPad in managed account: fails
  3. Cast from phone (admin) to Roku in managed account: works

I see error messages on the server in scenario #2 that I don’t see in the others, so it seems like the permissions failure is on the server end. Why the iPad causes it but the Roku doesn’t, I don’t know.

In case it matters, the managed account is configured with custom restrictions:

  • Restriction Profile: None
  • Allow Downloads: Enabled
  • Live TV & DVR Access: No
  • Movies: Allow only Family label
  • TV Shows: Allow only Family label
  • Music: Allow only Family label

The particular episode I’m trying to cast has no labels, which is why I’m casting it from my (admin) account, since it’s not something the managed account normally has access to.

On the Roku it does what I expect: it lets me cast a one-off show for the kids. On the iPad, it doesn’t.

2 Likes

Thanks for the extra details. It’s the Labels :man_facepalming: . There doesn’t seem to be any issue with playback when the item has the restricted label applied. It only seems to impact casting to an iOS client, when signed in as a user with label restrictions applied, and attempting to playback anything not with the restrictive label. None of the other controller/receiver client pairings act this way. Issue has been filed. Thanks again for reporting.

1 Like

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