postlund / pyatv

A client library for Apple TV and AirPlay devices
https://pyatv.dev
MIT License
886 stars 100 forks source link

How to play tts on homepod mini from Homeassistant? #1221

Closed SalkinDK closed 2 years ago

SalkinDK commented 3 years ago

What's on your heart? First of all, thx alot for a great integration and all the hard work.

i read in the release logs for HA 2021.7:

Bump pyatv to 0.8.1 (@doug-hoffman - #52849) (apple_tv docs)

But how do i send a TTS to one of my homepod minis?

If i try to add them thru the integration i am promted to input the airplay code, but since there isnt a screen showing it i dont know what it is?

Thx in advance :)

postlund commented 3 years ago

You can't yet. As of 0.8.0 pyatv supports streaming audio files via AirPlay, but I haven't added support for that in the Home Assistant integration. It's on my todo-list, but my highest priority right now is #1220. Could possibly be hacked to work by running atvremote as a shell command, assuming you figure out how to get the file name of the cached TTS file.

SalkinDK commented 3 years ago

Ok, then there is a logic explanation :)

I have tried with the shell command but it just returns

NoneType: None

When i try to run atvremote in a ssh session it just say command not found.

I am not a coder but i would love to help if i can do anything about the other issue.

postlund commented 3 years ago

It's been ages since I used the shell command integration, so I'm not sure how to debug that. What command are you trying to execute? You need to have pyatv installed to run atvremote and that is only installed in the Home Assiatant container, not the one used by the SSH addon. Assuming you run on HassOS?

tsunglung commented 3 years ago

There a one who already implement it. https://github.com/georgezhao2010/apple_airplayer

But I found that it call stream_file() to play audio file and cause HA 2021.7.3 (hassos 2021.06.8) restart.

postlund commented 3 years ago

Cool, didn't know someone made a custom component for that (my intention is to have proper support for AirPlay devices in the Apple TV integration). Can't vouch for the quality, I guess issues should end up in that repo instead.

niceboygithub commented 3 years ago

attached the exception log while using HomePod Mini with ha core 2021.7.4

2021-07-26 15:40:15 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [140370497348176] Received {'type': 'execute_script', 'sequence': [{'service': 'tts.google_say', 'data': {'entity_id': 'media_player.airplay_58d34903313e', 'message': 'hello'}}], 'id': 67}
2021-07-26 15:40:15 INFO (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Running websocket_api script
2021-07-26 15:40:15 INFO (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Executing step call service
2021-07-26 15:40:15 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=tts, service=google_say, service_data=entity_id=media_player.airplay_58d34903313e, message=hello>
2021-07-26 15:40:15 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=media_player, service=play_media, service_data=media_content_id=http://10.0.1.195:8123/api/tts_proxy/aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d_en_-_google_translate.mp3, media_content_type=music, entity_id=['media_player.airplay_58d34903313e']>
2021-07-26 15:40:15 ERROR (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Error executing script. Unexpected error for call_service at pos 1: volume is not supported
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 371, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 571, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/components/tts/__init__.py", line 201, in async_say_handle
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 213, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 675, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 406, in async_update_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 455, in _async_write_ha_state
    attr.update(self.state_attributes or {})
  File "/usr/src/homeassistant/homeassistant/components/media_player/__init__.py", line 908, in state_attributes
    value = getattr(self, attr)
  File "/config/custom_components/apple_airplayer/media_player.py", line 56, in volume_level
    return self._player_device.volume_level
  File "/config/custom_components/apple_airplayer/device_manager.py", line 68, in volume_level
    return self._atv_interface.audio.volume / 100
  File "/usr/local/lib/python3.9/site-packages/pyatv/support/facade.py", line 362, in volume
    volume = self.relay("volume")
  File "/usr/local/lib/python3.9/site-packages/pyatv/support/relayer.py", line 75, in relay
    instance = self._find_instance(target, priority or self._priorities)
  File "/usr/local/lib/python3.9/site-packages/pyatv/support/relayer.py", line 97, in _find_instance
    raise exceptions.NotSupportedError(f"{target} is not supported")
pyatv.exceptions.NotSupportedError: volume is not supported
2021-07-26 15:40:15 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140370497348176] Error handling message: Unknown error
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 25, in _handle_async_response
    await func(hass, connection, msg)
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 525, in handle_execute_script
    await script_obj.async_run(msg.get("variables"), context=context)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1219, in async_run
    await asyncio.shield(run.async_run())
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 353, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 371, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 571, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/components/tts/__init__.py", line 201, in async_say_handle
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 213, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 675, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 406, in async_update_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 455, in _async_write_ha_state
    attr.update(self.state_attributes or {})
  File "/usr/src/homeassistant/homeassistant/components/media_player/__init__.py", line 908, in state_attributes
    value = getattr(self, attr)
  File "/config/custom_components/apple_airplayer/media_player.py", line 56, in volume_level
    return self._player_device.volume_level
  File "/config/custom_components/apple_airplayer/device_manager.py", line 68, in volume_level
    return self._atv_interface.audio.volume / 100
  File "/usr/local/lib/python3.9/site-packages/pyatv/support/facade.py", line 362, in volume
    volume = self.relay("volume")
  File "/usr/local/lib/python3.9/site-packages/pyatv/support/relayer.py", line 75, in relay
    instance = self._find_instance(target, priority or self._priorities)
  File "/usr/local/lib/python3.9/site-packages/pyatv/support/relayer.py", line 97, in _find_instance
    raise exceptions.NotSupportedError(f"{target} is not supported")
pyatv.exceptions.NotSupportedError: volume is not supported
2021-07-26 15:40:15 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [140370497348176] Sending {"id": 67, "type": "result", "success": false, "error": {"code": "unknown_error", "message": "Unknown error"}}
postlund commented 3 years ago

@niceboygithub That's an issue with the component not checking available features. You should open an issue in the repo of the component.

jonskoglund commented 3 years ago

There a one who already implement it. https://github.com/georgezhao2010/apple_airplayer

But I found that it call stream_file() to play audio file and cause HA 2021.7.3 (hassos 2021.06.8) restart.

This is for TTS only. It can play media files but there's no way of controlling the playback (play,stop, pause, etc). In other words: not a full-featured HA media player. Maybe @postlund can pull this off with his coding skills ;-)

postlund commented 3 years ago

This is for TTS only. It can play media files but there's no way of controlling the playback (play,stop, pause, etc). In other words: not a full-featured HA media player. Maybe @postlund can pull this off with his coding skills ;-)

The problem is that the RAOP protocol only supports playback control (and implicitly metadata) for the current stream. So it cannot control playback in case someone else is playing something. I guess that's by design in AirPlay. The HomePod however supports tunneling MRP over AirPlay (like the Apple TV requires in tvOS 15). I have implemented that on master together with the required pairing for the HomePod, so metadata and playback control should work as expected with pyatv 0.9.0 when it is released. As long as AirPlay credentials are provided. Implementing everything required for that was easier said than done, but now it is 😊

postlund commented 3 years ago

So... current status here is that I'm working on #1312, which will add support for "stop" properly. That will at least make it possible to stream something and stop it on demand. As there's no queue or playlist supports, it's not really possible to make anything sensible with next/previous. Pause requires a bit of work, but I will try to fix that as well in due time.

Anyways... As mentioned, RAOP only supports streaming local files. In the beta version of the Apple TV integration (available here: https://github.com/postlund/hass-atv-beta) I have added a small hack that, when TTS is sent to an Apple TV media player, will wait for the file to be downloaded before starting to stream it locally. This makes it possible to use TTS with the regular integration instead of using another one. This particular solution will not make the final cut when submitting a PR back to Home Assistant, but I hope that I can spark some interest into developing a proper solution. But you can use the beta component to stream to HomePod Minis (or any AirPlay receiver really) in the mean time.

SalkinDK commented 3 years ago

When i try to send a TTS to one of my homepods i get this error Failed to call service tts/cloud_say. 'Apple TvMediaPlayer' object has no attribute _wait for tts file'

postlund commented 3 years ago

@SalkinDK Darn it, my bad! I have pushed a new release now!

SalkinDK commented 3 years ago

@postlund Thx for reacting so fast.

But now I get another error

Failed to call service tts/cloud_say.
_wait_for_tts_file( missing 1 required positional argument: 'tts_file'

Logger: homeassistant.components.websocket_api.http.connection
Source: custom_components/apple_tv/media_player.py:235
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 6:27:09 PM (2 occurrences)
Last logged: 6:27:20 PM

[140473370680192] _wait_for_tts_file() missing 1 required positional argument: 'tts_file'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 185, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/components/tts/__init__.py", line 201, in async_say_handle
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 213, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 658, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 830, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 695, in _handle_entity_call
    await result
  File "/config/custom_components/apple_tv/media_player.py", line 235, in async_play_media
    await asyncio.wait_for(_wait_for_tts_file(media_id), 5.0)
TypeError: _wait_for_tts_file() missing 1 required positional argument: 'tts_file'
postlund commented 3 years ago

@SalkinDK Yeah, I suck... Pushed another release now.

SalkinDK commented 3 years ago

@postlund no not at all. you are the man for continuing development here. :)

But now I get Failed to call service tts/cloud_say. undefined and then my HA instanced crash and becomes unresponsive.

postlund commented 3 years ago

@SalkinDK That doesn't sound very good. I will have to look in to that. If you manage to extract any logs that would be helpful.

SalkinDK commented 3 years ago

@postlund the only thing I can get from the logs after the crash is


[finish] process received signal 4
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.
postlund commented 3 years ago

@SalkinDK That nothing I can work with I'm afraid. Maybe you can enable debug logs, try to stream and see what happens?

https://github.com/postlund/hass-atv-beta#debug-logs

SalkinDK commented 3 years ago

@postlund of course.. sorry for not thinking of that before 😊


2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 48\r\nDACP-ID: 887B6272F0F8FB11\r\nActive-Remote: 1622786070\r\nClient-Instance: 887B6272F0F8FB11\r\n\r\n'
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:53 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 48\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:53 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 48\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:53 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '48'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:53 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '48'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 45 (AirPlay:192.168.1.222)
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 45 (AirPlay:192.168.1.223)
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:53 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 43\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:53 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '43'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 40 (AirPlay:192.168.1.221)
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 44 (AirPlay:192.168.1.172)
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 47\r\nDACP-ID: 9B1B843756EA9B89\r\nActive-Remote: 2500863012\r\nClient-Instance: 9B1B843756EA9B89\r\n\r\n'
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:53 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 47\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:53 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '47'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:53 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 44 (AirPlay:192.168.1.172)
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 46 (AirPlay:192.168.1.222)
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 49\r\nDACP-ID: 7696FBDF591D5F6\r\nActive-Remote: 3290321842\r\nClient-Instance: 7696FBDF591D5F6\r\n\r\n'
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 46 (AirPlay:192.168.1.223)
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 49\r\nDACP-ID: 887B6272F0F8FB11\r\nActive-Remote: 1622786070\r\nClient-Instance: 887B6272F0F8FB11\r\n\r\n'
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:55 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 49\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:55 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '49'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 46 (AirPlay:192.168.1.222)
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:55 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 49\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:55 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '49'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 46 (AirPlay:192.168.1.223)
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 41 (AirPlay:192.168.1.221)
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 44\r\nDACP-ID: F056EF15B2B7271E\r\nActive-Remote: 1685141494\r\nClient-Instance: F056EF15B2B7271E\r\n\r\n'
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:55 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 44\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:55 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '44'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 41 (AirPlay:192.168.1.221)
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 45 (AirPlay:192.168.1.172)
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 48\r\nDACP-ID: 9B1B843756EA9B89\r\nActive-Remote: 2500863012\r\nClient-Instance: 9B1B843756EA9B89\r\n\r\n'
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:55 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 48\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:55 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '48'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:55 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 45 (AirPlay:192.168.1.172)
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 47 (AirPlay:192.168.1.222)
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 50\r\nDACP-ID: 7696FBDF591D5F6\r\nActive-Remote: 3290321842\r\nClient-Instance: 7696FBDF591D5F6\r\n\r\n'
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 47 (AirPlay:192.168.1.223)
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 50\r\nDACP-ID: 887B6272F0F8FB11\r\nActive-Remote: 1622786070\r\nClient-Instance: 887B6272F0F8FB11\r\n\r\n'
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:57 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 50\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:57 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '50'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 47 (AirPlay:192.168.1.222)
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:57 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 50\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:57 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '50'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 47 (AirPlay:192.168.1.223)
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 42 (AirPlay:192.168.1.221)
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 45\r\nDACP-ID: F056EF15B2B7271E\r\nActive-Remote: 1685141494\r\nClient-Instance: F056EF15B2B7271E\r\n\r\n'
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:57 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 45\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:57 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '45'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 42 (AirPlay:192.168.1.221)
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 46 (AirPlay:192.168.1.172)
2021-10-21 20:38:57 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 49\r\nDACP-ID: 9B1B843756EA9B89\r\nActive-Remote: 2500863012\r\nClient-Instance: 9B1B843756EA9B89\r\n\r\n'
2021-10-21 20:38:58 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:58 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 49\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:58 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:58 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '49'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:58 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 46 (AirPlay:192.168.1.172)
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 48 (AirPlay:192.168.1.222)
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 51\r\nDACP-ID: 7696FBDF591D5F6\r\nActive-Remote: 3290321842\r\nClient-Instance: 7696FBDF591D5F6\r\n\r\n'
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 48 (AirPlay:192.168.1.223)
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 51\r\nDACP-ID: 887B6272F0F8FB11\r\nActive-Remote: 1622786070\r\nClient-Instance: 887B6272F0F8FB11\r\n\r\n'
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:59 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 51\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:59 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '51'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 48 (AirPlay:192.168.1.222)
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:59 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 51\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:59 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '51'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 48 (AirPlay:192.168.1.223)
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 43 (AirPlay:192.168.1.221)
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 46\r\nDACP-ID: F056EF15B2B7271E\r\nActive-Remote: 1685141494\r\nClient-Instance: F056EF15B2B7271E\r\n\r\n'
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:38:59 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 46\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:38:59 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '46'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:38:59 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 43 (AirPlay:192.168.1.221)
2021-10-21 20:39:00 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 47 (AirPlay:192.168.1.172)
2021-10-21 20:39:00 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 50\r\nDACP-ID: 9B1B843756EA9B89\r\nActive-Remote: 2500863012\r\nClient-Instance: 9B1B843756EA9B89\r\n\r\n'
2021-10-21 20:39:00 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:39:00 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 50\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:39:00 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:39:00 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '50'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:39:00 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 47 (AirPlay:192.168.1.172)
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 49 (AirPlay:192.168.1.222)
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 52\r\nDACP-ID: 7696FBDF591D5F6\r\nActive-Remote: 3290321842\r\nClient-Instance: 7696FBDF591D5F6\r\n\r\n'
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 49 (AirPlay:192.168.1.223)
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 52\r\nDACP-ID: 887B6272F0F8FB11\r\nActive-Remote: 1622786070\r\nClient-Instance: 887B6272F0F8FB11\r\n\r\n'
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:39:01 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 52\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:39:01 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '52'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 49 (AirPlay:192.168.1.222)
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:39:01 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 52\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:39:01 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '52'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 49 (AirPlay:192.168.1.223)
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 44 (AirPlay:192.168.1.221)
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 47\r\nDACP-ID: F056EF15B2B7271E\r\nActive-Remote: 1685141494\r\nClient-Instance: F056EF15B2B7271E\r\n\r\n'
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Thu, 21 Oct 2021 18:39:01 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/566.25.43\r\nCSeq: 47\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Thu, 21 Oct 2021 18:39:01 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/566.25.43', 'cseq': '47'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-10-21 20:39:01 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 44 (AirPlay:192.168.1.221)
2021-10-21 20:39:02 DEBUG (MainThread) [custom_components.apple_tv.media_player] Waiting for TTS file /config/tts/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3_da-dk_a9c18110b0_cloud.mp3 to appear
[finish] process exit code 256
[finish] process received signal 4
[finish] process exit code 256
[finish] process received signal 15
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.
postlund commented 3 years ago

If you try a short text, like "hey", is it still the same?

SalkinDK commented 3 years ago

Yes. Most of The tests I done with the text β€œtest”.

postlund commented 2 years ago

@SalkinDK Can you try if the latest version of the beta component works better?

jcbshw commented 2 years ago

I am also getting the same "Failed to call service tts/cloud_say undefined" and crash as well. I was able to get the debug logs.

2021-12-06 19:49:23 DEBUG (MainThread) [pyatv.support.net] Binding on *:5353
2021-12-06 19:49:23 DEBUG (MainThread) [pyatv.support.net] Binding on 127.0.0.1:0
2021-12-06 19:49:23 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Tue, 07 Dec 2021 03:49:23 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/595.15.41', 'cseq': '139'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-12-06 19:49:23 DEBUG (MainThread) [pyatv.support.net] Binding on 10.0.10.100:0
2021-12-06 19:49:23 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 136 (AirPlay:10.0.10.78)
2021-12-06 19:49:23 DEBUG (MainThread) [pyatv.support.net] Binding on 172.17.0.1:0
2021-12-06 19:49:23 DEBUG (MainThread) [pyatv.support.net] Binding on 172.30.32.1:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 142 (AirPlay:10.0.10.249)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 145\r\nDACP-ID: 5136E270B1CF5C58\r\nActive-Remote: 386451158\r\nClient-Instance: 5136E270B1CF5C58\r\n\r\n'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Tue, 07 Dec 2021 03:49:24 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/595.15.41\r\nCSeq: 145\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Tue, 07 Dec 2021 03:49:24 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/595.15.41', 'cseq': '145'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 142 (AirPlay:10.0.10.249)
2021-12-06 19:49:24 DEBUG (MainThread) [custom_components.apple_tv.media_player] Streaming http://10.0.10.100:8123/api/tts_proxy/a54d88e06612d820bc3be72877c74f257b561b19_en-us_a9c18110b0_cloud.mp3 via RAOP
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.core.facade] Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.RAOP
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.core.protocol] Sending periodic heartbeat 136 (AirPlay:10.0.10.6)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 139\r\nDACP-ID: C897BD7635158429\r\nActive-Remote: 511702145\r\nClient-Instance: C897BD7635158429\r\n\r\n'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Tue, 07 Dec 2021 03:49:23 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/595.15.41\r\nCSeq: 139\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Connected to 10.0.10.6
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.raop.raop] Initializing RTSP with encryption=EncryptionType.FairPlaySAPv25|FairPlay|Unencrypted, metadata=MetadataType.Progress|Artwork|Text
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.raop.raop] Update play settings to 44100/2/16bit
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Tue, 07 Dec 2021 03:49:23 GMT', 'content-length': '55', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/595.15.41', 'cseq': '139'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\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\x14'):
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.core.protocol] Got heartbeat 136 (AirPlay:10.0.10.6)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.raop.raop] Local ports: control=48787, timing=54682
2021-12-06 19:49:24 DEBUG (MainThread) [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: 5B41346667A21C17\r\nActive-Remote: 3930955592\r\nClient-Instance: 5B41346667A21C17\r\n\r\n'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Tue, 07 Dec 2021 03:49:23 GMT\r\nContent-Length: 943\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/595.15.41\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x16\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\x1d!"#$%&\'(\x1d*+,456789SpsiRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBody_\x10\x0fprotocolVersion_\x10\x11volumeControlTypeTname]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesEx_\x10\x10supportedFormats]sourceVersionUmodelRpkZmacAddress_\x10\x15receiverHDRCapabilityXfeatures_\x10$242CED7B-22F3-4BB2-84A2-A05E30A7A8CD\x10\x02\xd3\x1a\x1b\x1c\x1d\x1d\x1d_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10\x1dsupportsUIForAudioOnlyContent\x08\x08\x08\x08\x12\x00\x01\x84\x04\tS1.1\x10\x03_\x10\x0fBedroom HomePod_\x10\x1110.0.10.100:54112_\x10\x11E0:2B:96:A5:C6:5E_\x10$9d5ae686-7bfd-4566-9666-e59737dc7576\x08#\xc05_i@\x00\x00\x00[AMp/StBLNbw\xd4-./01223_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\\bufferStream\x12\x02\x00\x00\x00\x12\x01D\x08\x00\x13\x00\x00\x01\x80\x00\xe0\x00\x00Y595.15.41_\x10\x11AudioAccessory5,1O\x10 \x947&\xedsOa]9\x87\xcb\x1d\xb7\xe7\x06d\xda\xa7M\x05\xe5\xfe\xf8\xa9\x1f\x9e\xbc\xb1\xca\xa4\xbd\xb7_\x10\x11E0:2B:96:8B:A1:8BT4k60\x13\xbc5K\xd0J\x7f\xca\x00\x00\x08\x007\x00;\x00>\x00U\x00m\x00y\x00\x94\x00\xa6\x00\xba\x00\xbf\x00\xcd\x00\xd6\x00\xd9\x00\xe8\x00\xf6\x01\x01\x01\x14\x01"\x01(\x01+\x016\x01N\x01W\x01~\x01\x80\x01\x87\x01\x9f\x01\xb7\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xdb\x01\xe0\x01\xe1\x01\xe5\x01\xe7\x01\xf9\x02\r\x02!\x02H\x02I\x02R\x02^\x02g\x02\x7f\x02\x8c\x02\x98\x02\xa5\x02\xaa\x02\xaf\x02\xb8\x02\xc2\x02\xd6\x02\xf9\x03\r\x03\x12\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\x03\x1b'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Tue, 07 Dec 2021 03:49:23 GMT', 'content-length': '943', 'content-type': 'application/x-apple-binary-plist', 'server': 'AirTunes/595.15.41', 'cseq': '0'}, body=b'bplist00\xdf\x10\x16\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\x1d!"#$%&\'(\x1d*+,456789SpsiRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBody_\x10\x0fprotocolVersion_\x10\x11volumeControlTypeTname]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesEx_\x10\x10supportedFormats]sourceVersionUmodelRpkZmacAddress_\x10\x15receiverHDRCapabilityXfeatures_\x10$242CED7B-22F3-4BB2-84A2-A05E30A7A8CD\x10\x02\xd3\x1a\x1b\x1c\x1d\x1d\x1d_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10\x1dsupportsUIForAudioOnlyContent\x08\x08\x08\x08\x12\x00\x01\x84\x04\tS1.1\x10\x03_\x10\x0fBedroom HomePod_\x10\x1110.0.10.100:54112_\x10\x11E0:2B:96:A5:C6:5E_\x10$9d5ae686-7bfd-4566-9666-e59737dc7576\x08#\xc05_i@\x00\x00\x00[AMp/StBLNbw\xd4-./01223_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\\bufferStream\x12\x02\x00\x00\x00\x12\x01D\x08\x00\x13\x00\x00\x01\x80\x00\xe0\x00\x00Y595.15.41_\x10\x11AudioAccessory5,1O\x10 \x947&\xedsOa]9\x87\xcb\x1d\xb7\xe7\x06d\xda\xa7M\x05\xe5\xfe\xf8\xa9\x1f\x9e\xbc\xb1\xca\xa4\xbd\xb7_\x10\x11E0:2B:96:8B:A1:8BT4k60\x13\xbc5K\xd0J\x7f\xca\x00\x00\x08\x007\x00;\x00>\x00U\x00m\x00y\x00\x94\x00\xa6\x00\xba\x00\xbf\x00\xcd\x00\xd6\x00\xd9\x00\xe8\x00\xf6\x01\x01\x01\x14\x01"\x01(\x01+\x016\x01N\x01W\x01~\x01\x80\x01\x87\x01\x9f\x01\xb7\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xdb\x01\xe0\x01\xe1\x01\xe5\x01\xe7\x01\xf9\x02\r\x02!\x02H\x02I\x02R\x02^\x02g\x02\x7f\x02\x8c\x02\x98\x02\xa5\x02\xaa\x02\xaf\x02\xb8\x02\xc2\x02\xd6\x02\xf9\x03\r\x03\x12\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\x03\x1b'):
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.raop.raop] Updated info parameters to: {'psi': '242CED7B-22F3-4BB2-84A2-A05E30A7A8CD', 'vv': 2, 'playbackCapabilities': {'supportsInterstitials': False, 'supportsFPSSecureStop': False, 'supportsUIForAudioOnlyContent': False}, 'canRecordScreenStream': False, 'statusFlags': 99332, 'keepAliveSendStatsAsBody': True, 'protocolVersion': '1.1', 'volumeControlType': 3, 'name': 'Bedroom HomePod', 'senderAddress': '10.0.10.100:54112', 'deviceID': 'E0:2B:96:A5:C6:5E', 'pi': '9d5ae686-7bfd-4566-9666-e59737dc7576', 'screenDemoMode': False, 'initialVolume': -21.372699737548828, 'featuresEx': 'AMp/StBLNbw', 'supportedFormats': {'lowLatencyAudioStream': 33554432, 'screenStream': 21235712, 'audioStream': 21235712, 'bufferStream': 1649282121728}, 'sourceVersion': '595.15.41', 'model': 'AudioAccessory5,1', 'pk': b'\x947&\xedsOa]9\x87\xcb\x1d\xb7\xe7\x06d\xda\xa7M\x05\xe5\xfe\xf8\xa9\x1f\x9e\xbc\xb1\xca\xa4\xbd\xb7', 'macAddress': 'E0:2B:96:8B:A1:8B', 'receiverHDRCapability': '4k60', 'features': -4884914862838265344}
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.auth] Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.Null
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.auth] Performing null Pair-Verify
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'ANNOUNCE rtsp://10.0.10.100/1831908923 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nContent-Type: application/sdp\r\nContent-Length: 178\r\nCSeq: 1\r\nDACP-ID: 5B41346667A21C17\r\nActive-Remote: 3930955592\r\nClient-Instance: 5B41346667A21C17\r\n\r\nv=0\r\no=iTunes 1831908923 0 IN IP4 10.0.10.100\r\ns=iTunes\r\nc=IN IP4 10.0.10.6\r\nt=0 0\r\nm=audio 0 RTP/AVP 96\r\na=rtpmap:96 AppleLossless\r\na=fmtp:96 352 0 16 40 10 14 2 255 0 0 44100\r\n'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Tue, 07 Dec 2021 03:49:24 GMT\r\nContent-Length: 0\r\nServer: AirTunes/595.15.41\r\nCSeq: 1\r\n\r\n'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Received data (Data=000425de4cf3a0ee22e97bdebc3d9c3923e5a1483e9a5dc0e5312564018a517fab944258d2568ae144022feaba71b042b778274c125389489066b44de98e4b9979a7ab135a84d931842b983dd52f1bd82eff12718927b117e192f5ac5e8b813cd9127b090d6472a9dafe0c4165d372f7aa1d72218ed52ce7281e9a768ea88b4684a60576108567e7b7ea9bd88f02d2c45e17a30494e9e02846fb70a53971044d79c354a702f0c36f3b61714f2950fc51bbb8847653801e48bd8e889243103ef89328355327e30c5f8ac5b92bac2faf1e9d2cabe7bc6c8eb7f45e0f14032540d2e39ef6bff80619030dfe909a29e14421959afe2dd1221f30956a306bbabf9...)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.channels] Got message on event channel: HttpRequest(method='POST', path='/command', protocol='RTSP', version='1.0', headers={'cseq': '2', 'content-length': '1396', 'content-type': 'application/x-apple-binary-plist'}, body=b'bplist00\xd2\x01\x02\x03\x04TtypeUvalueZupdateInfo\xdf\x10\x17\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"&\'()*+,-"/012:;<=>?SpsiRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBody_\x10\x0fprotocolVersion_\x10\x11volumeControlTypeTname]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesExZtxtAirPlay_\x10\x10supportedFormats]sourceVersionUmodelRpkZmacAddress_\x10\x15receiverHDRCapabilityXfeatures_\x10$242CED7B-22F3-4BB2-84A2-A05E30A7A8CD\x10\x02\xd3\x1f !"""_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10\x1dsupportsUIForAudioOnlyContent\x08\x08\x08\x08\x12\x00\x03\x84\x04\tS1.1\x10\x03_\x10\x0fBedroom HomePod_\x10\x1110.0.10.100:53832_\x10\x11E0:2B:96:A5:C6:5E_\x10$9d5ae686-7bfd-4566-9666-e59737dc7576\x08#\xc05_i@\x00\x00\x00[AMp/StBLNbwO\x11\x01\x8d\x05acl=0\x18btaddr=51:0B:BC:C3:EC:A3\x1adeviceid=E0:2B:96:A5:C6:5E\x0ffex=AMp/StBLNbw\x1efeatures=0x4A7FCA00,0xBC354BD0\rflags=0x38404(gid=18360F64-F80A-4075-8EDC-69D855E08F8F\x05igl=1\x06gcgl=1\x17model=AudioAccessory5,1\rprotovers=1.1\'pi=9d5ae686-7bfd-4566-9666-e59737dc7576(psi=242CED7B-22F3-4BB2-84A2-A05E30A7A8CDCpk=943726ed734f615d3987cb1db7e70664daa74d05e5fef8a91f9ebcb1caa4bdb7\x11srcvers=595.15.41\rosvers=15.1.1\x04vv=2\xd434567889_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\\bufferStream\x12\x02\x00\x00\x00\x12\x01D\x08\x00\x13\x00\x00\x01\x80\x00\xe0\x00\x00Y595.15.41_\x10\x11AudioAccessory5,1O\x10 \x947&\xedsOa]9\x87\xcb\x1d\xb7\xe7\x06d\xda\xa7M\x05\xe5\xfe\xf8\xa9\x1f\x9e\xbc\xb1\xca\xa4\xbd\xb7_\x10\x11E0:2B:96:8B:A1:8BT4k60\x13\xbc5K\xd0J\x7f\xca\x00\x00\x08\x00\r\x00\x12\x00\x18\x00#\x00T\x00X\x00[\x00r\x00\x8a\x00\x96\x00\xb1\x00\xc3\x00\xd7\x00\xdc\x00\xea\x00\xf3\x00\xf6\x01\x05\x01\x13\x01\x1e\x01)\x01<\x01J\x01P\x01S\x01^\x01v\x01\x7f\x01\xa6\x01\xa8\x01\xaf\x01\xc7\x01\xdf\x01\xff\x02\x00\x02\x01\x02\x02\x02\x03\x02\x08\x02\t\x02\r\x02\x0f\x02!\x025\x02I\x02p\x02q\x02z\x02\x86\x04\x17\x04 \x048\x04E\x04Q\x04^\x04c\x04h\x04q\x04{\x04\x8f\x04\xb2\x04\xc6\x04\xcb\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\x04\xd4')
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Sending data (Encrypted=4f005256a895b3e2df8e03276691c4d2121950aa2023b281f56966e499f487c87b74b13f9cbe3a6e6f06d6ac14b8e860dddcfc80a84c41adcec875225b5496c9fe782c93169128c573fbd93b5d1f20c80f988955cd286123af280ec7cb44e5ce3e)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Tue, 07 Dec 2021 03:49:24 GMT', 'content-length': '0', 'server': 'AirTunes/595.15.41', 'cseq': '1'}, body=''):
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Sending RTSP/1.0 message: b'SETUP rtsp://10.0.10.100/1831908923 RTSP/1.0\r\nUser-Agent: AirPlay/540.31\r\nCSeq: 2\r\nDACP-ID: 5B41346667A21C17\r\nActive-Remote: 3930955592\r\nClient-Instance: 5B41346667A21C17\r\nTransport: RTP/AVP/UDP;unicast;interleaved=0-1;mode=record;control_port=48787;timing_port=54682\r\n\r\n'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Received data (Data=0004fedf591d273e97ec01d005f949958e93b1e180fed56f3e04f7475dfe970a72338717cf92c4b305a498244f3c0e561fcb1c50a119e5c075239a4f353be7408508f5a767359d39b189b9b23a4dbac93197ce57950170cae95e6aa53431cfba4ef518c21fa6693e5ed0b5a4baaa38d9c9016a00a06496499c87232223aa85c2b44356424afb6ec5e2a3f8c9fff4acf4e2f238780a8fa15f1307ece4258af1c6da735903677587389499ec0eb95f7cadadd03afe923f7dcd62ab4f53081fcbad6072afdc4d8c56333fbed77bf7012f62d8f25ccca82a468a4143f319f07174df238eaa616401c0ebc8a01791a3dbadc260abee679394e911236212160d4e0...)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.channels] Got message on event channel: HttpRequest(method='POST', path='/command', protocol='RTSP', version='1.0', headers={'cseq': '3', 'content-length': '1396', 'content-type': 'application/x-apple-binary-plist'}, body=b'bplist00\xd2\x01\x02\x03\x04TtypeUvalueZupdateInfo\xdf\x10\x17\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"&\'()*+,-"/012:;<=>?SpsiRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBody_\x10\x0fprotocolVersion_\x10\x11volumeControlTypeTname]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesExZtxtAirPlay_\x10\x10supportedFormats]sourceVersionUmodelRpkZmacAddress_\x10\x15receiverHDRCapabilityXfeatures_\x10$242CED7B-22F3-4BB2-84A2-A05E30A7A8CD\x10\x02\xd3\x1f !"""_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10\x1dsupportsUIForAudioOnlyContent\x08\x08\x08\x08\x12\x00\x03\x84\x04\tS1.1\x10\x03_\x10\x0fBedroom HomePod_\x10\x1110.0.10.100:53832_\x10\x11E0:2B:96:A5:C6:5E_\x10$9d5ae686-7bfd-4566-9666-e59737dc7576\x08#\xc05_i@\x00\x00\x00[AMp/StBLNbwO\x11\x01\x8d\x05acl=0\x18btaddr=51:0B:BC:C3:EC:A3\x1adeviceid=E0:2B:96:A5:C6:5E\x0ffex=AMp/StBLNbw\x1efeatures=0x4A7FCA00,0xBC354BD0\rflags=0x38404(gid=18360F64-F80A-4075-8EDC-69D855E08F8F\x05igl=1\x06gcgl=1\x17model=AudioAccessory5,1\rprotovers=1.1\'pi=9d5ae686-7bfd-4566-9666-e59737dc7576(psi=242CED7B-22F3-4BB2-84A2-A05E30A7A8CDCpk=943726ed734f615d3987cb1db7e70664daa74d05e5fef8a91f9ebcb1caa4bdb7\x11srcvers=595.15.41\rosvers=15.1.1\x04vv=2\xd434567889_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\\bufferStream\x12\x02\x00\x00\x00\x12\x01D\x08\x00\x13\x00\x00\x01\x80\x00\xe0\x00\x00Y595.15.41_\x10\x11AudioAccessory5,1O\x10 \x947&\xedsOa]9\x87\xcb\x1d\xb7\xe7\x06d\xda\xa7M\x05\xe5\xfe\xf8\xa9\x1f\x9e\xbc\xb1\xca\xa4\xbd\xb7_\x10\x11E0:2B:96:8B:A1:8BT4k60\x13\xbc5K\xd0J\x7f\xca\x00\x00\x08\x00\r\x00\x12\x00\x18\x00#\x00T\x00X\x00[\x00r\x00\x8a\x00\x96\x00\xb1\x00\xc3\x00\xd7\x00\xdc\x00\xea\x00\xf3\x00\xf6\x01\x05\x01\x13\x01\x1e\x01)\x01<\x01J\x01P\x01S\x01^\x01v\x01\x7f\x01\xa6\x01\xa8\x01\xaf\x01\xc7\x01\xdf\x01\xff\x02\x00\x02\x01\x02\x02\x02\x03\x02\x08\x02\t\x02\r\x02\x0f\x02!\x025\x02I\x02p\x02q\x02z\x02\x86\x04\x17\x04 \x048\x04E\x04Q\x04^\x04c\x04h\x04q\x04{\x04\x8f\x04\xb2\x04\xc6\x04\xcb\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\x04\xd4')
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Sending data (Encrypted=4f00a6ae779ba8ccdcdd1965f8c0eeed2e237cad64ec4619e5755e5ddf9434da9831667591c21ce5f3e244e55fdb07468bba08d2e479975e7e757fe1a44934ea335927f537e9c3b35cbd5b74fa2d1a877d3f0b6b0a9de313e629c22ba473528da2)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on *:5353
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on *:5353
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on 127.0.0.1:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on 127.0.0.1:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on 10.0.10.100:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on 10.0.10.100:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on 172.17.0.1:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on 172.17.0.1:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on 172.30.32.1:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.net] Binding on 172.30.32.1:0
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Received data (Data=20001302faea4da452a0dd7cdf433b86145cbdd83e73c094062ffcefc2d98ac84c6d7e25b8b45764c6aca161c3d0fb5b22bd)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.channels] Not enough data on data channel (has 32, expects 1970)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Received data (Data=92073958d296268fb302b14f729245395617c32638b5280e41b9b2639f15585f7de9a2005b891e1bf0669d2b0426c0ab7a08aafbc1df5c4c2f6d533f00724e4ad67844ffbacb22070cc541b9ca2c1a7d872ebac6b56e3fc871d6fd12b1950b12aa70359d643864c725b68571862dd240332f85d0d838669e0e99dfee931663f8d9ee3333dc5fdca929d252032aa6481ca6279e06c77091d92128085363dbded29eba9761fedfda95e8819c65c31847f395026186733a18875c11345c6cddf10f8e70da63236694c79eaa438e1c5d7608fc31d5a48d2f9bc4566f5773fe03508984dcdb6ddf2569fed90b79c91e1ae7bec2d01e39257a5997c38f91f909426...)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.mrp_connection] << Receive: Protobuf: type: SET_NOW_PLAYING_CLIENT_MESSAGE
[setNowPlayingClientMessage] {
  client {
    processIdentifier: 62
    bundleIdentifier: "com.apple.tvairplayd"
  }
}
uniqueIdentifier: "C61A50FE-A28D-4FD2-9BB6-A16678520A37"
2021-12-06 19:49:24 DEBUG (MainThread) [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 0x7fee51d2d070>>
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.mrp_connection] << Receive: Protobuf: type: SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE
[setDefaultSupportedCommandsMessage] {
  supportedCommands {
    supportedCommands {
      command: Play
      enabled: true
    }
    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: SetPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:60be8a6"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:60be8a6"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:2eb0a55"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:2eb0a55"
    }
    supportedCommands {
      command: PreloadedPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:60be8a6"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:60be8a6"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:2eb0a55"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:2eb0a55"
    }
  }
  displayID: "com.apple.Music"
  playbackQueueCapabilities {
  }
  playerPath {
    client {
      bundleIdentifier: "com.apple.Music"
    }
  }
}
uniqueIdentifier: "DB601EB7-4867-477D-BB3F-FA1BBAB05D50"
2021-12-06 19:49:24 DEBUG (MainThread) [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 0x7fee51d2d070>>
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.mrp_connection] << Receive: Protobuf: type: SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE
[setDefaultSupportedCommandsMessage] {
  supportedCommands {
    supportedCommands {
      command: Play
      enabled: true
    }
    supportedCommands {
      command: SetPlaybackQueue
      enabled: true
      supportedPlaybackQueueTypes: 3
      supportedPlaybackQueueTypes: 6
      supportedPlaybackQueueTypes: 2
      supportedPlaybackQueueTypes: 5
      supportedPlaybackQueueTypes: 1
    }
    supportedCommands {
      command: SetPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.podcasts.MTPlaybackQueueController.GenericQueue"
      currentPlaybackSessionTypes: "com.apple.podcasts.MTPlaybackQueueController.GenericQueue"
    }
  }
  displayID: "com.apple.podcasts"
  playbackQueueCapabilities {
  }
  playerPath {
    client {
      bundleIdentifier: "com.apple.podcasts"
    }
  }
}
uniqueIdentifier: "0656225D-D224-437A-9DC3-EC87A1DAD10C"
2021-12-06 19:49:24 DEBUG (MainThread) [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 0x7fee51d2d070>>
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.mrp_connection] << Receive: Protobuf: type: ORIGIN_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "54A22A38-627F-4F1D-9288-81F4D2D28A54"
[originClientPropertiesMessage] {
  lastPlayingTimestamp: 660432380.0962299
}
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.mrp_connection] << Receive: Protobuf: type: SET_NOW_PLAYING_CLIENT_MESSAGE
[setNowPlayingClientMessage] {
  client {
    processIdentifier: 62
    bundleIdentifier: "com.apple.tvairplayd"
  }
}
uniqueIdentifier: "C261FE31-F318-41BC-B341-7669B850D324"
2021-12-06 19:49:24 DEBUG (MainThread) [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 0x7fee51d2d070>>
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.mrp_connection] << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  supportedCommands {
    supportedCommands {
      command: Play
      enabled: true
    }
    supportedCommands {
      command: Pause
      enabled: true
    }
    supportedCommands {
      command: TogglePlayPause
      enabled: true
    }
    supportedCommands {
      command: Stop
      enabled: true
    }
    supportedCommands {
      command: NextTrack
      enabled: true
    }
    supportedCommands {
      command: PreviousTrack
      enabled: true
    }
    supportedCommands {
      command: BeginFastForward
      enabled: true
    }
    supportedCommands {
      command: EndFastForward
      enabled: true
    }
    supportedCommands {
      command: BeginRewind
      enabled: true
    }
    supportedCommands {
      command: EndRewind
      enabled: true
    }
    supportedCommands {
      command: AdvanceRepeatMode
      enabled: true
    }
    supportedCommands {
      command: AdvanceShuffleMode
      enabled: true
    }
    supportedCommands {
      command: SeekToPlaybackPosition
      enabled: true
    }
  }
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "HomePod"
      identifier: 1280262988
    }
    client {
      processIdentifier: 62
      bundleIdentifier: "com.apple.tvairplayd"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      6: 0
    }
  }
  playbackStateTimestamp: 660427402.786579
}
uniqueIdentifier: "09C9FAC7-6168-465E-B8DE-A0D620AA033D"
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.core.protocol] Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0x7fee51d2d070>>
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.mrp_connection] << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "AB47EB6F-A4D0-43F7-B4F8-2EE72DA8981C"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "HomePod"
      identifier: 1280262988
      5: 1
    }
    client {
      processIdentifier: 62
      bundleIdentifier: "com.apple.tvairplayd"
      processUserIdentifier: 501
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      6: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Sending data (Encrypted=20008f7b4ecdb6a33de50b759b42ad0df03ddd6b1e09941c436e1b1ca59de4483490a8314a7b997748012411468b164be957)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.mrp.player_state] Active client is now com.apple.tvairplayd
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.mrp.player_state] Active client is now com.apple.tvairplayd
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Received data (Data=200067f252c86cbc768f655034a9390339e3f3131b36097eb0bc32523907186fee2f4f6ec2e503e6d27c1158ad0b90da7b303002ae2f76aa8fda2700a15ef698031a1244a066b19e31543a7d32d3185aa8c51b1102fbe8d50dbd0e80d8906de83e8a549f003b9156fd40ecd34bd2457691d7367597473506af1752411a708a87ec91aa7399e146edb527efeb457b27d4aae3894edd5b851d4907e6f7a29a8349f54e9ae2f309d2621cfd971e015b972d649d68c791d260806584ef9c7a68d8e335ae71889ad32d9979e7d461a17b68417bdeee6d06168eb913c596007c8cb9ba5c5594aa1715e5f62a68fbd1aed82b57dc28e0f61d3fe4126ab8160119aba...)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.airplay.mrp_connection] << Receive: Protobuf: type: DEVICE_INFO_UPDATE_MESSAGE
[deviceInfoMessage] {
  uniqueIdentifier: "242CED7B-22F3-4BB2-84A2-A05E30A7A8CD"
  name: "Bedroom HomePod"
  localizedModelName: "HomePod"
  systemBuildVersion: "19J582"
  applicationBundleIdentifier: "com.apple.mediaremoted"
  protocolVersion: 1
  lastSupportedMessageType: 121
  supportsSystemPairing: true
  allowsPairing: true
  systemMediaApplication: "com.apple.Music"
  supportsACL: true
  supportsSharedQueue: true
  sharedQueueVersion: 3
  deviceUID: "242CED7B-22F3-4BB2-84A2-A05E30A7A8CD"
  managedConfigDeviceID: "e0:2b:96:8b:a1:8b"
  deviceClass: Accessory
  logicalDeviceCount: 1
  isProxyGroupPlayer: false
  groupUID: "18360F64-F80A-4075-8EDC-69D855E08F8F"
  isGroupLeader: true
  isAirplayActive: true
  systemPodcastApplication: "com.apple.podcasts"
  enderDefaultGroupUID: "18360F64-F80A-4075-8EDC-69D855E08F8F"
  airplayReceivers: "tvairplayd"
  clusterType: 0
  isClusterAware: true
  modelID: "AudioAccessory5,1"
  40: 0
  41: "577E1BCA-2D9B-41C2-A8F8-C515CE8072D4"
  42: "18360F64-F80A-4075-8EDC-69D855E08F8F"
  43: "com.apple.TVBooks"
}
uniqueIdentifier: "5B4E600E-D3C4-44F0-9D96-FE2616CAB15D"
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.core.protocol] Dispatching message with type 37 to <bound method MrpPower._update_power_state of <pyatv.protocols.mrp.MrpPower object at 0x7fee51d2d1c0>>
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.auth.hap_channel] Sending data (Encrypted=200047873c38d1da70219a3d99ec7397ed390db64e503767fdfb65b762aea2c99cf62c9fb83090c691ee47f08680e6cac4b6)
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Received: b'RTSP/1.0 200 OK\r\nDate: Tue, 07 Dec 2021 03:49:24 GMT\r\nContent-Length: 0\r\nTransport: RTP/AVP/UDP;unicast;mode=record;server_port=58074;control_port=60010;timing_port=0\r\nSession: 1\r\nAudio-Jack-Status: connected\r\nServer: AirTunes/595.15.41\r\nCSeq: 2\r\n\r\n'
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.support.http] Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'date': 'Tue, 07 Dec 2021 03:49:24 GMT', 'content-length': '0', 'transport': 'RTP/AVP/UDP;unicast;mode=record;server_port=58074;control_port=60010;timing_port=0', 'session': '1', 'audio-jack-status': 'connected', 'server': 'AirTunes/595.15.41', 'cseq': '2'}, body=''):
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.raop.raop] Remote ports: control=60010, timing=0, server=58074
2021-12-06 19:49:24 DEBUG (MainThread) [pyatv.protocols.raop] Seeking not supported by source, not loading metadata
MizterB commented 2 years ago

I won't spam with additional logs unless asked, but I can confirm that I am experiencing the same TTS crash issue with the latest HA and AppleTV betas. I get the undefined message and HA restarts when I try to send to my HomePod mini.

UPDATE: Same issue occurring when calling TTS on an Apple 4K Gen 1.

postlund commented 2 years ago

@SalkinDK The log is inconclusive I'm afraid. How did you install Home Assistant? On HassOS, supervised?

@MizterB Same question to you: how did you install Home Assistant?

I'm fairly certain the crashes happen because of pyminiaudio as some people have reported that before. The solution has been to re-install that library manually.

MizterB commented 2 years ago

I'm running HAOS in a ProxMox VM. As I am running the latest beta, my config is: Home Assistant OS 7.0 supervisor-2021.12.0 core-2021.12.0b21

Can you please confirm if I need to do something with pyminiaudio, and if so, what those steps are?

jcbshw commented 2 years ago

I am also running HAOS in a proxmox VM. It was installed fresh last month. I just attempted to reinstall miniaudio using:

apk update
apk add build-base
pip3 uninstall --yes miniaudio
pip3 install miniaudio

And can confirm it is now working!

MizterB commented 2 years ago

@jcbshw - Where/how are you executing those commands? Terminal add-on drops me into the Supervisor, but I assume this needs to be run against HA Core?

jcbshw commented 2 years ago

@jcbshw - Where/how are you executing those commands? Terminal add-on drops me into the Supervisor, but I assume this needs to be run against HA Core?

Make sure protection mode is disabled on the add on then run:

docker exec -it homeassistant /bin/bash

MizterB commented 2 years ago

Thank you!

I can also confirm success after updating pyminiaudio as described above.

postlund commented 2 years ago

Thank you guys for verifying! πŸ‘ I guess the pre-built wheels from Home Assistant has built with some kind of optimization that is not generic enough to be compatible with your systems. Probably need to investigate that further...

postlund commented 2 years ago

But I will close this issue for now.