Closed darkner258 closed 3 weeks 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!
(message by CodeOwnersMention)
apple_tv documentation apple_tv source (message by IssueLinks)
It did work prior to upgrading if I understand correctly? You need to check the logs and see what I'd happening there.
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: @.***>
@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)
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?
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
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.
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: @.***>
Nevermind, found it. Flags reported this: flags = 0x404 and features this: features = 0x445F8A00,0x4001C340
@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!
@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.
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.
@jreed509 and you are running the latest HA release (and don't happen to have the old beta version from HACS installed)?
Yep I'm running the latest HA release (2023.7.1) and never had the beta HACS version installed.
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
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.
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.
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: @.***>
Don't you get audio on your HomePods either? Because that should work, I've tested it myself.
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: @.***>
@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.
@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
@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.
@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?
@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
@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.
@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
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?
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.
Also @postlund dropped you a PM on Discord, debugging things might be a bit quicker over there!
A few more findings:
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.
@fonix232 I have pushed an update that sends raw PCM instead, can you try that?
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.
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.
@postlund Unfortunately I can't seem to get Owntone working. I've tried LMS with the Shairport2W plugin, and it presents the same errors:
pyatv.exceptions.NotSupportedError: encryption keys not supported by legacy auth
I'll keep trying with Owntone, hopefully I can get it working...
Here's some further logs:
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
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 :(
@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
@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?
sure, i can do that. tomorrow evening i'll be back home.
@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
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
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
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?
@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.
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: @.***>
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.
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: @.***>
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.
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: @.***>
@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).
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