openairplay / airplay2-receiver

AirPlay 2 Receiver - Python implementation
2.12k stars 131 forks source link

iPhone can't see device, iTunes says it's not supported #84

Closed jrefano closed 5 months ago

jrefano commented 1 year ago

The problem

Seems to run ok after install see command line output.

On my localhost, iTunes sees it as "None" but returns the error "The AirPlay device "None" is not compatible with this version of iTunes" (this is the most recent version of Windows iTunes).

iPhone on the same network does not show the device at all from native Airplay functionality nor from Tidal app.

Side note, which I don't think will help it work, is there a way to change "Name" from "None"? I tried to edit in the script but must be doing it wrong.

Thanks!

What commit exhibits the issue?

07195c5

Was there a last known working commit?

No response

What type of installation are you running?

virtualenv

With which python3 version do you run Receiver?

3.10.9

OS the receiver runs on

Windows 10

OS the sender runs

iOS 16.1.2, Windows 10

Which sender client was used

iOS system, iOS Tidal, iTunes Windows 12.12.7.1

Command invocation

python ap2-receiver.py --debug -m myap2 -n {984804F0-C854-4973-9884-55D10D287D53}

Please include --debug output which helps to illustrate the problem

(ap2env) C:\Users\refan\OneDrive\Documents\airplay2-receiver>python ap2-receiver.py --debug -m myap2 -n {984804F0-C854-4973-9884-55D10D287D53}
[comtypes]: CoInitializeEx(None, 2)
[Receiver] logging level: DEBUG
[Receiver]: Name: None
[Receiver]: Enabled features: 0001c300405f4200
[Receiver]: FeatureFlags.Ft48TransientPairing|Ft47PeerManagement|Ft46HomeKitPairing|Ft41_PTPClock|Ft40BufferedAudio|Ft30UnifiedAdvertisingInfo|Ft22AudioUnencrypted|Ft20ReceiveAudioAAC_LC|Ft19ReceiveAudioALAC|Ft18ReceiveAudioPCM|Ft17AudioMetaTxtDAAP|Ft16AudioMetaProgress|Ft14MFiSoft_FairPlay|Ft09AirPlayAudio
[HAP] logging level: DEBUG
[HAP]: Loading ed25519 keypair for own ID: aa5cb8df-7f14-4249-901a-5e748ce57a93
C:\Users\refan\OneDrive\Documents\airplay2-receiver\ap2env\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py:61: UserWarning: You are using cryptography on a 32-bit Python on a 64-bit Windows Operating System. Cryptography will be significantly faster if you switch to using a 64-bit Python.
  from cryptography.hazmat.bindings.openssl import binding
[comtypes]: Release <POINTER(IMMDeviceEnumerator) ptr=0x1a455a8 at 6f112b0>
[comtypes]: Release <POINTER(IMMDevice) ptr=0x385b4a0 at 75007b0>
[comtypes]: Release <POINTER(IUnknown) ptr=0x37b3218 at 6f112b0>
[comtypes]: Release <POINTER(IAudioSessionControl) ptr=0x1a3efc0 at 75007b0>
[comtypes]: Release <POINTER(IAudioSessionControl) ptr=0x38644e0 at 75008a0>
[comtypes]: Release <POINTER(IAudioSessionControl) ptr=0x3863ec0 at 75008f0>
[comtypes]: Release <POINTER(IAudioSessionControl) ptr=0x3864da0 at 7500940>
[comtypes]: Release <POINTER(IAudioSessionManager2) ptr=0x37b3218 at 7500800>
[comtypes]: Release <POINTER(IAudioSessionEnumerator) ptr=0x37f8130 at 6f112b0>
[comtypes]: Release <POINTER(IAudioSessionControl) ptr=0x3864b00 at 7500990>
[comtypes]: Release <POINTER(IAudioSessionControl2) ptr=0x3864da4 at 75008f0>
[comtypes]: Release <POINTER(IAudioSessionControl2) ptr=0x3863ec4 at 75008a0>
[comtypes]: Release <POINTER(IAudioSessionControl2) ptr=0x38644e4 at 75007b0>
[comtypes]: Release <POINTER(IAudioSessionControl2) ptr=0x1a3efc4 at 7500850>
[comtypes]: Release <POINTER(IAudioSessionControl2) ptr=0x3864b04 at 7500940>
[Receiver]: Interface: {984804F0-C854-4973-9884-55D10D287D53}
[Receiver]: Mac: 9c:fc:e8:f5:68:56
[Receiver]: IPv4: 192.168.1.133
[Receiver]: IPv6: fe80::fede:84d5:3eaf:622f
[Receiver]:
[asyncio]: Using selector: SelectSelector
[Receiver]: mDNS: service registered
[Receiver]: Starting RTSP server, press Ctrl-C to exit...
[AP2Server: 192.168.1.133:7000] logging level: DEBUG
[Receiver]: serving on 192.168.1.133:7000
[AP2Server: 192.168.1.133:7000]: Opened connection from 192.168.1.133:52029
[AP2Handler: 192.168.1.133:7000<=>192.168.1.133:52029; Thread-2] logging level: DEBUG
[AP2Handler: 192.168.1.133:7000<=>192.168.1.133:52029; Thread-2]: CSeq: 1
User-Agent: iTunes/12.12.7 (Windows; Microsoft Windows 10 x64 (Build 19044); x64) (dt:2)
Client-Instance: C1CD4E1703BCF2D4
DACP-ID: C1CD4E1703BCF2D4
Active-Remote: 1457472462
Apple-Challenge: KAf1nG9z3Vy4vwC3A1Jybw

Additional information

No response

systemcrash commented 1 year ago

The problem

Seems to run ok after install see command line output.

On my localhost, iTunes sees it as "None" but returns the error "The AirPlay device "None" is not compatible with this version of iTunes" (this is the most recent version of Windows iTunes).

iTunes is a bit hit or miss. Look at which --ft flags are available. Certain combinations work in iTunes, esp on windows. See this commit

iPhone on the same network does not show the device at all from native Airplay functionality nor from Tidal app.

Could depend on lots of things.

Side note, which I don't think will help it work, is there a way to change "Name" from "None"? I tried to edit in the script but must be doing it wrong.

--mdns is useful - as well as actually managing it via HomeKit. ( Home app on iOS )

running wireshark to see whether the mdns changes propagate to where the iphone is. Run it on a laptop with wifi only.