Repository navigation
Mirroring negotiates and 'initializes' but client never opens data connection (iOS 27, combinedGetInfoWithControlSetup) #535
Description
Activity
Did you have UxPlay working with iOS 26.x before you installed the iOS 27 public beta?
(iOS 27 is not yet released, just the beta)combinedGetInfoWithControlSetup is not a known mode....
Hopefully any incompatibility of iOS27 beta with legacy devices will not be there in the final release.
please post a less "redacted" version of the -d output.
(1) use uxplay -m -nh to replace the server hardware ID with a random id, remove server name
(2) just edit the output to replace any data like ip addresses in rtsp:// ......... with xxxxxxxx, dont remove the line itselfthanks
Here is a redacted example of the client (an old iPad running iOS 16.7) plist
SETUP rtsp://xxxxxxxxxx Content-Length: 671 Content-Type: application/x-apple-binary-plist CSeq: 3 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>et</key> <integer>32</integer> <key>statsCollectionEnabled</key> <false/> <key>eiv</key> <data> mZCSkUNc66vfb8YiXbRrZw== </data> <key>sessionUUID</key> <string>9F142D95-8E10-4AF0-BE11-F3EE17075528</string> <key>timingProtocol</key> <string>NTP</string> <key>diagnosticsAndUsage</key> <true/> <key>osName</key> <string>iPhone OS</string> <key>osBuildVersion</key> <string>20H392</string> <key>sourceVersion</key> <string>695.5.1</string> <key>timingPort</key> <integer>56302</integer> <key>isScreenMirroringSession</key> <true/> <key>osVersion</key> <string>16.7.16</string> <key>ekey</key> <data> (2 lines data omitted, 64 chars/line) </data> <key>sessionCorrelationUUID</key> <string>D82CD4AC-3FD6-4006-8F7B-A3E8D7F8AF66</string> <key>internalBuild</key> <false/> <key>deviceID</key> <string>xxxxxxxxx</string> <key>model</key> <string>iPad6,11</string> <key>name</key> <string>iPad</string> <key>macAddress</key> <string>xxxxxxxxx</string> </dict> </plist> Handling request SETUP with URL rtsp://xxxxxxxxxxxxx DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 SETUP 1 connection request from iPad (iPad6,11) with deviceID = xxxxxxxxxhere is the full -d
Accepted IPv6 client on socket 15, port 56714 Local :xxxxxxxxxxxxxx Remote: xxxxxxxxxxxxx Open connections: 1 new request, connection 0, socket 15 type Unknown httpd receiving on socket 15, connection 0 httpd: current connections: connection 0 type 0 socket 15 conn 0x7ee5a0070 Unknown ACTIVE CONNECTION httpd request received on socket 15, connection 0, method = GET, url = /info, protocol = RTSP/1.0 conn_request New connection 0x7ee5a0070 identified as Connection type RAOP GET /info RTSP/1.0 X-Apple-ProtocolVersion: 1 Content-Length: 70 Content-Type: application/x-apple-binary-plist CSeq: 0 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>qualifier</key> <array> <string>txtAirPlay</string> </array> </dict> </plist> Handling request GET with URL /info RTSP/1.0 200 OK Audio-Jack-Status: connected; type=digital Content-Type: application/x-apple-binary-plist Server: AirTunes/220.68 CSeq: 0 Content-Length: 275 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>txtAirPlay</key> <data> (5 lines data omitted, 64 chars/line) </data> </dict> </plist> new request, connection 0, socket 15 type RAOP httpd receiving on socket 15, connection 0 httpd: current connections: connection 0 type 1 socket 15 conn 0x7ee5a0070 RAOP ACTIVE CONNECTION httpd request received on socket 15, connection 0, method = POST, url = /fp-setup, protocol = RTSP/1.0 conn_request POST /fp-setup RTSP/1.0 X-Apple-ET: 32 Content-Length: 16 Content-Type: application/octet-stream CSeq: 1 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 46 50 4c 59 03 01 01 00 00 00 00 04 02 00 01 bb Handling request POST with URL /fp-setup RTSP/1.0 200 OK Audio-Jack-Status: connected; type=digital Content-Type: application/octet-stream Server: AirTunes/220.68 CSeq: 1 Content-Length: 142 46 50 4c 59 03 01 02 00 00 00 00 82 02 01 cf 32 a2 57 14 b2 52 4f 8a a0 ad 7a f1 64 e3 7b cf 44 24 e2 00 04 7e fc 0a d6 7a fc d9 5d ed 1c 27 30 bb 59 1b 96 2e d6 3a 9c 4d ed 88 ba 8f c7 8d e6 4d 91 cc fd 5c 7b 56 da 88 e3 1f 5c ce af c7 43 19 95 a0 16 65 a5 4e 19 39 d2 5b 94 db 64 b9 e4 5d 8d 06 3e 1e 6a f0 7e 96 56 16 2b 0e fa 40 42 75 ea 5a 44 d9 59 1c 72 56 b9 fb e6 51 38 98 b8 02 27 72 19 88 57 16 50 94 2a d9 46 68 8a new request, connection 0, socket 15 type RAOP httpd receiving on socket 15, connection 0 httpd: current connections: connection 0 type 1 socket 15 conn 0x7ee5a0070 RAOP ACTIVE CONNECTION httpd request received on socket 15, connection 0, method = POST, url = /fp-setup, protocol = RTSP/1.0 conn_request POST /fp-setup RTSP/1.0 X-Apple-ET: 32 Content-Length: 164 Content-Type: application/octet-stream CSeq: 2 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 46 50 4c 59 03 01 03 00 00 00 00 98 01 8f 1a 9c 6e 84 da f9 8f e5 2e 0a 8d d8 4a 6b c0 71 60 70 b2 73 c7 22 0d d2 1e 2c 01 40 d9 37 d7 f8 4a 4f 04 27 44 fd 37 a4 60 4e 19 a5 5b de eb 6f 76 14 e2 f5 77 56 55 ff dd 52 9d 1c b4 42 f7 3b aa 27 70 7d 0f 8c 21 a7 6a 8e 69 54 36 1c 6f df ed e0 29 76 b9 f7 c7 88 07 b1 85 fe 34 bf cb b8 41 ac fd ee d0 59 2f 8e 6b 86 ef 1a 33 64 e9 cf 0f 95 79 1a 92 f7 3c 91 df f2 a7 5c d7 b4 66 aa ea 7a ce d7 4b 0f 7d ff ef eb 0c 56 9b 13 83 2e 34 48 ea 2b a7 14 Handling request POST with URL /fp-setup RTSP/1.0 200 OK Audio-Jack-Status: connected; type=digital Content-Type: application/octet-stream Server: AirTunes/220.68 CSeq: 2 Content-Length: 32 46 50 4c 59 03 01 04 00 00 00 00 14 ce d7 4b 0f 7d ff ef eb 0c 56 9b 13 83 2e 34 48 ea 2b a7 14 new request, connection 0, socket 15 type RAOP httpd receiving on socket 15, connection 0 httpd: current connections: connection 0 type 1 socket 15 conn 0x7ee5a0070 RAOP ACTIVE CONNECTION httpd request received on socket 15, connection 0, method = SETUP, url = rtsp://fe80::44:4cc1:a3c2:db24/11462837071921564400, protocol = RTSP/1.0 conn_request SETUP rtsp:xxxxxxxxxxxxxxxxxxxxx Content-Length: 671 Content-Type: application/x-apple-binary-plist CSeq: 3 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>et</key> <integer>32</integer> <key>statsCollectionEnabled</key> <false/> <key>eiv</key> <data> mZCSkUNc66vfb8YiXbRrZw== </data> <key>sessionUUID</key> <string>9F142D95-8E10-4AF0-BE11-F3EE17075528</string> <key>timingProtocol</key> <string>NTP</string> <key>diagnosticsAndUsage</key> <true/> <key>osName</key> <string>iPhone OS</string> <key>osBuildVersion</key> <string>20H392</string> <key>sourceVersion</key> <string>695.5.1</string> <key>timingPort</key> <integer>56302</integer> <key>isScreenMirroringSession</key> <true/> <key>osVersion</key> <string>16.7.16</string> <key>ekey</key> <data> (2 lines data omitted, 64 chars/line) </data> <key>sessionCorrelationUUID</key> <string>D82CD4AC-3FD6-4006-8F7B-A3E8D7F8AF66</string> <key>internalBuild</key> <false/> <key>deviceID</key> <string>xxxxxxxxxxxxxx</string> <key>model</key> <string>iPad6,11</string> <key>name</key> <string>iPad</string> <key>macAddress</key> <string>xxxxxxxxxxxxxxxx</string> </dict> </plist> Handling request SETUP with URL rtsp://xxxxxxxxxxxxxxx DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 SETUP 1 connection request from iPad (iPad6,11) with deviceID = xxxxxxxxxxxxxxx eiv_len = 16 16 byte aesiv (needed for AES-CBC audio decryption iv): 99 90 92 91 43 5c eb ab df 6f c6 22 5d b4 6b 67 ekey_len = 72 ekey: 46 50 4c 59 01 02 01 00 00 00 00 3c 00 00 00 00 f6 6a 55 39 1b 65 cd 9a be f4 0c aa 4d c6 4c 20 00 00 00 10 48 33 4f 36 ca 87 0d 1d 91 4e 8f f9 4d d0 65 a7 b4 97 f8 35 f4 27 2e b1 6e 8a 1b 60 83 7e 62 7e b0 d2 28 1b fairplay_decrypt ret = 0 16 byte aeskey (fairplay-decrypted from ekey): 35 20 c8 e8 1f 85 94 a8 f0 ec 8f 1c bb 99 70 86 Client identified as User-Agent: AirPlay/695.5.1 timing_rport = 56302 raop_ntp parse remote ip = fe80::0c83:d4c6:555d:37e1%14 raop_ntp starting time raop_ntp local timing port socket 26 port UDP 64396 raop_ntp send time type_t=82 packetlen = 32, now = 1784189159.211098 80 d2 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ee 03 0f 67 36 0a 84 be raop_rtp parse remote ip = xxxxxxxxxxxxxxxe1%14 raop_rtp_mirror parse remote ip = xxxxxxxxxxxxxxxx%14 eport = 0, tport = 64396 RTSP/1.0 200 OK Audio-Jack-Status: connected; type=digital Content-Type: application/x-apple-binary-plist Server: AirTunes/220.68 CSeq: 3 Content-Length: 76 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>timingPort</key> <integer>64396</integer> <key>eventPort</key> <integer>0</integer> </dict> </plist> new request, connection 0, socket 15 type RAOP httpd receiving on socket 15, connection 0 httpd: current connections: connection 0 type 1 socket 15 conn 0x7ee5a0070 RAOP ACTIVE CONNECTION httpd request received on socket 15, connection 0, method = GET, url = /info, protocol = RTSP/1.0 conn_request GET /info RTSP/1.0 X-Apple-ProtocolVersion: 1 CSeq: 4 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 Handling request GET with URL /info RTSP/1.0 200 OK Audio-Jack-Status: connected; type=digital Content-Type: application/x-apple-binary-plist Server: AirTunes/220.68 CSeq: 4 Content-Length: 887 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>deviceID</key> <string>xxxxxxxxxxxxxx</string> <key>macAddress</key> <string>xxxxxxxxxxx</string> <key>pk</key> <data> bSovp5XXP084Gk8Yepab/VbqgBSCvdjhdRjmCHF/fac= </data> <key>features</key> <integer>1384120038</integer> <key>name</key> <string>UxPlay@xxxxxxxxxxxxx</string> <key>pi</key> <string>2e388006-13ba-4041-9a67-25dd4a43d536</string> <key>vv</key> <integer>2</integer> <key>statusFlags</key> <integer>68</integer> <key>keepAliveLowPower</key> <integer>1</integer> <key>sourceVersion</key> <string>220.68</string> <key>keepAliveSendStatsAsBody</key> <true/> <key>model</key> <string>AppleTV3,2</string> <key>initialVolume</key> <real>0.0</real> <key>audioLatencies</key> <array> <dict> <key>type</key> <integer>100</integer> <key>inputLatencyMicros</key> <integer>0</integer> <key>audioType</key> <string>default</string> <key>outputLatencyMicros</key> <false/> </dict> <dict> <key>type</key> <integer>101</integer> <key>audioType</key> <string>default</string> <key>inputLatencyMicros</key> <integer>0</integer> <key>outputLatencyMicros</key> <false/> </dict> </array> <key>audioFormats</key> <array> <dict> <key>audioOutputFormats</key> <integer>67108860</integer> <key>type</key> <integer>100</integer> <key>audioInputFormats</key> <integer>67108860</integer> </dict> <dict> <key>audioOutputFormats</key> <integer>67108860</integer> <key>type</key> <integer>101</integer> <key>audioInputFormats</key> <integer>67108860</integer> </dict> </array> <key>displays</key> <array> <dict> <key>uuid</key> <string>e0ff8a27-6738-3d56-8a16-cc53aacee925</string> <key>widthPhysical</key> <integer>0</integer> <key>heightPhysical</key> <integer>0</integer> <key>width</key> <integer>1920</integer> <key>height</key> <integer>1080</integer> <key>widthPixels</key> <integer>1920</integer> <key>heightPixels</key> <integer>1080</integer> <key>rotation</key> <false/> <key>refreshRate</key> <real>0.016666666666666666</real> <key>maxFPS</key> <integer>30</integer> <key>overscanned</key> <false/> <key>features</key> <integer>14</integer> </dict> </array> </dict> </plist> raop_ntp receive time type_t=83 packetlen = 32, now = 1784189159.220347 t1 = 34965.543883, t2 = 34965.543957 80 d3 00 07 00 00 00 00 ee 03 0f 67 36 0a 84 be 83 ab 07 15 8b 3b f2 42 83 ab 07 15 8b 40 c6 2e raop_ntp sync correction = -1784154193671802208 new request, connection 0, socket 15 type RAOP httpd receiving on socket 15, connection 0 httpd: current connections: connection 0 type 1 socket 15 conn 0x7ee5a0070 RAOP ACTIVE CONNECTION httpd request received on socket 15, connection 0, method = RECORD, url = rtsp://fe80::44:4cc1:a3c2:db24/11462837071921564400, protocol = RTSP/1.0 conn_request RECORD rtsp://xxxxxxxxxxxxxxxxxx CSeq: 5 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 Handling request RECORD with URL rtsp://xxxxxxxxxxxxx raop_handler_record RTSP/1.0 200 OK Audio-Latency: 11025 Audio-Jack-Status: connected; type=analog Server: AirTunes/220.68 CSeq: 5 new request, connection 0, socket 15 type RAOP httpd receiving on socket 15, connection 0 httpd: current connections: connection 0 type 1 socket 15 conn 0x7ee5a0070 RAOP ACTIVE CONNECTION httpd request received on socket 15, connection 0, method = SETUP, url = rtsp://fe80::44:4cc1:a3c2:db24/11462837071921564400, protocol = RTSP/1.0 conn_request SETUP rtsp://xxxxxxxxxxxxxxxxxxx Content-Length: 204 Content-Type: application/x-apple-binary-plist CSeq: 6 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>streams</key> <array> <dict> <key>timestampInfo</key> <array> <dict> <key>name</key> <string>SubSu</string> </dict> <dict> <key>name</key> <string>BePxT</string> </dict> <dict> <key>name</key> <string>AfPxT</string> </dict> <dict> <key>name</key> <string>BefEn</string> </dict> <dict> <key>name</key> <string>EmEnc</string> </dict> </array> <key>latencyMs</key> <integer>100</integer> <key>type</key> <integer>110</integer> <key>streamConnectionID</key> <integer>-2595816776146466753</integer> </dict> </array> </dict> </plist> Handling request SETUP with URL rtsp://xxxxxxxxxxxxxx DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 type = 110 streamConnectionID (needed for AES-CTR video decryption key and iv): 15850927297563084863 raop_rtp_mirror starting mirroring raop_rtp_mirror local data port socket 27 port TCP 56718 Mirroring initialized successfully RTSP/1.0 200 OK Audio-Jack-Status: connected; type=digital Content-Type: application/x-apple-binary-plist Server: AirTunes/220.68 CSeq: 6 Content-Length: 85 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>streams</key> <array> <dict> <key>dataPort</key> <integer>56718</integer> <key>type</key> <integer>110</integer> </dict> </array> </dict> </plist> new request, connection 0, socket 15 type RAOP httpd receiving on socket 15, connection 0 httpd: current connections: connection 0 type 1 socket 15 conn 0x7ee5a0070 RAOP ACTIVE CONNECTION httpd request received on socket 15, connection 0, method = SET_PARAMETER, url = rtsp://xxxxxxxxxxprotocol = RTSP/1.0 conn_request SET_PARAMETER rtsp:/xxxxxxxxx Content-Length: 20 Content-Type: text/parameters CSeq: 7 DACP-ID: FDEBD2B3CFFA48D0 Active-Remote: 2096196447 User-Agent: AirPlay/695.5.1 volume: -20.000000 Handling request SET_PARAMETER with URL rtsp://xxxxxxxxxxxxx RTSP/1.0 200 OK Audio-Jack-Status: connected; type=digital Server: AirTunes/220.68 CSeq: 7 raop_rtp_mirror accepting client Received unencrypted codec packet from client: payload_size 37 header 01 00 16 01 ts_client = 34965.777181 raop_rtp_mirror: unidentified extra header data 240.000000, 0.000000 begin video stream wxh = 1440x1080; source 1440x1080 raop_rtp_mirror width_source = 1440.000000 height_source = 1080.000000 width = 1440.000000 height = 1080.000000 GStreamer h264 bus message pipeline2 new-clock GStreamer h264 bus message videoscale0 state-changed PAUSED PLAYING GStreamer h264 bus message videoconvert0 state-changed PAUSED PLAYING GStreamer h264 bus message h264parse0 state-changed PAUSED PLAYING GStreamer h264 bus message queue2 state-changed PAUSED PLAYING GStreamer h264 bus message video_source state-changed PAUSED PLAYING video_pipeline state change from PAUSED to PLAYING raop_rtp_mirror: SPS+PPS header size = 6 raop_rtp_mirror h264 SPS+PPS header: 01 64 00 28 ff e1 raop_rtp_mirror SPS NAL size = 18 raop_rtp_mirror h264 Sequence Parameter Set: 27 64 00 28 ac 13 14 50 16 80 89 f9 66 e0 20 20 20 40 raop_rtp_mirror PPS NAL size = 4 raop_rtp_mirror h264 Picture Parameter Set: 28 ee 3c b0 remainder size = 4 remainder of SPS+PPS packet: 02 00 00 00 raop_rtp video: now = 1784189159.626513, ntp = 1784189159.448984, latency = 0.177529, ts = 34965.777181, 00 10 00 00 h264, size: 13649 *** invalid ntp_time < gst_video_pipeline_base_time 1784189159.448984 ntp_time 1784189159.522127 base_time adjust timestamps by 0.073143 secs Begin streaming to GStreamer video pipeline raop_rtp video: now = 1784189159.626844, ntp = 1784189159.482317, latency = 0.144527, ts = 34965.810515, 00 00 00 00 h264,- This is my first attempt to mirror the phone using UxPlay.…On Thu, Jul 16, 2026 at 2:10 AM fduncanh ***@***.***> wrote: *fduncanh* left a comment (FDH2/UxPlay#535) <#535 (comment)> Did you have UxPlay working with iOS 26.x before you installed the iOS 27 public beta? — Reply to this email directly, view it on GitHub <#535?email_source=notifications&email_token=AGIZLWTORJOUO3PLU6QEMX35FB5WBA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJYHEYTMMRWHA32M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#issuecomment-4989162687>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AGIZLWSIDS6U6ALM2Z5YCWL5FB5WBAVCNFSNUABFKJSXA33TNF2G64TZHMZTSMJUG43DGNRVHNEXG43VMU5TIOBZGUZDOMRQGMZKC5QC> . You are receiving this because you authored the thread.Message ID: ***@***.***>
Its difficult to go back to iOS 26 from the iOS 27 public beta, so it's not easy to know if your issue is iOS27 changes or something else.
Thanks for alerting us to possible issues with the forthcoming iOS 27
Adding another iOS 27 data point, as requested by @fduncanh in #539.
On an iPhone 15 Pro (
iPhone16,1) running iOS 27.0 beta build24A5355q, with clientAirPlay/980.63.2, UxPlay 1.74 built on Windows 11/MSYS2 UCRT64 does establish the mirror data connection and receives video frames.Initially, the connection reached mirror setup but then aborted with:
raop_rtp_mirror: received type 0x01 packet with no payload this indicates non-h264 video but Airplay features bit 42 (SupportsScreenMultiCodec) is not setStarting UxPlay with
-h265fixed that behavior on this client; the client mirrors in HEVC. My behavior is therefore different from this issue: the client does open the mirror data connection.I no longer have a full
-dcapture of the initial SETUP plist, so I cannot confirm whether this client sentcombinedGetInfoWithControlSetup. This test also usedAirPlay/980.63.2, whereas the report here usesAirPlay/980.67.2, so this result does not rule out a change in the later beta client.@LukeProducts thanks for your valuable input. We still have not got a iOS27beta test setup, and hope that iOS27 doesn't break stuff.
We now have a test system with iPadOS 27 beta 5, to see if iOS 27 is causing any new issues.
UxPlay with iPadOS 27 public beta 5 (build 24A5424a) client seems to work fine. have not noticed any issues yet
<dict> <key>osVersion</key> <string>27.0</string> <key>ekey</key> <data> (2 lines data omitted, 64 chars/line) </data> <key>internalBuild</key> <false/> <key>et</key> <integer>32</integer> <key>combinedGetInfoWithControlSetup</key> <true/> <key>name</key> <string>iPad</string> <key>sessionCorrelationUUID</key> <string>4C891967-79BD-4208-80CD-A34E34DC4C3E</string> <key>diagnosticsAndUsage</key> <true/> <key>timingProtocol</key> <string>NTP</string> <key>deviceID</key> <string>xxxxxxxxxxxxxx</string> <key>eiv</key> <data> Bp10vR+21IJy98WWUCHbOw== </data> <key>timingPort</key> <integer>62055</integer> <key>sourceVersion</key> <string>980.77.1</string> <key>isScreenMirroringSession</key> <true/> <key>model</key> <string>iPad12,2</string> <key>statsCollectionEnabled</key> <false/> <key>macAddress</key> <string>XXXXXXXXXXXXX</string> <key>sessionUUID</key> <string>BD19DA56-D295-41B1-B7D4-EE297ADAF5A5</string> <key>osBuildVersion</key> <string>24A5424a</string> <key>updateSessionRequest</key> <false/> <key>osName</key> <string>iPhone OS</string> </dict>see also #540
Initially, the connection reached mirror setup but then aborted with:
raop_rtp_mirror: received type 0x01 packet with no payload
this indicates non-h264 video but Airplay features bit 42 (SupportsScreenMultiCodec) is not setStarting UxPlay with -h265 fixed that behavior on this client; the client mirrors in HEVC. My behavior is therefore different from this issue: the client does open the mirror data connection.
Its probably time to make -h265 on by default, and choose the video size according to whether h264 or h265 is received.
(probably?) fixed with updates that address iOS and wlroots issues since this issue was posted.
@jaslrobinson Please close, or confirm that it's still an issue (2026-09-16) .
Summary
Mirroring session connects and negotiates successfully (control connection stays open,
/feedbackheartbeats keep flowing, server logs "Mirroring initialized successfully" / opens the data port and confirmsAccepted IPv6 client on socket...), but the client never opens the actual video/audio data connection. No mirroring window ever appears, since no frame data ever arrives.Reproduced consistently across four different configurations:
-p(fixed legacy ports 7000/7001/7100 TCP, 6000/6001/7011 UDP)-p -avdec(forced software h264 decode, ruling out a GPU/VAAPI sink issue)-p, random ports)In every case: the control RTSP connection (whatever port it's on) shows
ESTABLISHEDand stays alive with periodic/feedbackPOSTs, a data port is opened and logged as ready, butss -tnpnever shows a secondESTABLISHEDconnection to that data port — the client simply never dials it.Environment
-vs waylandsinkand also tried defaultautovideosinkosBuildVersionin the 24A53xx range), AirPlay clientsourceVersion 980.67.2Relevant detail
The client's SETUP request plist includes:
This key isn't referenced anywhere in the UxPlay source as far as I can tell from the debug log's request handling — suspect the client is negotiating a different data-connection mode than the traditional separate
dataPort/SETUP-per-stream flow, and since the server doesn't acknowledge/handle that request, the client never follows through with the classic dataPort connection UxPlay is waiting on.Debug log excerpt (
-d), redactedControl connection + first SETUP (audio/timing):
Second SETUP (video stream negotiation) — server responds with a dataPort and considers mirroring initialized:
After this point, only
/feedbackheartbeat POSTs continue on the original control connection every ~3s.ss -tnpat any point after this never shows a connection to port 7100 (or whatever data port was negotiated in other test runs). No video pipeline ever receives a buffer, sowaylandsink/autovideosinknever creates a window (pipeline stays atPAUSED, never reachesPLAYING).Question
Is
combinedGetInfoWithControlSetupa known negotiation mode from newer iOS AirPlay clients that UxPlay doesn't currently implement? Happy to test any patch/branch or provide further packet captures if useful.