home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
71.05k stars 29.7k forks source link

Belkin Soundform Connect not playing media #95993

Open darkner258 opened 1 year ago

darkner258 commented 1 year ago

The problem

Hi guys, after upgrading to Supervisor 2023.07.1, my Belkin Soundform Connect stopped playing media both from a dashboard and through scripts. It is in the state "playing", but no sound is coming through. It works just fine using AirPlay through my iPhone. Any ideas as to what might be happening?

What version of Home Assistant Core has the issue?

core-2023.7.0

What was the last working version of Home Assistant Core?

core-2023.6 the last one

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Apple TV

Link to integration documentation on our website

https://www.home-assistant.io/integrations/apple_tv

Diagnostics information

home-assistant_apple_tv_2023-07-06T11-58-04.720Z.log

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

home-assistant[bot] commented 1 year ago

Hey there @postlund, mind taking a look at this issue as it has been labeled with an integration (apple_tv) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `apple_tv` can trigger bot actions by commenting: - `@home-assistant close` Closes the issue. - `@home-assistant rename Awesome new title` Renames the issue. - `@home-assistant reopen` Reopen the issue. - `@home-assistant unassign apple_tv` Removes the current integration label and assignees on the issue, add the integration domain after the command.

(message by CodeOwnersMention)


apple_tv documentation apple_tv source (message by IssueLinks)

postlund commented 1 year ago

It did work prior to upgrading if I understand correctly? You need to check the logs and see what I'd happening there.

darkner258 commented 1 year ago

It did. I also took a look in the logs but can’t make any sense of it, which is why I was hoping to get advice here

čt 6. 7. 2023 v 14:34 odesílatel Pierre Ståhl @.***> napsal:

It did work prior to upgrading if I understand correctly? You need to check the logs and see what I'd happening there.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/95993#issuecomment-1623602456, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZKVEUJTJJCPU5BCWLCEZVDXO2WDBANCNFSM6AAAAAA2AKNTAU . You are receiving this because you authored the thread.Message ID: @.***>

darkner258 commented 1 year ago

@postlund also found this there, maybe that’s the issue Detected blocking call to sleep inside the event loop. This is causing stability issues. Please report issue for apple_tv doing blocking calls at homeassistant/components/apple_tv/media_player.py, line 300: await self.atv.stream.stream_file(media_id)

postlund commented 1 year ago

I don't think that's the problem on its own, but it's a problem they should be fixed. You don't see anything else from the Apple TV Integration in the logs?

darkner258 commented 1 year ago

I also found this, related probably to the media I’m trying to play (radio in this case). It’s however the same media-source that I use for my Sonos and it works fine

Logger: root Source: /usr/local/lib/python3.11/site-packages/pyatv/protocols/raop/audio_source.py:265 First occurred: 3:04:06 PM (2 occurrences) Last logged: 3:09:04 PM

Failed to parse metadata Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/pyatv/protocols/raop/audio_source.py", line 263, in get_buffered_io_metadata return await get_metadata(buffer) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyatv/support/metadata.py", line 25, in get_metadata in_file = await loop.run_in_executor(None, _open_file, file) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyatv/support/metadata.py", line 15, in _open_file in_file = MediaFile(file) ^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/mediafile.py", line 165, in wrapper return mutagen_call('loadfile', '', f, *args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/mediafile.py", line 137, in mutagen_call return func(args, kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/mutagen/_util.py", line 155, in wrapper return func(self, h, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/mediafile.py", line 1586, in init raise FileTypeError(self.filename) mediafile.FileTypeError: 'https://ice.actve.net/fm-evropa2-128': not in a recognized format

postlund commented 1 year ago

I suspect that your Belkin receiver doesn't support receiving audio in PCM mode, but expects ALAC. Previously I did send all audio in ALAC frames, but that was expensive so I changed to PCM instead as soert of an optimization (if you are interested in the details, you have some notes from me here: https://github.com/postlund/pyatv/issues/2057). This was just a blind assumption on my end that all recovers support PCM, but that might not be the case. I tested to stream that URL to my HomePod and it works just fine.

I would however like to confirm this, so it would be very helpful if you could extract the "flags" properties via Zeroconf for me. It has a format like "0x4A7FDFD5,0xBC157FDE". One easy way to do that is to search for Zeroconf in your corresponding store on your phone and install one of the apps there (in use iNet on iOS which is pretty good but it ain't free). You can also use atvremote --debug scan if you install pyatv.

darkner258 commented 1 year ago

I might need some guidance here. I have both an iOS and an Android phone to work with, but I’m not sure which app to use and what to look for there

čt 6. 7. 2023 v 19:39 odesílatel Pierre Ståhl @.***> napsal:

I suspect that your Belkin receiver doesn't support receiving audio in PCM mode, but expects ALAC. Previously I did send all audio in ALAC frames, but that was expensive so I changed to PCM instead as soert of an optimization (if you are interested in the details, you have some notes from me here: postlund/pyatv#2057 https://github.com/postlund/pyatv/issues/2057). This was just a blind assumption on my end that all recovers support PCM, but that might not be the case. I tested to stream that URL to my HomePod and it works just fine.

I would however like to confirm this, so it would be very helpful if you could extract the "flags" properties via Zeroconf for me. It has a format like "0x4A7FDFD5,0xBC157FDE". One easy way to do that is to search for Zeroconf in your corresponding store on your phone and install one of the apps there (in use iNet on iOS which is pretty good but it ain't free). You can also use atvremote --debug scan if you install pyatv.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/95993#issuecomment-1624076067, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZKVEUIS4KXTJJ54TEK6DATXO3Z45ANCNFSM6AAAAAA2AKNTAU . You are receiving this because you authored the thread.Message ID: @.***>

darkner258 commented 1 year ago

Nevermind, found it. Flags reported this: flags = 0x404 and features this: features = 0x445F8A00,0x4001C340

fonix232 commented 1 year ago

@postlund I'm having the same issue, however it's literally with any Apple TV integration device - i.e. all AirPlay/AirPlay2 devices fail to play anything from HA.

Output from pyatv's debug scan:

2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered Living Room at 10.0.0.130:49153 via Protocol.Companion ({'rpmac': '2', 'rphn': 'c55479d1d324', 'rpfl': '0xB6782', 'rpha': 'fcae44c03c4c', 'rpmd': 'AppleTV14,1', 'rpvr': '440.10', 'rpad': '0bf39cbdae64', 'rphi': 'fe9f2c6fc10f', 'rpba': '2B:11:A5:35:79:DE', 'rpmrtid': '70CD1314-8433-477F-8C73-055AF0C2725E'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered Living Room (2) at 10.0.0.130:7000 via Protocol.AirPlay ({'acl': '0', 'btaddr': '00:00:00:00:00:00', 'deviceid': 'A8:51:AB:11:F1:DE', 'fex': '1d9/St5/FbwooQQ', 'features': '0x4A7FDFD5,0xBC157FDE', 'flags': '0x18644', 'gid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'igl': '1', 'gcgl': '1', 'gpn': 'Living Room', 'psgsz': '3', 'psgtp': '1', 'psgid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'pgm': '2', 'pgmid': '0', 'model': 'AppleTV14,1', 'protovers': '1.1', 'pi': 'b0e9fc82-0ae4-40ea-b95e-16f8ace72e15', 'psi': '70CD1314-8433-477F-8C73-055AF0C2725E', 'pk': 'xxx', 'srcvers': '690.7.1', 'osvers': '16.5', 'vv': '2'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered A851AB11F1DE@Living Room at 10.0.0.130:7000 via Protocol.RAOP ({'cn': '0,1,2,3', 'da': 'true', 'et': '0,3,5', 'ft': '0x4A7FDFD5,0xBC157FDE', 'sf': '0x18644', 'md': '0,1,2', 'am': 'AppleTV14,1', 'pk': 'xxx', 'tp': 'UDP', 'vn': '65537', 'vs': '690.7.1', 'ov': '16.5', 'vv': '2'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered HomePod - Left at 10.0.1.1:7000 via Protocol.AirPlay ({'acl': '0', 'btaddr': '07:ED:77:F8:1A:08', 'deviceid': 'AC:BC:B5:CD:85:E5', 'fex': 'AMp/StBrNbwAoQQ', 'features': '0x4A7FCA00,0xBC356BD0', 'flags': '0xb8c04', 'gid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'igl': '0', 'gcgl': '1', 'gpn': 'Living Room', 'psgsz': '3', 'psgtp': '1', 'psgid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'pgm': '2', 'pgmid': '2', 'pgid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'pgcgl': '1', 'tsid': '9E83BE0F-F769-529D-9801-69A8C8CB87F9', 'tsm': '2', 'model': 'AudioAccessory6,1', 'protovers': '1.1', 'pi': '9880a56a-262c-413f-b8b7-6e431085a33e', 'psi': '40DDAE42-6F4E-460D-BB89-A0201997A701', 'pk': 'xxx', 'srcvers': '690.7.1', 'osvers': '16.5', 'vv': '2'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered HomePod - Left at 10.0.1.1:49154 via Protocol.Companion ({'rpmac': '2', 'rphn': '9d1b0eb348d8', 'rpfl': '0x62792', 'rpha': '78871585c2ba', 'rpmd': 'AudioAccessory6,1', 'rpvr': '440.10', 'rpad': '454718ec21b6', 'rphi': 'a547c693801e', 'rpba': '9E:DD:56:09:4E:8D'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered ACBCB5CD85E5@HomePod - Left at 10.0.1.1:7000 via Protocol.RAOP ({'cn': '0,1,2,3', 'da': 'true', 'et': '0,3,5', 'ft': '0x4A7FCA00,0xBC356BD0', 'sf': '0xb8c04', 'md': '0,1,2', 'am': 'AudioAccessory6,1', 'pk': 'xxx', 'tp': 'UDP', 'vn': '65537', 'vs': '690.7.1', 'ov': '16.5', 'vv': '2'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered HomePod - Right at 10.0.1.38:7000 via Protocol.AirPlay ({'acl': '0', 'btaddr': '2F:B9:1D:06:B1:8C', 'deviceid': 'AC:BC:B5:CD:1B:64', 'fex': 'AMp/StBLNbwAoQQ', 'features': '0x4A7FCA00,0xBC354BD0', 'flags': '0xbac04', 'gid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'igl': '0', 'gcgl': '1', 'gpn': 'Living Room', 'psgsz': '3', 'psgtp': '1', 'psgid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'pgm': '2', 'pgmid': '1', 'pgid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'pgcgl': '1', 'tsid': '9E83BE0F-F769-529D-9801-69A8C8CB87F9', 'tsm': '2', 'model': 'AudioAccessory6,1', 'protovers': '1.1', 'pi': '58af357e-2bce-4337-9a42-ef896a2563b3', 'psi': 'A222EC3A-D15B-4EEF-95F7-A29CE63EB0CE', 'pk': 'xxx', 'srcvers': '690.7.1', 'osvers': '16.5', 'vv': '2'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered HomePod - Right at 10.0.1.38:49153 via Protocol.Companion ({'rpmac': '2', 'rphn': 'c3f3d43d7eab', 'rpfl': '0x62792', 'rpha': '8a6518ed3d91', 'rpmd': 'AudioAccessory6,1', 'rpvr': '440.10', 'rpad': '5029ca99a208', 'rphi': '68ff0b3136ec', 'rpba': '86:77:C8:41:86:F5'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered ACBCB5CD1B64@HomePod - Right at 10.0.1.38:7000 via Protocol.RAOP ({'cn': '0,1,2,3', 'da': 'true', 'et': '0,3,5', 'ft': '0x4A7FCA00,0xBC354BD0', 'sf': '0xbac04', 'md': '0,1,2', 'am': 'AudioAccessory6,1', 'pk': 'xxx', 'tp': 'UDP', 'vn': '65537', 'vs': '690.7.1', 'ov': '16.5', 'vv': '2'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered Samsung Soundbar Q930B at 10.0.1.7:41937 via Protocol.AirPlay ({'acl': '0', 'deviceid': '80:8A:BD:87:72:A4', 'features': '0x445F8A00,0x1C340', 'rsf': '0x0', 'fv': 'p20.SAT-iMX8M22WWC-1010.0', 'flags': '0x4', 'model': 'HW-Q930B', 'manufacturer': 'Samsung', 'serialnumber': 'N/A', 'protovers': '1.1', 'srcvers': '366.0', 'pi': '80:8A:BD:87:72:A4', 'gid': '80:8A:BD:87:72:A4', 'gcgl': '0', 'pk': 'xxx'})
2023-07-07 16:08:45 DEBUG [pyatv.core.scan]: Auto-discovered 808ABD8772A4@Samsung Soundbar Q930B at 10.0.1.7:41937 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0,4', 'ft': '0x445F8A00,0x1C340', 'fv': 'p20.SAT-iMX8M22WWC-1010.0', 'md': '0,1,2', 'am': 'HW-Q930B', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': 'xxx'})

Scan Results
========================================
       Name: Living Room
   Model/SW: Apple TV 4K (gen 3), tvOS 16.5
    Address: 10.0.0.130
        MAC: A8:51:AB:11:F1:DE
 Deep Sleep: False
Identifiers:
 - 70CD1314-8433-477F-8C73-055AF0C2725E
 - A8:51:AB:11:F1:DE
 - A851AB11F1DE
Services:
 - Protocol: Companion, Port: 49153, Credentials: None, Requires Password: False, Password: None, Pairing: Mandatory
 - Protocol: AirPlay, Port: 7000, Credentials: None, Requires Password: False, Password: None, Pairing: Mandatory
 - Protocol: RAOP, Port: 7000, Credentials: None, Requires Password: False, Password: None, Pairing: Mandatory

       Name: HomePod - Left
   Model/SW: HomePod (gen 2), Unknown OS 16.5
    Address: 10.0.1.1
        MAC: AC:BC:B5:CD:85:E5
 Deep Sleep: False
Identifiers:
 - AC:BC:B5:CD:85:E5
 - ACBCB5CD85E5
Services:
 - Protocol: AirPlay, Port: 7000, Credentials: None, Requires Password: False, Password: None, Pairing: NotNeeded
 - Protocol: Companion, Port: 49154, Credentials: None, Requires Password: False, Password: None, Pairing: Unsupported
 - Protocol: RAOP, Port: 7000, Credentials: None, Requires Password: False, Password: None, Pairing: NotNeeded

       Name: HomePod - Right
   Model/SW: HomePod (gen 2), Unknown OS 16.5
    Address: 10.0.1.38
        MAC: AC:BC:B5:CD:1B:64
 Deep Sleep: False
Identifiers:
 - AC:BC:B5:CD:1B:64
 - ACBCB5CD1B64
Services:
 - Protocol: AirPlay, Port: 7000, Credentials: None, Requires Password: False, Password: None, Pairing: NotNeeded
 - Protocol: Companion, Port: 49153, Credentials: None, Requires Password: False, Password: None, Pairing: Unsupported
 - Protocol: RAOP, Port: 7000, Credentials: None, Requires Password: False, Password: None, Pairing: NotNeeded

       Name: Samsung Soundbar Q930B
   Model/SW: HW-Q930B, Unknown OS
    Address: 10.0.1.7
        MAC: 80:8A:BD:87:72:A4
 Deep Sleep: False
Identifiers:
 - 80:8A:BD:87:72:A4
 - 808ABD8772A4
Services:
 - Protocol: AirPlay, Port: 41937, Credentials: None, Requires Password: False, Password: None, Pairing: NotNeeded
 - Protocol: RAOP, Port: 41937, Credentials: None, Requires Password: False, Password: None, Pairing: NotNeeded

None of the devices listed above are able to start an audio or video stream. The Apple TV 4K (named "Living Room" here) responds with this error:

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 205, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1957, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 1997, in _execute_service
return await cast(
^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 235, in handle_service
return await service.entity_service_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 845, in entity_service_call
response_data = task.result() # pop exception if have
^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1192, in async_request_call
return await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 889, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/apple_tv/media_player.py", line 300, in async_play_media
await self.atv.stream.stream_file(media_id)
File "/usr/local/lib/python3.11/site-packages/pyatv/core/facade.py", line 370, in stream_file
await self.relay("stream_file")(
File "/usr/local/lib/python3.11/site-packages/pyatv/protocols/raop/__init__.py", line 353, in stream_file
await client.initialize(self.core.service.properties)
File "/usr/local/lib/python3.11/site-packages/pyatv/protocols/raop/stream_client.py", line 375, in initialize
await self._protocol.setup(self.timing_client.port, self.control_client.port)
File "/usr/local/lib/python3.11/site-packages/pyatv/protocols/raop/protocols/airplayv2.py", line 74, in setup
transport, _ = await setup_channel(
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyatv/auth/hap_channel.py", line 88, in setup_channel
out_key, in_key = verifier.encryption_keys(salt, output_info, input_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/auth/legacy.py", line 112, in encryption_keys
raise exceptions.NotSupportedError(
pyatv.exceptions.NotSupportedError: encryption keys not supported by legacy auth

Meanwhile the Samsung soundbar attempts playback at first (no visible/logged failure, but music playback doesn't happen, it just sits there without any progress report or such), and any subsequent playback attempts will result in this error:

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 205, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1957, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 1997, in _execute_service
return await cast(
^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 235, in handle_service
return await service.entity_service_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 845, in entity_service_call
response_data = task.result() # pop exception if have
^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1192, in async_request_call
return await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 889, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/apple_tv/media_player.py", line 300, in async_play_media
await self.atv.stream.stream_file(media_id)
File "/usr/local/lib/python3.11/site-packages/pyatv/core/facade.py", line 370, in stream_file
await self.relay("stream_file")(
File "/usr/local/lib/python3.11/site-packages/pyatv/protocols/raop/__init__.py", line 342, in stream_file
self.playback_manager.acquire()
File "/usr/local/lib/python3.11/site-packages/pyatv/protocols/raop/__init__.py", line 137, in acquire
raise exceptions.InvalidStateError("already streaming to device")
pyatv.exceptions.InvalidStateError: already streaming to device

The initial loading in this latter case also seems to take incredibly long. On a 3 minute long track, it's nearly 30s before it actually switches to playback, on longer tracks (e.g. my ambiance tracks), that are multiple hours at times, well, I haven't had the patience to sit and wait for it to finish.

Please do say if I can get any further information that would help the investigation!

postlund commented 1 year ago

@fonix232 Can you please try to remove one Apple TV and add it again? Since AirPlay 2 uses other encryption, it requires re-auth which isn't implemented properly now I realize. The non-apple ones are likely the same as the initial issue.

jreed509 commented 1 year ago

I'm seeing the same legacy auth error with my Apple TVs when sending TTS commands to them from home assistant. I tried removing and re-adding the integration for my Apple TVs and I'm still getting the same error. Possibly worth noting that I don't get this error when sending TTS to my HomePods or other airplay devices.

postlund commented 1 year ago

@jreed509 and you are running the latest HA release (and don't happen to have the old beta version from HACS installed)?

jreed509 commented 1 year ago

Yep I'm running the latest HA release (2023.7.1) and never had the beta HACS version installed.

postlund commented 1 year ago

Oh, I think I can reproduce that too. I can see that pyatv picks legacy auth (I.e. what is used for AirPlay 1) instead of HAP (which is used for AirPlay 2). This makes the encryption keys mismatch. That's a bug in pyatv for sure and I have open an issue for it here: https://github.com/postlund/pyatv/issues/2092

postlund commented 1 year ago

I opened a fix for it in #2093. Initial issue still remain though. I will try to create a branch using ALAC instead of raw PCM for steaming to see if that helps.

jreed509 commented 1 year ago

Thanks! That seemed to fix this issue for me. Let me know when you create that ALAC branch - I'll be happy to test it out on my HomePods.

darkner258 commented 1 year ago

Me too! I’d love to be able to play radio through my dumb, turned smart speakers built into the ceiling of my apartment :)

On Sun 9. 7. 2023 at 23:05, jreed509 @.***> wrote:

Thanks! That seemed to fix this issue for me. Let me know when you create that ALAC branch - I'll be happy to test it out on my HomePods.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/95993#issuecomment-1627824429, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZKVEUL7YNMQALQJ6T4XV6DXPMMHHANCNFSM6AAAAAA2AKNTAU . You are receiving this because you authored the thread.Message ID: @.***>

postlund commented 1 year ago

Don't you get audio on your HomePods either? Because that should work, I've tested it myself.

darkner258 commented 1 year ago

If you’re asking me, then yes, everything besides the Belkin works fine, but it’s a central part of my sound setup :)

On Mon 10. 7. 2023 at 7:24, Pierre Ståhl @.***> wrote:

Don't you get audio on your HomePods either? Because that should work, I've tested it myself.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/95993#issuecomment-1628226931, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZKVEUP626AVPG2KS5Q7IFDXPOGYLANCNFSM6AAAAAA2AKNTAU . You are receiving this because you authored the thread.Message ID: @.***>

fonix232 commented 1 year ago

@postlund apologies for the late reply, had a few things to do over the weekend and forgot to check back. I've tried re-adding my Apple TV, to no avail, but I see you've already put a fix for that in the pipeline (how exactly could one test that on a HAOS install?).

As for the original issue, any ideas yet? I'm free to debug it further, with some guidance. I also happen to have a Belkin Soundform tucked away somewhere (will need to dig through a few boxes due to a recent move), if that helps in any way.

postlund commented 1 year ago

@fonix232 If you could try streaming something with this branch, that would help:

https://github.com/postlund/pyatv/tree/use_alac

Something like this would work:

atvremote -s <ip to belkin> stream_file=https://file-examples.com/storage/fe8ec1a8f464ac695986bbb/2017/11/file_example_MP3_1MG.mp3

You have som installation instructions here:

https://pyatv.dev/documentation/#specific-branch-or-a-pull-request

fonix232 commented 1 year ago

@postlund still haven't found my Belkins, but I did try with my soundbar. Pairing doesn't seem possible - it prompts me for a RAOP PIN, but the device itself doesn't display one (and inside HA it was actually properly managed, the PIN entry screens were bypassed).

Using AirPlay, I'm able to query things, but e.g. setting the volume doesn't work (RAOP reports volume set, next query returns old volume level, and the actual volume doesn't change either).

However after some testing it got to the point where most commands fail with a TlvValue.Salt: 2 error:

root@fenrir:~# atvremote --id 808ABD8772A4 --debug stream_file=http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4
2023-07-11 21:09:01 DEBUG [pyatv.scripts]: Running with pyatv 0.13.2
2023-07-11 21:09:01 DEBUG [pyatv.support.net]: Binding on *:5353
2023-07-11 21:09:01 DEBUG [pyatv.support.net]: Binding on 127.0.0.1:0
2023-07-11 21:09:01 DEBUG [pyatv.support.net]: Binding on 10.0.0.90:0
2023-07-11 21:09:02 DEBUG [pyatv.core.scan]: Auto-discovered Samsung Soundbar Q930B at 10.0.1.7:42081 via Protocol.AirPlay ({'acl': '0', 'deviceid': '80:8A:BD:87:72:A4', 'features': '0x445F8A00,0x1C340', 'rsf': '0x0', 'fv': 'p20.SAT-iMX8M22WWC-1010.0', 'flags': '0x4', 'model': 'HW-Q930B', 'manufacturer': 'Samsung', 'serialnumber': 'N/A', 'protovers': '1.1', 'srcvers': '366.0', 'pi': '80:8A:BD:87:72:A4', 'gid': '80:8A:BD:87:72:A4', 'gcgl': '0', 'pk': '06f6085cd329a68441b711508c672598d7a3ae43a55701d327e02f0def8bb7a5'})
2023-07-11 21:09:02 DEBUG [pyatv.core.scan]: Auto-discovered 808ABD8772A4@Samsung Soundbar Q930B at 10.0.1.7:42081 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0,4', 'ft': '0x445F8A00,0x1C340', 'fv': 'p20.SAT-iMX8M22WWC-1010.0', 'md': '0,1,2', 'am': 'HW-Q930B', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': '06f6085cd329a68441b711508c672598d7a3ae43a55701d327e02f0def8bb7a5'})
2023-07-11 21:09:02 INFO [pyatv.scripts.atvremote]: Auto-discovered Samsung Soundbar Q930B at 10.0.1.7
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay
2023-07-11 21:09:02 DEBUG [pyatv.protocols.airplay]: Remote control not supported by device
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Power management not supported by any protocols
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Connected to 10.0.1.7
2023-07-11 21:09:02 DEBUG [pyatv.protocols.raop]: Using AirPlay version AirPlayMajorVersion.AirPlayV2
2023-07-11 21:09:02 DEBUG [pyatv.protocols.raop.stream_client]: Initializing RTSP with encryption=9, metadata=7
2023-07-11 21:09:02 DEBUG [pyatv.protocols.raop.stream_client]: Update play settings to 44100/2/16bit
2023-07-11 21:09:02 DEBUG [pyatv.protocols.raop.stream_client]: Local ports: control=56828, timing=47867
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'GET /info RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 0\r\nDACP-ID: CE0F9CCA33DFB869\r\nActive-Remote: 579259344\r\nClient-Instance: CE0F9CCA33DFB869\r\n\r\n'
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Received: b"RTSP/1.0 200 OK\r\nContent-Length: 564\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x11\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x16\x16\x19\x13\x1a\x1b\x1c\x1d\x1e\x1fSsdkRpi_\x10\x10firmwareRevision\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.0.7_\x10\x1180:8A:BD:87:72:A4_\x10\x15SAT-iMX8M22WWC-1010.0WSamsung\t[Oct 24 2022XHW-Q930B\x10\x04T47.0_\x10AOpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018S1.1U366.0\x13\x00\x01\xc3@D_\x8a\x00_\x10\x16Samsung Soundbar Q930B\x00\x08\x00-\x001\x004\x00G\x00T\x00h\x00|\x00\x82\x00\x99\x00\xb4\x00\xc0\x00\xc9\x00\xcf\x00\xd7\x00\xe9\x00\xf7\x01\x00\x01\x05\x01\x13\x01'\x01?\x01G\x01H\x01T\x01]\x01_\x01d\x01\xa8\x01\xac\x01\xb2\x01\xbb\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xd4"
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '564', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '0'}, body=b"bplist00\xdf\x10\x11\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x16\x16\x19\x13\x1a\x1b\x1c\x1d\x1e\x1fSsdkRpi_\x10\x10firmwareRevision\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.0.7_\x10\x1180:8A:BD:87:72:A4_\x10\x15SAT-iMX8M22WWC-1010.0WSamsung\t[Oct 24 2022XHW-Q930B\x10\x04T47.0_\x10AOpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018S1.1U366.0\x13\x00\x01\xc3@D_\x8a\x00_\x10\x16Samsung Soundbar Q930B\x00\x08\x00-\x001\x004\x00G\x00T\x00h\x00|\x00\x82\x00\x99\x00\xb4\x00\xc0\x00\xc9\x00\xcf\x00\xd7\x00\xe9\x00\xf7\x01\x00\x01\x05\x01\x13\x01'\x01?\x01G\x01H\x01T\x01]\x01_\x01d\x01\xa8\x01\xac\x01\xb2\x01\xbb\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xd4"):
2023-07-11 21:09:02 DEBUG [pyatv.protocols.raop.stream_client]: Updated info parameters to: {'sdk': 'AirPlay;2.0.7', 'pi': '80:8A:BD:87:72:A4', 'firmwareRevision': 'SAT-iMX8M22WWC-1010.0', 'manufacturer': 'Samsung', 'keepAliveLowPower': True, 'firmwareBuildDate': 'Oct 24 2022', 'model': 'HW-Q930B', 'nameIsFactoryDefault': True, 'keepAliveSendStatsAsBody': True, 'statusFlags': 4, 'deviceID': '80:8A:BD:87:72:A4', 'build': '47.0', 'PTPInfo': 'OpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018', 'protocolVersion': '1.1', 'sourceVersion': '366.0', 'features': 496155769145856, 'name': 'Samsung Soundbar Q930B'}
2023-07-11 21:09:02 DEBUG [pyatv.protocols.airplay.auth]: Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.Transient
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-pin-start HTTP/1.1\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n'
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nServer: AirTunes/366.0\r\n\r\n'
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Server': 'AirTunes/366.0'}, body=''):
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 9\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x00\x01\x00\x06\x01\x01\x13\x01\x10'
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 6\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\n\r\n\x07\x01\x06\x06\x01\x02'
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '6', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0'}, body=b'\x07\x01\x06\x06\x01\x02'):
2023-07-11 21:09:02 DEBUG [pyatv.core.facade]: Release (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-11 21:09:02 DEBUG [pyatv.scripts.atvremote]: Waiting for 0 remaining tasks
2023-07-11 21:09:02 DEBUG [pyatv.protocols.raop.stream_client]: Control connection lost (None)
2023-07-11 21:09:02 DEBUG [pyatv.support.http]: Connection closed
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 762, in _run_application
    return await cli_handler(loop)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 535, in cli_handler
    return await _handle_commands(args, config, loop)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 650, in _handle_commands
    ret = await _handle_device_command(args, cmd, atv, loop)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 700, in _handle_device_command
    return await _exec_command(atv.stream, cmd, True, *cmd_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 729, in _exec_command
    value = await tmp(*args)
            ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/core/facade.py", line 370, in stream_file
    await self.relay("stream_file")(
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/__init__.py", line 353, in stream_file
    await client.initialize(self.core.service.properties)
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/stream_client.py", line 375, in initialize
    await self._protocol.setup(self.timing_client.port, self.control_client.port)
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/protocols/airplayv2.py", line 38, in setup
    verifier = await verify_connection(
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/airplay/auth/__init__.py", line 104, in verify_connection
    has_encryption_keys = await verifier.verify_credentials()
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/airplay/auth/hap_transient.py", line 66, in verify_credentials
    atv_salt = pairing_data[hap_tlv8.TlvValue.Salt]
               ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: <TlvValue.Salt: 2>

>>> An error occurred, full stack trace above

Since the soundbar doesn't seem to properly push updates, and fails playback in such wondrous ways, I'm starting to think that 1, it's not the same issue as with the Belkin devices 2, Samsung's AirPlay implementation sucks.

I'll keep investigating and also try to find my Belkin adapters this week and run the same tests with that branch.

postlund commented 1 year ago

@fonix232 AirPlay receivers generally does not require pairing (they use "transient pairing" which uses a hardcoded pin, so no user interaction needed). You can check that if you do atvremote scan, it will likely say NotNeeded. pyatv does however not stop you from trying to pair currently, but you will get errors similar to what you got when trying to do so. I will likely add so that an exception is thrown in these cases, just to make it abundantly clear that pairing isn't needed.

The API towards AirPlay generally only allows you to tap into the stream to you are currently playing, so you can't tap into what someone else is playing (or current volume or whatever). You can only use those APIs in the same session as you are steaming, which isn't really possible to test with atvremote. In Home Assistant, streaming is done in the background, so it will work there. What is important to me is if audio streaming is working, I.e. do you hey correct audio in your speaker?

fonix232 commented 1 year ago

@postlund no, as you can see from the logs, the stream does not work.

First few tries it complained about authorisation , which is why I tried pairing:

root@fenrir:~# atvremote -s 10.0.1.7 stream_file=https://file-examples.com/wp-content/storage/2017/11/file_example_MP3_5MG.mp3
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 762, in _run_application
    return await cli_handler(loop)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 535, in cli_handler
    return await _handle_commands(args, config, loop)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 650, in _handle_commands
    ret = await _handle_device_command(args, cmd, atv, loop)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 700, in _handle_device_command
    return await _exec_command(atv.stream, cmd, True, *cmd_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 729, in _exec_command
    value = await tmp(*args)
            ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/core/facade.py", line 370, in stream_file
    await self.relay("stream_file")(
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/__init__.py", line 353, in stream_file
    await client.initialize(self.core.service.properties)
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/stream_client.py", line 375, in initialize
    await self._protocol.setup(self.timing_client.port, self.control_client.port)
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/protocols/airplayv2.py", line 38, in setup
    verifier = await verify_connection(
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/airplay/auth/__init__.py", line 104, in verify_connection
    has_encryption_keys = await verifier.verify_credentials()
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/airplay/auth/hap_transient.py", line 57, in verify_credentials
    resp = await self.http.post(
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/support/http.py", line 418, in post
    return await self.send_and_receive(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/support/http.py", line 473, in send_and_receive
    raise exceptions.HttpError(
pyatv.exceptions.HttpError: HTTP/1.1 method POST failed with code 470: Connection Authorization Required

>>> An error occurred, full stack trace above
postlund commented 1 year ago

@fonix232 I've been staring blindly at this now, but I have an idea. I just pushed an update to use_alac, can you try if that works? It's a commit with message lol because of reasons.

fonix232 commented 1 year ago

@postlund alas I'm still getting the same TlvValue salt error:

root@fenrir:~# atvremote --id 808ABD8772A4 --debug stream_file=https://file-examples.com/wp-content/storage/2017/11/file_example_MP3_5MG.mp3
2023-07-13 18:52:14 DEBUG [pyatv.scripts]: Running with pyatv 0.13.2
2023-07-13 18:52:14 DEBUG [pyatv.support.net]: Binding on *:5353
2023-07-13 18:52:14 DEBUG [pyatv.support.net]: Binding on 127.0.0.1:0
2023-07-13 18:52:14 DEBUG [pyatv.support.net]: Binding on 10.0.0.90:0
2023-07-13 18:52:16 DEBUG [pyatv.core.scan]: Auto-discovered Samsung Soundbar Q930B at 10.0.1.7:42081 via Protocol.AirPlay ({'acl': '0', 'deviceid': '80:8A:BD:87:72:A4', 'features': '0x445F8A00,0x1C340', 'rsf': '0x0', 'fv': 'p20.SAT-iMX8M22WWC-1010.0', 'flags': '0x4', 'model': 'HW-Q930B', 'manufacturer': 'Samsung', 'serialnumber': 'N/A', 'protovers': '1.1', 'srcvers': '366.0', 'pi': '80:8A:BD:87:72:A4', 'gid': '80:8A:BD:87:72:A4', 'gcgl': '0', 'pk': '06f6085cd329a68441b711508c672598d7a3ae43a55701d327e02f0def8bb7a5'})
2023-07-13 18:52:16 DEBUG [pyatv.core.scan]: Auto-discovered 808ABD8772A4@Samsung Soundbar Q930B at 10.0.1.7:42081 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0,4', 'ft': '0x445F8A00,0x1C340', 'fv': 'p20.SAT-iMX8M22WWC-1010.0', 'md': '0,1,2', 'am': 'HW-Q930B', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': '06f6085cd329a68441b711508c672598d7a3ae43a55701d327e02f0def8bb7a5'})
2023-07-13 18:52:16 INFO [pyatv.scripts.atvremote]: Auto-discovered Samsung Soundbar Q930B at 10.0.1.7
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay
2023-07-13 18:52:16 DEBUG [pyatv.protocols.airplay]: Remote control not supported by device
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Power management not supported by any protocols
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Connected to 10.0.1.7
2023-07-13 18:52:16 DEBUG [pyatv.protocols.raop]: Using AirPlay version AirPlayMajorVersion.AirPlayV2
2023-07-13 18:52:16 DEBUG [pyatv.protocols.raop.stream_client]: Initializing RTSP with encryption=9, metadata=7
2023-07-13 18:52:16 DEBUG [pyatv.protocols.raop.stream_client]: Update play settings to 44100/2/16bit
2023-07-13 18:52:16 DEBUG [pyatv.protocols.raop.stream_client]: Local ports: control=41399, timing=58070
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'GET /info RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 0\r\nDACP-ID: 78B8542A912876BE\r\nActive-Remote: 3974572014\r\nClient-Instance: 78B8542A912876BE\r\n\r\n'
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Received: b"RTSP/1.0 200 OK\r\nContent-Length: 564\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x11\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x16\x16\x19\x13\x1a\x1b\x1c\x1d\x1e\x1fSsdkRpi_\x10\x10firmwareRevision\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.0.7_\x10\x1180:8A:BD:87:72:A4_\x10\x15SAT-iMX8M22WWC-1010.0WSamsung\t[Oct 24 2022XHW-Q930B\x10\x04T47.0_\x10AOpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018S1.1U366.0\x13\x00\x01\xc3@D_\x8a\x00_\x10\x16Samsung Soundbar Q930B\x00\x08\x00-\x001\x004\x00G\x00T\x00h\x00|\x00\x82\x00\x99\x00\xb4\x00\xc0\x00\xc9\x00\xcf\x00\xd7\x00\xe9\x00\xf7\x01\x00\x01\x05\x01\x13\x01'\x01?\x01G\x01H\x01T\x01]\x01_\x01d\x01\xa8\x01\xac\x01\xb2\x01\xbb\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xd4"
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '564', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '0'}, body=b"bplist00\xdf\x10\x11\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x16\x16\x19\x13\x1a\x1b\x1c\x1d\x1e\x1fSsdkRpi_\x10\x10firmwareRevision\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.0.7_\x10\x1180:8A:BD:87:72:A4_\x10\x15SAT-iMX8M22WWC-1010.0WSamsung\t[Oct 24 2022XHW-Q930B\x10\x04T47.0_\x10AOpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018S1.1U366.0\x13\x00\x01\xc3@D_\x8a\x00_\x10\x16Samsung Soundbar Q930B\x00\x08\x00-\x001\x004\x00G\x00T\x00h\x00|\x00\x82\x00\x99\x00\xb4\x00\xc0\x00\xc9\x00\xcf\x00\xd7\x00\xe9\x00\xf7\x01\x00\x01\x05\x01\x13\x01'\x01?\x01G\x01H\x01T\x01]\x01_\x01d\x01\xa8\x01\xac\x01\xb2\x01\xbb\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xd4"):
2023-07-13 18:52:16 DEBUG [pyatv.protocols.raop.stream_client]: Updated info parameters to: {'sdk': 'AirPlay;2.0.7', 'pi': '80:8A:BD:87:72:A4', 'firmwareRevision': 'SAT-iMX8M22WWC-1010.0', 'manufacturer': 'Samsung', 'keepAliveLowPower': True, 'firmwareBuildDate': 'Oct 24 2022', 'model': 'HW-Q930B', 'nameIsFactoryDefault': True, 'keepAliveSendStatsAsBody': True, 'statusFlags': 4, 'deviceID': '80:8A:BD:87:72:A4', 'build': '47.0', 'PTPInfo': 'OpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018', 'protocolVersion': '1.1', 'sourceVersion': '366.0', 'features': 496155769145856, 'name': 'Samsung Soundbar Q930B'}
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /auth-setup HTTP/1.1\r\nUser-Agent: AirPlay/540.31\r\nContent-Type: application/octet-stream\r\nContent-Length: 33\r\nCSeq: 1\r\nDACP-ID: 78B8542A912876BE\r\nActive-Remote: 3974572014\r\nClient-Instance: 78B8542A912876BE\r\n\r\n\x01Y\x02\xed\xe9\rN\xf2\xbdL\xb6\x8ac0\x03\x82\x07\xa9M\xbdP\xd8\xaaF[]\x8c\x01*\x0c~\x1dN'
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 712\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\nCSeq: 1\r\n\r\n~\x03\xff\x84\xa6=l\xdb\x02\x99\x08\xf5|!\xed\xecPh_\xb3\xbed\xb9\x83dSU+\xb5"s\r\x00\x00\x02`0\x82\x02\\\x06\t*\x86H\x86\xf7\r\x01\x07\x02\xa0\x82\x02M0\x82\x02I\x02\x01\x011\x000\x0b\x06\t*\x86H\x86\xf7\r\x01\x07\x01\xa0\x82\x02/0\x82\x02+0\x82\x01\xd1\xa0\x03\x02\x01\x02\x02\x10JZ\xe3G\t\xf6\x80w\xf7F5#"0Y\x9d0\n\x06\x08*\x86H\xce=\x04\x03\x020\x81\x891\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1&0$\x06\x03U\x04\x0b\x13\x1dApple Certification Authority1=0;\x06\x03U\x04\x03\x134Apple Accessories Certification Authority - 000000020\x1e\x17\r211201053422Z\x17\r491231235959Z0m1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1\x1a0\x18\x06\x03U\x04\x0b\x13\x11Apple Accessories1-0+\x06\x03U\x04\x03\x14$IPA_4A5AE34709F68077F74635232230599D0Y0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07\x03B\x00\x04\xd92>\\\xe5\xddh\x99k\x9e7YF\x91w\xe50\x914@\xda\x8e5h\nd\x1c\x16\xe9\x86\x15\xde\xcd\x99\xf9nSn\x03jJa\x8c\x92\x85F$\x9b\x1d{\x95\x06\rv\xd6\x18\x99\xaf\x97,1\xb28&\xa360402\x06\t*\x86H\x86\xf7cd\x06$\x01\x01\xff\x04"\x04 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x100\n\x06\x08*\x86H\xce=\x04\x03\x02\x03H\x000E\x02 =i%\xc2\x81x\xd0\xcd\xfcz\x9e\xd5t\xf0\xbft\x19R\n\xdd\xa4\x86=\x1b\xb8\xb3R\xebNT\xf2{\x02!\x00\xfc\xd1dnw%M\x97\xbc\xc7\x93\xd9\x9cme\xce\xfe\xf6\xefH\x00 \x88\xb00s\x176\x80Mn\xd1\xa1\x001\x00\x00\x00\x00@\xc9M\xa7\xe3\xb7\xab\x95\x1b.u\xd5}.i\x83\xbd\xe1\x8aY9U\xfb\xbc\xdf\x14\x8d\xd8\x1c\xf0\xd3\xa4b8d\xc5(\x1b5(\x0b\xd2\xe70\x17+[^\xad\xea\x0e\xaf(\xc7\x98\n|!\xdfz;Z\xc9h1'
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '712', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0', 'CSeq': '1'}, body=b'~\x03\xff\x84\xa6=l\xdb\x02\x99\x08\xf5|!\xed\xecPh_\xb3\xbed\xb9\x83dSU+\xb5"s\r\x00\x00\x02`0\x82\x02\\\x06\t*\x86H\x86\xf7\r\x01\x07\x02\xa0\x82\x02M0\x82\x02I\x02\x01\x011\x000\x0b\x06\t*\x86H\x86\xf7\r\x01\x07\x01\xa0\x82\x02/0\x82\x02+0\x82\x01\xd1\xa0\x03\x02\x01\x02\x02\x10JZ\xe3G\t\xf6\x80w\xf7F5#"0Y\x9d0\n\x06\x08*\x86H\xce=\x04\x03\x020\x81\x891\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1&0$\x06\x03U\x04\x0b\x13\x1dApple Certification Authority1=0;\x06\x03U\x04\x03\x134Apple Accessories Certification Authority - 000000020\x1e\x17\r211201053422Z\x17\r491231235959Z0m1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1\x1a0\x18\x06\x03U\x04\x0b\x13\x11Apple Accessories1-0+\x06\x03U\x04\x03\x14$IPA_4A5AE34709F68077F74635232230599D0Y0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07\x03B\x00\x04\xd92>\\\xe5\xddh\x99k\x9e7YF\x91w\xe50\x914@\xda\x8e5h\nd\x1c\x16\xe9\x86\x15\xde\xcd\x99\xf9nSn\x03jJa\x8c\x92\x85F$\x9b\x1d{\x95\x06\rv\xd6\x18\x99\xaf\x97,1\xb28&\xa360402\x06\t*\x86H\x86\xf7cd\x06$\x01\x01\xff\x04"\x04 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x100\n\x06\x08*\x86H\xce=\x04\x03\x02\x03H\x000E\x02 =i%\xc2\x81x\xd0\xcd\xfcz\x9e\xd5t\xf0\xbft\x19R\n\xdd\xa4\x86=\x1b\xb8\xb3R\xebNT\xf2{\x02!\x00\xfc\xd1dnw%M\x97\xbc\xc7\x93\xd9\x9cme\xce\xfe\xf6\xefH\x00 \x88\xb00s\x176\x80Mn\xd1\xa1\x001\x00\x00\x00\x00@\xc9M\xa7\xe3\xb7\xab\x95\x1b.u\xd5}.i\x83\xbd\xe1\x8aY9U\xfb\xbc\xdf\x14\x8d\xd8\x1c\xf0\xd3\xa4b8d\xc5(\x1b5(\x0b\xd2\xe70\x17+[^\xad\xea\x0e\xaf(\xc7\x98\n|!\xdfz;Z\xc9h1'):
2023-07-13 18:52:16 DEBUG [pyatv.protocols.airplay.auth]: Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.Transient
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-pin-start HTTP/1.1\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n'
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nServer: AirTunes/366.0\r\n\r\n'
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Server': 'AirTunes/366.0'}, body=''):
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 9\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x00\x01\x00\x06\x01\x01\x13\x01\x10'
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 6\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\n\r\n\x07\x01\x06\x06\x01\x02'
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '6', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0'}, body=b'\x07\x01\x06\x06\x01\x02'):
2023-07-13 18:52:16 DEBUG [pyatv.core.facade]: Release (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-13 18:52:16 DEBUG [pyatv.scripts.atvremote]: Waiting for 0 remaining tasks
2023-07-13 18:52:16 DEBUG [pyatv.protocols.raop.stream_client]: Control connection lost (None)
2023-07-13 18:52:16 DEBUG [pyatv.support.http]: Connection closed
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 762, in _run_application
    return await cli_handler(loop)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 535, in cli_handler
    return await _handle_commands(args, config, loop)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 650, in _handle_commands
    ret = await _handle_device_command(args, cmd, atv, loop)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 700, in _handle_device_command
    return await _exec_command(atv.stream, cmd, True, *cmd_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 729, in _exec_command
    value = await tmp(*args)
            ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/core/facade.py", line 370, in stream_file
    await self.relay("stream_file")(
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/__init__.py", line 353, in stream_file
    await client.initialize(self.core.service.properties)
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/stream_client.py", line 375, in initialize
    await self._protocol.setup(self.timing_client.port, self.control_client.port)
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/protocols/airplayv2.py", line 38, in setup
    verifier = await verify_connection(
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/airplay/auth/__init__.py", line 104, in verify_connection
    has_encryption_keys = await verifier.verify_credentials()
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/airplay/auth/hap_transient.py", line 66, in verify_credentials
    atv_salt = pairing_data[hap_tlv8.TlvValue.Salt]
               ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: <TlvValue.Salt: 2>

>>> An error occurred, full stack trace above
postlund commented 1 year ago

Interesting, it seems to respond with error "unavailable": maybe transient pairing is not needed then. I pushed another update applying no encryption, can you try that as well?

fonix232 commented 1 year ago

Okay, never mind, a whole system reboot (both atvremote host and soundbar) bypassed the salt error, now we're getting somewhere.... Playback succeeds on the RTSP server side, but there's absolutely no audio playing on the device (it does indicate playback on the display, but there's no actual sound):

root@fenrir:~# atvremote --id 808ABD8772A4 --debug stream_file=https://download.samplelib.com/mp3/sample-15s.mp3
2023-07-13 18:58:25 DEBUG [pyatv.scripts]: Running with pyatv 0.13.2
2023-07-13 18:58:25 DEBUG [pyatv.support.net]: Binding on *:5353
2023-07-13 18:58:25 DEBUG [pyatv.support.net]: Binding on 127.0.0.1:0
2023-07-13 18:58:25 DEBUG [pyatv.support.net]: Binding on 10.0.0.90:0
2023-07-13 18:58:26 DEBUG [pyatv.core.scan]: Auto-discovered Samsung Soundbar Q930B at 10.0.1.7:37373 via Protocol.AirPlay ({'acl': '0', 'deviceid': '80:8A:BD:87:72:A4', 'features': '0x445F8A00,0x1C340', 'rsf': '0x0', 'fv': 'p20.SAT-iMX8M22WWC-1010.0', 'flags': '0x4', 'model': 'HW-Q930B', 'manufacturer': 'Samsung', 'serialnumber': 'N/A', 'protovers': '1.1', 'srcvers': '366.0', 'pi': '80:8A:BD:87:72:A4', 'gid': '80:8A:BD:87:72:A4', 'gcgl': '0', 'pk': '06f6085cd329a68441b711508c672598d7a3ae43a55701d327e02f0def8bb7a5'})
2023-07-13 18:58:26 DEBUG [pyatv.core.scan]: Auto-discovered 808ABD8772A4@Samsung Soundbar Q930B at 10.0.1.7:37373 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0,4', 'ft': '0x445F8A00,0x1C340', 'fv': 'p20.SAT-iMX8M22WWC-1010.0', 'md': '0,1,2', 'am': 'HW-Q930B', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': '06f6085cd329a68441b711508c672598d7a3ae43a55701d327e02f0def8bb7a5'})
2023-07-13 18:58:26 INFO [pyatv.scripts.atvremote]: Auto-discovered Samsung Soundbar Q930B at 10.0.1.7
2023-07-13 18:58:26 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay
2023-07-13 18:58:26 DEBUG [pyatv.protocols.airplay]: Remote control not supported by device
2023-07-13 18:58:26 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP
2023-07-13 18:58:26 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay
2023-07-13 18:58:26 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay
2023-07-13 18:58:26 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP
2023-07-13 18:58:26 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP
2023-07-13 18:58:26 DEBUG [pyatv.core.facade]: Power management not supported by any protocols
2023-07-13 18:58:26 DEBUG [pyatv.core.facade]: Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-13 18:58:26 DEBUG [pyatv.support.http]: Connected to 10.0.1.7
2023-07-13 18:58:26 DEBUG [pyatv.protocols.raop]: Using AirPlay version AirPlayMajorVersion.AirPlayV2
2023-07-13 18:58:26 DEBUG [pyatv.protocols.raop.stream_client]: Initializing RTSP with encryption=9, metadata=7
2023-07-13 18:58:26 DEBUG [pyatv.protocols.raop.stream_client]: Update play settings to 44100/2/16bit
2023-07-13 18:58:26 DEBUG [pyatv.protocols.raop.stream_client]: Local ports: control=39444, timing=45325
2023-07-13 18:58:26 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'GET /info RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 0\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:26 DEBUG [pyatv.support.http]: Received: b"RTSP/1.0 200 OK\r\nContent-Length: 564\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x11\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x16\x16\x19\x13\x1a\x1b\x1c\x1d\x1e\x1fSsdkRpi_\x10\x10firmwareRevision\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.0.7_\x10\x1180:8A:BD:87:72:A4_\x10\x15SAT-iMX8M22WWC-1010.0WSamsung\t[Oct 24 2022XHW-Q930B\x10\x04T47.0_\x10AOpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018S1.1U366.0\x13\x00\x01\xc3@D_\x8a\x00_\x10\x16Samsung Soundbar Q930B\x00\x08\x00-\x001\x004\x00G\x00T\x00h\x00|\x00\x82\x00\x99\x00\xb4\x00\xc0\x00\xc9\x00\xcf\x00\xd7\x00\xe9\x00\xf7\x01\x00\x01\x05\x01\x13\x01'\x01?\x01G\x01H\x01T\x01]\x01_\x01d\x01\xa8\x01\xac\x01\xb2\x01\xbb\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xd4"
2023-07-13 18:58:26 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '564', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '0'}, body=b"bplist00\xdf\x10\x11\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x16\x16\x19\x13\x1a\x1b\x1c\x1d\x1e\x1fSsdkRpi_\x10\x10firmwareRevision\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.0.7_\x10\x1180:8A:BD:87:72:A4_\x10\x15SAT-iMX8M22WWC-1010.0WSamsung\t[Oct 24 2022XHW-Q930B\x10\x04T47.0_\x10AOpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018S1.1U366.0\x13\x00\x01\xc3@D_\x8a\x00_\x10\x16Samsung Soundbar Q930B\x00\x08\x00-\x001\x004\x00G\x00T\x00h\x00|\x00\x82\x00\x99\x00\xb4\x00\xc0\x00\xc9\x00\xcf\x00\xd7\x00\xe9\x00\xf7\x01\x00\x01\x05\x01\x13\x01'\x01?\x01G\x01H\x01T\x01]\x01_\x01d\x01\xa8\x01\xac\x01\xb2\x01\xbb\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xd4"):
2023-07-13 18:58:26 DEBUG [pyatv.protocols.raop.stream_client]: Updated info parameters to: {'sdk': 'AirPlay;2.0.7', 'pi': '80:8A:BD:87:72:A4', 'firmwareRevision': 'SAT-iMX8M22WWC-1010.0', 'manufacturer': 'Samsung', 'keepAliveLowPower': True, 'firmwareBuildDate': 'Oct 24 2022', 'model': 'HW-Q930B', 'nameIsFactoryDefault': True, 'keepAliveSendStatsAsBody': True, 'statusFlags': 4, 'deviceID': '80:8A:BD:87:72:A4', 'build': '47.0', 'PTPInfo': 'OpenAVNU ArtAndLogic-aPTP-changes Commit: 17f0335 on Sep 22, 2018', 'protocolVersion': '1.1', 'sourceVersion': '366.0', 'features': 496155769145856, 'name': 'Samsung Soundbar Q930B'}
2023-07-13 18:58:26 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /auth-setup HTTP/1.1\r\nUser-Agent: AirPlay/540.31\r\nContent-Type: application/octet-stream\r\nContent-Length: 33\r\nCSeq: 1\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n\x01Y\x02\xed\xe9\rN\xf2\xbdL\xb6\x8ac0\x03\x82\x07\xa9M\xbdP\xd8\xaaF[]\x8c\x01*\x0c~\x1dN'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 712\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\nCSeq: 1\r\n\r\n\xcf@\xeb\xd1\xfe\xae\xd9\xcf\xb8\xae\xbb\xa5iRGH3\x18N\xb9e\'\xd3%\x9f\xd2\x83\xfa\xe3\xfe\x0ex\x00\x00\x02`0\x82\x02\\\x06\t*\x86H\x86\xf7\r\x01\x07\x02\xa0\x82\x02M0\x82\x02I\x02\x01\x011\x000\x0b\x06\t*\x86H\x86\xf7\r\x01\x07\x01\xa0\x82\x02/0\x82\x02+0\x82\x01\xd1\xa0\x03\x02\x01\x02\x02\x10JZ\xe3G\t\xf6\x80w\xf7F5#"0Y\x9d0\n\x06\x08*\x86H\xce=\x04\x03\x020\x81\x891\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1&0$\x06\x03U\x04\x0b\x13\x1dApple Certification Authority1=0;\x06\x03U\x04\x03\x134Apple Accessories Certification Authority - 000000020\x1e\x17\r211201053422Z\x17\r491231235959Z0m1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1\x1a0\x18\x06\x03U\x04\x0b\x13\x11Apple Accessories1-0+\x06\x03U\x04\x03\x14$IPA_4A5AE34709F68077F74635232230599D0Y0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07\x03B\x00\x04\xd92>\\\xe5\xddh\x99k\x9e7YF\x91w\xe50\x914@\xda\x8e5h\nd\x1c\x16\xe9\x86\x15\xde\xcd\x99\xf9nSn\x03jJa\x8c\x92\x85F$\x9b\x1d{\x95\x06\rv\xd6\x18\x99\xaf\x97,1\xb28&\xa360402\x06\t*\x86H\x86\xf7cd\x06$\x01\x01\xff\x04"\x04 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x100\n\x06\x08*\x86H\xce=\x04\x03\x02\x03H\x000E\x02 =i%\xc2\x81x\xd0\xcd\xfcz\x9e\xd5t\xf0\xbft\x19R\n\xdd\xa4\x86=\x1b\xb8\xb3R\xebNT\xf2{\x02!\x00\xfc\xd1dnw%M\x97\xbc\xc7\x93\xd9\x9cme\xce\xfe\xf6\xefH\x00 \x88\xb00s\x176\x80Mn\xd1\xa1\x001\x00\x00\x00\x00@\x05\x95\xfb\xe8\xba~\xbe\x0b\xcd\x1dAg\x95\xc3\x8b\xe8\x86\xcfh\xa1\xbb[1\x8aI\xc6\x0e:\x07\xcd\x13R\xceFQ\x98[|p=\x85[4B\xe8\x1fl\xf2\x18\x0c\xd1\xdf\xc3\'`\x1b\x84\xcb\x83\xb4 \x8bQ?'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '712', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0', 'CSeq': '1'}, body=b'\xcf@\xeb\xd1\xfe\xae\xd9\xcf\xb8\xae\xbb\xa5iRGH3\x18N\xb9e\'\xd3%\x9f\xd2\x83\xfa\xe3\xfe\x0ex\x00\x00\x02`0\x82\x02\\\x06\t*\x86H\x86\xf7\r\x01\x07\x02\xa0\x82\x02M0\x82\x02I\x02\x01\x011\x000\x0b\x06\t*\x86H\x86\xf7\r\x01\x07\x01\xa0\x82\x02/0\x82\x02+0\x82\x01\xd1\xa0\x03\x02\x01\x02\x02\x10JZ\xe3G\t\xf6\x80w\xf7F5#"0Y\x9d0\n\x06\x08*\x86H\xce=\x04\x03\x020\x81\x891\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1&0$\x06\x03U\x04\x0b\x13\x1dApple Certification Authority1=0;\x06\x03U\x04\x03\x134Apple Accessories Certification Authority - 000000020\x1e\x17\r211201053422Z\x17\r491231235959Z0m1\x0b0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1\x1a0\x18\x06\x03U\x04\x0b\x13\x11Apple Accessories1-0+\x06\x03U\x04\x03\x14$IPA_4A5AE34709F68077F74635232230599D0Y0\x13\x06\x07*\x86H\xce=\x02\x01\x06\x08*\x86H\xce=\x03\x01\x07\x03B\x00\x04\xd92>\\\xe5\xddh\x99k\x9e7YF\x91w\xe50\x914@\xda\x8e5h\nd\x1c\x16\xe9\x86\x15\xde\xcd\x99\xf9nSn\x03jJa\x8c\x92\x85F$\x9b\x1d{\x95\x06\rv\xd6\x18\x99\xaf\x97,1\xb28&\xa360402\x06\t*\x86H\x86\xf7cd\x06$\x01\x01\xff\x04"\x04 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x100\n\x06\x08*\x86H\xce=\x04\x03\x02\x03H\x000E\x02 =i%\xc2\x81x\xd0\xcd\xfcz\x9e\xd5t\xf0\xbft\x19R\n\xdd\xa4\x86=\x1b\xb8\xb3R\xebNT\xf2{\x02!\x00\xfc\xd1dnw%M\x97\xbc\xc7\x93\xd9\x9cme\xce\xfe\xf6\xefH\x00 \x88\xb00s\x176\x80Mn\xd1\xa1\x001\x00\x00\x00\x00@\x05\x95\xfb\xe8\xba~\xbe\x0b\xcd\x1dAg\x95\xc3\x8b\xe8\x86\xcfh\xa1\xbb[1\x8aI\xc6\x0e:\x07\xcd\x13R\xceFQ\x98[|p=\x85[4B\xe8\x1fl\xf2\x18\x0c\xd1\xdf\xc3\'`\x1b\x84\xcb\x83\xb4 \x8bQ?'):
2023-07-13 18:58:27 DEBUG [pyatv.protocols.airplay.auth]: Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.Transient
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-pin-start HTTP/1.1\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nServer: AirTunes/366.0\r\n\r\n'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Server': 'AirTunes/366.0'}, body=''):
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 9\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x00\x01\x00\x06\x01\x01\x13\x01\x10'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 409\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\n\r\n\x06\x01\x02\x02\x10\x16bv\x98\xb30\xf8\xe1U\xa1\x08\xba\xf8\xf0\xe7\x92\x03\xffE\xf6\x92\xc8\xcdg\xf6\x98t\xff9\t\x9f\xe5\xb0\x92\x12S\xa3{p\xd6^03\xcc\xfb\x8b\x80A\xae\xed\xc2\x92+\xf1\x93\x9b1Q$\x8cH\x02\xf8\xde\xd5\x19LP\xc4\x82Wc\x07\xa4/Z\xfa\xf07\xdf\x88\x8d\xdc0\xc8\x1epF5\x1c~d\xe0x\xef\x08a\x80\xce\xea\x1c*\xc4\xbe`\x9e\x14E\nfQ\x95#g\xd8s\xbb\x05\xb0RQ\x1c^\xdct\x1f\x82\xea\xae\x14\x1e\xcb\x9d\xdd\x1a\xc1\xbc\x99`4\x9d\t\x83x\xb2E\x16\xe7\xad\x06/%\x81\x921w\xcb\x82\xfb\x96\xc1\x95\xc9M^V\x0bq\x9f\xa1\x0f\x04X\xfd|8\xb2\x9dmh(\x142\x06\x84G\x81`\xcf:\xff\xab\xc6\x95\x9cN\x027\xfa#9o\x9e\x00\xc3\xd7\x0c\xe1\x8f\x81\x17\xcf\x1b\x00\xfb\'ZRG\x88\xbfH\xdb\xe7\xc5\xdfs \x81[\xe2q3\xa4A\x06\xc8,\xbeb\x04N\tKgg\xe5\xaf\x17\x0eM\x1c\xba\xdb4\xdc\x13\x9c\xfeN\xde\x1e\xbc\xfa\x0c\x82\xf3\xd6Ln0LA\x03\x81s\xc0<\x16=\xf6^\xd8\x1et*h\x15K\xca\x18\x0e\xb8. \xc7\xc8\xa89\x96\xc6R\xbe\xe89`\x01C36\xd9\x9dm[\x84\x8e\x14\'\xdb\xa5\x91\xbe6\xc9N\xde\xc4?\xf8=[\xbe&\xa5|\x8d\x9d\x07\xc9\x12\xf3\x19h\n&F\x95\xe7\x01\xdc\xd4\xfdB\x91C\xf3\x84G\x82\x19\x15\t\xaa@ \xab1\xc7:\xcbC\xcboosW\xef\x08\x00\x16+C\xbf\xec\xbd)\n/\x1b*\xc5\xf6.\x8a\xa1\x1b\x8d"\x1a\xd5\xec\xfa\x05\x85'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '409', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0'}, body=b'\x06\x01\x02\x02\x10\x16bv\x98\xb30\xf8\xe1U\xa1\x08\xba\xf8\xf0\xe7\x92\x03\xffE\xf6\x92\xc8\xcdg\xf6\x98t\xff9\t\x9f\xe5\xb0\x92\x12S\xa3{p\xd6^03\xcc\xfb\x8b\x80A\xae\xed\xc2\x92+\xf1\x93\x9b1Q$\x8cH\x02\xf8\xde\xd5\x19LP\xc4\x82Wc\x07\xa4/Z\xfa\xf07\xdf\x88\x8d\xdc0\xc8\x1epF5\x1c~d\xe0x\xef\x08a\x80\xce\xea\x1c*\xc4\xbe`\x9e\x14E\nfQ\x95#g\xd8s\xbb\x05\xb0RQ\x1c^\xdct\x1f\x82\xea\xae\x14\x1e\xcb\x9d\xdd\x1a\xc1\xbc\x99`4\x9d\t\x83x\xb2E\x16\xe7\xad\x06/%\x81\x921w\xcb\x82\xfb\x96\xc1\x95\xc9M^V\x0bq\x9f\xa1\x0f\x04X\xfd|8\xb2\x9dmh(\x142\x06\x84G\x81`\xcf:\xff\xab\xc6\x95\x9cN\x027\xfa#9o\x9e\x00\xc3\xd7\x0c\xe1\x8f\x81\x17\xcf\x1b\x00\xfb\'ZRG\x88\xbfH\xdb\xe7\xc5\xdfs \x81[\xe2q3\xa4A\x06\xc8,\xbeb\x04N\tKgg\xe5\xaf\x17\x0eM\x1c\xba\xdb4\xdc\x13\x9c\xfeN\xde\x1e\xbc\xfa\x0c\x82\xf3\xd6Ln0LA\x03\x81s\xc0<\x16=\xf6^\xd8\x1et*h\x15K\xca\x18\x0e\xb8. \xc7\xc8\xa89\x96\xc6R\xbe\xe89`\x01C36\xd9\x9dm[\x84\x8e\x14\'\xdb\xa5\x91\xbe6\xc9N\xde\xc4?\xf8=[\xbe&\xa5|\x8d\x9d\x07\xc9\x12\xf3\x19h\n&F\x95\xe7\x01\xdc\xd4\xfdB\x91C\xf3\x84G\x82\x19\x15\t\xaa@ \xab1\xc7:\xcbC\xcboosW\xef\x08\x00\x16+C\xbf\xec\xbd)\n/\x1b*\xc5\xf6.\x8a\xa1\x1b\x8d"\x1a\xd5\xec\xfa\x05\x85'):
2023-07-13 18:58:27 DEBUG [pyatv.auth.hap_srp]: Client (Proof=c965ce31912c7b0a333f17082c410b1313aa98670f287d11205556987def35871368bc5702f281b81fec264065c40d0fc2542d88cfeb7d14bf6d675103279bdd, Public=6b4dff5bfe8f5cc8dc5419f5973777bb8c6a59ea24d77b83a523c1bf49f1f282178dcb7332c593a7b5842726cba5e3370cd9dd3e56015941abc8b8abe13240a57bf23b3eba93ee443d00f8bba3643d6cae18cbc550bbf666199f7a97d5adaa3e93229073a179829ee3c9a2c52cad753df6791793abdc171f705089d54e508da79533b16257fde9a940ff6b2ad261a6142f517f91c21b836405ad4bf041fedcedc2f886eed8137af899735372c8b2c0b195c21dde935caa70d112888ecae59ae43c40da96370ffc15d5cab8a38366a5cb6ef7f54d4867faddd3f011119a34e27c1fd8385c440f4adbfa23fd6052050bf17d0c0a34a681417e8c76994ab0b1b...)
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 457\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x06\x01\x03\x03\xffkM\xff[\xfe\x8f\\\xc8\xdcT\x19\xf5\x977w\xbb\x8cjY\xea$\xd7{\x83\xa5#\xc1\xbfI\xf1\xf2\x82\x17\x8d\xcbs2\xc5\x93\xa7\xb5\x84\'&\xcb\xa5\xe37\x0c\xd9\xdd>V\x01YA\xab\xc8\xb8\xab\xe12@\xa5{\xf2;>\xba\x93\xeeD=\x00\xf8\xbb\xa3d=l\xae\x18\xcb\xc5P\xbb\xf6f\x19\x9fz\x97\xd5\xad\xaa>\x93"\x90s\xa1y\x82\x9e\xe3\xc9\xa2\xc5,\xadu=\xf6y\x17\x93\xab\xdc\x17\x1fpP\x89\xd5NP\x8d\xa7\x953\xb1bW\xfd\xe9\xa9@\xffk*\xd2a\xa6\x14/Q\x7f\x91\xc2\x1b\x83d\x05\xadK\xf0A\xfe\xdc\xed\xc2\xf8\x86\xee\xd8\x13z\xf8\x99sSr\xc8\xb2\xc0\xb1\x95\xc2\x1d\xde\x93\\\xaap\xd1\x12\x88\x8e\xca\xe5\x9a\xe4<@\xda\x967\x0f\xfc\x15\xd5\xca\xb8\xa3\x83f\xa5\xcbn\xf7\xf5MHg\xfa\xdd\xd3\xf0\x11\x11\x9a4\xe2|\x1f\xd88\\D\x0fJ\xdb\xfa#\xfd`R\x05\x0b\xf1}\x0c\n4\xa6\x81A~\x8cv\x99J\xb0\xb1\xb8\x03\x81\xda\xf5(\x82\xa1\x03.\xb9\xad\xf4\x02C +\x86\x7fA\r\xc3\xf3"\xbb\xcc\x1a*\x96\xf5\xaa>A\xdb\x94\x9b\x11|G\x97\xe1\xfd\xe5\xc9\x177\x19d6 \xd6\x1b\x95\x8c\xde\xf2\x1cm=\x0b\xe5\x8cV\xb7\xfd\x88\xdf\xd5\x05\x05\xf54\xa8g\t\x97\x06D\xba\xba\xf2*U}fDIr$\xcf\x1b\xa0O\xe7f\tlSAC2ce\x9e\xa53\xf0\nD\xad\xc6\x9f\xd8\xc2\xe9p\xb0\xe8\x91\x7f\xd9\xde\xcfu\xe8\xa7sD\x17w\xf5\xdb\x04@\xc9e\xce1\x91,{\n3?\x17\x08,A\x0b\x13\x13\xaa\x98g\x0f(}\x11 UV\x98}\xef5\x87\x13h\xbcW\x02\xf2\x81\xb8\x1f\xec&@e\xc4\r\x0f\xc2T-\x88\xcf\xeb}\x14\xbfmgQ\x03\'\x9b\xdd'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b"HTTP/1.1 200 OK\r\nContent-Length: 69\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\n\r\n\x06\x01\x04\x04@A\x0cm\xa6Qr\xf9\xae\xb5(\x17\xf84'\xea\x19\x91]G&\xba\xd5\xb8Z5s\x08\xeb\x1dkn7\xe9\xd0LN\xa06)\x029t(\x0e\xfc\xcf\xe9F\xf1\xe2G\x90b}\xb1\x98\x1a\xf2\xddn\xb4.\xb5\xea"
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '69', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0'}, body=b"\x06\x01\x04\x04@A\x0cm\xa6Qr\xf9\xae\xb5(\x17\xf84'\xea\x19\x91]G&\xba\xd5\xb8Z5s\x08\xeb\x1dkn7\xe9\xd0LN\xa06)\x029t(\x0e\xfc\xcf\xe9F\xf1\xe2G\x90b}\xb1\x98\x1a\xf2\xddn\xb4.\xb5\xea"):
2023-07-13 18:58:27 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=5d69ca828fa656481ad65e7087e8a225cfe70b6219ba7079b79df5c90fbc0dc4, Output=5ee7709f167c2aae8351cf848c6d0392f47181f4eae5521e45e083a78e2d7841)
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://10.0.0.90/3047009209 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nContent-Length: 455\r\nCSeq: 2\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xdf\x10\x0f\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x10\x13\x14\x15\x16\x17\x11\x18\x19\x11\x1a\x1bXdeviceID_\x10\x18groupContainsGroupLeader_\x10\x14isMultiSelectAirPlayZmacAddressUmodelTname^osBuildVersionVosNameYosVersion_\x10\x13senderSupportsRelay[sessionUUID]sourceVersion_\x10\x16statsCollectionEnabledZtimingPort^timingProtocol_\x10\x11AA:BB:CC:DD:EE:FF\x08\tZiPhone14,3UpyatvU20F66YiPhone OST16.5_\x10$0173334B-88F2-4453-A9BA-72DCCF9763A3W690.7.1\x11\xb1\rSNTP\x00\x08\x00)\x002\x00M\x00d\x00o\x00u\x00z\x00\x89\x00\x90\x00\x9a\x00\xb0\x00\xbc\x00\xca\x00\xe3\x00\xee\x00\xfd\x01\x11\x01\x12\x01\x13\x01\x1e\x01$\x01*\x014\x019\x01`\x01h\x01k\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01o'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 77\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 2\r\n\r\nbplist00\xd2\x01\x02\x03\x04YeventPortZtimingPort\x11\xb4\xdf\x11\x85N\x08\r\x17"%\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00('
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '77', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '2'}, body=b'bplist00\xd2\x01\x02\x03\x04YeventPortZtimingPort\x11\xb4\xdf\x11\x85N\x08\r\x17"%\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00('):
2023-07-13 18:58:27 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Setup response body: {'eventPort': 46303, 'timingPort': 34126}
2023-07-13 18:58:27 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=698aa849dcb0a8aae17399fe7266141811e6926c08f25c5205f3bd337da5552a, Output=03e8453441226df8d76ec098a92ade88aed6e6483d293b5463e871eabba93346)
2023-07-13 18:58:27 DEBUG [pyatv.auth.hap_channel]: Connected to 10.0.1.7:46303
2023-07-13 18:58:27 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=03e8453441226df8d76ec098a92ade88aed6e6483d293b5463e871eabba93346, Output=698aa849dcb0a8aae17399fe7266141811e6926c08f25c5205f3bd337da5552a)
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://10.0.0.90/3047009209 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nContent-Length: 316\r\nCSeq: 3\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xdd\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d[audioFormatYaudioMode[controlPortRctWisMediaZlatencyMaxZlatencyMinSshkSspfRsr_\x10\x12streamConnectionID_\x10\x17supportsDynamicStreamIDTtype\x12\x00\x04\x00\x00Wdefault\x11\x9a\x14\x10\x02\t\x12\x00\x01X\x88\x11+\x11O\x10 i\x8a\xa8I\xdc\xb0\xa8\xaa\xe1s\x99\xferf\x14\x18\x11\xe6\x92l\x08\xf2\\R\x05\xf3\xbd3}\xa5U*\x11\x01`\x11\xacD\x12\xb5\x9d\xab\xb9\x08\x10`\x08\x0b\x13\x150<FRU]hsw{~\x93\xad\xb2\xb7\xbf\xc2\xc4\xc5\xca\xcd\xf0\xf3\xf6\xfb\xfc\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 104\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 3\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXdataPort[controlPort\x10`\x11\x80\xa1\x11\xa8\x82\x08\x0b\x13\x15\x1c!*68;\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '104', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '3'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXdataPort[controlPort\x10`\x11\x80\xa1\x11\xa8\x82\x08\x0b\x13\x15\x1c!*68;\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>'):
2023-07-13 18:58:27 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Setup stream response: {'streams': [{'type': 96, 'dataPort': 32929, 'controlPort': 43138}]}
2023-07-13 18:58:27 DEBUG [urllib3.connectionpool]: Starting new HTTPS connection (1): download.samplelib.com:443
2023-07-13 18:58:27 DEBUG [urllib3.connectionpool]: https://download.samplelib.com:443 "GET /mp3/sample-15s.mp3 HTTP/1.1" 200 307453
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://10.0.0.90/3047009209 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nContent-Type: text/parameters\r\nContent-Length: 13\r\nCSeq: 4\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\nvolume: -20.1'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 4\r\n\r\n'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '4'}, body=''):
2023-07-13 18:58:27 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.Volume to <bound method FacadeAudio._volume_changed of <pyatv.core.facade.FacadeAudio object at 0x7fcc81e56810>>
2023-07-13 18:58:27 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.Volume to <bound method RaopAudio._volume_changed of <pyatv.protocols.raop.RaopAudio object at 0x7fcc81e55b50>>
2023-07-13 18:58:27 DEBUG [pyatv.protocols.raop]: Protocol RAOP changed volume to 33.000000
2023-07-13 18:58:27 DEBUG [pyatv.protocols.raop.stream_client]: Starting periodic sync task
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://10.0.0.90/3047009209 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nContent-Type: text/parameters\r\nContent-Length: 28\r\nCSeq: 5\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\nprogress: 66150/66150/110250'
2023-07-13 18:58:27 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=4268425216, RtpTime=66150, Sec=2209191559, SyncPacket=90d400070000000083ad9687fe6b000000010266)
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 5\r\n\r\n'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '5'}, body=''):
2023-07-13 18:58:27 DEBUG [pyatv.protocols.raop.stream_client]: Playing with metadata: MediaMetadata(title=None, artist=None, album=None, artwork=None, duration=0.1044375)
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://10.0.0.90/3047009209 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nContent-Type: application/x-dmap-tagged\r\nContent-Length: 8\r\nCSeq: 6\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\nSession: 0\r\nRTP-Info: seq=5772;rtptime=66150\r\n\r\nmlit\x00\x00\x00\x00'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 6\r\n\r\n'
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '6'}, body=''):
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'RECORD rtsp://10.0.0.90/3047009209 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 7\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:27 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Starting feedback task
2023-07-13 18:58:27 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 8\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:28 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 7\r\n\r\nRTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 8\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:28 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '7'}, body=''):
2023-07-13 18:58:28 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'FLUSH rtsp://10.0.0.90/3047009209 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 9\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\nRange: npt=0-\r\nSession: 0\r\nRTP-Info: seq=5772;rtptime=66150\r\n\r\n'
2023-07-13 18:58:28 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '8'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:28 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nRTP-Info: rtptime=0\r\nServer: AirTunes/366.0\r\nCSeq: 9\r\n\r\n'
2023-07-13 18:58:28 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'RTP-Info': 'rtptime=0', 'Server': 'AirTunes/366.0', 'CSeq': '9'}, body=''):
2023-07-13 18:58:28 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3710189568, RtpTime=104518, Sec=2209191560, SyncPacket=80d40007000095e083ad9688dd25000000019846)
2023-07-13 18:58:29 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 0.998185s (current frames: 44352, expected: 44020)
2023-07-13 18:58:29 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3700490240, RtpTime=148518, Sec=2209191561, SyncPacket=80d40007000141c083ad9689dc91000000024426)
2023-07-13 18:58:30 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 10\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:30 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 10\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:30 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '10'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:30 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006112s (current frames: 88704, expected: 88389)
2023-07-13 18:58:30 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3690725376, RtpTime=192518, Sec=2209191562, SyncPacket=80d400070001eda083ad968adbfc00000002f006)
2023-07-13 18:58:31 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005906s (current frames: 133056, expected: 132750)
2023-07-13 18:58:31 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3715235840, RtpTime=236870, Sec=2209191563, SyncPacket=80d4000700029ae083ad968bdd72000000039d46)
2023-07-13 18:58:32 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 11\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:32 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 11\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:32 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '11'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:32 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005010s (current frames: 177408, expected: 177071)
2023-07-13 18:58:32 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3705536512, RtpTime=280870, Sec=2209191564, SyncPacket=80d40007000346c083ad968cdcde000000044926)
2023-07-13 18:58:33 DEBUG [pyatv.protocols.raop.stream_client]: RetransmitPacket(proto=128, type=213, seqno=1, lost_seqno=6369, lost_packets=1) from ('10.0.1.7', 43138)
2023-07-13 18:58:33 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006067s (current frames: 221760, expected: 221438)
2023-07-13 18:58:33 DEBUG [pyatv.protocols.raop.stream_client]: RetransmitPacket(proto=128, type=213, seqno=1, lost_seqno=6447, lost_packets=1) from ('10.0.1.7', 43138)
2023-07-13 18:58:33 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3730046976, RtpTime=325222, Sec=2209191565, SyncPacket=80d400070003f40083ad968dde5400000004f666)
2023-07-13 18:58:34 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 12\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:34 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 12\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:34 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '12'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:34 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006217s (current frames: 266112, expected: 265812)
2023-07-13 18:58:34 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3720347648, RtpTime=369222, Sec=2209191566, SyncPacket=80d4000700049fe083ad968eddc000000005a246)
2023-07-13 18:58:35 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.004973s (current frames: 310464, expected: 310132)
2023-07-13 18:58:35 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3710582784, RtpTime=413222, Sec=2209191567, SyncPacket=80d4000700054bc083ad968fdd2b000000064e26)
2023-07-13 18:58:36 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 13\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:36 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 13\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:36 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '13'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:36 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005635s (current frames: 354816, expected: 354480)
2023-07-13 18:58:36 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3735158784, RtpTime=457574, Sec=2209191568, SyncPacket=80d400070005f90083ad9690dea200000006fb66)
2023-07-13 18:58:37 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006406s (current frames: 399168, expected: 398863)
2023-07-13 18:58:37 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3725393920, RtpTime=501574, Sec=2209191569, SyncPacket=80d400070006a4e083ad9691de0d00000007a746)
2023-07-13 18:58:38 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 14\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:38 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 14\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:38 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '14'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:38 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005196s (current frames: 443520, expected: 443192)
2023-07-13 18:58:38 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3749904384, RtpTime=545926, Sec=2209191570, SyncPacket=80d400070007522083ad9692df83000000085486)
2023-07-13 18:58:39 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005587s (current frames: 487872, expected: 487538)
2023-07-13 18:58:39 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3740205056, RtpTime=589926, Sec=2209191571, SyncPacket=80d400070007fe0083ad9693deef000000090066)
2023-07-13 18:58:40 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 15\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:40 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 15\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:40 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '15'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:40 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006061s (current frames: 532224, expected: 531905)
2023-07-13 18:58:40 DEBUG [pyatv.protocols.raop.audio_source]: HTTP streaming ended
2023-07-13 18:58:40 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3730440192, RtpTime=633926, Sec=2209191572, SyncPacket=80d400070008a9e083ad9694de5a00000009ac46)
2023-07-13 18:58:41 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005898s (current frames: 576576, expected: 576265)
2023-07-13 18:58:41 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3755016192, RtpTime=678278, Sec=2209191573, SyncPacket=80d400070009572083ad9695dfd10000000a5986)
2023-07-13 18:58:42 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 16\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:42 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 16\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:42 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '16'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:42 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005050s (current frames: 620928, expected: 620588)
2023-07-13 18:58:42 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3745251328, RtpTime=722278, Sec=2209191574, SyncPacket=80d40007000a030083ad9696df3c0000000b0566)
2023-07-13 18:58:43 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006707s (current frames: 665280, expected: 664984)
2023-07-13 18:58:43 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3769827328, RtpTime=766630, Sec=2209191575, SyncPacket=80d40007000ab04083ad9697e0b30000000bb2a6)
2023-07-13 18:58:44 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 17\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:44 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 17\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:44 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '17'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:44 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005147s (current frames: 709632, expected: 709311)
2023-07-13 18:58:44 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3760062464, RtpTime=810630, Sec=2209191576, SyncPacket=80d40007000b5c2083ad9698e01e0000000c5e86)
2023-07-13 18:58:45 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006347s (current frames: 753984, expected: 753691)
2023-07-13 18:58:45 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3750297600, RtpTime=854630, Sec=2209191577, SyncPacket=80d40007000c080083ad9699df890000000d0a66)
2023-07-13 18:58:46 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 18\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:46 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 18\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:46 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '18'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:46 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005512s (current frames: 798336, expected: 798034)
2023-07-13 18:58:46 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3774873600, RtpTime=898982, Sec=2209191578, SyncPacket=80d40007000cb54083ad969ae1000000000db7a6)
2023-07-13 18:58:47 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005692s (current frames: 842688, expected: 842385)
2023-07-13 18:58:47 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3765108736, RtpTime=942982, Sec=2209191579, SyncPacket=80d40007000d612083ad969be06b0000000e6386)
2023-07-13 18:58:48 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 19\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\n\r\n'
2023-07-13 18:58:48 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 19\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'
2023-07-13 18:58:48 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '19'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10`#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'):
2023-07-13 18:58:48 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005459s (current frames: 887040, expected: 886726)
2023-07-13 18:58:48 DEBUG [pyatv.protocols.raop.stream_client]: Audio finished sending in 20.729857s
2023-07-13 18:58:48 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'TEARDOWN rtsp://10.0.0.90/3047009209 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 20\r\nDACP-ID: 86A86ED35EED5D5B\r\nActive-Remote: 1160387109\r\nClient-Instance: 86A86ED35EED5D5B\r\nSession: 0\r\n\r\n'
2023-07-13 18:58:48 DEBUG [pyatv.auth.hap_channel]: Connection was lost to remote
2023-07-13 18:58:48 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 20\r\n\r\n'
2023-07-13 18:58:48 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '20'}, body=''):
2023-07-13 18:58:48 DEBUG [pyatv.core.facade]: Release (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-13 18:58:48 DEBUG [pyatv.protocols.raop.stream_client]: Audio connection lost (None)
2023-07-13 18:58:48 DEBUG [pyatv.protocols.raop.stream_client]: Control connection lost (None)
2023-07-13 18:58:48 DEBUG [pyatv.protocols.raop.stream_client]: Periodic sync task ended
2023-07-13 18:58:48 DEBUG [pyatv.scripts.atvremote]: Waiting for 0 remaining tasks
2023-07-13 18:58:48 DEBUG [pyatv.support.http]: Connection closed

Also note I replaced the sound file URL as the one you've been using relied on a short lived provisioned URL that needed to be re-generated every now and then. This one is a direct MP3 link without any further proxying/redirection required.

fonix232 commented 1 year ago

Also @postlund dropped you a PM on Discord, debugging things might be a bit quicker over there!

fonix232 commented 1 year ago

A few more findings:

postlund commented 1 year ago

I have deliberately made changes for this bug, so that things are broken are ok (I know about them). I think we should try the same thing but use raw PCM again and see if that makes any difference. I will prepare something later today.

postlund commented 1 year ago

@fonix232 I have pushed an update that sends raw PCM instead, can you try that?

fonix232 commented 1 year ago

Looks like raw PCM isn't being liked either. Playback succeeds but there's no audio. Since both ALAC and PCM seems to work on proper AirPlay devices (e.g. Sonos), I think the issue might be with my receiver.

postlund commented 1 year ago

That's interesting to hear. I however do think there is a bug in pyatv or something that I'm not handling properly. But it's hard/impossible to tell of course. I guess testing another sender, like owntone, and see if that works is one way forward. I could potentially use that to compare what I'm doing with that Implemention.

fonix232 commented 1 year ago

@postlund Unfortunately I can't seem to get Owntone working. I've tried LMS with the Shairport2W plugin, and it presents the same errors:

I'll keep trying with Owntone, hopefully I can get it working...

Here's some further logs:

Apple TV:

root@fenrir:~# atvremote --debug stream_file=https://download.samplelib.com/mp3/sample-15s.mp3 --id A851AB11F1DE
2023-07-31 15:16:55 DEBUG [pyatv.scripts]: Running with pyatv 0.13.2
2023-07-31 15:16:55 DEBUG [pyatv.support.net]: Binding on *:5353
2023-07-31 15:16:55 DEBUG [pyatv.support.net]: Binding on 127.0.0.1:0
2023-07-31 15:16:55 DEBUG [pyatv.support.net]: Binding on 10.0.0.90:0
2023-07-31 15:16:55 DEBUG [pyatv.core.scan]: Auto-discovered Living Room at 10.0.0.130:49153 via Protocol.Companion ({'rpmac': '2', 'rphn': '5394ab7397bf', 'rpfl': '0xB6782', 'rpha': '69338ff15923', 'rpmd': 'AppleTV14,1', 'rpvr': '500.41', 'rpad': '4284839ae35f', 'rphi': 'f823b7bd6681', 'rpba': 'B1:8E:2A:2E:BF:DC', 'rpmrtid': '70CD1314-8433-477F-8C73-055AF0C2725E'})
2023-07-31 15:16:55 DEBUG [pyatv.core.scan]: Auto-discovered Living Room at 10.0.0.130:7000 via Protocol.AirPlay ({'acl': '0', 'btaddr': '00:00:00:00:00:00', 'deviceid': 'A8:51:AB:11:F1:DE', 'fex': '1d9/St5/F7w4oQY', 'features': '0x4A7FDFD5,0xBC177FDE', 'flags': '0x18644', 'gid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'igl': '1', 'gcgl': '1', 'gpn': 'Living Room', 'psgsz': '3', 'psgtp': '1', 'psgid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'pgm': '2', 'pgmid': '0', 'model': 'AppleTV14,1', 'protovers': '1.1', 'pi': 'b0e9fc82-0ae4-40ea-b95e-16f8ace72e15', 'psi': '70CD1314-8433-477F-8C73-055AF0C2725E', 'pk': '924acc9aa9b096f50311b5b51cd15876054034c8f792e00d9e8180ab0685fe35', 'srcvers': '710.69.1', 'osvers': '17.0', 'vv': '1'})
2023-07-31 15:16:55 DEBUG [pyatv.core.scan]: Auto-discovered A851AB11F1DE@Living Room at 10.0.0.130:7000 via Protocol.RAOP ({'cn': '0,1,2,3', 'da': 'true', 'et': '0,3,5', 'ft': '0x4A7FDFD5,0xBC177FDE', 'sf': '0x18644', 'md': '0,1,2', 'am': 'AppleTV14,1', 'pk': '924acc9aa9b096f50311b5b51cd15876054034c8f792e00d9e8180ab0685fe35', 'tp': 'UDP', 'vn': '65537', 'vs': '710.69.1', 'ov': '17.0', 'vv': '1'})
2023-07-31 15:16:55 INFO [pyatv.scripts.atvremote]: Auto-discovered Living Room at 10.0.0.130
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay
2023-07-31 15:16:55 DEBUG [pyatv.protocols.airplay]: Remote control not supported by device
2023-07-31 15:16:55 DEBUG [pyatv.protocols.companion]: Not adding Companion as credentials are missing
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Power management not supported by any protocols
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-31 15:16:55 DEBUG [pyatv.support.http]: Connected to 10.0.0.130
2023-07-31 15:16:55 DEBUG [pyatv.protocols.raop]: Using AirPlay version AirPlayMajorVersion.AirPlayV2
2023-07-31 15:16:55 DEBUG [pyatv.protocols.raop.stream_client]: Initializing RTSP with encryption=21, metadata=7
2023-07-31 15:16:55 DEBUG [pyatv.protocols.raop.stream_client]: Update play settings to 44100/2/16bit
2023-07-31 15:16:55 DEBUG [pyatv.protocols.raop.stream_client]: Local ports: control=51423, timing=48456
2023-07-31 15:16:55 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'GET /info RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 0\r\nDACP-ID: F0CAA375DF9DAE7F\r\nActive-Remote: 2508670697\r\nClient-Instance: F0CAA375DF9DAE7F\r\n\r\n'
2023-07-31 15:16:55 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 31 Jul 2023 14:16:55 GMT\r\nContent-Length: 1203\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/710.69.1\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x19\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b128>9@ABCDE8GHIP9RSTUVWSpsi_\x10\x1dsupportedAudioFormatsExtendedRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBodyTname_\x10\x0fprotocolVersion_\x10\x11volumeControlType]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesEx_\x10\x10supportedFormats]sourceVersion_\x10\x16hasUDPMirroringSupportUmodelRpkZmacAddress^osBuildVersion_\x10\x15receiverHDRCapabilityXfeatures_\x10$70CD1314-8433-477F-8C73-055AF0C2725E\xd1\x1c\x1d\\bufferStream\xaf\x10\x13\x1e\x1f !"#$%&\'()*+,-./0\x10J\x10K\x10G\x108\x10=\x10\x16\x107\x10\'\x10H\x10(\x10\x15\x10\x17\x10\x13\x10F\x10:\x10<\x10I\x109\x106\x10\x01\xd53456789999_\x10\x12supportsOfflineHLS_\x10\x1dsupportsUIForAudioOnlyContent_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10!supportsAirPlayVideoWithSharePlay\x08\t\t\t\t\x08\x12\x00\x01\x86D\t[Living RoomS1.1\x10\x04_\x10\x0f10.0.0.90:58976_\x10\x11A8:51:AB:11:F1:DE_\x10$b0e9fc82-0ae4-40ea-b95e-16f8ace72e15\x08#\x00\x00\x00\x00\x00\x00\x00\x00_\x10\x0f1d9/St5/F7w4oQY\xd4JKL\x1cMNNO_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\x10\x00\x12\x01D\x08\x00\x137\xc0\x01\x80\x00\xe8\x00\x00X710.69.1\t[AppleTV14,1O\x10 \x92J\xcc\x9a\xa9\xb0\x96\xf5\x03\x11\xb5\xb5\x1c\xd1Xv\x05@4\xc8\xf7\x92\xe0\r\x9e\x81\x80\xab\x06\x85\xfe5_\x10\x11A8:51:AB:0E:72:8DX21J5303hT4k60\x13\xbc\x17\x7f\xdeJ\x7f\xdf\xd5\x00\x08\x00=\x00A\x00a\x00d\x00{\x00\x93\x00\x9f\x00\xba\x00\xbf\x00\xd1\x00\xe5\x00\xf3\x00\xfc\x00\xff\x01\x0e\x01\x1c\x01\'\x01:\x01H\x01a\x01g\x01j\x01u\x01\x84\x01\x9c\x01\xa5\x01\xcc\x01\xcf\x01\xdc\x01\xf2\x01\xf4\x01\xf6\x01\xf8\x01\xfa\x01\xfc\x01\xfe\x02\x00\x02\x02\x02\x04\x02\x06\x02\x08\x02\n\x02\x0c\x02\x0e\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1a\x02%\x02:\x02Z\x02r\x02\x8a\x02\xae\x02\xaf\x02\xb0\x02\xb1\x02\xb2\x02\xb3\x02\xb4\x02\xb9\x02\xba\x02\xc6\x02\xca\x02\xcc\x02\xde\x02\xf2\x03\x19\x03\x1a\x03#\x035\x03>\x03V\x03c\x03o\x03q\x03v\x03\x7f\x03\x88\x03\x89\x03\x95\x03\xb8\x03\xcc\x03\xd5\x03\xda\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00X\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xe3'
2023-07-31 15:16:55 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 31 Jul 2023 14:16:55 GMT', 'Content-Length': '1203', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/710.69.1', 'CSeq': '0'}, body=b'bplist00\xdf\x10\x19\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b128>9@ABCDE8GHIP9RSTUVWSpsi_\x10\x1dsupportedAudioFormatsExtendedRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBodyTname_\x10\x0fprotocolVersion_\x10\x11volumeControlType]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesEx_\x10\x10supportedFormats]sourceVersion_\x10\x16hasUDPMirroringSupportUmodelRpkZmacAddress^osBuildVersion_\x10\x15receiverHDRCapabilityXfeatures_\x10$70CD1314-8433-477F-8C73-055AF0C2725E\xd1\x1c\x1d\\bufferStream\xaf\x10\x13\x1e\x1f !"#$%&\'()*+,-./0\x10J\x10K\x10G\x108\x10=\x10\x16\x107\x10\'\x10H\x10(\x10\x15\x10\x17\x10\x13\x10F\x10:\x10<\x10I\x109\x106\x10\x01\xd53456789999_\x10\x12supportsOfflineHLS_\x10\x1dsupportsUIForAudioOnlyContent_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10!supportsAirPlayVideoWithSharePlay\x08\t\t\t\t\x08\x12\x00\x01\x86D\t[Living RoomS1.1\x10\x04_\x10\x0f10.0.0.90:58976_\x10\x11A8:51:AB:11:F1:DE_\x10$b0e9fc82-0ae4-40ea-b95e-16f8ace72e15\x08#\x00\x00\x00\x00\x00\x00\x00\x00_\x10\x0f1d9/St5/F7w4oQY\xd4JKL\x1cMNNO_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\x10\x00\x12\x01D\x08\x00\x137\xc0\x01\x80\x00\xe8\x00\x00X710.69.1\t[AppleTV14,1O\x10 \x92J\xcc\x9a\xa9\xb0\x96\xf5\x03\x11\xb5\xb5\x1c\xd1Xv\x05@4\xc8\xf7\x92\xe0\r\x9e\x81\x80\xab\x06\x85\xfe5_\x10\x11A8:51:AB:0E:72:8DX21J5303hT4k60\x13\xbc\x17\x7f\xdeJ\x7f\xdf\xd5\x00\x08\x00=\x00A\x00a\x00d\x00{\x00\x93\x00\x9f\x00\xba\x00\xbf\x00\xd1\x00\xe5\x00\xf3\x00\xfc\x00\xff\x01\x0e\x01\x1c\x01\'\x01:\x01H\x01a\x01g\x01j\x01u\x01\x84\x01\x9c\x01\xa5\x01\xcc\x01\xcf\x01\xdc\x01\xf2\x01\xf4\x01\xf6\x01\xf8\x01\xfa\x01\xfc\x01\xfe\x02\x00\x02\x02\x02\x04\x02\x06\x02\x08\x02\n\x02\x0c\x02\x0e\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1a\x02%\x02:\x02Z\x02r\x02\x8a\x02\xae\x02\xaf\x02\xb0\x02\xb1\x02\xb2\x02\xb3\x02\xb4\x02\xb9\x02\xba\x02\xc6\x02\xca\x02\xcc\x02\xde\x02\xf2\x03\x19\x03\x1a\x03#\x035\x03>\x03V\x03c\x03o\x03q\x03v\x03\x7f\x03\x88\x03\x89\x03\x95\x03\xb8\x03\xcc\x03\xd5\x03\xda\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00X\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xe3'):
2023-07-31 15:16:55 DEBUG [pyatv.protocols.raop.stream_client]: Updated info parameters to: {'psi': '70CD1314-8433-477F-8C73-055AF0C2725E', 'supportedAudioFormatsExtended': {'bufferStream': [74, 75, 71, 56, 61, 22, 55, 39, 72, 40, 21, 23, 19, 70, 58, 60, 73, 57, 54]}, 'vv': 1, 'playbackCapabilities': {'supportsOfflineHLS': False, 'supportsUIForAudioOnlyContent': True, 'supportsInterstitials': True, 'supportsFPSSecureStop': True, 'supportsAirPlayVideoWithSharePlay': True}, 'canRecordScreenStream': False, 'statusFlags': 99908, 'keepAliveSendStatsAsBody': True, 'name': 'Living Room', 'protocolVersion': '1.1', 'volumeControlType': 4, 'senderAddress': '10.0.0.90:58976', 'deviceID': 'A8:51:AB:11:F1:DE', 'pi': 'b0e9fc82-0ae4-40ea-b95e-16f8ace72e15', 'screenDemoMode': False, 'initialVolume': 0.0, 'featuresEx': '1d9/St5/F7w4oQY', 'supportedFormats': {'lowLatencyAudioStream': 0, 'screenStream': 21235712, 'audioStream': 21235712, 'bufferStream': 4017212516897128448}, 'sourceVersion': '710.69.1', 'hasUDPMirroringSupport': True, 'model': 'AppleTV14,1', 'pk': b'\x92J\xcc\x9a\xa9\xb0\x96\xf5\x03\x11\xb5\xb5\x1c\xd1Xv\x05@4\xc8\xf7\x92\xe0\r\x9e\x81\x80\xab\x06\x85\xfe5', 'macAddress': 'A8:51:AB:0E:72:8D', 'osBuildVersion': '21J5303h', 'receiverHDRCapability': '4k60', 'features': -4893301877405392939}
2023-07-31 15:16:55 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /auth-setup HTTP/1.1\r\nUser-Agent: AirPlay/540.31\r\nContent-Type: application/octet-stream\r\nContent-Length: 33\r\nCSeq: 1\r\nDACP-ID: F0CAA375DF9DAE7F\r\nActive-Remote: 2508670697\r\nClient-Instance: F0CAA375DF9DAE7F\r\n\r\n\x01Y\x02\xed\xe9\rN\xf2\xbdL\xb6\x8ac0\x03\x82\x07\xa9M\xbdP\xd8\xaaF[]\x8c\x01*\x0c~\x1dN'
2023-07-31 15:16:55 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 403 Forbidden\r\nContent-Length: 0\r\nServer: AirTunes/710.69.1\r\nCSeq: 1\r\n\r\n'
2023-07-31 15:16:55 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=403, message='Forbidden', headers={'Content-Length': '0', 'Server': 'AirTunes/710.69.1', 'CSeq': '1'}, body=''):
2023-07-31 15:16:55 DEBUG [pyatv.core.facade]: Release (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-31 15:16:55 ERROR [pyatv.scripts.atvremote]: Authentication error: not authenticated
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 729, in _exec_command
    value = await tmp(*args)
            ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/core/facade.py", line 370, in stream_file
    await self.relay("stream_file")(
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/__init__.py", line 353, in stream_file
    await client.initialize(self.core.service.properties)
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/stream_client.py", line 372, in initialize
    await self.rtsp.auth_setup()
  File "/usr/local/lib/python3.11/dist-packages/pyatv/support/rtsp.py", line 117, in auth_setup
    return await self.exchange(
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/support/rtsp.py", line 293, in exchange
    resp = await self.connection.send_and_receive(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/support/http.py", line 461, in send_and_receive
    raise exceptions.AuthenticationError("not authenticated")
pyatv.exceptions.AuthenticationError: not authenticated
2023-07-31 15:16:55 DEBUG [pyatv.scripts.atvremote]: Waiting for 0 remaining tasks
2023-07-31 15:16:55 DEBUG [pyatv.protocols.raop.stream_client]: Control connection lost (None)
2023-07-31 15:16:55 DEBUG [pyatv.support.http]: Connection closed

HomePod direct play:

root@fenrir:~# atvremote --debug stream_file=https://download.samplelib.com/mp3/sample-15s.mp3 --id ACBCB5CD85E5
2023-07-31 15:17:23 DEBUG [pyatv.scripts]: Running with pyatv 0.13.2
2023-07-31 15:17:23 DEBUG [pyatv.support.net]: Binding on *:5353
2023-07-31 15:17:23 DEBUG [pyatv.support.net]: Binding on 127.0.0.1:0
2023-07-31 15:17:23 DEBUG [pyatv.support.net]: Binding on 10.0.0.90:0
2023-07-31 15:17:25 DEBUG [pyatv.core.scan]: Auto-discovered HomePod - Left at 10.0.1.247:7000 via Protocol.AirPlay ({'acl': '0', 'btaddr': '4B:15:3E:1F:24:F0', 'deviceid': 'AC:BC:B5:CD:85:E5', 'c': '1', 'fex': 'AMp/StBLNbwQoQY', 'features': '0x4A7FCA00,0xBC354BD0', 'flags': '0xbcc04', 'gid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'igl': '0', 'gcgl': '1', 'gpn': 'Living Room', 'psgsz': '3', 'psgtp': '1', 'psgid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'pgm': '2', 'pgmid': '2', 'pgid': '87D1C1DD-5D67-5FB6-9580-80499C159BFF', 'pgcgl': '1', 'tsid': '9E83BE0F-F769-529D-9801-69A8C8CB87F9', 'tsm': '2', 'model': 'AudioAccessory6,1', 'protovers': '1.1', 'pi': '9880a56a-262c-413f-b8b7-6e431085a33e', 'psi': '40DDAE42-6F4E-460D-BB89-A0201997A701', 'pk': '85664ab393baba7f52ddede6b8efd9aedae1ed1f34ae702edd3484be38624c73', 'srcvers': '710.69.1', 'osvers': '17.0', 'vv': '1'})
2023-07-31 15:17:25 DEBUG [pyatv.core.scan]: Auto-discovered HomePod - Left at 10.0.1.247:49155 via Protocol.Companion ({'rpmac': '2', 'rphn': 'e3850871c0ff', 'rpfl': '0x62792', 'rpha': '3d1010854ae4', 'rpmd': 'AudioAccessory6,1', 'rpvr': '500.41', 'rpad': '8285f9cea7d1', 'rphi': 'f4df4ac6daab', 'rpba': '01:14:C5:E9:8D:CD'})
2023-07-31 15:17:25 DEBUG [pyatv.core.scan]: Auto-discovered ACBCB5CD85E5@HomePod - Left at 10.0.1.247:7000 via Protocol.RAOP ({'cn': '0,1,2,3', 'da': 'true', 'et': '0,3,5', 'ft': '0x4A7FCA00,0xBC354BD0', 'sf': '0xbcc04', 'md': '0,1,2', 'am': 'AudioAccessory6,1', 'pk': '85664ab393baba7f52ddede6b8efd9aedae1ed1f34ae702edd3484be38624c73', 'tp': 'UDP', 'vn': '65537', 'vs': '710.69.1', 'ov': '17.0', 'vv': '1'})
2023-07-31 15:17:25 INFO [pyatv.scripts.atvremote]: Auto-discovered HomePod - Left at 10.0.1.247
2023-07-31 15:17:25 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay
2023-07-31 15:17:25 DEBUG [pyatv.protocols.airplay]: Remote control channel is supported
2023-07-31 15:17:25 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.MRP
2023-07-31 15:17:25 DEBUG [pyatv.protocols.companion]: Not adding Companion as credentials are missing
2023-07-31 15:17:25 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.MRP
2023-07-31 15:17:25 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP
2023-07-31 15:17:25 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay
2023-07-31 15:17:25 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay
2023-07-31 15:17:25 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.MRP
2023-07-31 15:17:25 DEBUG [pyatv.protocols.airplay.ap2_session]: Setting up remote connection to 10.0.1.247:7000
2023-07-31 15:17:25 DEBUG [pyatv.support.http]: Connected to 10.0.1.247
2023-07-31 15:17:25 DEBUG [pyatv.protocols.airplay.auth]: Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.Transient
2023-07-31 15:17:25 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-pin-start HTTP/1.1\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n'
2023-07-31 15:17:25 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nDate: Mon, 31 Jul 2023 14:17:25 GMT\r\nContent-Length: 0\r\nServer: AirTunes/710.69.1\r\n\r\n'
2023-07-31 15:17:25 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Date': 'Mon, 31 Jul 2023 14:17:25 GMT', 'Content-Length': '0', 'Server': 'AirTunes/710.69.1'}, body=''):
2023-07-31 15:17:25 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 9\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x00\x01\x00\x06\x01\x01\x13\x01\x10'
2023-07-31 15:17:25 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nDate: Mon, 31 Jul 2023 14:17:25 GMT\r\nContent-Length: 409\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/710.69.1\r\n\r\n\x06\x01\x02\x02\x10\x89c\xbd\x04\xcc\xad\x8d\xc0\x8c&P\xfd\xc9E\xc2\xc9\x03\xff\xe5\xaai\x8cb=:\x90/\x1cZ2#\xfc\x82Q#\xdeA\xaf]\x85\xc1\xc8\x86f\xb5\xa8\x01\xb6kI\xc8>\xbbf\xab\xb3\x18\x95\xf3\xb0\xd3\x96\x1e\xfbYG\xbaI/\xc74\x10\xec\xa1\xec\xf5v\xa7\xb9\xb6B-\xa1q\xecZ\x0f36\xd6\xc6e\xca\xd5\xf9%\x04n\xf8J\x9b\xb5d\x07\r\xf819B:v\x9dv\xb2HN\xec3y\x85dx\xe6"\xd9\x9a\x17\xd7\x01\xbdF\x0eM\xaa\xc9\xd8\\\x977\xcf\xa6$\x88\xed\x8f\x9a\xae\xb6I\x1d\x0cz\xfah\x08|f5\x08\\\xdfJ\x07I\xd2\xbf\xed\xe0\xb2\x1c~F~S \x9e\x1c\x04o\xf6\x7fR\xbc\x91\xd9\xda\x14\xd8,Oj\x8e\xc2\x12\xfacQ\xe4\xae\xa3\x95\x1f\xb4+\xd3\xb1\x9b\xb3\x14\x8bCu\xc4\x81\xc2\x80\xda\xf4v\x82i\xb3\x95\xbe\x81\x83=#\xa6\xf7\x05{\'\xfckI\x83\x87db\x1f\xc1\xa4t\x0e\xab\xc2S\xdb\xe5bh6\xd8\xf1\xa1&D\xb9\x87\x0f\r\x85\x99y\x93\x0c\'E\x8fy\xb5P\x03\x81z\xbd\x0e\xe4Q\x1e\xea9\x08\xaf$\x91Z\xc6]\x1a\xba\xf8\xbb\xb3\xc2I\x08]\xd7-\x9c-\x96\x10\xb0OBq#\xe1O\xce\xd6U\x91\xa7\x84\xa8\xcb3\x8c\xfc\xd0\x9f\xe2_\xb0\xc4p\x01\x08\x84Y\x1bw3\xa3z\xfeM@\xc4z\x07y\xf7(\x80\xc0\x7fn\xc9\xad\xa8\x15\xacO\x11\xdd\xe8/\xe4G\xe0\x02\xfc,}\\w\x9b\xd6\xafzh-h)V\xef\xb7\xee\x8b\xfd\x0e\x9d\xc3x\xf00\rm\x92\x17T\xf8\x86\x1e\x12\xc1\xfaM\x97'
2023-07-31 15:17:25 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Date': 'Mon, 31 Jul 2023 14:17:25 GMT', 'Content-Length': '409', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/710.69.1'}, body=b'\x06\x01\x02\x02\x10\x89c\xbd\x04\xcc\xad\x8d\xc0\x8c&P\xfd\xc9E\xc2\xc9\x03\xff\xe5\xaai\x8cb=:\x90/\x1cZ2#\xfc\x82Q#\xdeA\xaf]\x85\xc1\xc8\x86f\xb5\xa8\x01\xb6kI\xc8>\xbbf\xab\xb3\x18\x95\xf3\xb0\xd3\x96\x1e\xfbYG\xbaI/\xc74\x10\xec\xa1\xec\xf5v\xa7\xb9\xb6B-\xa1q\xecZ\x0f36\xd6\xc6e\xca\xd5\xf9%\x04n\xf8J\x9b\xb5d\x07\r\xf819B:v\x9dv\xb2HN\xec3y\x85dx\xe6"\xd9\x9a\x17\xd7\x01\xbdF\x0eM\xaa\xc9\xd8\\\x977\xcf\xa6$\x88\xed\x8f\x9a\xae\xb6I\x1d\x0cz\xfah\x08|f5\x08\\\xdfJ\x07I\xd2\xbf\xed\xe0\xb2\x1c~F~S \x9e\x1c\x04o\xf6\x7fR\xbc\x91\xd9\xda\x14\xd8,Oj\x8e\xc2\x12\xfacQ\xe4\xae\xa3\x95\x1f\xb4+\xd3\xb1\x9b\xb3\x14\x8bCu\xc4\x81\xc2\x80\xda\xf4v\x82i\xb3\x95\xbe\x81\x83=#\xa6\xf7\x05{\'\xfckI\x83\x87db\x1f\xc1\xa4t\x0e\xab\xc2S\xdb\xe5bh6\xd8\xf1\xa1&D\xb9\x87\x0f\r\x85\x99y\x93\x0c\'E\x8fy\xb5P\x03\x81z\xbd\x0e\xe4Q\x1e\xea9\x08\xaf$\x91Z\xc6]\x1a\xba\xf8\xbb\xb3\xc2I\x08]\xd7-\x9c-\x96\x10\xb0OBq#\xe1O\xce\xd6U\x91\xa7\x84\xa8\xcb3\x8c\xfc\xd0\x9f\xe2_\xb0\xc4p\x01\x08\x84Y\x1bw3\xa3z\xfeM@\xc4z\x07y\xf7(\x80\xc0\x7fn\xc9\xad\xa8\x15\xacO\x11\xdd\xe8/\xe4G\xe0\x02\xfc,}\\w\x9b\xd6\xafzh-h)V\xef\xb7\xee\x8b\xfd\x0e\x9d\xc3x\xf00\rm\x92\x17T\xf8\x86\x1e\x12\xc1\xfaM\x97'):
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_srp]: Client (Proof=34f5d09c8c4296a75fc65a64576ed13c93759adc9574a9612e2e4a1db0ede43ac8c7d2b3f99b00cd2ff854cadd27ae8ff153d8b10520ec0220beb85b46caef38, Public=277374e9fea301e9fd1a19f11dde3b0d2a17f84cf4917a47df54c275cd8d2088211b35c3ed27a7e69fed7fbe8bbbf79d57cd73bbc5aea3203e0d5890328e0f26570ac8fc877ee89f37f2b26b28f79d1855546e347e70ddf93ec5a25e8e87099efa0243e5c77a617b3bff2cbdbd42e898f4427b7ab0ce6c57fac0b75ddeed382a5a060dbfe88b197fb6c1202ae0c88d50374038afa711e6d175892e0e47dd6023b250eb23d522be679d2d16d50fbba0cec62593e81ebc8e28e9eaa05ca830e7bee014db9d665cf72578c304e107b0e5c919b8e268c8402e3ddf30081215f9f81570b1ef143456d404bd97f0cacf18fafdac818ef9999e48223d95475dd7a78...)
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 457\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x06\x01\x03\x03\xff\'st\xe9\xfe\xa3\x01\xe9\xfd\x1a\x19\xf1\x1d\xde;\r*\x17\xf8L\xf4\x91zG\xdfT\xc2u\xcd\x8d \x88!\x1b5\xc3\xed\'\xa7\xe6\x9f\xed\x7f\xbe\x8b\xbb\xf7\x9dW\xcds\xbb\xc5\xae\xa3 >\rX\x902\x8e\x0f&W\n\xc8\xfc\x87~\xe8\x9f7\xf2\xb2k(\xf7\x9d\x18UTn4~p\xdd\xf9>\xc5\xa2^\x8e\x87\t\x9e\xfa\x02C\xe5\xc7za{;\xff,\xbd\xbdB\xe8\x98\xf4B{z\xb0\xcelW\xfa\xc0\xb7]\xde\xed8*Z\x06\r\xbf\xe8\x8b\x19\x7f\xb6\xc1 *\xe0\xc8\x8dP7@8\xaf\xa7\x11\xe6\xd1u\x89.\x0eG\xdd`#\xb2P\xeb#\xd5"\xbeg\x9d-\x16\xd5\x0f\xbb\xa0\xce\xc6%\x93\xe8\x1e\xbc\x8e(\xe9\xea\xa0\\\xa80\xe7\xbe\xe0\x14\xdb\x9df\\\xf7%x\xc3\x04\xe1\x07\xb0\xe5\xc9\x19\xb8\xe2h\xc8@.=\xdf0\x08\x12\x15\xf9\xf8\x15p\xb1\xef\x144V\xd4\x04\xbd\x97\xf0\xca\xcf\x18\xfa\xfd\xac\x81\x8e\xf9\x99\x9eH"=\x95G]\xd7\xa7\x80\x03\x812\xbap`\xf6\x8a\x95s@Gy\xcf\x02\\k\xdf\xc5\xcc\xab9\x89d\x1c\xa9C}\xdc\xc3\xa8\xeb\xbc^r\x99\xaf\x84\\6\xcbo0o\xc7q\xed\x14\xd7\xbe\x9d(\xe1\x1e\xca\x86\xfcKi\xa0\xadm\xb8\x1c\xc5!\xde\x16\xe4k\xa9@.$\xae(\xe9\xe2\xe3\xee"\xd7\x89\x8b\xf5?Z\x08\xb30\xc1\x91\xcb\x94\xe238\x90\x95\x9f\x17)/\xa9\xe08\xa8\x11\x7f$\x02I\x00P\x86\x0b\x98\xed\xd3\x8a(\x1eD\x1d\xb7&\xbcuW/\xe2\x04@4\xf5\xd0\x9c\x8cB\x96\xa7_\xc6ZdWn\xd1<\x93u\x9a\xdc\x95t\xa9a..J\x1d\xb0\xed\xe4:\xc8\xc7\xd2\xb3\xf9\x9b\x00\xcd/\xf8T\xca\xdd\'\xae\x8f\xf1S\xd8\xb1\x05 \xec\x02 \xbe\xb8[F\xca\xef8'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nDate: Mon, 31 Jul 2023 14:17:26 GMT\r\nContent-Length: 69\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/710.69.1\r\n\r\n\x06\x01\x04\x04@\xbf\xd8\xd3E\x1b\xe5O}\x90-\xebk|\x01\x84x\xe6&\x8f8\x04Wl\xed\x05\xb2.\xdb\xb9\xc2\x1d\xe8YS9\x8b\x96\xf0\n\xfbwZ\x0e\x96\xc05\x00_x\xf7\x1b\xcfm\xd3\x96\x87r\x98\x01Q\x033\x08\x90'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Date': 'Mon, 31 Jul 2023 14:17:26 GMT', 'Content-Length': '69', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/710.69.1'}, body=b'\x06\x01\x04\x04@\xbf\xd8\xd3E\x1b\xe5O}\x90-\xebk|\x01\x84x\xe6&\x8f8\x04Wl\xed\x05\xb2.\xdb\xb9\xc2\x1d\xe8YS9\x8b\x96\xf0\n\xfbwZ\x0e\x96\xc05\x00_x\xf7\x1b\xcfm\xd3\x96\x87r\x98\x01Q\x033\x08\x90'):
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=95fa16468548cd02108deed57294201b5c2e08d79f466af55d4f4f32ab1afded, Output=5f5988fd993e2784def2d5014c3e3f93bbb9525735fbd667985715b9a2939784)
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://10.0.0.90/1245511273 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nContent-Length: 367\r\nCSeq: 0\r\nDACP-ID: A9DAED7CDC3A19E0\r\nActive-Remote: 853953153\r\nClient-Instance: A9DAED7CDC3A19E0\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xdb\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16XdeviceID_\x10\x13isRemoteControlOnlyZmacAddressUmodelTname^osBuildVersionVosNameYosVersion[sessionUUID]sourceVersion^timingProtocol_\x10\x11FF:EE:DD:CC:BB:AA\t_\x10\x11AA:BB:CC:DD:EE:FFZiPhone10,6UpyatvU18G82YiPhone OSV14.7.1_\x10$80D169EB-6016-4600-AD32-EC33A6707A19V550.10TNone\x00\x08\x00\x1f\x00(\x00>\x00I\x00O\x00T\x00c\x00j\x00t\x00\x80\x00\x8e\x00\x9d\x00\xb1\x00\xb2\x00\xc6\x00\xd1\x00\xd7\x00\xdd\x00\xe7\x00\xee\x01\x15\x01\x1c\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01!'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 31 Jul 2023 14:17:26 GMT\r\nContent-Length: 59\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/710.69.1\r\nCSeq: 0\r\n\r\nbplist00\xd1\x01\x02YeventPort\x11\xc9\xcb\x08\x0b\x15\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 31 Jul 2023 14:17:26 GMT', 'Content-Length': '59', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/710.69.1', 'CSeq': '0'}, body=b'bplist00\xd1\x01\x02YeventPort\x11\xc9\xcb\x08\x0b\x15\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18'):
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=e221eebf188b8694f86e3d01675b87a6272d7a8d6cd62dcc9fe3c3196aaf5eb7, Output=42f8d089394f0cd74801704477e6fe238712c605cb249cebdc3dafda854748c3)
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Connected to 10.0.1.247:51659
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'RECORD rtsp://10.0.0.90/1245511273 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 1\r\nDACP-ID: A9DAED7CDC3A19E0\r\nActive-Remote: 853953153\r\nClient-Instance: A9DAED7CDC3A19E0\r\n\r\n'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 31 Jul 2023 14:17:26 GMT\r\nContent-Length: 0\r\nAudio-Latency: 0\r\nServer: AirTunes/710.69.1\r\nCSeq: 1\r\n\r\n'
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=0004ac1fc588742f03e2f9c884ce1407df2bf670af51e7286e79d42505e3c591077c9b2a2c79445a6041983021ee0cdb7b0b8a30e9e34ee6f9923a9d56675cdae03c862a39d9c442f319b6de5b60c85064dad0c49c5f524533a4013726c574f5ff12b156272a5f3f9ae77fcd70a6061b4e0395ec9a554f792c26c9ad068826eb16b8e859c916406d475f8e7ceb3751319f50c26b9174dd1ca91da37d4a01413874372999a4c1b12f8cb9e30bd9e640c269f4e6299afdcc905801f6c49bcb8ceb5970023425024c778ad5c66304c8b4e75b1d91de24921339937aecd9c2000c50f2d1727b4a4c39a4cd4e3062dcbd2123cac52440a6d8c09717683e26771f5...)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.channels]: Got message on event channel: HttpRequest(method='POST', path='/command', protocol='RTSP', version='1.0', headers={'CSeq': '0', 'Content-Length': '1915', 'Content-Type': 'application/x-apple-binary-plist'}, body=b'bplist00\xd2\x01\x02\x03\x04TtypeUvalueZupdateInfo\xdf\x10\x1a\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f @AGMKOPQRSTGVWXYZ[bcdefgSpsi_\x10\x1dsupportedAudioFormatsExtendedRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBodyTname_\x10\x0fprotocolVersion_\x10\x11volumeControlType]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesExZtxtAirPlay]sourceVersionUmodel_\x10\x10supportedFormatsRpkZmacAddress^osBuildVersion_\x10\x15receiverHDRCapability_\x10\x14deviceEnclosureColorXfeatures_\x10$40DDAE42-6F4E-460D-BB89-A0201997A701\xd1!"\\bufferStream\xaf\x10\x1d#$%&\'()*+,-./0123456789:;<=>?\x104\x10H\x10:\x10I\x10=\x10!\x10(\x105\x106\x10<\x108\x10J\x103\x10\x17\x10G\x10\x13\x107\x109\x10\x16\x101\x10\'\x102\x10\x15\x10F\x10?\x10"\x10#\x10K\x10>\x10\x01\xd5BCDEFGGGGK_\x10\x12supportsOfflineHLS_\x10\x1dsupportsUIForAudioOnlyContent_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10!supportsAirPlayVideoWithSharePlay\x08\x08\x08\x08\t\x08\x12\x00\x0b\xcc\x04\t^HomePod - LeftS1.1\x10\x03_\x10\x0f10.0.0.90:36102_\x10\x11AC:BC:B5:CD:85:E5_\x10$9880a56a-262c-413f-b8b7-6e431085a33e\x08#\xc0\x1f\x80\x00`\x00\x00\x00_\x10\x0fAMp/StBLNbwQoQYO\x11\x02M\x05acl=0\x18btaddr=4B:15:3E:1F:24:F0\x1adeviceid=AC:BC:B5:CD:85:E5\x03c=1\x13fex=AMp/StBLNbwQoQY\x1efeatures=0x4A7FCA00,0xBC354BD0\rflags=0xbcc04(gid=87D1C1DD-5D67-5FB6-9580-80499C159BFF\x05igl=0\x06gcgl=1\x0fgpn=Living Room\x07psgsz=3\x07psgtp=1*psgid=87D1C1DD-5D67-5FB6-9580-80499C159BFF\x05pgm=2\x07pgmid=2)pgid=87D1C1DD-5D67-5FB6-9580-80499C159BFF\x07pgcgl=1)tsid=9E83BE0F-F769-529D-9801-69A8C8CB87F9\x05tsm=2\x17model=AudioAccessory6,1\rprotovers=1.1\'pi=9880a56a-262c-413f-b8b7-6e431085a33e(psi=40DDAE42-6F4E-460D-BB89-A0201997A701Cpk=85664ab393baba7f52ddede6b8efd9aedae1ed1f34ae702edd3484be38624c73\x10srcvers=710.69.1\x0bosvers=17.0\x04vv=1X710.69.1_\x10\x11AudioAccessory6,1\xd4\\]^!_``a_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\x13\x00\x00\x04\x00\x02\x00\x00\x00\x12\x01D\x08\x00\x13\xf7\xfe\x01\x8e\x00\xe8\x00\x00O\x10 \x85fJ\xb3\x93\xba\xba\x7fR\xdd\xed\xe6\xb8\xef\xd9\xae\xda\xe1\xed\x1f4\xaep.\xdd4\x84\xbe8bLs_\x10\x11E2:DA:26:C9:E6:D3X21J5303fT4k60Q1\x13\xbc5K\xd0J\x7f\xca\x00\x00\x08\x00\r\x00\x12\x00\x18\x00#\x00Z\x00^\x00~\x00\x81\x00\x98\x00\xb0\x00\xbc\x00\xd7\x00\xdc\x00\xee\x01\x02\x01\x10\x01\x19\x01\x1c\x01+\x019\x01D\x01O\x01]\x01c\x01v\x01y\x01\x84\x01\x93\x01\xab\x01\xc2\x01\xcb\x01\xf2\x01\xf5\x02\x02\x02"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02\\\x02^\x02i\x02~\x02\x9e\x02\xb6\x02\xce\x02\xf2\x02\xf3\x02\xf4\x02\xf5\x02\xf6\x02\xf7\x02\xf8\x02\xfd\x02\xfe\x03\r\x03\x11\x03\x13\x03%\x039\x03`\x03a\x03j\x03|\x05\xcd\x05\xd6\x05\xea\x05\xf3\x06\x0b\x06\x18\x06$\x06-\x062\x06;\x06^\x06r\x06{\x06\x80\x06\x82\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x8b')
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=5b00b955489024d412a63e1458b25ce19bfb7e26d4f5ce087355f831dcea28fe15bcd598f61c7cf65396e04943d266df7aa469aca0e8fbf39e3974bcb3126ea17244f244029a214a6a02efa06a5d4a6f31a4439a6d0f7e95800afbb72cae657c643f8ac98fbf5e503ac37c17b2)
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 31 Jul 2023 14:17:26 GMT', 'Content-Length': '0', 'Audio-Latency': '0', 'Server': 'AirTunes/710.69.1', 'CSeq': '1'}, body=''):
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://10.0.0.90/1245511273 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nContent-Length: 324\r\nCSeq: 2\r\nDACP-ID: A9DAED7CDC3A19E0\r\nActive-Remote: 853953153\r\nClient-Instance: A9DAED7CDC3A19E0\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd7\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11YchannelID^clientTypeUUIDZclientUUID[controlTypeTseedTtype_\x10\x14wantsDedicatedSocket_\x10$43873EDE-3FFF-44F2-BB1E-27AA801447E6_\x10$1910A70F-DBC0-4242-AF95-115DB30604E1_\x10$39950839-40EE-4207-B5CE-F1E19EDDD4BC\x10\x02\x14\x00\x00\x00\x00\x00\x00\x00\x00\xe1w\xb6\r\xfe>G\xe3\x10\x82\t\x00\x08\x00\x0b\x00\x13\x00\x15\x00$\x00.\x00=\x00H\x00T\x00Y\x00^\x00u\x00\x9c\x00\xc3\x00\xea\x00\xec\x00\xfd\x00\xff\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 31 Jul 2023 14:17:26 GMT\r\nContent-Length: 100\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/710.69.1\r\nCSeq: 2\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXstreamIDXdataPort\x10\x82\x10\x01\x11\xc9\xcc\x08\x0b\x13\x15\x1c!*357\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 31 Jul 2023 14:17:26 GMT', 'Content-Length': '100', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/710.69.1', 'CSeq': '2'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXstreamIDXdataPort\x10\x82\x10\x01\x11\xc9\xcc\x08\x0b\x13\x15\x1c!*357\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:'):
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=c19ec9eda60a03e4c14268eacdde8a6c5f1ba2a8c9d4c684fab84af7a1ba50c7, Output=37c7ea84a9594b50dc090129686c0b41e7f5f8650add0eecb2cc17e5b05eaa23)
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Connected to 10.0.1.247:51660
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=3c01e034cd081ce9111cc0f13280489b7bcd1ce08332369bf47f09b2e618427af4f4dbcfb75e5084ec80a933ff9d33d019e54e18b574050870e5c7e777e06de0d0aa52a80807b7c4b22ff3d5b1dbbc0582e9ee5aa1b88e04c8ccedcafc251dcdc26ab10ce07b6a99ecaff0363653e6c44040e83d2bab0c9ac3b3eef2d0d40976049e22dd7c26f06bb1e2736a331003cbbd915804eb02e6c9df513db6f4d086ce10e6501bfe72bcdb5af9d58c37773f470c0ab20c3a6c765c251c51d2bc3c9c0b34bac8c8bb29a4fb5ea97b2064d25f21bc3409479026703302ffacd55f17ecff0f48c87db3c177c6cf2c7acad7ab2e6f03ff392e40e3aade64fda994d46c0...)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: >> Send: Protobuf: type: DEVICE_INFO_MESSAGE
identifier: "D6EFD58A-2969-4882-B996-7DF48FBF72F3"
errorCode: NoError
[deviceInfoMessage] {
  uniqueIdentifier: "5484ef8f-114a-4efb-b53d-d6f7a77a94ba"
  name: "pyatv"
  localizedModelName: "iPhone"
  systemBuildVersion: "18A393"
  applicationBundleIdentifier: "com.apple.TVRemote"
  applicationBundleVersion: "344.28"
  protocolVersion: 1
  lastSupportedMessageType: 108
  supportsSystemPairing: true
  allowsPairing: true
  systemMediaApplication: "com.apple.TVMusic"
  supportsACL: true
  supportsSharedQueue: true
  supportsExtendedMotion: true
  sharedQueueVersion: 2
  deviceClass: iPhone
  logicalDeviceCount: 1
}
uniqueIdentifier: "11D9B41A-E6C8-42DC-97AA-5B7FEB5E9820"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Starting heartbeat loop (AirPlay:10.0.1.247)
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=20007d977d2e75145f6a83a3d198a9b5ca802bd03f10be8c25d3fb8b5343acf800c64bffd1aa7147fb87e92124d7c4f182002a006a5c83eba0f4e9090bef2e085cbc51e782b6b57336edd7ce885aa09731a4b22ce89c99c2eb243215aac605aaa66b8bd98634cb1091fd5bdf2b51)
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=200079099b3cc1ff9c60eceac4a6e4d7d67f66288c83b1317359dca63e4688dae7913f6ed3d66403b2dd9733aed9f939544f)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.channels]: Not enough data on data channel (has 32, expects 903)
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=6703d6f496fe63573db57074918309650fca96571d0778a21a5240419d42e641ff188247e1ba84e1fa645c25abd98c8d70ae81fe003987733cc22b6fdb369e8f27ce88379e7a5c01a7f00d4f3ba0a8aa7a9929d1f906c1a8115868588fc842f7b28e8fba70555d6d3b946ac3fea9dd4b976a93f550961e03067da0b7c1897189fc305a12114dc70e10dbe6ac386484b6d9566dc5363659fc3e69de6a8057db8d1bfd5674e9bb63accef98be1e55c25cc3cf5934ec4d33d46a3469e9b11e7e222ec56b7f5c7cfc055525e9ecd4200a507ced490ffc6a2e5706a09d1148dd6ee6a4b5f26d29713289e8b918cc38da9ff766284119ff94d563632ad347572686...)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: DEVICE_INFO_MESSAGE
identifier: "D6EFD58A-2969-4882-B996-7DF48FBF72F3"
[deviceInfoMessage] {
  uniqueIdentifier: "40DDAE42-6F4E-460D-BB89-A0201997A701"
  name: "HomePod - Left"
  localizedModelName: "HomePod"
  systemBuildVersion: "21J5303f"
  applicationBundleIdentifier: "com.apple.mediaremoted"
  protocolVersion: 1
  lastSupportedMessageType: 131
  supportsSystemPairing: true
  allowsPairing: true
  systemMediaApplication: "com.apple.Music"
  supportsACL: true
  supportsSharedQueue: true
  sharedQueueVersion: 3
  deviceUID: "40DDAE42-6F4E-460D-BB89-A0201997A701"
  managedConfigDeviceID: "ac:bc:b5:d1:84:15"
  deviceClass: Accessory
  logicalDeviceCount: 0
  isProxyGroupPlayer: false
  tightSyncUID: "9E83BE0F-F769-529D-9801-69A8C8CB87F9"
  groupUID: "87D1C1DD-5D67-5FB6-9580-80499C159BFF"
  groupName: "Living Room"
  isGroupLeader: false
  isAirplayActive: true
  systemPodcastApplication: "com.apple.podcasts"
  senderDefaultGroupUID: "87D1C1DD-5D67-5FB6-9580-80499C159BFF"
  airplayReceivers: "tvairplayd"
  clusterID: "87D1C1DD-5D67-5FB6-9580-80499C159BFF"
  clusterLeaderID: "70CD1314-8433-477F-8C73-055AF0C2725E"
  clusterType: 2
  isClusterAware: true
  modelID: "AudioAccessory6,1"
  supportsMultiplayer: true
  routingContextID: "CB9CD9FD-5007-4C86-BBE4-9AA4D15AB3C1"
  airPlayGroupID: "87D1C1DD-5D67-5FB6-9580-80499C159BFF"
  systemBooksApplication: "com.apple.TVBooks"
  clusteredDevices {
    name: "HomePod - Left"
    localizedModelName: "AudioAccessory6,1"
    lastSupportedMessageType: 0
    deviceUID: "40DDAE42-6F4E-460D-BB89-A0201997A701"
    clusterType: 0
    isClusterAware: false
    modelID: "AudioAccessory6,1"
    lastKnownClusterType: 0
    49: 0
  }
  parentGroupContainsDiscoverableGroupLeader: 1
  groupContainsDiscoverableGroupLeader: 1
  lastKnownClusterType: 2
  49: 1
  50: "HomePod - Left"
}
uniqueIdentifier: "1CDA2055-F234-4AE2-87B9-37D04B21B889"
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=2000755a9a63af38fe631365f62ed56b26a82977a0f4dd01339094d6c4f62c734ef5c79cea121b895c2395d5dbfe923d5604)
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 15 to <bound method MrpPower._update_power_state of <pyatv.protocols.mrp.MrpPower object at 0x7fbd46966e90>>
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 15 to <bound method MrpAudio._update_output_devices of <pyatv.protocols.mrp.MrpAudio object at 0x7fbd469657d0>>
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=930021cd59df97909cdd63798f4b8cc153ed829f4c1bc1b73c714e8e62f0695e95d02bd850b8f44ab470d1b3c3043a1be12f68e07251e3a92655100ff5258a6fe1cb67bd9288b13dfe99a77fa163cc898a40078697b73b3229ca941fadbc62f10f4b8bf0d05291ca1fd96c74e3a99223e52a8177f497a5b3adcfa4bcc5cbd71fe6170343ff48dfa9235700e36acfb10cdc863c0898ef55ac7ec900c6914e9d28e29657ba32)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: >> Send: Protobuf: type: SET_CONNECTION_STATE_MESSAGE
errorCode: NoError
[setConnectionStateMessage] {
  state: Connected
}
uniqueIdentifier: "34E2F07D-FDC0-439D-BE01-45852FC4AE53"
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=c1009fac6b6bfb34716e06650b2a7715506f5effaf8a5e17579db380e2275ecdec47ecb36a5783cf74fdeed693257089df428d7f8ef0cde22c2afd24c0d67b1430af8c4e44b377d813fa969eb63e43bf66ee1c4492a27ffac62293159096066d8caf019cc1cf05027b1aae6a50c3b2ed17138d6b3d35869396af211bc997bd14252e6382b422081795e7466669f23d2fefc1200596ccaf041400f6ee0d4fb0588d98615b26ae8c2bf7ac61c5a849284eb3bff87065f19f0b345f23d8c8b7694cab938736c876babd9190db61ca2cb5946d9f5c)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: >> Send: Protobuf: type: CLIENT_UPDATES_CONFIG_MESSAGE
identifier: "F92E479C-E56B-44CF-8B62-BA70784A412D"
errorCode: NoError
[clientUpdatesConfigMessage] {
  artworkUpdates: true
  nowPlayingUpdates: false
  volumeUpdates: true
  keyboardUpdates: true
  outputDeviceUpdates: true
}
uniqueIdentifier: "0FDF9B81-6D87-4EB1-AB7D-1614D7E403D2"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.OutputDevices to <bound method FacadeAudio._output_devices_changed of <pyatv.core.facade.FacadeAudio object at 0x7fbd46e3d3d0>>
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=2000a1d3ad3a1e873141b44ef43f661547cdb9bd2b83dc512de2a6bd3a8c8bae9c5259f809e0b617f5b358a41453d43bde292a00a2a6e5eccdfc4939c90971ee83055281cfdf81367eaaf917fec8c63af8da1976a232ca7426e22024be5c68bdb159769f5286dda5208ba0b6f77d2000d830b938922b87199c31199fe71a54213d88b34256d9835b2bfe7bf47f170c924c797c82de79980825d3472b9aa9f06d2a0090a3b0fff3e2b6219e9041a36762bdeb7d454775297e5084c0afe716818238625b282d12793ed8d0875120661137cfcc89ac44f830f1eddc30c9)
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=20003d627c3f56c806cb004cb33e2442425556ee681216a61a8cb7fcab28f9f4461eb15d5a68d2e5ec9fa666cdb622fda77c)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.channels]: Not enough data on data channel (has 32, expects 4313)
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=b9104dc79591b98d0cdc10f5dc022f03ad3954b7be69feea330da05386f656432213d68b9f6a01871b8424a9a822403b443efe53b125e6ffc9145a6d300868df269109c16bf1a6fdd35c9ef110de9fc7961e7b796176c8ab9fc696b9945ad9b002b71e47c9049827e7938ba7390396d9ae3cfc588345e1c152246f483c9c7a305634c310e918a872ca68f3934a077dd98dc6592dc0b7ae1badbd81683767d772e5dd89d2678a6b795da847aae96de30f1c1b26605ae0f2c52b1624820e0a1dcfa0a2710de2946b63c56898822f32f1b4ab17bee1db4ee9ce7d8e98741ad13939c8b931f333876f74b86ae9d56beac8d06c8c38f6f101cf6e72aecf916ad4c...)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_OUTPUT_DEVICE_MESSAGE
[updateOutputDeviceMessage] {
}
uniqueIdentifier: "AD9E5D9A-FE00-45C4-8FDD-C2010D0E357B"
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: VOLUME_CONTROL_AVAILABILITY_MESSAGE
[volumeControlAvailabilityMessage] {
  volumeControlAvailable: true
  volumeCapabilities: Absolute
}
uniqueIdentifier: "449952B6-AD2B-45CD-8BBD-F0F848AFBB22"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 17 to <bound method MrpAudio._volume_control_availability of <pyatv.protocols.mrp.MrpAudio object at 0x7fbd469657d0>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE
[setDefaultSupportedCommandsMessage] {
  supportedCommands {
    supportedCommands {
      command: PreloadedPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.5.opack:subscription:cloudLibrary:668f2d3"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:668f2d3"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:668f2d3"
    }
    supportedCommands {
      command: SetPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.5.opack:subscription:cloudLibrary:668f2d3"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:668f2d3"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:668f2d3"
    }
    supportedCommands {
      command: PrepareForSetQueue
      enabled: true
    }
    supportedCommands {
      command: SetPlaybackQueue
      enabled: true
      supportedPlaybackQueueTypes: 7
      supportedPlaybackQueueTypes: 3
      supportedPlaybackQueueTypes: 6
      supportedPlaybackQueueTypes: 2
      supportedPlaybackQueueTypes: 5
      supportedPlaybackQueueTypes: 1
      supportedPlaybackQueueTypes: 8
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.radio"
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.tracklist"
      supportedCustomQueueIdentifiers: "com.apple.MediaPlaybackCore.playbackContextArchive-v1.opack"
      supportedCustomQueueIdentifiers: "com.apple.mediaplayer.playbackcontext"
    }
    supportedCommands {
      command: Play
      enabled: true
    }
  }
  displayID: "com.apple.Music"
  playbackQueueCapabilities {
  }
  playerPath {
    client {
      bundleIdentifier: "com.apple.Music"
    }
  }
}
uniqueIdentifier: "B0C26853-420D-453F-961D-6D9712D65FBD"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 72 to <bound method PlayerStateManager._handle_set_default_supported_commands of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fbd46e3d590>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE
[setDefaultSupportedCommandsMessage] {
  supportedCommands {
    supportedCommands {
      command: PreloadedPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.podcasts.MTPlaybackQueueController.GenericQueue"
      supportedPlaybackSessionTypes: "com.apple.podcasts.transportablePlaybackSession"
    }
    supportedCommands {
      command: SetPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.podcasts.MTPlaybackQueueController.GenericQueue"
      supportedPlaybackSessionTypes: "com.apple.podcasts.transportablePlaybackSession"
    }
    supportedCommands {
      command: PrepareForSetQueue
      enabled: true
    }
    supportedCommands {
      command: SetPlaybackQueue
      enabled: true
      supportedPlaybackQueueTypes: 7
      supportedPlaybackQueueTypes: 3
      supportedPlaybackQueueTypes: 6
      supportedPlaybackQueueTypes: 2
      supportedPlaybackQueueTypes: 5
      supportedPlaybackQueueTypes: 1
      supportedPlaybackQueueTypes: 8
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.radio"
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.tracklist"
      supportedCustomQueueIdentifiers: "com.apple.MediaPlaybackCore.playbackContextArchive-v1.opack"
      supportedCustomQueueIdentifiers: "com.apple.mediaplayer.playbackcontext"
    }
    supportedCommands {
      command: Play
      enabled: true
    }
  }
  displayID: "com.apple.podcasts"
  playbackQueueCapabilities {
  }
  playerPath {
    client {
      bundleIdentifier: "com.apple.podcasts"
    }
  }
}
uniqueIdentifier: "043D65BE-3B51-4A87-99FF-C53E238AFD01"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 72 to <bound method PlayerStateManager._handle_set_default_supported_commands of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fbd46e3d590>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: ORIGIN_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "4B5D8387-160C-4BBE-A977-F187DC3AB3ED"
[originClientPropertiesMessage] {
  lastPlayingTimestamp: 712505575.960218
}
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_NOW_PLAYING_CLIENT_MESSAGE
[setNowPlayingClientMessage] {
  client {
    processIdentifier: 71
    bundleIdentifier: "com.apple.tvairplayd"
  }
}
uniqueIdentifier: "B5724802-0179-4067-A21A-C60186B1D372"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 46 to <bound method PlayerStateManager._handle_set_now_playing_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fbd46e3d590>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 71
    bundleIdentifier: "com.apple.tvairplayd"
    processUserIdentifier: 501
    displayName: "Music"
    bundleIdentifierHierarchys: "com.apple.TVMusic"
  }
}
uniqueIdentifier: "27DD40C0-77E6-4936-81F7-9098443AAC2F"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fbd46e3d590>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  supportedCommands {
    supportedCommands {
      enabled: true
      1: 25020
    }
    supportedCommands {
      enabled: true
      1: 25010
    }
    supportedCommands {
      1: 142
      31: 0
      32: 1108082688
      33: 1120403456
      34: 1084227584
      35: 0
    }
    supportedCommands {
      command: ChangeQueueEndAction
      enabled: true
      currentQueueEndAction: AutoPlay
      supportedEndQueueActions: Reset
      supportedEndQueueActions: AutoPlay
    }
    supportedCommands {
      command: Reshuffle
      enabled: true
    }
    supportedCommands {
      command: SetPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.5.opack:subscription:cloudLibrary:668f2d3"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:668f2d3"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:668f2d3"
      currentPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.5.opack:subscription:cloudLibrary:668f2d3"
      currentPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.5.opack:subscription:storeFront:143444"
      playbackSessionIdentifier: "ayYEE9F5I"
    }
    supportedCommands {
      command: PrepareForSetQueue
      enabled: true
    }
    supportedCommands {
      command: PlayItemInPlaybackQueue
      enabled: true
    }
    supportedCommands {
      command: ReorderPlaybackQueue
      enabled: true
    }
    supportedCommands {
      command: RemoveFromPlaybackQueue
      enabled: true
    }
    supportedCommands {
      command: InsertIntoPlaybackQueue
      enabled: true
      supportedPlaybackQueueTypes: 7
      supportedPlaybackQueueTypes: 3
      supportedPlaybackQueueTypes: 6
      supportedPlaybackQueueTypes: 2
      supportedPlaybackQueueTypes: 5
      supportedPlaybackQueueTypes: 1
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.tracklist"
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.radio"
      supportedCustomQueueIdentifiers: "com.apple.mediaplayer.playbackcontext"
      supportedInsertionPositions: 0
      supportedInsertionPositions: 2
      supportedInsertionPositions: 3
    }
    supportedCommands {
      command: SetPlaybackQueue
      enabled: true
      supportedPlaybackQueueTypes: 7
      supportedPlaybackQueueTypes: 3
      supportedPlaybackQueueTypes: 6
      supportedPlaybackQueueTypes: 2
      supportedPlaybackQueueTypes: 5
      supportedPlaybackQueueTypes: 1
      supportedPlaybackQueueTypes: 8
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.sharedlistening"
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.radio"
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.tracklist"
      supportedCustomQueueIdentifiers: "com.apple.MediaPlaybackCore.playbackContextArchive-v1.opack"
      supportedCustomQueueIdentifiers: "com.apple.mediaplayer.playbackcontext"
    }
    supportedCommands {
      command: CreateRadioStation
      enabled: true
    }
    supportedCommands {
      command: ChangeShuffleMode
      enabled: true
      shuffleMode: Off
    }
    supportedCommands {
      command: ChangeRepeatMode
      enabled: true
      repeatMode: Off
    }
    supportedCommands {
      command: SeekToPlaybackPosition
      enabled: true
      canScrub: 1
    }
    supportedCommands {
      command: DislikeTrack
      enabled: true
      active: false
      localizedShortTitle: "Never Play"
      presentationStyle: 2
    }
    supportedCommands {
      command: LikeTrack
      enabled: true
      active: false
      localizedShortTitle: "Like"
      presentationStyle: 2
    }
    supportedCommands {
      command: RateTrack
      enabled: true
      minimumRating: 0.0
      maximumRating: 0.0
    }
    supportedCommands {
      command: ChangePlaybackRate
    }
    supportedCommands {
      command: SkipBackward
      preferredIntervals: 30.0
    }
    supportedCommands {
      command: SkipForward
      preferredIntervals: 30.0
    }
    supportedCommands {
      command: BeginRewind
      enabled: true
    }
    supportedCommands {
      command: EndRewind
      enabled: true
    }
    supportedCommands {
      command: BeginFastForward
      enabled: true
    }
    supportedCommands {
      command: EndFastForward
      enabled: true
    }
    supportedCommands {
      command: AdvanceRepeatMode
      enabled: true
      repeatMode: Off
    }
    supportedCommands {
      command: AdvanceShuffleMode
      enabled: true
      shuffleMode: Off
    }
    supportedCommands {
      command: PreviousTrack
      enabled: true
    }
    supportedCommands {
      command: NextTrack
      enabled: true
    }
    supportedCommands {
      command: Stop
      enabled: true
    }
    supportedCommands {
      command: TogglePlayPause
      enabled: true
    }
    supportedCommands {
      command: Pause
      enabled: true
    }
    supportedCommands {
      command: Play
      enabled: true
    }
  }
  displayName: "Music"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "HomePod"
      identifier: 1280262988
    }
    client {
      processIdentifier: 71
      bundleIdentifier: "com.apple.tvairplayd"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      6: 0
    }
  }
  playbackStateTimestamp: 712505576.253446
}
uniqueIdentifier: "8493992D-A0DE-4086-9846-04BCC1EC59D6"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fbd46e3d590>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "E47DBA1A-D141-4EC8-8D2B-E012CEF8C434"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "HomePod"
      identifier: 1280262988
      5: 1
    }
    client {
      processIdentifier: 71
      bundleIdentifier: "com.apple.tvairplayd"
      processUserIdentifier: 501
      displayName: "Music"
      bundleIdentifierHierarchys: "com.apple.TVMusic"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      6: 360448
    }
  }
  lastPlayingTimestamp: 712505575.95915
}
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
uniqueIdentifier: "55194AD9-5E60-4327-A9D6-15DC41F6ECBD"
62 {
  1 {
    1 {
      2 {
        9: 111
        13: 1685016677
      }
      3: 1280262988
    }
    2 {
      1: 71
      2: "com.apple.tvairplayd"
    }
    3 {
      1: "MediaRemote-DefaultPlayer"
      2: "Default Player"
      6: 360448
    }
  }
}
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 94
    bundleIdentifier: "com.apple.SoundBoard"
    processUserIdentifier: 501
    displayName: "SoundBoard"
  }
}
uniqueIdentifier: "91C895CF-1292-45E6-926F-381F925A812E"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fbd46e3d590>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "SoundBoard"
  playbackState: Unknown
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "HomePod"
      identifier: 1280262988
    }
    client {
      processIdentifier: 94
      bundleIdentifier: "com.apple.SoundBoard"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      6: 0
    }
  }
  playbackStateTimestamp: 712505846.192259
}
uniqueIdentifier: "A48FDB38-A27A-411D-A287-BB26410FBCD5"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fbd46e3d590>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "74DBBE08-548F-470F-AFCA-D35D1D543775"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "HomePod"
      identifier: 1280262988
      5: 1
    }
    client {
      processIdentifier: 94
      bundleIdentifier: "com.apple.SoundBoard"
      processUserIdentifier: 501
      displayName: "SoundBoard"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      6: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  playbackState: Unknown
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "HomePod"
      identifier: 1280262988
    }
    client {
      processIdentifier: 107
      bundleIdentifier: "com.apple.internal.soundautoconfigservice"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      6: 0
    }
  }
  playbackStateTimestamp: 712505846.192399
}
uniqueIdentifier: "82BFF1F2-79B5-4909-99B0-DAA770A98CC6"
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fbd46e3d590>>
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "240FE966-AC2C-4E3D-B486-8587352EC3DD"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "HomePod"
      identifier: 1280262988
      5: 1
    }
    client {
      processIdentifier: 107
      bundleIdentifier: "com.apple.internal.soundautoconfigservice"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      6: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UNKNOWN_MESSAGE
identifier: "F92E479C-E56B-44CF-8B62-BA70784A412D"
uniqueIdentifier: "6E240971-960E-4535-BD4C-86CEF06BDEAA"
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=2000340f4a27e74988e299640b5f350fbf06e47ac3eb6decf7b08d3944a05ced933ce389facd6e6ffa6334e80fea08bd934a)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.mrp]: Volume control availability changed to True
2023-07-31 15:17:26 DEBUG [pyatv.protocols.mrp.player_state]: Active client is now com.apple.tvairplayd
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=b400a28194ae3c59bb70950ed2c8f0731f5d9238ed4915e3b3424bc8ed7e5d339038184df47bdd669f07e351df53b35cf94a9c3025ec19d4796001a77b928fbfb65ada3e2acd565afd9ad664c28b27c3188b52a275a7fa6a5a0afa589237878807395e024962e8b90459cf9c2c8aaba438ba18b45d99fa3265224e9c601d5ae189a85e23a2e50739ccbef85b5fd7d49b55eba906b88d16f0ec4ce3efc3ad739c39cb37a90ab576d717e97001f4e9bd2472a2828e337989b68de7df2bfe15c21de3084a8bd45e)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: >> Send: Protobuf: type: GET_KEYBOARD_SESSION_MESSAGE
identifier: "D60D1EAE-B0FA-4939-B27A-8EBB6413F0F4"
errorCode: NoError
uniqueIdentifier: "1B376D56-7F78-4BAC-9AFE-28D81AC032AB"
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=20002c193fb4ada8d0cb5347b5b12b8419f2cfd9a5a7aed4394beea2db968aa2629b55e56864eb45b4ef5850192d35b55a452a003620ab87e3cd6ce3c1ce0812f4b4d37f67e4c6460daabe6f8a8babf25e46764d72b75f8619a27e5ca6ad92fa247f4baf64001d12bc689e260f57)
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Received data (Data=2000b94085212ef564a28970bb672ac8230221c7209c36e283777f2fb01bb7e4dc61bb06b912f52857553dea6a9121af630fa90016a8bc27a8fef9b4b1d5d5eb365ee86ca8efa217fa47549df14b0d6b512079b71a7c2b88af8a582e4656fd67f05c7eb675febe0825b317c5a40c7a1e2e87de5a44e05a1e60a6968e22bf7abf71a79257e99e643b865d2064a18b0bd373429b87f4a7904f03a9ac1d2e21d363b97bf900269dc0dd03847d123f8f8c17df0ca5653fbcfe0e94cddac1fa888c18a16e4dbe9dfd85361b3b11b724789efa34fa1a52e53bf6dcc0d53772b284c9e9a96504306daa9165f038e4efea)
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: KEYBOARD_MESSAGE
identifier: "D60D1EAE-B0FA-4939-B27A-8EBB6413F0F4"
[keyboardMessage] {
  state: Unknown
  attributes {
    inputTraits {
      autocapitalizationType: None
      keyboardType: Default
      returnKeyType: Default
      enablesReturnKeyAutomatically: false
      secureTextEntry: false
      validTextRangeLocation: 0
      validTextRangeLength: 0
    }
  }
}
uniqueIdentifier: "EC0E5263-1FC4-4286-B541-3BE9075E4315"
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=2000984069615e220ad100c3fa3399a3a27a2952648a27dede12250a93710d7058e2ade7e6174fbe2cc78d6e3f0d44966ddb)
2023-07-31 15:17:26 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.MRP
2023-07-31 15:17:26 DEBUG [pyatv.core.facade]: Protocol Protocol.MRP already set up, ignoring
2023-07-31 15:17:26 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP
2023-07-31 15:17:26 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP
2023-07-31 15:17:26 DEBUG [pyatv.core.facade]: Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Connected to 10.0.1.247
2023-07-31 15:17:26 DEBUG [pyatv.protocols.raop]: Using AirPlay version AirPlayMajorVersion.AirPlayV2
2023-07-31 15:17:26 DEBUG [pyatv.protocols.raop.stream_client]: Initializing RTSP with encryption=21, metadata=7
2023-07-31 15:17:26 DEBUG [pyatv.protocols.raop.stream_client]: Update play settings to 44100/2/16bit
2023-07-31 15:17:26 DEBUG [pyatv.protocols.raop.stream_client]: Local ports: control=44640, timing=58454
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'GET /info RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 0\r\nDACP-ID: 25EC269952B476E9\r\nActive-Remote: 3795942104\r\nClient-Instance: 25EC269952B476E9\r\n\r\n'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 31 Jul 2023 14:17:26 GMT\r\nContent-Length: 1270\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/710.69.1\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x19\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b;<BHFJKLMNOBQRSZ[\\]^_`aSpsi_\x10\x1dsupportedAudioFormatsExtendedRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBodyTname_\x10\x0fprotocolVersion_\x10\x11volumeControlType]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesEx_\x10\x10supportedFormats]sourceVersionUmodelRpkZmacAddress^osBuildVersion_\x10\x15receiverHDRCapability_\x10\x14deviceEnclosureColorXfeatures_\x10$40DDAE42-6F4E-460D-BB89-A0201997A701\xd1\x1c\x1d\\bufferStream\xaf\x10\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:\x104\x10H\x10:\x10I\x10=\x10!\x10(\x105\x106\x10<\x108\x10J\x103\x10\x17\x10G\x10\x13\x107\x109\x10\x16\x101\x10\'\x102\x10\x15\x10F\x10?\x10"\x10#\x10K\x10>\x10\x01\xd5=>?@ABBBBF_\x10\x12supportsOfflineHLS_\x10\x1dsupportsUIForAudioOnlyContent_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10!supportsAirPlayVideoWithSharePlay\x08\x08\x08\x08\t\x08\x12\x00\x0b\xcc\x04\t^HomePod - LeftS1.1\x10\x03_\x10\x0f10.0.0.90:36108_\x10\x11AC:BC:B5:CD:85:E5_\x10$9880a56a-262c-413f-b8b7-6e431085a33e\x08#\xc0\x1f\x80\x00`\x00\x00\x00_\x10\x0fAMp/StBLNbwQoQY\xd4TUV\x1cWXXY_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\x13\x00\x00\x04\x00\x02\x00\x00\x00\x12\x01D\x08\x00\x13\xf7\xfe\x01\x8e\x00\xe8\x00\x00X710.69.1_\x10\x11AudioAccessory6,1O\x10 \x85fJ\xb3\x93\xba\xba\x7fR\xdd\xed\xe6\xb8\xef\xd9\xae\xda\xe1\xed\x1f4\xaep.\xdd4\x84\xbe8bLs_\x10\x11E2:DA:26:C9:E6:D3X21J5303fT4k60Q1\x13\xbc5K\xd0J\x7f\xca\x00\x00\x08\x00=\x00A\x00a\x00d\x00{\x00\x93\x00\x9f\x00\xba\x00\xbf\x00\xd1\x00\xe5\x00\xf3\x00\xfc\x00\xff\x01\x0e\x01\x1c\x01\'\x01:\x01H\x01N\x01Q\x01\\\x01k\x01\x83\x01\x9a\x01\xa3\x01\xca\x01\xcd\x01\xda\x01\xfa\x01\xfc\x01\xfe\x02\x00\x02\x02\x02\x04\x02\x06\x02\x08\x02\n\x02\x0c\x02\x0e\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1a\x02\x1c\x02\x1e\x02 \x02"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x02A\x02V\x02v\x02\x8e\x02\xa6\x02\xca\x02\xcb\x02\xcc\x02\xcd\x02\xce\x02\xcf\x02\xd0\x02\xd5\x02\xd6\x02\xe5\x02\xe9\x02\xeb\x02\xfd\x03\x11\x038\x039\x03B\x03T\x03]\x03u\x03\x82\x03\x8e\x03\x97\x03\x9c\x03\xa5\x03\xae\x03\xc2\x03\xe5\x03\xf9\x04\x02\x04\x07\x04\t\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x12'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 31 Jul 2023 14:17:26 GMT', 'Content-Length': '1270', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/710.69.1', 'CSeq': '0'}, body=b'bplist00\xdf\x10\x19\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b;<BHFJKLMNOBQRSZ[\\]^_`aSpsi_\x10\x1dsupportedAudioFormatsExtendedRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBodyTname_\x10\x0fprotocolVersion_\x10\x11volumeControlType]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesEx_\x10\x10supportedFormats]sourceVersionUmodelRpkZmacAddress^osBuildVersion_\x10\x15receiverHDRCapability_\x10\x14deviceEnclosureColorXfeatures_\x10$40DDAE42-6F4E-460D-BB89-A0201997A701\xd1\x1c\x1d\\bufferStream\xaf\x10\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:\x104\x10H\x10:\x10I\x10=\x10!\x10(\x105\x106\x10<\x108\x10J\x103\x10\x17\x10G\x10\x13\x107\x109\x10\x16\x101\x10\'\x102\x10\x15\x10F\x10?\x10"\x10#\x10K\x10>\x10\x01\xd5=>?@ABBBBF_\x10\x12supportsOfflineHLS_\x10\x1dsupportsUIForAudioOnlyContent_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10!supportsAirPlayVideoWithSharePlay\x08\x08\x08\x08\t\x08\x12\x00\x0b\xcc\x04\t^HomePod - LeftS1.1\x10\x03_\x10\x0f10.0.0.90:36108_\x10\x11AC:BC:B5:CD:85:E5_\x10$9880a56a-262c-413f-b8b7-6e431085a33e\x08#\xc0\x1f\x80\x00`\x00\x00\x00_\x10\x0fAMp/StBLNbwQoQY\xd4TUV\x1cWXXY_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\x13\x00\x00\x04\x00\x02\x00\x00\x00\x12\x01D\x08\x00\x13\xf7\xfe\x01\x8e\x00\xe8\x00\x00X710.69.1_\x10\x11AudioAccessory6,1O\x10 \x85fJ\xb3\x93\xba\xba\x7fR\xdd\xed\xe6\xb8\xef\xd9\xae\xda\xe1\xed\x1f4\xaep.\xdd4\x84\xbe8bLs_\x10\x11E2:DA:26:C9:E6:D3X21J5303fT4k60Q1\x13\xbc5K\xd0J\x7f\xca\x00\x00\x08\x00=\x00A\x00a\x00d\x00{\x00\x93\x00\x9f\x00\xba\x00\xbf\x00\xd1\x00\xe5\x00\xf3\x00\xfc\x00\xff\x01\x0e\x01\x1c\x01\'\x01:\x01H\x01N\x01Q\x01\\\x01k\x01\x83\x01\x9a\x01\xa3\x01\xca\x01\xcd\x01\xda\x01\xfa\x01\xfc\x01\xfe\x02\x00\x02\x02\x02\x04\x02\x06\x02\x08\x02\n\x02\x0c\x02\x0e\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1a\x02\x1c\x02\x1e\x02 \x02"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x02A\x02V\x02v\x02\x8e\x02\xa6\x02\xca\x02\xcb\x02\xcc\x02\xcd\x02\xce\x02\xcf\x02\xd0\x02\xd5\x02\xd6\x02\xe5\x02\xe9\x02\xeb\x02\xfd\x03\x11\x038\x039\x03B\x03T\x03]\x03u\x03\x82\x03\x8e\x03\x97\x03\x9c\x03\xa5\x03\xae\x03\xc2\x03\xe5\x03\xf9\x04\x02\x04\x07\x04\t\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x12'):
2023-07-31 15:17:26 DEBUG [pyatv.protocols.raop.stream_client]: Updated info parameters to: {'psi': '40DDAE42-6F4E-460D-BB89-A0201997A701', 'supportedAudioFormatsExtended': {'bufferStream': [52, 72, 58, 73, 61, 33, 40, 53, 54, 60, 56, 74, 51, 23, 71, 19, 55, 57, 22, 49, 39, 50, 21, 70, 63, 34, 35, 75, 62]}, 'vv': 1, 'playbackCapabilities': {'supportsOfflineHLS': False, 'supportsUIForAudioOnlyContent': False, 'supportsInterstitials': False, 'supportsFPSSecureStop': False, 'supportsAirPlayVideoWithSharePlay': True}, 'canRecordScreenStream': False, 'statusFlags': 773124, 'keepAliveSendStatsAsBody': True, 'name': 'HomePod - Left', 'protocolVersion': '1.1', 'volumeControlType': 3, 'senderAddress': '10.0.0.90:36108', 'deviceID': 'AC:BC:B5:CD:85:E5', 'pi': '9880a56a-262c-413f-b8b7-6e431085a33e', 'screenDemoMode': False, 'initialVolume': -7.875001430511475, 'featuresEx': 'AMp/StBLNbwQoQY', 'supportedFormats': {'lowLatencyAudioStream': 4398080065536, 'screenStream': 21235712, 'audioStream': 21235712, 'bufferStream': -577021992844656640}, 'sourceVersion': '710.69.1', 'model': 'AudioAccessory6,1', 'pk': b'\x85fJ\xb3\x93\xba\xba\x7fR\xdd\xed\xe6\xb8\xef\xd9\xae\xda\xe1\xed\x1f4\xaep.\xdd4\x84\xbe8bLs', 'macAddress': 'E2:DA:26:C9:E6:D3', 'osBuildVersion': '21J5303f', 'receiverHDRCapability': '4k60', 'deviceEnclosureColor': '1', 'features': -4884914862838265344}
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /auth-setup HTTP/1.1\r\nUser-Agent: AirPlay/540.31\r\nContent-Type: application/octet-stream\r\nContent-Length: 33\r\nCSeq: 1\r\nDACP-ID: 25EC269952B476E9\r\nActive-Remote: 3795942104\r\nClient-Instance: 25EC269952B476E9\r\n\r\n\x01Y\x02\xed\xe9\rN\xf2\xbdL\xb6\x8ac0\x03\x82\x07\xa9M\xbdP\xd8\xaaF[]\x8c\x01*\x0c~\x1dN'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 404 Not Found\r\nContent-Length: 0\r\nServer: AirTunes/710.69.1\r\nCSeq: 1\r\n\r\n'
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=404, message='Not Found', headers={'Content-Length': '0', 'Server': 'AirTunes/710.69.1', 'CSeq': '1'}, body=''):
2023-07-31 15:17:26 DEBUG [pyatv.core.facade]: Release (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: Closing connection
2023-07-31 15:17:26 DEBUG [pyatv.scripts.atvremote]: Waiting for 1 remaining tasks
2023-07-31 15:17:26 DEBUG [pyatv.protocols.raop.stream_client]: Control connection lost (None)
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Connection closed
2023-07-31 15:17:26 DEBUG [pyatv.protocols.airplay.mrp_connection]: Disconnected from device: None
2023-07-31 15:17:26 DEBUG [pyatv.scripts.atvremote]: Connection was closed properly
2023-07-31 15:17:26 DEBUG [pyatv.core.protocol]: Stopping heartbeat loop at 1 (AirPlay:10.0.1.247)
2023-07-31 15:17:26 DEBUG [pyatv.support.http]: Connection closed
2023-07-31 15:17:26 DEBUG [pyatv.auth.hap_channel]: Connection was lost to remote
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 762, in _run_application
    return await cli_handler(loop)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 535, in cli_handler
    return await _handle_commands(args, config, loop)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 650, in _handle_commands
    ret = await _handle_device_command(args, cmd, atv, loop)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 700, in _handle_device_command
    return await _exec_command(atv.stream, cmd, True, *cmd_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/scripts/atvremote.py", line 729, in _exec_command
    value = await tmp(*args)
            ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/core/facade.py", line 370, in stream_file
    await self.relay("stream_file")(
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/__init__.py", line 353, in stream_file
    await client.initialize(self.core.service.properties)
  File "/usr/local/lib/python3.11/dist-packages/pyatv/protocols/raop/stream_client.py", line 372, in initialize
    await self.rtsp.auth_setup()
  File "/usr/local/lib/python3.11/dist-packages/pyatv/support/rtsp.py", line 117, in auth_setup
    return await self.exchange(
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/support/rtsp.py", line 293, in exchange
    resp = await self.connection.send_and_receive(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/pyatv/support/http.py", line 473, in send_and_receive
    raise exceptions.HttpError(
pyatv.exceptions.HttpError: HTTP/1.1 method POST failed with code 404: Not Found

>>> An error occurred, full stack trace above
darkner258 commented 1 year ago

Hey guys, don't wanna be a pain, but is there a chance for a fix soon? I really miss playing radio throughout my apartment :(

Maztah commented 1 year ago

@postlund , I also have a Belkin Airplay2 adapter and the same problem. I found out yesterday when I specify the service features playback works without error. And I also listen to music on the device immediately:

atvremote -I [Ident] stream_file=http://mp3.ffh.de/radioffh/hqlivestream.mp3 --service-properties :features=0x4A7FCA00,0xBC354BD0 --address 192.168.188.25 --port 7000 --protocol airplay --manual Again the pure call did not work: atvremote -s 192.168.188-25 stream_file=https://streams.radiopsr.de/psr-live/mp3-192/ In this case I also noticed that without specifying the service features the playback also works but you only hear music when you unplug the line out once and plug it back in. It seems to me that the adapter plays without specifying the service features on the wrong output?

Scan Results
Name: SOUNDFORM CONNECT
Model/SW: SOUNDFORM AirPlay2 Adapter, Unknown OS
Address: 192.168.188.25
MAC:
Deep Sleep: False
Identifiers:
- !
Services:
- Protocol: AirPlay, Port: 7000, Credentials: None, Requires Password: False, Password: None, Pairing: NotNeeded
- Protocol: RAOP, Port: 7000, Credentials: None, Requires Password: False, Password: None, Pairing: NotNeeded
postlund commented 1 year ago

@Maztah that's an interesting observation as that should not change anything, assuming you set the same properties as announced by the device. Can you run both cases with debug log enabled and send me the logs?

Maztah commented 1 year ago

sure, i can do that. tomorrow evening i'll be back home.

Maztah commented 1 year ago

@postlund Ok here are the debug outputs. I hope it helps. I noticed that the device reports other features without manual configuration ('features': '0x445F8A00,0x4001C340').

In the first run I disconnected and reconnected the lineout cable during playback. Then I was hearing music. But I don't know if you can see that in the debug log :)

First try (not working)

homeassistant:/config# atvremote -s 192.168.188.25 stream_file=http://mp3.ffh.de/radioffh/hqlivestream.mp3 --debug 2023-08-27 22:48:34 DEBUG [pyatv.scripts]: Running with pyatv 0.13.4 2023-08-27 22:48:34 DEBUG [pyatv.support.knock]: Knocking at port 3689 on 192.168.188.25 2023-08-27 22:48:34 DEBUG [pyatv.support.knock]: Knocking at port 7000 on 192.168.188.25 2023-08-27 22:48:34 DEBUG [pyatv.support.knock]: Knocking at port 49152 on 192.168.188.25 2023-08-27 22:48:34 DEBUG [pyatv.support.knock]: Knocking at port 32498 on 192.168.188.25 2023-08-27 22:48:35 DEBUG [pyatv.core.scan]: Auto-discovered SOUNDFORM CONNECT at 192.168.188.25:7000 via Protocol.AirPlay ({'acl': '0', 'deviceid': '48:6B:54:7F:12:47', 'features': '0x445F8A00,0x4001C340', 'rsf': '0x0', 'fv': 'p20.4.6.333053', 'flags': '0x404', 'model': 'SOUNDFORM AirPlay2 Adapter', 'manufacturer': 'Belkin International Inc.', 'serialnumber': 'FF9700101845C51603B2FA15', 'protovers': '1.1', 'srcvers': '366.0', 'pi': '48:6B:54:7F:12:47', 'gid': '65A1B424-32C2-4AD2-A476-40D0B0E79377', 'gcgl': '0', 'pk': '0a705c4bc5bc147b65ecff3e524ab68415c095a9984de5bb9596149ec9bc15dc'}) 2023-08-27 22:48:35 DEBUG [pyatv.core.scan]: Auto-discovered 486B547F1247@SOUNDFORM CONNECT at 192.168.188.25:7000 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0,4', 'ft': '0x445F8A00,0x4001C340', 'fv': 'p20.4.6.333053', 'md': '0,1,2', 'am': 'SOUNDFORM AirPlay2 Adapter', 'sf': '0x404', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': '0a705c4bc5bc147b65ecff3e524ab68415c095a9984de5bb9596149ec9bc15dc'}) 2023-08-27 22:48:35 INFO [pyatv.scripts.atvremote]: Auto-discovered SOUNDFORM CONNECT at 192.168.188.25 2023-08-27 22:48:35 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay 2023-08-27 22:48:35 DEBUG [pyatv.protocols.airplay]: Remote control not supported by device 2023-08-27 22:48:35 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP 2023-08-27 22:48:35 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay 2023-08-27 22:48:35 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay 2023-08-27 22:48:35 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP 2023-08-27 22:48:35 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP 2023-08-27 22:48:35 DEBUG [pyatv.core.facade]: Power management not supported by any protocols 2023-08-27 22:48:35 DEBUG [pyatv.core.facade]: Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Connected to 192.168.188.25 2023-08-27 22:48:35 DEBUG [pyatv.protocols.raop]: Using AirPlay version AirPlayMajorVersion.AirPlayV2 2023-08-27 22:48:35 DEBUG [pyatv.protocols.raop.stream_client]: Initializing RTSP with encryption=9, metadata=7 2023-08-27 22:48:35 DEBUG [pyatv.protocols.raop.stream_client]: Update play settings to 44100/2/16bit 2023-08-27 22:48:35 DEBUG [pyatv.protocols.raop.stream_client]: Local ports: control=41830, timing=42239 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'GET /info RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 0\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 601\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x13\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x19\x1c\x19\x1d\x15\x1e\x1f !"#SsdkRpi_\x10\x10firmwareRevisionVOSInfo\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x10hardwareRevision_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.5.0_\x10\x1148:6B:54:7F:12:47Z4.6.333053_\x10\x11Linux 4.9.118 ARM_\x10\x19Belkin International Inc.\t[Oct 20 2021_\x10\x1aSOUNDFORM AirPlay2 AdapterS1.0\x11\x04\x04T36.0_\x10\x11PTP-AirPlay;2.5.0S1.1U366.0\x13@\x01\xc3@D_\x8a\x00_\x10\x11SOUNDFORM CONNECT\x00\x08\x001\x005\x008\x00K\x00R\x00_\x00s\x00\x87\x00\x8d\x00\xa4\x00\xb7\x00\xd2\x00\xde\x00\xe7\x00\xed\x00\xf5\x01\x07\x01\x15\x01\x1e\x01#\x011\x01E\x01P\x01d\x01\x80\x01\x81\x01\x8d\x01\xaa\x01\xae\x01\xb1\x01\xb6\x01\xca\x01\xce\x01\xd4\x01\xdd\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xf1' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '601', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '0'}, body=b'bplist00\xdf\x10\x13\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x19\x1c\x19\x1d\x15\x1e\x1f !"#SsdkRpi_\x10\x10firmwareRevisionVOSInfo\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x10hardwareRevision_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.5.0_\x10\x1148:6B:54:7F:12:47Z4.6.333053_\x10\x11Linux 4.9.118 ARM_\x10\x19Belkin International Inc.\t[Oct 20 2021_\x10\x1aSOUNDFORM AirPlay2 AdapterS1.0\x11\x04\x04T36.0_\x10\x11PTP-AirPlay;2.5.0S1.1U366.0\x13@\x01\xc3@D_\x8a\x00_\x10\x11SOUNDFORM CONNECT\x00\x08\x001\x005\x008\x00K\x00R\x00_\x00s\x00\x87\x00\x8d\x00\xa4\x00\xb7\x00\xd2\x00\xde\x00\xe7\x00\xed\x00\xf5\x01\x07\x01\x15\x01\x1e\x01#\x011\x01E\x01P\x01d\x01\x80\x01\x81\x01\x8d\x01\xaa\x01\xae\x01\xb1\x01\xb6\x01\xca\x01\xce\x01\xd4\x01\xdd\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xf1'): 2023-08-27 22:48:35 DEBUG [pyatv.protocols.raop.stream_client]: Updated info parameters to: {'sdk': 'AirPlay;2.5.0', 'pi': '48:6B:54:7F:12:47', 'firmwareRevision': '4.6.333053', 'OSInfo': 'Linux 4.9.118 ARM', 'manufacturer': 'Belkin International Inc.', 'keepAliveLowPower': True, 'firmwareBuildDate': 'Oct 20 2021', 'model': 'SOUNDFORM AirPlay2 Adapter', 'nameIsFactoryDefault': True, 'hardwareRevision': '1.0', 'keepAliveSendStatsAsBody': True, 'statusFlags': 1028, 'deviceID': '48:6B:54:7F:12:47', 'build': '36.0', 'PTPInfo': 'PTP-AirPlay;2.5.0', 'protocolVersion': '1.1', 'sourceVersion': '366.0', 'features': 4612182174196533760, 'name': 'SOUNDFORM CONNECT'} 2023-08-27 22:48:35 DEBUG [pyatv.protocols.airplay.auth]: Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.Transient 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-pin-start HTTP/1.1\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nServer: AirTunes/366.0\r\n\r\n' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Server': 'AirTunes/366.0'}, body=''): 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 9\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x00\x01\x00\x06\x01\x01\x13\x01\x10' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 409\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\n\r\n\x06\x01\x02\x02\x10y17\x9e.(j\x9b\x10*\xf3\xcb\xefNhA\x03\xff\xd7\x0c\x16{t\xf8\n{\xc5\xca\xc5\x84\xfa\xb3\tK\xde\xfd6Z"K\xce\xc2\xf6}\x93>\xb3\xadw1B\xb8\xd0\x12\'W\x0e\xe7\x13\xf3\xcf\xc4\xde\xa0\xe5\xd9\xd8\xdc\x03\xa5@\xb6l\x87\xb2\x88\xc6^\xde\xb3,\xbf\xfc+\xa4\xbb\'\x1d\x80\xc6\xe4\xce\xc8\xeb\x1b\x17\xef\x9e-2c\x00\x8c,..\xb5\x16\x84\x08mv;\x98\xef\xae\xcc\xd3\x84MnR\x17.\xfd\xfcN\xe4\x12/\xeb\xcb\xfb\xdd\xd3\x1dS\xbd\xe2sXw\xd0\x843J\xe2\xbd6\xfa\xfe\xe7\xf8&\xc8\x9b(<S]\n0\x18\xce#\xf1\x17\xa1\x15\xa7\xad\x93%\xbc8~f\xd4s\x13M\x8d\x1a\xc6\x1a\xb6\xdb\xea\x82\xde\xd8\xe8\xa3\xe2\xf1%H\x92\xbe5{\x1bs\xd8\'\x90\x93Q\xf2\xd8\x16\xb9\xbf{q\xc1\xc9\xf9s\x92\x13\xa1\xd0QU\x05P\x12\x96\x1f\xc1iu\xa80\xb0\xa8\xa3j\xd9g3\xe59&\xa7\xee8\x06.\xcdpH\xff\xbd\xa9\xe0\xe5\xd4Y>\'\xc1\x10\xc3\x8d\xca<\x1b>\xea]\xf1\x03\x81\xec\x8b\x15}\xe4\xed\xf7\xd2\xd3\x11\x18#\x98v\xc0e\xd3\x9dD\xb7Y\xa1\xf3\x1a\x83\x87\x8a\x84\xd4\x8ezv=K\x1f)%\x88O1k\x80<\xc3\xe5\xc2\x97w\x00\xe3\x06\xc4\xa3\x84\xe7\xc28\x04f\xeeIxa4\xf6\x91\xb7\x15\xad\x1e\xa8#\xd9yOe\x96\x98\x13\xbd\x17\xc56\x1b\x878\x89\xbd0[\xf0\x90\xb3\xe9\xcbQ\xff\xa3\xc6/L\xf9\x8c\xa4e\xab,>X\x16\xea\xce\xd9\x06\x95\xa5\x8e\xfb\xf57g\xa4m\x9c\xea' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '409', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0'}, body=b'\x06\x01\x02\x02\x10y17\x9e.(j\x9b\x10\xf3\xcb\xefNhA\x03\xff\xd7\x0c\x16{t\xf8\n{\xc5\xca\xc5\x84\xfa\xb3\tK\xde\xfd6Z"K\xce\xc2\xf6}\x93>\xb3\xadw1B\xb8\xd0\x12\'W\x0e\xe7\x13\xf3\xcf\xc4\xde\xa0\xe5\xd9\xd8\xdc\x03\xa5@\xb6l\x87\xb2\x88\xc6^\xde\xb3,\xbf\xfc+\xa4\xbb\'\x1d\x80\xc6\xe4\xce\xc8\xeb\x1b\x17\xef\x9e-2c\x00\x8c,..\xb5\x16\x84\x08mv;\x98\xef\xae\xcc\xd3\x84MnR\x17.\xfd\xfcN\xe4\x12/\xeb\xcb\xfb\xdd\xd3\x1dS\xbd\xe2sXw\xd0\x843J\xe2\xbd6\xfa\xfe\xe7\xf8&\xc8\x9b(<S]\n0\x18\xce#\xf1\x17\xa1\x15\xa7\xad\x93%\xbc8~f\xd4s\x13M\x8d\x1a\xc6\x1a\xb6\xdb\xea\x82\xde\xd8\xe8\xa3\xe2\xf1%H\x92\xbe5{\x1bs\xd8\'\x90\x93Q\xf2\xd8\x16\xb9\xbf{q\xc1\xc9\xf9s\x92\x13\xa1\xd0QU\x05P\x12\x96\x1f\xc1iu\xa80\xb0\xa8\xa3j\xd9g3\xe59&\xa7\xee8\x06.\xcdpH\xff\xbd\xa9\xe0\xe5\xd4Y>\'\xc1\x10\xc3\x8d\xca<\x1b>\xea]\xf1\x03\x81\xec\x8b\x15}\xe4\xed\xf7\xd2\xd3\x11\x18#\x98v\xc0e\xd3\x9dD\xb7Y\xa1\xf3\x1a\x83\x87\x8a\x84\xd4\x8ezv=K\x1f)%\x88O1k\x80<\xc3\xe5\xc2\x97w\x00\xe3\x06\xc4\xa3\x84\xe7\xc28\x04f\xee*Ixa4\xf6\x91\xb7\x15\xad\x1e\xa8#\xd9yOe\x96\x98\x13\xbd\x17\xc56\x1b\x878\x89\xbd0[\xf0\x90\xb3\xe9\xcbQ\xff\xa3\xc6/L\xf9\x8c\xa4e\xab,>X\x16\xea\xce\xd9\x06\x95\xa5\x8e\xfb\xf57g\xa4m\x9c\xea'): 2023-08-27 22:48:35 DEBUG [pyatv.auth.hap_srp]: Client (Proof=9715a9f68ea6d1af3bfad864db32c30a31ee4ef02c6ebd3a2d088f7dc56fd4448dd4342676d0fa6d27b61a8dc4c12ddf45ccdfcd3f4e2b20bf8b77dd3770b46b, Public=d3fafaa4b14e1715aec17d35d5bdb1398fd52948defb87b25ec9f63cb48a4d396ee7a5ae9aadca2a47a09ea1639b0eece99065d9b416805c8fe0ba1a595475e990795cb62951a5b4b51bc95d2b81cb1270672d76731bc1adf27e5d6c3519ea118552bed2cd89fd24103c707ad3b0fcd8e04a5ae9fee775991ee8d894dd253383bcc0c0d6a826b745995f0ec14afab6920c68fce29f949720fe8e20ad44fed35e2b575049516c9230610a222949b0e3a9e620c3aae67741b227666ea195618cbb496e09f073eff541c6e5c2a1999a7b903b1aa5749d46c6b37fb59ba7bb60e8404b1c5333abd85d309603950a290253cb3b7086d928d8257daa76cbdd190e5...) 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 457\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x06\x01\x03\x03\xff\xd3\xfa\xfa\xa4\xb1N\x17\x15\xae\xc1}5\xd5\xbd\xb19\x8f\xd5)H\xde\xfb\x87\xb2^\xc9\xf6<\xb4\x8aM9n\xe7\xa5\xae\x9a\xad\xca*G\xa0\x9e\xa1c\x9b\x0e\xec\xe9\x90e\xd9\xb4\x16\x80\\\x8f\xe0\xba\x1aYTu\xe9\x90y\\\xb6)Q\xa5\xb4\xb5\x1b\xc9]+\x81\xcb\x12pg-vs\x1b\xc1\xad\xf2~]l5\x19\xea\x11\x85R\xbe\xd2\xcd\x89\xfd$\x10<pz\xd3\xb0\xfc\xd8\xe0JZ\xe9\xfe\xe7u\x99\x1e\xe8\xd8\x94\xdd%3\x83\xbc\xc0\xc0\xd6\xa8&\xb7E\x99_\x0e\xc1J\xfa\xb6\x92\x0ch\xfc\xe2\x9f\x94\x97 \xfe\x8e \xadD\xfe\xd3^+WPIQl\x920a\n")I\xb0\xe3\xa9\xe6 \xc3\xaa\xe6wA\xb2\'fn\xa1\x95a\x8c\xbbIn\t\xf0s\xef\xf5A\xc6\xe5\xc2\xa1\x99\x9a{\x90;\x1a\xa5t\x9dF\xc6\xb3\x7f\xb5\x9b\xa7\xbb\xe8@K\x1cS3\xab\xd8]0\x96\x03\x95\n)\x02S\xcb;p\x86\xd9(\xd8%}\xaav\xcb\xdd\x19\x0eZ\x03\x81n\x0e\xdf\x8bog-\x0fVcV\xe7FyVx\xd8\xa3A\x03\x02\xad\x0b\xfe\x9d\xd4j\xe79\xff\x81\xa1\xf7\x1d\x04\xf4\xc3\x8c\xd4\xfe\xf6\xa4 %\xdb=}\x94\xe9@\xb5\x03"\x04h;6\x9c\xd1\x14\x08\xb4\xac\xdd\xc5\x0b\xe93.@\x8c\xd3\x84$\x82Y;\x0f\x08e\xfa\xd6G\xd0\x9b\x19o\x07\xd2\x10\xe6wV\xc5M\x87\x0c\xaa\xd7\x19\x83"\x15\xb3\xaa$u\xe3\xe2\x8d\xa2R\x92\x89E\xc5/\xb4\xdd?\xbf\xca\xab\xb1\xd0 \xd5\x04@\x97\x15\xa9\xf6\x8e\xa6\xd1\xaf;\xfa\xd8d\xdb2\xc3\n1\xeeN\xf0,n\xbd:-\x08\x8f}\xc5o\xd4D\x8d\xd44&v\xd0\xfam\'\xb6\x1a\x8d\xc4\xc1-\xdfE\xcc\xdf\xcd?N+ \xbf\x8bw\xdd7p\xb4k' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 69\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\n\r\n\x06\x01\x04\x04@\xa3\x87\xc7r\x8e6\xa3\'\xeb\xa3\x96\xcb\xb7\xa1\xe1\xae\xb3\x13\x0b\xe9\xc4\x99\x9b\xc0\xde\x91{\x06"nZ\x9bT\xce\xe9:\x12\x1cl\x86Iy\x98-\xb4\xf2A\x9aA\xc6\x0e\x8ac\xbb\x84\xbc\xf0\x99#\x89\x19\x08@\xd8' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '69', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0'}, body=b'\x06\x01\x04\x04@\xa3\x87\xc7r\x8e6\xa3\'\xeb\xa3\x96\xcb\xb7\xa1\xe1\xae\xb3\x13\x0b\xe9\xc4\x99\x9b\xc0\xde\x91{\x06"nZ\x9bT\xce\xe9:\x12\x1cl\x86Iy\x98-\xb4\xf2A\x9aA\xc6\x0e\x8ac\xbb\x84\xbc\xf0\x99#\x89\x19\x08@\xd8'): 2023-08-27 22:48:35 DEBUG [pyatv.protocols.airplay.auth.haptransient]: Keys (Input=506e0836e083b7d46612d75a934ca3fcdea2840e230b94f9485564f32ab9abfc, Output=d5f226548d87be2e45844ff2b2787c5b100712d2a1f3d354345a709ec47a04b9) 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://192.168.188.29/1108020984 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Length: 455\r\nCSeq: 1\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xdf\x10\x0f\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x10\x13\x14\x15\x16\x17\x11\x18\x19\x11\x1a\x1bXdeviceID\x10\x18groupContainsGroupLeader\x10\x14isMultiSelectAirPlayZmacAddressUmodelTname^osBuildVersionVosNameYosVersion\x10\x13senderSupportsRelay[sessionUUID]sourceVersion\x10\x16statsCollectionEnabledZtimingPort^timingProtocol\x10\x11AA:BB:CC:DD:EE:FF\x08\tZiPhone14,3UpyatvU20F66YiPhone OST16.5_\x10$E9F8A7BB-B278-4EC3-90DF-5B7DB2CA28C0W690.7.1\x11\xa4\xffSNTP\x00\x08\x00)\x002\x00M\x00d\x00o\x00u\x00z\x00\x89\x00\x90\x00\x9a\x00\xb0\x00\xbc\x00\xca\x00\xe3\x00\xee\x00\xfd\x01\x11\x01\x12\x01\x13\x01\x1e\x01$\x01\x014\x019\x01`\x01h\x01k\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01o' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 77\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 1\r\n\r\nbplist00\xd2\x01\x02\x03\x04YeventPortZtimingPort\x11\x86\xdd\x11\x9d\xf4\x08\r\x17"%\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '77', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '1'}, body=b'bplist00\xd2\x01\x02\x03\x04YeventPortZtimingPort\x11\x86\xdd\x11\x9d\xf4\x08\r\x17"%\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00('): 2023-08-27 22:48:35 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Setup response body: {'eventPort': 34525, 'timingPort': 40436} 2023-08-27 22:48:35 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=e8fa1a50d9dec7be48a73f12b848322d1dfca446fb776775aa7bd195edeb082a, Output=d32a43a3d158e89220a289435477df1d9a922eeb57ed6a0679ea76c8ce77896b) 2023-08-27 22:48:35 DEBUG [pyatv.auth.hap_channel]: Connected to 192.168.188.25:34525 2023-08-27 22:48:35 DEBUG [pyatv.protocols.airplay.auth.haptransient]: Keys (Input=d32a43a3d158e89220a289435477df1d9a922eeb57ed6a0679ea76c8ce77896b, Output=e8fa1a50d9dec7be48a73f12b848322d1dfca446fb776775aa7bd195edeb082a) 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://192.168.188.29/1108020984 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Length: 314\r\nCSeq: 2\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xdd\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d[audioFormatYaudioMode[controlPortRctWisMediaZlatencyMaxZlatencyMinSshkSspfRsr\x10\x12streamConnectionID_\x10\x17supportsDynamicStreamIDTtype\x11\x08\x00Wdefault\x11\xa3f\x10\x01\t\x12\x00\x01X\x88\x11+\x11O\x10 \xe8\xfa\x1aP\xd9\xde\xc7\xbeH\xa7?\x12\xb8H2-\x1d\xfc\xa4F\xfbwgu\xaa{\xd1\x95\xed\xeb\x08\x11\x01\x11\xacD\x12B\x0b\x0e\xf8\x08\x10\x08\x0b\x13\x150<FRU]hsw{~\x93\xad\xb2\xb5\xbd\xc0\xc2\xc3\xc8\xcb\xee\xf1\xf4\xf9\xfa\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 104\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 2\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXdataPort[controlPort\x10\x11\x88!\x11\x9dw\x08\x0b\x13\x15\x1c!*68;\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>' 2023-08-27 22:48:35 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '104', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '2'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXdataPort[controlPort\x10\x11\x88!\x11\x9dw\x08\x0b\x13\x15\x1c!*68;\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>'): 2023-08-27 22:48:35 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Setup stream response: {'streams': [{'type': 96, 'dataPort': 34849, 'controlPort': 40311}]} 2023-08-27 22:48:35 DEBUG [urllib3.connectionpool]: Starting new HTTP connection (1): mp3.ffh.de:80 2023-08-27 22:48:36 DEBUG [urllib3.connectionpool]: http://mp3.ffh.de:80 "GET /radioffh/hqlivestream.mp3 HTTP/1.1" 200 None 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://192.168.188.29/1108020984 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Type: text/parameters\r\nContent-Length: 13\r\nCSeq: 3\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\nvolume: -20.1' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 3\r\n\r\n' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '3'}, body=''): 2023-08-27 22:48:36 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.Volume to <bound method FacadeAudio._volume_changed of <pyatv.core.facade.FacadeAudio object at 0x7f9fea4890>> 2023-08-27 22:48:36 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.Volume to <bound method RaopAudio._volume_changed of <pyatv.protocols.raop.RaopAudio object at 0x7f9fea6450>> 2023-08-27 22:48:36 DEBUG [pyatv.protocols.raop]: Protocol RAOP changed volume to 33.000000 2023-08-27 22:48:36 DEBUG [pyatv.protocols.raop.stream_client]: Starting periodic sync task 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://192.168.188.29/1108020984 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Type: text/parameters\r\nContent-Length: 28\r\nCSeq: 4\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\nprogress: 66150/66150/110250' 2023-08-27 22:48:36 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3464953856, RtpTime=66150, Sec=3902158116, SyncPacket=90d4000700000000e8963524ce87000000010266) 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 4\r\n\r\n' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '4'}, body=''): 2023-08-27 22:48:36 DEBUG [pyatv.protocols.raop.stream_client]: Playing with metadata: MediaMetadata(title=None, artist=None, album=None, artwork=None, duration=0.10425) 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://192.168.188.29/1108020984 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Type: application/x-dmap-tagged\r\nContent-Length: 8\r\nCSeq: 5\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\nSession: 0\r\nRTP-Info: seq=34802;rtptime=66150\r\n\r\nmlit\x00\x00\x00\x00' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 5\r\n\r\n' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '5'}, body=''): 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'RECORD rtsp://192.168.188.29/1108020984 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 6\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:36 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Starting feedback task 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 7\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 6\r\n\r\n' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '6'}, body=''): 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'FLUSH rtsp://192.168.188.29/1108020984 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 8\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\nRange: npt=0-\r\nSession: 0\r\nRTP-Info: seq=34802;rtptime=66150\r\n\r\n' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 7\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '7'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nRTP-Info: rtptime=0\r\nServer: AirTunes/366.0\r\nCSeq: 8\r\n\r\n' 2023-08-27 22:48:36 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'RTP-Info': 'rtptime=0', 'Server': 'AirTunes/366.0', 'CSeq': '8'}, body=''): 2023-08-27 22:48:37 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3318087680, RtpTime=108742, Sec=3902158117, SyncPacket=80d400070000a660e8963525c5c600000001a8c6) 2023-08-27 22:48:37 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 0.999082s (current frames: 44352, expected: 44060) 2023-08-27 22:48:38 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3342663680, RtpTime=153094, Sec=3902158118, SyncPacket=80d40007000153a0e8963526c73d000000025606) 2023-08-27 22:48:38 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 9\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:38 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 9\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:48:38 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '9'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:48:38 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005262s (current frames: 88704, expected: 88392) 2023-08-27 22:48:39 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3332898816, RtpTime=197094, Sec=3902158119, SyncPacket=80d400070001ff80e8963527c6a80000000301e6) 2023-08-27 22:48:39 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006306s (current frames: 133056, expected: 132770) 2023-08-27 22:48:40 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3357474816, RtpTime=241446, Sec=3902158120, SyncPacket=80d400070002acc0e8963528c81f00000003af26) 2023-08-27 22:48:40 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 10\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:40 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 10\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:48:40 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '10'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:48:40 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005602s (current frames: 177408, expected: 177117) 2023-08-27 22:48:41 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3347709952, RtpTime=285446, Sec=3902158121, SyncPacket=80d40007000358a0e8963529c78a000000045b06) 2023-08-27 22:48:41 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005790s (current frames: 221760, expected: 221472) 2023-08-27 22:48:42 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3372220416, RtpTime=329798, Sec=3902158122, SyncPacket=80d40007000405e0e896352ac900000000050846) 2023-08-27 22:48:42 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 11\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:42 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 11\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:48:42 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '11'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:48:42 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005068s (current frames: 266112, expected: 265796) 2023-08-27 22:48:43 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3362521088, RtpTime=373798, Sec=3902158123, SyncPacket=80d400070004b1c0e896352bc86c00000005b426) 2023-08-27 22:48:43 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005873s (current frames: 310464, expected: 310155) 2023-08-27 22:48:44 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3387031552, RtpTime=418150, Sec=3902158124, SyncPacket=80d4000700055f00e896352cc9e2000000066166) 2023-08-27 22:48:44 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 12\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:44 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 12\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:48:44 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '12'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:48:44 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005669s (current frames: 354816, expected: 354505) 2023-08-27 22:48:45 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3411607552, RtpTime=462502, Sec=3902158125, SyncPacket=80d4000700060c40e896352dcb59000000070ea6) 2023-08-27 22:48:45 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005600s (current frames: 399168, expected: 398851) 2023-08-27 22:48:46 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3401842688, RtpTime=506502, Sec=3902158126, SyncPacket=80d400070006b820e896352ecac400000007ba86) 2023-08-27 22:48:46 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 13\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:46 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 13\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:48:46 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '13'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:48:46 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.006281s (current frames: 443520, expected: 443228) 2023-08-27 22:48:47 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3426418688, RtpTime=550854, Sec=3902158127, SyncPacket=80d4000700076560e896352fcc3b0000000867c6) 2023-08-27 22:48:47 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005627s (current frames: 487872, expected: 487577) 2023-08-27 22:48:48 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3416653824, RtpTime=594854, Sec=3902158128, SyncPacket=80d4000700081140e8963530cba60000000913a6) 2023-08-27 22:48:48 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 14\r\nDACP-ID: 41BB8B4A3F6AF3EB\r\nActive-Remote: 246918891\r\nClient-Instance: 41BB8B4A3F6AF3EB\r\n\r\n' 2023-08-27 22:48:48 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 14\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:48:48 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '14'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:48:48 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005831s (current frames: 532224, expected: 531934) 2023-08-27 22:48:49 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=3441229824, RtpTime=639206, Sec=3902158129, SyncPacket=80d400070008be80e8963531cd1d00000009c0e6) 2023-08-27 22:48:49 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005278s (current frames: 576576, expected: 576266) ^CTraceback (most recent call last): File "/usr/local/bin/atvremote", line 8, in sys.exit(main()) ^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyatv/scripts/atvremote.py", line 787, in main return loop.run_until_complete(appstart(loop)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/asyncio/base_events.py", line 640, in run_until_complete self.run_forever() File "/usr/local/lib/python3.11/asyncio/base_events.py", line 607, in run_forever self._run_once() File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1884, in _run_once event_list = self._selector.select(timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/selectors.py", line 462, in select fd_event_list = self._selector.poll(timeout, max_ev) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ KeyboardInterrupt `

Second try (manual config, working):

homeassistant:/config# atvremote -i 486B547F1247 stream_file=http://mp3.ffh.de/radioffh/hqlivestream.mp3 --service-properties :features=0x4A7FCA00,0xBC354BD0 --address 192.168.188.25 --port 7000 --protocol airplay --manual --debug 2023-08-27 22:50:14 DEBUG [pyatv.scripts]: Running with pyatv 0.13.4 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay 2023-08-27 22:50:14 DEBUG [pyatv.protocols.airplay]: RAOP supported but no service present, adding new service 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP 2023-08-27 22:50:14 DEBUG [pyatv.protocols.airplay]: Remote control not supported by device 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Protocol Protocol.RAOP already set up, ignoring 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Power management not supported by any protocols 2023-08-27 22:50:14 DEBUG [pyatv.core.facade]: Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.AirPlay 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Connected to 192.168.188.25 2023-08-27 22:50:14 DEBUG [pyatv.protocols.raop]: Using AirPlay version AirPlayMajorVersion.AirPlayV2 2023-08-27 22:50:14 DEBUG [pyatv.protocols.raop.stream_client]: Initializing RTSP with encryption=0, metadata=0 2023-08-27 22:50:14 DEBUG [pyatv.protocols.raop.stream_client]: No supported encryption type, continuing anyway 2023-08-27 22:50:14 DEBUG [pyatv.protocols.raop.stream_client]: Update play settings to 44100/2/16bit 2023-08-27 22:50:14 DEBUG [pyatv.protocols.raop.stream_client]: Local ports: control=42162, timing=34738 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'GET /info RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 0\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\n\r\n' 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 601\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x13\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x19\x1c\x19\x1d\x15\x1e\x1f !"#SsdkRpi_\x10\x10firmwareRevisionVOSInfo\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x10hardwareRevision_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.5.0_\x10\x1148:6B:54:7F:12:47Z4.6.333053_\x10\x11Linux 4.9.118 ARM_\x10\x19Belkin International Inc.\t[Oct 20 2021_\x10\x1aSOUNDFORM AirPlay2 AdapterS1.0\x11\x04\x04T36.0_\x10\x11PTP-AirPlay;2.5.0S1.1U366.0\x13@\x01\xc3@D_\x8a\x00_\x10\x11SOUNDFORM CONNECT\x00\x08\x001\x005\x008\x00K\x00R\x00_\x00s\x00\x87\x00\x8d\x00\xa4\x00\xb7\x00\xd2\x00\xde\x00\xe7\x00\xed\x00\xf5\x01\x07\x01\x15\x01\x1e\x01#\x011\x01E\x01P\x01d\x01\x80\x01\x81\x01\x8d\x01\xaa\x01\xae\x01\xb1\x01\xb6\x01\xca\x01\xce\x01\xd4\x01\xdd\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xf1' 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '601', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '0'}, body=b'bplist00\xdf\x10\x13\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x19\x1c\x19\x1d\x15\x1e\x1f !"#SsdkRpi_\x10\x10firmwareRevisionVOSInfo\\manufacturer_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDateUmodel_\x10\x14nameIsFactoryDefault_\x10\x10hardwareRevision_\x10\x18keepAliveSendStatsAsBody[statusFlagsXdeviceIDUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeaturesTname]AirPlay;2.5.0_\x10\x1148:6B:54:7F:12:47Z4.6.333053_\x10\x11Linux 4.9.118 ARM_\x10\x19Belkin International Inc.\t[Oct 20 2021_\x10\x1aSOUNDFORM AirPlay2 AdapterS1.0\x11\x04\x04T36.0_\x10\x11PTP-AirPlay;2.5.0S1.1U366.0\x13@\x01\xc3@D_\x8a\x00_\x10\x11SOUNDFORM CONNECT\x00\x08\x001\x005\x008\x00K\x00R\x00_\x00s\x00\x87\x00\x8d\x00\xa4\x00\xb7\x00\xd2\x00\xde\x00\xe7\x00\xed\x00\xf5\x01\x07\x01\x15\x01\x1e\x01#\x011\x01E\x01P\x01d\x01\x80\x01\x81\x01\x8d\x01\xaa\x01\xae\x01\xb1\x01\xb6\x01\xca\x01\xce\x01\xd4\x01\xdd\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xf1'): 2023-08-27 22:50:14 DEBUG [pyatv.protocols.raop.stream_client]: Updated info parameters to: {'sdk': 'AirPlay;2.5.0', 'pi': '48:6B:54:7F:12:47', 'firmwareRevision': '4.6.333053', 'OSInfo': 'Linux 4.9.118 ARM', 'manufacturer': 'Belkin International Inc.', 'keepAliveLowPower': True, 'firmwareBuildDate': 'Oct 20 2021', 'model': 'SOUNDFORM AirPlay2 Adapter', 'nameIsFactoryDefault': True, 'hardwareRevision': '1.0', 'keepAliveSendStatsAsBody': True, 'statusFlags': 1028, 'deviceID': '48:6B:54:7F:12:47', 'build': '36.0', 'PTPInfo': 'PTP-AirPlay;2.5.0', 'protocolVersion': '1.1', 'sourceVersion': '366.0', 'features': 4612182174196533760, 'name': 'SOUNDFORM CONNECT'} 2023-08-27 22:50:14 DEBUG [pyatv.protocols.airplay.auth]: Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.Transient 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-pin-start HTTP/1.1\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n' 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nServer: AirTunes/366.0\r\n\r\n' 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Server': 'AirTunes/366.0'}, body=''): 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 9\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x00\x01\x00\x06\x01\x01\x13\x01\x10' 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 409\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\n\r\n\x06\x01\x02\x02\x10\xb4\xa2S\xdc\x8c\xbd\x89\xca\xa4\x08S\x8c\xb1D\x0bJ\x03\xff\xfcM-8|\xb9;\xd9\xe4e\x8b\xbc\xd1$\xa2\x8aI\x0e\xb4\x0f\xaf\xcf\x85\xe0\x95W\x99\x14\x83\x7f\xaef\x03\x05w,\xf6\x1b\xf8\x90/m@\xc8\xe8>\xae_K\x96\xcfv\xf8\xaadQ\x8d\r\x0c\x99)\x82\x05\x1d&y\xbfF\x98B\x92\xb8\xf1D \xa5\xab\xaa\x12\xedl\xc1,\x02\xfcJ\xbb?\x88C\xb6\x02)\xdd\x01\x8b\xed\x19\xb0{\x82\x8e\xf6\xf8\xe2\xda\xabw\x18\xf8\x8eF\xdb2\xafQ\xa1\x06\xb2eK\x0f\x13\x8c\xf3\x90\x8d\xe3\xf8\xebG:\x81\x88\x1b\xf7\x00\x12\xa3\xf1\x834G\x83\x90$\xf3B\x85)w\xb3\x9c\xf7\x1a\xcc\xe6\xbc\xced\xa7\xeb\xbd\xebR\xd1\xa7s\x82\x03E;\x80\xaf\xa2\xac\xbd@f\xae\xb1l\x96\xd8+\xe2x\xbf\xc4\xad\xd9\xd3\xb4\x17\r\x92\xd3\x85wiD:.\x98\xc0\xb5\xf0Kp\xc2O\x19B6\x90\xa3\xc3)\x96\x88\xfc\xe3\x80\xd6\x80\x96b\x83$%Ajp\xafd\x9e\x8c\xed\xad\xfe\xe2?r\xf5s\xc5\xf7\xd1\xdc\xa2\x9f\xef\x1bC\x81\x03\x81\xa7\x9c\xd1e9\xa5\x0c\xc1j\xb8\x89\xa7\xa7\x8f\xcd;c\xf5\xd3\xa3g\xee-"A\xf7t\xa5\xadN\xd7)*\x96J;\xb9F\x14\x9b\x83\xddf\xb1\xab7\x17iMG\xeeq\x94\xb6\xecZ\xa0\xa8\xac#M\x82&\x7f\xe9r\xeb\xc5\xab0\x96\x05j>\xf9>\x91Ov\xe0\\$7\xcff\xd0\xfe\xbe\x9f1\xbb\xaf\xb5\x06I\x1d3q\xd2\xc3\xd3\xe7\xa1#3\x8f\x98[\xc6\xcd@\xa20^b\xb1\x97UE\x12\xd7\x87\xdc\x17CQ\xf4\xbe\xad' 2023-08-27 22:50:14 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '409', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0'}, body=b'\x06\x01\x02\x02\x10\xb4\xa2S\xdc\x8c\xbd\x89\xca\xa4\x08S\x8c\xb1D\x0bJ\x03\xff\xfcM-8|\xb9;\xd9\xe4e\x8b\xbc\xd1$\xa2\x8aI\x0e\xb4\x0f\xaf\xcf\x85\xe0\x95W\x99\x14\x83\x7f\xaef\x03\x05w,\xf6\x1b\xf8\x90/m@\xc8\xe8>\xae_K\x96\xcfv\xf8\xaadQ\x8d\r\x0c\x99)\x82\x05\x1d&y\xbfF\x98B\x92\xb8\xf1D \xa5\xab\xaa\x12\xedl\xc1,\x02\xfcJ\xbb?\x88C\xb6\x02)\xdd\x01\x8b\xed\x19\xb0{\x82\x8e\xf6\xf8\xe2\xda\xabw\x18\xf8\x8eF\xdb2\xafQ\xa1\x06\xb2eK\x0f\x13\x8c\xf3\x90\x8d\xe3\xf8\xebG:\x81\x88\x1b\xf7\x00\x12\xa3\xf1\x834G\x83\x90$\xf3B\x85)w\xb3\x9c\xf7\x1a\xcc\xe6\xbc\xced\xa7\xeb\xbd\xebR\xd1\xa7s\x82\x03E;\x80\xaf\xa2\xac\xbd@f\xae\xb1l\x96\xd8+\xe2x\xbf\xc4\xad\xd9\xd3\xb4\x17\r\x92\xd3\x85wiD:.\x98\xc0\xb5\xf0Kp\xc2O\x19B6\x90\xa3\xc3)\x96\x88\xfc\xe3\x80\xd6\x80\x96b\x83$%Ajp\xafd\x9e\x8c\xed\xad\xfe\xe2?r\xf5s\xc5\xf7\xd1\xdc\xa2\x9f\xef\x1bC\x81\x03\x81\xa7\x9c\xd1e9\xa5\x0c\xc1j\xb8\x89\xa7\xa7\x8f\xcd;c\xf5\xd3\xa3g\xee-"A\xf7t\xa5\xadN\xd7)*\x96J;\xb9F\x14\x9b\x83\xddf\xb1\xab7\x17iMG\xeeq\x94\xb6\xecZ\xa0\xa8\xac#M\x82&\x7f\xe9r\xeb\xc5\xab0\x96\x05j>\xf9>\x91Ov\xe0\\$7\xcff\xd0\xfe\xbe\x9f1\xbb\xaf\xb5\x06I\x1d3q\xd2\xc3\xd3\xe7\xa1#3\x8f\x98[\xc6\xcd@\xa20^b\xb1\x97UE\x12\xd7\x87\xdc\x17CQ\xf4\xbe\xad'): 2023-08-27 22:50:15 DEBUG [pyatv.auth.hap_srp]: Client (Proof=ed4883776af4676762cf1c713031c5e4d0254b72057c85cafd43fae787c88b033e7db65b72de25176f8565a830d4d3ce9f3f8e27094c38827236615733a87211, Public=7c52658fac7cdcb263b87f097ba8ec2b77d372b38aa0d2b0c547007dbae0c251b31ef9a9ce61e0068dff18348214b9d06c61b76b230fd13fab467ca7b5387e09b6409c26c9e321d30f526e6f6d48b7043d2260cc894062ed55171ac6f478fbb461597a9b714293183bf5d336c8910371c63f08bcc9013edd38a584c91ac188b29f7dd3d42e7f275593e34cce5cc5b10af4695aebad96afd50351a8b62730add2edf913d16df4aee7b6eb755f96cef378b40ce94d616110820279f7152b702f26d7d1eac17e07e851fa5312d91cb4faa201cba91c7d11cc52ffa8f97fc83456275215a8d93df50355d75744f3c841e94a25610aa6f7d9bc48793d37b8ea708...) 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-setup HTTP/1.1\r\nContent-Length: 457\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 4\r\nContent-Type: application/octet-stream\r\n\r\n\x06\x01\x03\x03\xff|Re\x8f\xac|\xdc\xb2c\xb8\x7f\t{\xa8\xec+w\xd3r\xb3\x8a\xa0\xd2\xb0\xc5G\x00}\xba\xe0\xc2Q\xb3\x1e\xf9\xa9\xcea\xe0\x06\x8d\xff\x184\x82\x14\xb9\xd0la\xb7k#\x0f\xd1?\xabF|\xa7\xb58~\t\xb6@\x9c&\xc9\xe3!\xd3\x0fRnomH\xb7\x04="\xcc\x89@b\xedU\x17\x1a\xc6\xf4x\xfb\xb4aYz\x9bqB\x93\x18;\xf5\xd36\xc8\x91\x03q\xc6?\x08\xbc\xc9\x01>\xdd8\xa5\x84\xc9\x1a\xc1\x88\xb2\x9f}\xd3\xd4.\x7f\'U\x93\xe3L\xce\\xc5\xb1\n\xf4iZ\xeb\xad\x96\xaf\xd5\x03Q\xa8\xb6\'0\xad\xd2\xed\xf9\x13\xd1m\xf4\xae\xe7\xb6\xebu\x96\xce\xf3x\xb4\x0c\xe9Maa\x10\x82\x02y\xf7\x15+p/&\xd7\xd1\xea\xc1~\x07\xe8Q\xfaS\x12\xd9\x1c\xb4\xfa\xa2\x01\xcb\xa9\x1c}\x11\xccR\xff\xa8\xf9\x7f\xc84V\'R\x15\xa8\xd9=\xf5\x03U\xd7WD\xf3\xc8A\xe9J%a\n\xa6\xf7\xd9\xbcHy=7\xb8\xeap\x8e\x03\x81\xe6\xcf\x19@X\x00U\xb3\xe6\xf4\x1e\xed\xf7\xfd9\xa1X\xfa\x05$R\xe5\x9d\x05Z1\xd2st\x9a\x8b\xfb\x80\xeeG\xec!\xec\xae\nT\xbb\x93\x06\xa8\xf6\xaa\x80Wj\xc6>\xa2&C\x7f\x90\x87-\x135=\xc9\x13,\x0c\x88\x02\xc4,\xe5J\xc7\x8d\xbe\xe8\xed\x82k\xc4\n\x90&\xed\xb2\x87\x9c\xc2\xf2X\xcc\x04\x19\xb3\xbb\x1d\xeb6\xb5\x04\xd3\xa8\xfc\xfc5\xee\xd1\xd5\x96\xd8\xd2\xbfB\xc7\x1c\x8ei\xf1\x1c3\x06\x8ee\xdc\xd3\xb5<\x04@\xedH\x83wj\xf4ggb\xcf\x1cq01\xc5\xe4\xd0%Kr\x05|\x85\xca\xfdC\xfa\xe7\x87\xc8\x8b\x03>}\xb6[r\xde%\x17o\x85e\xa80\xd4\xd3\xce\x9f?\x8e\'\tL8\x82r6aW3\xa8r\x11' 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 69\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/366.0\r\n\r\n\x06\x01\x04\x04@\xd6H\xdbu}^\xa2Z\x12b&;\x02\x06\xf2#\xe4X\x03\x03X\xf2\x17"\xaf\x93*\xe8\xbf\x10M\re\toz\x87\xdcO\xb3\xd3\x00\xc4\xd8\x03rA\xac\xf8\x03\xd0\x0f\x0e\xf1Wwo\xe3J\x7f\xdf\xa4|\xe0' 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '69', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/366.0'}, body=b'\x06\x01\x04\x04@\xd6H\xdbu}^\xa2Z\x12b&;\x02\x06\xf2#\xe4X\x03\x03X\xf2\x17"\xaf\x93*\xe8\xbf\x10M\re\toz\x87\xdcO\xb3\xd3\x00\xc4\xd8\x03rA\xac\xf8\x03\xd0\x0f\x0e\xf1Wwo\xe3J\x7f\xdf\xa4|\xe0'): 2023-08-27 22:50:15 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=bbbb908f72562856458ef2f87ef06eeeb89cf6b72dce506393e297c4c1615624, Output=500290d3b46f5f61aebcf935bf879db7b04e2918fbb8d3aea0b701b294fccd53) 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://192.168.188.29/2866789027 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Length: 455\r\nCSeq: 1\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xdf\x10\x0f\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x10\x13\x14\x15\x16\x17\x11\x18\x19\x11\x1a\x1bXdeviceID_\x10\x18groupContainsGroupLeader_\x10\x14isMultiSelectAirPlayZmacAddressUmodelTname^osBuildVersionVosNameYosVersion_\x10\x13senderSupportsRelay[sessionUUID]sourceVersion_\x10\x16statsCollectionEnabledZtimingPort^timingProtocol_\x10\x11AA:BB:CC:DD:EE:FF\x08\tZiPhone14,3UpyatvU20F66YiPhone OST16.5_\x10$040220A0-947A-4345-9C0D-6CAE686CB8C1W690.7.1\x11\x87\xb2SNTP\x00\x08\x00)\x002\x00M\x00d\x00o\x00u\x00z\x00\x89\x00\x90\x00\x9a\x00\xb0\x00\xbc\x00\xca\x00\xe3\x00\xee\x00\xfd\x01\x11\x01\x12\x01\x13\x01\x1e\x01$\x01*\x014\x019\x01\x01h\x01k\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01o' 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 77\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 1\r\n\r\nbplist00\xd2\x01\x02\x03\x04YeventPortZtimingPort\x11\xa6\xc3\x11\xcd\xcc\x08\r\x17"%\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(' 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '77', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '1'}, body=b'bplist00\xd2\x01\x02\x03\x04YeventPortZtimingPort\x11\xa6\xc3\x11\xcd\xcc\x08\r\x17"%\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00('): 2023-08-27 22:50:15 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Setup response body: {'eventPort': 42691, 'timingPort': 52684} 2023-08-27 22:50:15 DEBUG [pyatv.protocols.airplay.auth.hap_transient]: Keys (Input=b1306a36004e7ccf823bf8ddb4a298e0b66c52a3f9ea0ae1d90ba374a29af322, Output=7b6f86edb5297b2ae40b2ee15659b3e1898d489a78a796e9b5412f0d4c09dc66) 2023-08-27 22:50:15 DEBUG [pyatv.auth.hap_channel]: Connected to 192.168.188.25:42691 2023-08-27 22:50:15 DEBUG [pyatv.protocols.airplay.auth.haptransient]: Keys (Input=7b6f86edb5297b2ae40b2ee15659b3e1898d489a78a796e9b5412f0d4c09dc66, Output=b1306a36004e7ccf823bf8ddb4a298e0b66c52a3f9ea0ae1d90ba374a29af322) 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://192.168.188.29/2866789027 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Length: 314\r\nCSeq: 2\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xdd\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d[audioFormatYaudioMode[controlPortRctWisMediaZlatencyMaxZlatencyMinSshkSspfRsr\x10\x12streamConnectionID_\x10\x17supportsDynamicStreamIDTtype\x11\x08\x00Wdefault\x11\xa4\xb2\x10\x01\t\x12\x00\x01X\x88\x11+\x11O\x10 \xb10j6\x00N|\xcf\x82;\xf8\xdd\xb4\xa2\x98\xe0\xb6lR\xa3\xf9\xea\n\xe1\xd9\x0b\xa3t\xa2\x9a\xf3"\x11\x01\x11\xacD\x12\xaa\xdf\xba\xa3\x08\x10\x08\x0b\x13\x150<FRU]hsw{~\x93\xad\xb2\xb5\xbd\xc0\xc2\xc3\xc8\xcb\xee\xf1\xf4\xf9\xfa\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc' 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 104\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 2\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXdataPort[controlPort\x10\x11\x8d@\x11\xb5\x84\x08\x0b\x13\x15\x1c!*68;\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>' 2023-08-27 22:50:15 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '104', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '2'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXdataPort[controlPort\x10\x11\x8d@\x11\xb5\x84\x08\x0b\x13\x15\x1c!*68;\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>'): 2023-08-27 22:50:15 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Setup stream response: {'streams': [{'type': 96, 'dataPort': 36160, 'controlPort': 46468}]} 2023-08-27 22:50:15 DEBUG [urllib3.connectionpool]: Starting new HTTP connection (1): mp3.ffh.de:80 2023-08-27 22:50:16 DEBUG [urllib3.connectionpool]: http://mp3.ffh.de:80 "GET /radioffh/hqlivestream.mp3 HTTP/1.1" 200 None 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://192.168.188.29/2866789027 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Type: text/parameters\r\nContent-Length: 13\r\nCSeq: 3\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\n\r\nvolume: -20.1' 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 3\r\n\r\n' 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '3'}, body=''): 2023-08-27 22:50:16 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.Volume to <bound method FacadeAudio._volume_changed of <pyatv.core.facade.FacadeAudio object at 0x7f809b79d0>> 2023-08-27 22:50:16 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.Volume to <bound method RaopAudio._volume_changed of <pyatv.protocols.raop.RaopAudio object at 0x7f76bdbb90>> 2023-08-27 22:50:16 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.Volume to <bound method RaopAudio._volume_changed of <pyatv.protocols.raop.RaopAudio object at 0x7f76be4110>> 2023-08-27 22:50:16 DEBUG [pyatv.protocols.raop]: Protocol RAOP changed volume to 33.000000 2023-08-27 22:50:16 DEBUG [pyatv.protocols.raop]: Protocol RAOP changed volume to 33.000000 2023-08-27 22:50:16 DEBUG [pyatv.protocols.raop.stream_client]: Starting periodic sync task 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'RECORD rtsp://192.168.188.29/2866789027 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 4\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\n\r\n' 2023-08-27 22:50:16 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=2589196288, RtpTime=66150, Sec=3902158216, SyncPacket=90d4000700000000e89635889a54000000010266) 2023-08-27 22:50:16 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Starting feedback task 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 5\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\n\r\n' 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/366.0\r\nCSeq: 4\r\n\r\n' 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/366.0', 'CSeq': '4'}, body=''): 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'FLUSH rtsp://192.168.188.29/2866789027 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 6\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\nRange: npt=0-\r\nSession: 0\r\nRTP-Info: seq=61284;rtptime=66150\r\n\r\n' 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 5\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '5'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nRTP-Info: rtptime=0\r\nServer: AirTunes/366.0\r\nCSeq: 6\r\n\r\n' 2023-08-27 22:50:16 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'RTP-Info': 'rtptime=0', 'Server': 'AirTunes/366.0', 'CSeq': '6'}, body=''): 2023-08-27 22:50:17 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=2545221632, RtpTime=109798, Sec=3902158217, SyncPacket=80d400070000aa80e896358997b500000001ace6) 2023-08-27 22:50:17 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 0.999157s (current frames: 44352, expected: 44063) 2023-08-27 22:50:18 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=2569732096, RtpTime=154150, Sec=3902158218, SyncPacket=80d40007000157c0e896358a992b000000025a26) 2023-08-27 22:50:18 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 7\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\n\r\n' 2023-08-27 22:50:18 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005845s (current frames: 88704, expected: 88421) 2023-08-27 22:50:18 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 7\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:50:18 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '7'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:50:19 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=2594308096, RtpTime=198502, Sec=3902158219, SyncPacket=80d4000700020500e896358b9aa2000000030766) 2023-08-27 22:50:19 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.004935s (current frames: 133056, expected: 132738) 2023-08-27 22:50:20 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=2584543232, RtpTime=242502, Sec=3902158220, SyncPacket=80d400070002b0e0e896358c9a0d00000003b346) 2023-08-27 22:50:20 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005916s (current frames: 177408, expected: 177099) 2023-08-27 22:50:20 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 8\r\nDACP-ID: FF866F37CB0012D7\r\nActive-Remote: 3913582613\r\nClient-Instance: FF866F37CB0012D7\r\n\r\n' 2023-08-27 22:50:20 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/366.0\r\nCSeq: 8\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-' 2023-08-27 22:50:20 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '85', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/366.0', 'CSeq': '8'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd2\x04\x05\x06\x07TtypeRsr\x10#@\xe5\x88\x80\x00\x00\x00\x00\x08\x0b\x13\x15\x1a\x1f"$\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-'): 2023-08-27 22:50:21 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=2574778368, RtpTime=286502, Sec=3902158221, SyncPacket=80d4000700035cc0e896358d9978000000045f26) 2023-08-27 22:50:21 DEBUG [pyatv.protocols.raop.stream_client]: Sent 44352 frames in 1.005723s (current frames: 221760, expected: 221452) ^CTraceback (most recent call last): File "/usr/local/bin/atvremote", line 8, in sys.exit(main()) ^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyatv/scripts/atvremote.py", line 787, in main return loop.run_until_complete(appstart(loop)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/asyncio/base_events.py", line 640, in run_until_complete self.run_forever() File "/usr/local/lib/python3.11/asyncio/base_events.py", line 607, in run_forever self._run_once() File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1884, in _run_once event_list = self._selector.select(timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/selectors.py", line 462, in select fd_event_list = self._selector.poll(timeout, max_ev) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ KeyboardInterrupt `

Maztah commented 1 year ago

ok the features are apparently not the reason. If I change the manual configuration to the automatically detected features it still works.

So the call works as well: atvremote -i 486B547F1247 stream_file=http://mp3.ffh.de/radioffh/hqlivestream.mp3 --service-properties :features=0x445F8A00,0x4001C340 --address 192.168.188.25 --port 7000 --protocol airplay --manual

darkner258 commented 11 months ago

Hello @postlund, I wasn’t here for a minute, but could you please summarize the status of this? Should I look for a different AirPlay reciever or is there a chance of this working again?

postlund commented 11 months ago

@darkner258 Not much has happened lately s as my schedule is pretty insane right now. I of course want this fixed and all help I can get is appreciated as this point. I'm gonna try to prioritize this as soon as schedule clears up.

darkner258 commented 11 months ago

Great, thanks! I obviously realise that you do this in your spare time and this issue is not a priority, appreciate the effort!

On Tue 19. 9. 2023 at 18:46, Pierre Ståhl @.***> wrote:

@darkner258 https://github.com/darkner258 Not much has happened lately s as my schedule is pretty insane right now. I of course want this fixed and all help I can get is appreciated as this point. I'm gonna try to prioritize this as soon as schedule clears up.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/95993#issuecomment-1726069098, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZKVEUPCOXD6KCUN7Z6P5WTX3HD6LANCNFSM6AAAAAA2AKNTAU . You are receiving this because you were mentioned.Message ID: @.***>

postlund commented 11 months ago

An intermediary workaround would be to add a setting to allow overriding AirPlay version used (to make it always use v1 instead of v2, where the problem is). Adding that to Home Assistant officially would require some work, but if a custom component is doable until it's fixed that is probably quite simple to do.

darkner258 commented 11 months ago

If someone told me how to do it, I’d do it right now :D

On Tue 19. 9. 2023 at 18:52, Pierre Ståhl @.***> wrote:

An intermediary workaround would be to add a setting to allow overriding AirPlay version used (to make it always use v1 instead of v2, where the problem is). Adding that to Home Assistant officially would require some work, but if a custom component is doable until it's fixed that is probably quite simple to do.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/95993#issuecomment-1726077366, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZKVEUJH4IAIUCH57PNBWKDX3HEULANCNFSM6AAAAAA2AKNTAU . You are receiving this because you were mentioned.Message ID: @.***>

postlund commented 11 months ago

I can start working on support for it in pyatv, it needs to be tested from there first. I can tag you with some instructions.

darkner258 commented 11 months ago

Absolutely, happy to help :)

On Tue 19. 9. 2023 at 19:19, Pierre Ståhl @.***> wrote:

I can start working on support for it in pyatv, it needs to be tested from there first. I can tag you with some instructions.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/95993#issuecomment-1726164542, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZKVEUPL5FQJJV3ATQG2YGTX3HH2XANCNFSM6AAAAAA2AKNTAU . You are receiving this because you were mentioned.Message ID: @.***>

postlund commented 11 months ago

@darkner258 I have implemented a setting for AirPlay protocol version now. There's no release out yet (it's fully untested), so you need to run it from master. There are some instructions here: https://github.com/postlund/pyatv/issues/2204#issuecomment-1730264259 Feel free to try and report back any progress (you can post in the mentioned issue).