-
Notifications
You must be signed in to change notification settings - Fork 228
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iOS 9 support #43
Comments
Thank you, it looks like iOS 9 has started to make a GET_PARAMETER request, which is unhandled by shairplay, because so far it has not been clear what that request is used for. That is why the connection gets disconnected. Unfortunately the debug log doesn't give the whole contents of GET_PARAMETER. It could be something very simple like the iPad just requesting volume parameter before starting the stream. Could you please attach a full dump of the handshake with for example "tcpdump -i -s 65535 -w " and I'll have a look at it. |
Here is tcpflow http://pastebin.com/raw.php?i=e5v1kfNk and here is tcpdump of another handshake with some other packets like icmp https://www.dropbox.com/s/a5xgerz9x3o2xzb/shairplay.tcpdump?dl=0 |
Seems to be just requesting volume as I suspected, this might mean I have to add a new callback for requesting volume, since it's not stored anywhere. I'll let you know when I have a fix for testing. |
@voron sorry to be late about this, but one thing came to my mind, would you mind trying to delete the "GET_PARAMETER, " text from the string on src/lib/raop.c line 205 and recompile? That might be a quick fix, but if it doesn't work I'll actually implement the GET_PARAMETER. It's just a bit annoying to implement since there can be multiple values in one request... |
I had recompiled shairplay without GET_PARAMETER - it's still requested and iPad disconnects from shairplay. Here is tcpflow http://pastebin.com/raw.php?i=PFxACZD9 |
Strangely, there is no GET_PARAMETER with iOS9 and Airport Express http://pastebin.com/raw.php?i=X58D9C7e . This seems to be common iOS 9 related problem - airplay was re-designed, old firmware on AppleTV is broken and so on. I suspect no quick solution. |
Yeah, I just looked at the article in 9to5mac which suggest even apps like Reflector need changes to make things work. I guess have to just wait for the smoke to settle down and then get to this, I'm worried that the work that has been put to reverse engineer screen mirroring might go to waste as well now. |
http://pastebin.com/raw.php?i=X58D9C7e tcpflow with iOS9 and Airport Express fw 7.6.3 just in case. |
Really keen to get this fixed. Happy to offer $'s if it can motivate a faster resolution :) |
I finally got to update my devices to iOS 9 and I can confirm that just implementing GET_PARAMETER fixes the issue, I'll start implementing it. Screen mirroring is another issue that needs to be looked into later. |
Works for me too. |
Mhh this is only half of the story for kodi sadly. I had to disable the airplay announcement to make airtunes work with your changes. It seems the fact that kodi announces both roap and airplay service ios9 somehow tries to do its new connect handshake stuff which we know nothing about :((( Good work though for the roap only users :) |
@Memphiz ah, that makes sense but sucks... I noticed Reflector now advertises iOS9 support at http://www.airsquirrels.com/reflector/ maybe that could give some hints too about the changes. |
Just out of curiosity I posted a dissected RAOP handshake of iOS 9 screen mirroring session to http://pastebin.com/raw.php?i=wLWEqLWg. Basically it seems to do: pair-verify, pair-setup, pair-verify, pair-verify. Then it proceeds with the fp-setup handshake as usual, don't know how tricky it would be to get the raop and airplay support to work concurrently... Should really get this whole process figured out so that mirroring and whatever could be made work. |
Also the whole metadata stuff seems broken (no duration/progress, no artist, no album, no title, no album thumb) ... |
for completness - DACP (remote control) still works with the music app ... |
It's very possible that since we still emulate airport device (which doesn't have a screen) then this metadata is no more sent to that class of device... Should get the Apple TV DRM working and then probably everything would work as before. But easier said than done, no one seems to have time and skills. :) |
By the way the pair-setup handshake seems to be related to HomeKit, there is some implementation at https://github.com/brutella/hc/blob/master/netio/endpoint/pair-verify.go that has implemented it but the documentation is quite slim. Looks like Apple has merged the AirPlay and HomeKit protocols in iOS 9 to work better with each other. |
there is also a working homeKit server for nodejs with iOS9 API. |
It looks like HomeKit pairing is actually using SRP with TLV encoded values, but the AirPlay pairing data is quite different. Need to continue to look into this. |
I must say I haven't come across that GET_PARAMETER stuff with Shairport Sync, though I wonder if it's been taken out of iOS 9? Has anybody had any joy finding where the metadata is gone? |
Really looking forward for full iOS9 support! Keep up the good work 👍 |
any progress? |
Shairport Sync is seeing metadata again in the RAOP protocol... |
Hi juhovh: |
@juhovh , |
Hi Jack-Ix / wenliabc2007, |
I'm unable to use shairplay with iOS 9 beta 3. On the same time Apple Airport works fine with the same iOS 9 iPad and the same instance of shairplay works fine with iOS 8.4.1 another iPad. Here is iOS 9-related console output
Do you need any additional info?
The text was updated successfully, but these errors were encountered: