pyatv does not work at all on Mac Mini M4 with different devices
What do you need help with?
Hi, I try to use pyatv to streaming music to receiver device. I tested it with both: Samsung TV: 65" Neo QLED and Integrated Amplifier device:
Name: DUT_5
Model/SW: 232 Integrated Amplifier, Unknown OS
Address: 192.168.254.136
MAC: D0:62:9E:03:58:D3
Deep Sleep: False
Identifiers:
- D0:62:9E:03:58:D3
- D0629E0358D3
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
Name: 65" Neo QLED
Model/SW: QN90D, Unknown OS
Address: 192.168.254.106
MAC: 4C:57:39:D3:6D:12
Deep Sleep: False
Identifiers:
- 4C:57:39:D3:6D:12
Services:
- Protocol: AirPlay, Port: 7000, Credentials: **********************, Requires Password: False, Password: None, Pairing: Mandatory
I can't find any way to stream music to the receiver. I tried examples, I tried atvremote script, and I tried streaming from URL or file, but it won't work. What am I doing wrong that it's not working? I might add that from other apps, I am able to stream from this machine to both receivers mentioned.
E.g.
(.venv1) testbench-mac@testbench-mac PyCharmMiscProject % atvremote --id 4C:57:39:D3:6D:12 --debug stream_file=/Users/testbench-mac/Downloads/rocky.mp3
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/ProtocolMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/AudioFadeMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/PlayerPath.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/Origin.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/DeviceInfoMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/Common.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/NowPlayingClient.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/NowPlayingPlayer.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/AudioFadeResponseMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/ClientUpdatesConfigMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/ConfigureConnectionMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/CryptoPairingMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/GenericMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/GetKeyboardSessionMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/GetRemoteTextInputSessionMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/GetVolumeMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/GetVolumeResultMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/KeyboardMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/ModifyOutputContextRequestMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/google/protobuf/runtime_version.py:98: UserWarning: Protobuf gencode version 5.28.1 is exactly one major version older than the runtime version 6.30.1 at pyatv/protocols/mrp/protobuf/NotificationMessage.proto. Please update the gencode to avoid compatibility violations in the next runtime release.
warnings.warn(
2025-03-23 14:27:15 DEBUG [pyatv.scripts]: Running with pyatv 0.16.0
2025-03-23 14:27:15 DEBUG [pyatv.storage.file_storage]: Loading settings from /Users/testbench-mac/.pyatv.conf
2025-03-23 14:27:15 DEBUG [pyatv.support.net]: Binding on *:5353
2025-03-23 14:27:15 DEBUG [pyatv.support.net]: Binding on 127.0.0.1:0
2025-03-23 14:27:15 DEBUG [pyatv.support.net]: Binding on 192.168.254.90:0
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered DUT_5 at 192.168.254.136:7000 via Protocol.AirPlay ({'acl': '0', 'deviceid': 'D0:62:9E:03:58:D3', 'features': '0xC05F8A00,0x1C340', 'rsf': '0x4', 'fv': 'p20.2.4.9', 'flags': '0x4', 'model': '232 Integrated Amplifier', 'manufacturer': 'Burmester', 'serialnumber': '9232009', 'protovers': '1.1', 'srcvers': '366.0', 'pi': 'D0:62:9E:03:58:D3', 'gid': 'D0:62:9E:03:58:D3', 'gcgl': '0', 'pk': 'b07d3000621ec92c97e53dfc867e476f09ac96d54ab1f476d9257b32872a9ae4'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered D0629E0358D3@DUT_5 at 192.168.254.136:7000 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0', 'ft': '0xC05F8A00,0x1C340', 'fv': 'p20.2.4.9', 'md': '0,1,2', 'am': '232 Integrated Amplifier', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': 'b07d3000621ec92c97e53dfc867e476f09ac96d54ab1f476d9257b32872a9ae4'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered 232 Integrated Amplifier-aca072 at 192.168.254.107:7000 via Protocol.AirPlay ({'acl': '0', 'deviceid': 'CC:B6:3D:AC:A0:72', 'features': '0xC05F8A00,0x1C340', 'rsf': '0x4', 'fv': 'p20.2.3.0', 'flags': '0x4', 'model': '232 Integrated Amplifier', 'manufacturer': 'Burmester', 'serialnumber': '9629931', 'protovers': '1.1', 'srcvers': '366.0', 'pi': 'CC:B6:3D:AC:A0:72', 'gid': 'CC:B6:3D:AC:A0:72', 'gcgl': '0', 'pk': '9f7677db4adef1aa03b7c0ccdb4dd528f98cc3347e5b13e408f524d9035d921b'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered CCB63DACA072@232 Integrated Amplifier-aca072 at 192.168.254.107:7000 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0', 'ft': '0xC05F8A00,0x1C340', 'fv': 'p20.2.3.0', 'md': '0,1,2', 'am': '232 Integrated Amplifier', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': '9f7677db4adef1aa03b7c0ccdb4dd528f98cc3347e5b13e408f524d9035d921b'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered DUT_1 at 192.168.254.105:7000 via Protocol.AirPlay ({'acl': '0', 'deviceid': '2C:38:91:C5:8B:2B', 'features': '0xC05F8A00,0x1C340', 'rsf': '0x4', 'fv': 'p20.2.4.9', 'flags': '0x4', 'model': '232 Integrated Amplifier', 'manufacturer': 'Burmester', 'serialnumber': '9644942', 'protovers': '1.1', 'srcvers': '366.0', 'pi': '2C:38:91:C5:8B:2B', 'gid': '2C:38:91:C5:8B:2B', 'gcgl': '0', 'pk': '16166880176f02cbf70cfbef47bfe45e53f1174878aa212280f00d8a3c0f1c42'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered 2C3891C58B2B@DUT_1 at 192.168.254.105:7000 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0', 'ft': '0xC05F8A00,0x1C340', 'fv': 'p20.2.4.9', 'md': '0,1,2', 'am': '232 Integrated Amplifier', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': '16166880176f02cbf70cfbef47bfe45e53f1174878aa212280f00d8a3c0f1c42'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered 232 Integrated Amplifier-f3ebab at 192.168.254.143:7000 via Protocol.AirPlay ({'acl': '0', 'deviceid': '48:B5:F8:F3:EB:AB', 'features': '0xC05F8A00,0x1C340', 'rsf': '0x4', 'fv': 'p20.2.3.0', 'flags': '0x4', 'model': '232 Integrated Amplifier', 'manufacturer': 'Burmester', 'serialnumber': '9235636', 'protovers': '1.1', 'srcvers': '366.0', 'pi': '48:B5:F8:F3:EB:AB', 'gid': '48:B5:F8:F3:EB:AB', 'gcgl': '0', 'pk': '09149c65a0be27250c469e3023c8655ac86ec27c0ee317ae9084c505cf9842ba'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered 48B5F8F3EBAB@232 Integrated Amplifier-f3ebab at 192.168.254.143:7000 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0', 'ft': '0xC05F8A00,0x1C340', 'fv': 'p20.2.3.0', 'md': '0,1,2', 'am': '232 Integrated Amplifier', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': '09149c65a0be27250c469e3023c8655ac86ec27c0ee317ae9084c505cf9842ba'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered 232 Integrated Amplifier-e50e10 at 192.168.254.155:7000 via Protocol.AirPlay ({'acl': '0', 'deviceid': '08:A6:D2:E5:0E:10', 'features': '0xC05F8A00,0x1C340', 'rsf': '0x4', 'fv': 'p20.2.4.9', 'flags': '0x4', 'model': '232 Integrated Amplifier', 'manufacturer': 'Burmester', 'serialnumber': '9506797', 'protovers': '1.1', 'srcvers': '366.0', 'pi': '08:A6:D2:E5:0E:10', 'gid': '08:A6:D2:E5:0E:10', 'gcgl': '0', 'pk': '9849d51f39b79bf4f47f32c17c61eada69501f39d7a7b817a4d9a1ece7287d20'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered 08A6D2E50E10@232 Integrated Amplifier-e50e10 at 192.168.254.155:7000 via Protocol.RAOP ({'cn': '0,1', 'da': 'true', 'et': '0', 'ft': '0xC05F8A00,0x1C340', 'fv': 'p20.2.4.9', 'md': '0,1,2', 'am': '232 Integrated Amplifier', 'sf': '0x4', 'tp': 'UDP', 'vn': '65537', 'vs': '366.0', 'pk': '9849d51f39b79bf4f47f32c17c61eada69501f39d7a7b817a4d9a1ece7287d20'})
2025-03-23 14:27:18 DEBUG [pyatv.core.scan]: Auto-discovered 65" Neo QLED at 192.168.254.106:7000 via Protocol.AirPlay ({'acl': '0', 'deviceid': '4C:57:39:D3:6D:12', 'features': '0x7F8AD0,0x38BCF46', 'fex': '0Ip/AEbPiwNACA', 'rsf': '0x3', 'fv': 'p20.T-PTMDDEUC-1301.0', 'at': '0x1', 'flags': '0x244', 'model': 'QN90D', 'integrator': 'Samsung', 'manufacturer': 'Samsung', 'serialnumber': '0FJX3SHY100508T', 'protovers': '1.1', 'srcvers': '377.40.00', 'pi': '5F:68:47:75:A1:C3', 'psi': '00000000-0000-0000-0000-5F684775A1C3', 'gid': '00000000-0000-0000-0000-5F684775A1C3', 'gcgl': '0', 'pk': 'dd26e224d954645845ddbd3b588d5db96efb41db8602fde57593afb88b6df65b'})
2025-03-23 14:27:18 INFO [pyatv.scripts.atvremote]: Auto-discovered 65" Neo QLED at 192.168.254.106
2025-03-23 14:27:18 DEBUG [pyatv]: Loading settings from FileStorage:/Users/testbench-mac/.pyatv.conf
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay
2025-03-23 14:27:18 DEBUG [pyatv.protocols.airplay]: RAOP supported but no service present, adding new service
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP
2025-03-23 14:27:18 DEBUG [pyatv.protocols.airplay]: Remote control not supported by device
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Protocol Protocol.RAOP already set up, ignoring
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Power management not supported by any protocols
2025-03-23 14:27:18 DEBUG [pyatv.core.facade]: Takeover (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.AirPlay
2025-03-23 14:27:18 DEBUG [pyatv.support.http]: Connected to 192.168.254.106
2025-03-23 14:27:18 DEBUG [pyatv.protocols.raop]: Using AirPlay version AirPlayMajorVersion.AirPlayV2
2025-03-23 14:27:18 DEBUG [pyatv.protocols.raop.stream_client]: Initializing RTSP with encryption=0, metadata=0
2025-03-23 14:27:18 DEBUG [pyatv.protocols.raop.stream_client]: No supported encryption type, continuing anyway
2025-03-23 14:27:18 DEBUG [pyatv.protocols.raop.stream_client]: Update play settings to 44100/2/16bit
2025-03-23 14:27:18 DEBUG [pyatv.protocols.raop.stream_client]: Local ports: control=53768, timing=58625
2025-03-23 14:27:18 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: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\r\n\r\n'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 1838\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/377.40.00\r\nCSeq: 0\r\n\r\nbplist00\xdf\x10\x1b\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\x1c\x1d\x1e\x1f\x1f 789:;N7O7PQRS{\x1c|}~%\x7f\x80SsdkRpi_\x10\x10firmwareRevisionZintegrator\\manufacturer^audioLatencies_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDate_\x10\x0foperatingSystemUmodel_\x10\x14playbackCapabilities\\serialNumber_\x10\x14nameIsFactoryDefault_\x10\x10hardwareRevision_\x10\x18keepAliveSendStatsAsBodyZfeaturesEx[statusFlagsXdeviceIDXdisplaysUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeatures_\x10\x13activeInterfaceType_\x10\x11volumeControlTypeTname_\x10\x11AirPlay;3.5.0.244_\x10\x115F:68:47:75:A1:C3_\x10\x11T-PTMDDEUC-1301.0WSamsung\xa9!\'*,.0245\xd3"#$%&%_\x10\x12inputLatencyMicrosTtype_\x10\x13outputLatencyMicros\x10\x00\x10d\xd4"(#$%)&%YaudioTypeWdefault\xd4"(#$%+&%Umedia\xd4"(#$%-&%Ytelephony\xd4"(#$%/&%_\x10\x11speechRecognition\xd4"(#$%1&%Ualert\xd3"#$%3%\x10e\xd4"(#$%)3%\xd4"(#$%+6%\x10f\t[Aug 5 2024UTizenUQN90D\xdb<=>?@ABCDEFGHGIJKGLM77_\x10\x1dsupportsUIForAudioOnlyContent_\x10\x18fairPlayCDMPluginVersion_\x10\x15supportsFPSSecureStop]webAppVersion_\x10\x12fairPlayLibVersion_\x10\x10webEngineVersion_\x10\x12supportsOfflineHLS\\hlsJSVersion]webEngineName_\x10\x15supportsInterstitials_\x10!supportsAirPlayVideoWithSharePlay\x08V0.1.33X63.145.0V1.9.28_\x10\x1d14.0.1 (samsung2024-4fa4f516)W2.920.4_\x10\x10Apple App Engine_\x10\x0f0FJX3SHY100508T_\x10\x14HardwareRevision-0.0^0Ip/AEbPiwNACA\x11\x02D_\x10\x114C:57:39:D3:6D:12\xa1T\xd8UVWXYZ[\\]^ghwxyz^widthPixelsMaxWHDRInfo[widthPixels_\x10\x11HDRSupportedModes\\heightPixels_\x10\x0fheightPixelsMaxTuuidVmaxFPS\x11\x0f\x00\xd4_#`abdef\\codecStringsWHDRMode_\x10\x15receiverHDRCapability\xa1c_\x10\x10hvc1.2.4.L153.B0\x10\x02UHDR10T4k60\x11\x07\x80\xa4im^s\xd4_#`aj%lf\xa2kc[avc1.64002aSSDR\xd4_#`abopf\xa1c\x10\x01SHDR\xd4_#`abdef\xa1c\xd4_#`abuvf\xa1c\x10\x04SHLG\x11\x048\x11\x08p_\x10$10B7520E-11AD-4AEA-9D27-9E853690788F\x10<U40.00S1.1Y377.40.00\x13\x03\x8b\xcfF\x00\x7f\x8a\xd0\x10\x03\\65" Neo QLED\x00\x08\x00A\x00E\x00H\x00[\x00f\x00s\x00\x82\x00\x96\x00\xaa\x00\xbc\x00\xc2\x00\xd9\x00\xe6\x00\xfd\x01\x10\x01+\x016\x01B\x01K\x01T\x01Z\x01b\x01t\x01\x82\x01\x8b\x01\xa1\x01\xb5\x01\xba\x01\xce\x01\xe2\x01\xf6\x01\xfe\x02\x08\x02\x0f\x02$\x02)\x02?\x02A\x02C\x02L\x02V\x02^\x02g\x02m\x02v\x02\x80\x02\x89\x02\x9d\x02\xa6\x02\xac\x02\xb3\x02\xb5\x02\xbe\x02\xc7\x02\xc9\x02\xca\x02\xd6\x02\xdc\x02\xe2\x02\xf9\x03\x19\x034\x03L\x03Z\x03o\x03\x82\x03\x97\x03\xa4\x03\xb2\x03\xca\x03\xee\x03\xef\x03\xf6\x03\xff\x04\x06\x04&\x04.\x04A\x04S\x04j\x04y\x04|\x04\x90\x04\x92\x04\xa3\x04\xb2\x04\xba\x04\xc6\x04\xda\x04\xe7\x04\xf9\x04\xfe\x05\x05\x05\x08\x05\x11\x05\x1e\x05&\x05>\x05@\x05S\x05U\x05[\x05`\x05c\x05h\x05q\x05t\x05\x80\x05\x84\x05\x8d\x05\x8f\x05\x91\x05\x95\x05\x9e\x05\xa0\x05\xa9\x05\xab\x05\xad\x05\xb1\x05\xb4\x05\xb7\x05\xde\x05\xe0\x05\xe6\x05\xea\x05\xf4\x05\xfd\x05\xff\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x0c'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '1838', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/377.40.00', 'CSeq': '0'}, body=b'bplist00\xdf\x10\x1b\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\x1c\x1d\x1e\x1f\x1f 789:;N7O7PQRS{\x1c|}~%\x7f\x80SsdkRpi_\x10\x10firmwareRevisionZintegrator\\manufacturer^audioLatencies_\x10\x11keepAliveLowPower_\x10\x11firmwareBuildDate_\x10\x0foperatingSystemUmodel_\x10\x14playbackCapabilities\\serialNumber_\x10\x14nameIsFactoryDefault_\x10\x10hardwareRevision_\x10\x18keepAliveSendStatsAsBodyZfeaturesEx[statusFlagsXdeviceIDXdisplaysUbuildWPTPInfo_\x10\x0fprotocolVersion]sourceVersionXfeatures_\x10\x13activeInterfaceType_\x10\x11volumeControlTypeTname_\x10\x11AirPlay;3.5.0.244_\x10\x115F:68:47:75:A1:C3_\x10\x11T-PTMDDEUC-1301.0WSamsung\xa9!\'*,.0245\xd3"#$%&%_\x10\x12inputLatencyMicrosTtype_\x10\x13outputLatencyMicros\x10\x00\x10d\xd4"(#$%)&%YaudioTypeWdefault\xd4"(#$%+&%Umedia\xd4"(#$%-&%Ytelephony\xd4"(#$%/&%_\x10\x11speechRecognition\xd4"(#$%1&%Ualert\xd3"#$%3%\x10e\xd4"(#$%)3%\xd4"(#$%+6%\x10f\t[Aug 5 2024UTizenUQN90D\xdb<=>?@ABCDEFGHGIJKGLM77_\x10\x1dsupportsUIForAudioOnlyContent_\x10\x18fairPlayCDMPluginVersion_\x10\x15supportsFPSSecureStop]webAppVersion_\x10\x12fairPlayLibVersion_\x10\x10webEngineVersion_\x10\x12supportsOfflineHLS\\hlsJSVersion]webEngineName_\x10\x15supportsInterstitials_\x10!supportsAirPlayVideoWithSharePlay\x08V0.1.33X63.145.0V1.9.28_\x10\x1d14.0.1 (samsung2024-4fa4f516)W2.920.4_\x10\x10Apple App Engine_\x10\x0f0FJX3SHY100508T_\x10\x14HardwareRevision-0.0^0Ip/AEbPiwNACA\x11\x02D_\x10\x114C:57:39:D3:6D:12\xa1T\xd8UVWXYZ[\\]^ghwxyz^widthPixelsMaxWHDRInfo[widthPixels_\x10\x11HDRSupportedModes\\heightPixels_\x10\x0fheightPixelsMaxTuuidVmaxFPS\x11\x0f\x00\xd4_#`abdef\\codecStringsWHDRMode_\x10\x15receiverHDRCapability\xa1c_\x10\x10hvc1.2.4.L153.B0\x10\x02UHDR10T4k60\x11\x07\x80\xa4im^s\xd4_#`aj%lf\xa2kc[avc1.64002aSSDR\xd4_#`abopf\xa1c\x10\x01SHDR\xd4_#`abdef\xa1c\xd4_#`abuvf\xa1c\x10\x04SHLG\x11\x048\x11\x08p_\x10$10B7520E-11AD-4AEA-9D27-9E853690788F\x10<U40.00S1.1Y377.40.00\x13\x03\x8b\xcfF\x00\x7f\x8a\xd0\x10\x03\\65" Neo QLED\x00\x08\x00A\x00E\x00H\x00[\x00f\x00s\x00\x82\x00\x96\x00\xaa\x00\xbc\x00\xc2\x00\xd9\x00\xe6\x00\xfd\x01\x10\x01+\x016\x01B\x01K\x01T\x01Z\x01b\x01t\x01\x82\x01\x8b\x01\xa1\x01\xb5\x01\xba\x01\xce\x01\xe2\x01\xf6\x01\xfe\x02\x08\x02\x0f\x02$\x02)\x02?\x02A\x02C\x02L\x02V\x02^\x02g\x02m\x02v\x02\x80\x02\x89\x02\x9d\x02\xa6\x02\xac\x02\xb3\x02\xb5\x02\xbe\x02\xc7\x02\xc9\x02\xca\x02\xd6\x02\xdc\x02\xe2\x02\xf9\x03\x19\x034\x03L\x03Z\x03o\x03\x82\x03\x97\x03\xa4\x03\xb2\x03\xca\x03\xee\x03\xef\x03\xf6\x03\xff\x04\x06\x04&\x04.\x04A\x04S\x04j\x04y\x04|\x04\x90\x04\x92\x04\xa3\x04\xb2\x04\xba\x04\xc6\x04\xda\x04\xe7\x04\xf9\x04\xfe\x05\x05\x05\x08\x05\x11\x05\x1e\x05&\x05>\x05@\x05S\x05U\x05[\x05`\x05c\x05h\x05q\x05t\x05\x80\x05\x84\x05\x8d\x05\x8f\x05\x91\x05\x95\x05\x9e\x05\xa0\x05\xa9\x05\xab\x05\xad\x05\xb1\x05\xb4\x05\xb7\x05\xde\x05\xe0\x05\xe6\x05\xea\x05\xf4\x05\xfd\x05\xff\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x0c'):
2025-03-23 14:27:19 DEBUG [pyatv.protocols.raop.stream_client]: Updated info parameters to: {'sdk': 'AirPlay;3.5.0.244', 'pi': '5F:68:47:75:A1:C3', 'firmwareRevision': 'T-PTMDDEUC-1301.0', 'integrator': 'Samsung', 'manufacturer': 'Samsung', 'audioLatencies': [{'inputLatencyMicros': 0, 'type': 100, 'outputLatencyMicros': 0}, {'inputLatencyMicros': 0, 'audioType': 'default', 'type': 100, 'outputLatencyMicros': 0}, {'inputLatencyMicros': 0, 'audioType': 'media', 'type': 100, 'outputLatencyMicros': 0}, {'inputLatencyMicros': 0, 'audioType': 'telephony', 'type': 100, 'outputLatencyMicros': 0}, {'inputLatencyMicros': 0, 'audioType': 'speechRecognition', 'type': 100, 'outputLatencyMicros': 0}, {'inputLatencyMicros': 0, 'audioType': 'alert', 'type': 100, 'outputLatencyMicros': 0}, {'inputLatencyMicros': 0, 'type': 101, 'outputLatencyMicros': 0}, {'inputLatencyMicros': 0, 'audioType': 'default', 'type': 101, 'outputLatencyMicros': 0}, {'inputLatencyMicros': 0, 'audioType': 'media', 'type': 102, 'outputLatencyMicros': 0}], 'keepAliveLowPower': True, 'firmwareBuildDate': 'Aug 5 2024', 'operatingSystem': 'Tizen', 'model': 'QN90D', 'playbackCapabilities': {'supportsUIForAudioOnlyContent': False, 'fairPlayCDMPluginVersion': '0.1.33', 'supportsFPSSecureStop': False, 'webAppVersion': '63.145.0', 'fairPlayLibVersion': '1.9.28', 'webEngineVersion': '14.0.1 (samsung2024-4fa4f516)', 'supportsOfflineHLS': False, 'hlsJSVersion': '2.920.4', 'webEngineName': 'Apple App Engine', 'supportsInterstitials': True, 'supportsAirPlayVideoWithSharePlay': True}, 'serialNumber': '0FJX3SHY100508T', 'nameIsFactoryDefault': True, 'hardwareRevision': 'HardwareRevision-0.0', 'keepAliveSendStatsAsBody': True, 'featuresEx': '0Ip/AEbPiwNACA', 'statusFlags': 580, 'deviceID': '4C:57:39:D3:6D:12', 'displays': [{'widthPixelsMax': 3840, 'HDRInfo': {'codecStrings': ['hvc1.2.4.L153.B0'], 'type': 2, 'HDRMode': 'HDR10', 'receiverHDRCapability': '4k60'}, 'widthPixels': 1920, 'HDRSupportedModes': [{'codecStrings': ['avc1.64002a', 'hvc1.2.4.L153.B0'], 'type': 0, 'HDRMode': 'SDR', 'receiverHDRCapability': '4k60'}, {'codecStrings': ['hvc1.2.4.L153.B0'], 'type': 1, 'HDRMode': 'HDR', 'receiverHDRCapability': '4k60'}, {'codecStrings': ['hvc1.2.4.L153.B0'], 'type': 2, 'HDRMode': 'HDR10', 'receiverHDRCapability': '4k60'}, {'codecStrings': ['hvc1.2.4.L153.B0'], 'type': 4, 'HDRMode': 'HLG', 'receiverHDRCapability': '4k60'}], 'heightPixels': 1080, 'heightPixelsMax': 2160, 'uuid': '10B7520E-11AD-4AEA-9D27-9E853690788F', 'maxFPS': 60}], 'build': '40.00', 'PTPInfo': 'AirPlay;3.5.0.244', 'protocolVersion': '1.1', 'sourceVersion': '377.40.00', 'features': 255525703439583952, 'activeInterfaceType': 0, 'volumeControlType': 3, 'name': '65" Neo QLED'}
2025-03-23 14:27:19 DEBUG [pyatv.protocols.airplay.auth]: Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.HAP
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-verify HTTP/1.1\r\nContent-Length: 37\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 3\r\nContent-Type: application/octet-stream\r\n\r\n\x06\x01\x01\x03 c\xbe\xabT\xd8\xc2\x0e\x85\xd1\xde\xbd\xbd7\x8d\xa4\x03\xc8\x8a\x87\x9fE\xf7\xb2:\xc0\xcc\r\x81b\x14eT'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 140\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/377.40.00\r\n\r\n\x05e9\x15\xdcV\xdd\x07\x13\xfa!\x03\x04|*\xd0/\xff\xbe\xf6z(\x07\xb2\x0c\xbe\xbf\xd1u\xf1\'"P\xa6\xc1n\x9f\xfd\xe4\x81\xbd\xfc\xc8\x82\x0b\xa1MH\xf5d\xd5\xce\xd7`\xe0x8s)\xb0\xccz\xcbM\xe8\xd8x\xd6w\x87\xe3\xf9\xff\x1f\x04\xd7\xa9\x96\xd6\x1bXV\x06\xed\xd5{\xaek\x9fQ\xfa\xa2Vm%\n\x12\xc6\xf7CE\xf7\xf2\x06\x01\x02\x03 \xde9\xcd/\xc1\xd42\x1f\xe1\xc9\xd1\xf8{\xa6\xbb\xae\x84\xdd\x88\xe2\xeb\xc6q=\x94F\x8b\xfd\xa9Bz"'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '140', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/377.40.00'}, body=b'\x05e9\x15\xdcV\xdd\x07\x13\xfa!\x03\x04|*\xd0/\xff\xbe\xf6z(\x07\xb2\x0c\xbe\xbf\xd1u\xf1\'"P\xa6\xc1n\x9f\xfd\xe4\x81\xbd\xfc\xc8\x82\x0b\xa1MH\xf5d\xd5\xce\xd7`\xe0x8s)\xb0\xccz\xcbM\xe8\xd8x\xd6w\x87\xe3\xf9\xff\x1f\x04\xd7\xa9\x96\xd6\x1bXV\x06\xed\xd5{\xaek\x9fQ\xfa\xa2Vm%\n\x12\xc6\xf7CE\xf7\xf2\x06\x01\x02\x03 \xde9\xcd/\xc1\xd42\x1f\xe1\xc9\xd1\xf8{\xa6\xbb\xae\x84\xdd\x88\xe2\xeb\xc6q=\x94F\x8b\xfd\xa9Bz"'):
2025-03-23 14:27:19 DEBUG [pyatv.protocols.airplay.auth.hap]: Device (Encrypted=3915dc56dd0713fa2103047c2ad02fffbef67a2807b20cbebfd175f1272250a6c16e9ffde481bdfcc8820ba14d48f564d5ced760e078387329b0cc7acb4de8d878d67787e3f9ff1f04d7a996d61b585606edd57bae6b9f51faa2566d250a12c6f74345f7f2, Public=dd26e224d954645845ddbd3b588d5db96efb41db8602fde57593afb88b6df65b)
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b"POST /pair-verify HTTP/1.1\r\nContent-Length: 125\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 3\r\nContent-Type: application/octet-stream\r\n\r\n\x06\x01\x03\x05x&^>\xc7\x94\xdaj\xabhq#\xec\xe6\xe8\xf8@\xc1\xfaUD\xa5\x93\xa5\xbc\xa34\xea \xad\x1f\xbd\x01\xbe:e\xe9<-\x927p\xaa\xf3\xc8\x11+N\xdc@h\xa6\xf5\x15\x17e\x0c\xfe$S\x04#\xf5\x042[\xf3\xc8{\xc8\xb1p\xac\xed'\x16\x9ceE\x8ab\x05\xa2\x1e\x18\xd5\x96\xb7\x19\x97\xc6\xc2\xc9\x12\xbe\x03\x0c\xc3T\xa3@\x80\xb7\x06]\xc6E\xc8\xe1\xb4\x9e\x0c \x07|\x92\xdd\xe9E\xd4l"
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nContent-Length: 3\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/377.40.00\r\n\r\n\x06\x01\x04'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Content-Length': '3', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/377.40.00'}, body=b'\x06\x01\x04'):
2025-03-23 14:27:19 DEBUG [pyatv.auth.hap_srp]: Keys (Input=c6e99709f26e71acfbf355d1a41fda5706d5b620cd1c729cf955eebea5640ce6, Output=5a170f4cadcae2d2bd7acd84c794dbd6b43b2eaa75307f5c01535a1dcffef2ad)
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://192.168.254.90/1994019758 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Length: 455\r\nCSeq: 1\r\nDACP-ID: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\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$065E8994-0AD8-436B-B442-4A59088DA131W690.7.1\x11\xe5\x01SNTP\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'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nContent-Length: 94\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/377.40.00\r\nCSeq: 1\r\n\r\nbplist00\xd3\x01\x02\x03\x04\x05\x06[uiPreloadedYeventPortZtimingPort\t\x11\xb1\xd1\x11\xa5Z\x08\x0f\x1b%014\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x007'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Content-Length': '94', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/377.40.00', 'CSeq': '1'}, body=b'bplist00\xd3\x01\x02\x03\x04\x05\x06[uiPreloadedYeventPortZtimingPort\t\x11\xb1\xd1\x11\xa5Z\x08\x0f\x1b%014\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x007'):
2025-03-23 14:27:19 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Setup response body: {'uiPreloaded': True, 'eventPort': 45521, 'timingPort': 42330}
2025-03-23 14:27:19 DEBUG [pyatv.auth.hap_srp]: Keys (Input=2fdc5b4f59c7ebe3f6395746d15f5efa320cd367acaccc9f14234c20a9990c18, Output=7ac725cd817141c77dd48dc35d608ff0f9693a792269d27d09d5f8a47dcbedbb)
2025-03-23 14:27:19 DEBUG [pyatv.auth.hap_channel]: Connected to 192.168.254.106:45521
2025-03-23 14:27:19 DEBUG [pyatv.auth.hap_srp]: Keys (Input=7ac725cd817141c77dd48dc35d608ff0f9693a792269d27d09d5f8a47dcbedbb, Output=2fdc5b4f59c7ebe3f6395746d15f5efa320cd367acaccc9f14234c20a9990c18)
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://192.168.254.90/1994019758 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Length: 314\r\nCSeq: 2\r\nDACP-ID: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\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\xd2\x08\x10\x01\t\x12\x00\x01X\x88\x11+\x11O\x10 /\xdc[OY\xc7\xeb\xe3\xf69WF\xd1_^\xfa2\x0c\xd3g\xac\xac\xcc\x9f\x14#L \xa9\x99\x0c\x18\x11\x01`\x11\xacD\x12v\xdaS\xae\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'
2025-03-23 14:27:19 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/377.40.00\r\nCSeq: 2\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXdataPort[controlPort\x10`\x11\xe8j\x11\xc7\r\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>'
2025-03-23 14:27:19 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/377.40.00', 'CSeq': '2'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXdataPort[controlPort\x10`\x11\xe8j\x11\xc7\r\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>'):
2025-03-23 14:27:19 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Setup stream response: {'streams': [{'type': 96, 'dataPort': 59498, 'controlPort': 50957}]}
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://192.168.254.90/1994019758 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Type: text/parameters\r\nContent-Length: 13\r\nCSeq: 3\r\nDACP-ID: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\r\n\r\nvolume: -20.1'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 500 Internal Server Error\r\nContent-Length: 0\r\nServer: AirTunes/377.40.00\r\nCSeq: 3\r\n\r\n'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=500, message='Internal Server Error', headers={'Content-Length': '0', 'Server': 'AirTunes/377.40.00', 'CSeq': '3'}, body=''):
2025-03-23 14:27:19 DEBUG [pyatv.protocols.raop]: Failed to set volume (RTSP/1.0 method SET_PARAMETER failed with code 500: Internal Server Error), delaying call
2025-03-23 14:27:19 DEBUG [pyatv.protocols.raop.stream_client]: Starting periodic sync task
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'RECORD rtsp://192.168.254.90/1994019758 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 4\r\nDACP-ID: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\r\n\r\n'
2025-03-23 14:27:19 DEBUG [pyatv.protocols.raop.stream_client]: Sending sync packet (Frac=2690580480, RtpTime=66150, Sec=3951725239, SyncPacket=90d4000700000000eb8a8ab7a05f000000010266)
2025-03-23 14:27:19 DEBUG [pyatv.protocols.raop.protocols.airplayv2]: Starting feedback task
2025-03-23 14:27:19 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: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\r\n\r\n'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nServer: AirTunes/377.40.00\r\nCSeq: 4\r\n\r\nRTSP/1.0 200 OK\r\nContent-Length: 85\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/377.40.00\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-'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Server': 'AirTunes/377.40.00', 'CSeq': '4'}, body=''):
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'FLUSH rtsp://192.168.254.90/1994019758 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 6\r\nDACP-ID: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\r\nRange: npt=0-\r\nSession: 0\r\nRTP-Info: seq=24816;rtptime=66150\r\n\r\n'
2025-03-23 14:27:19 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/377.40.00', '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-'):
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nRTP-Info: rtptime=0\r\nServer: AirTunes/377.40.00\r\nCSeq: 6\r\n\r\n'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'RTP-Info': 'rtptime=0', 'Server': 'AirTunes/377.40.00', 'CSeq': '6'}, body=''):
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SET_PARAMETER rtsp://192.168.254.90/1994019758 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Type: text/parameters\r\nContent-Length: 13\r\nCSeq: 7\r\nDACP-ID: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\r\n\r\nvolume: -20.1'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 500 Internal Server Error\r\nContent-Length: 0\r\nServer: AirTunes/377.40.00\r\nCSeq: 7\r\n\r\n'
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=500, message='Internal Server Error', headers={'Content-Length': '0', 'Server': 'AirTunes/377.40.00', 'CSeq': '7'}, body=''):
2025-03-23 14:27:19 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'TEARDOWN rtsp://192.168.254.90/1994019758 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 8\r\nDACP-ID: F8B64ACFA60A0234\r\nActive-Remote: 481767546\r\nClient-Instance: F8B64ACFA60A0234\r\nSession: 0\r\n\r\n'
2025-03-23 14:27:20 DEBUG [pyatv.auth.hap_channel]: Connection was lost to remote
2025-03-23 14:27:20 DEBUG [pyatv.support.http]: Connection closed
2025-03-23 14:27:20 DEBUG [pyatv.core.facade]: Release (<class 'pyatv.interface.Audio'>, <class 'pyatv.interface.Metadata'>, <class 'pyatv.interface.PushUpdater'>, <class 'pyatv.interface.RemoteControl'>) by Protocol.AirPlay
2025-03-23 14:27:20 DEBUG [pyatv.scripts.atvremote]: Waiting for 1 remaining tasks
2025-03-23 14:27:20 DEBUG [pyatv.protocols.raop.stream_client]: Control connection lost (None)
2025-03-23 14:27:20 DEBUG [pyatv.protocols.raop.stream_client]: Periodic sync task ended
Traceback (most recent call last):
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/protocols/raop/stream_client.py", line 451, in send_audio
await self.set_volume(pct_to_dbfs(volume))
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/protocols/raop/stream_client.py", line 372, in set_volume
await self.rtsp.set_parameter("volume", str(volume))
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/support/rtsp.py", line 197, in set_parameter
return await self.exchange(
^^^^^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/support/rtsp.py", line 294, in exchange
resp = await self.connection.send_and_receive(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/support/http.py", line 496, in send_and_receive
raise exceptions.HttpError(
pyatv.exceptions.HttpError: RTSP/1.0 method SET_PARAMETER failed with code 500: Internal Server Error
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/scripts/atvremote.py", line 997, in _run_application
return await cli_handler(loop)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/scripts/atvremote.py", line 726, in cli_handler
return await _handle_commands(args, config, storage, loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/scripts/atvremote.py", line 876, in _handle_commands
ret = await _handle_device_command(args, cmd, atv, storage, loop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/scripts/atvremote.py", line 932, in _handle_device_command
return await _exec_command(atv.stream, cmd, True, *cmd_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/scripts/atvremote.py", line 964, in _exec_command
value = await tmp(*args)
^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/core/facade.py", line 374, in stream_file
await self.relay("stream_file")(
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/protocols/raop/__init__.py", line 398, in stream_file
await client.send_audio(audio_file, file_metadata, volume=volume)
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/protocols/raop/stream_client.py", line 467, in send_audio
await self.rtsp.teardown(self.context.rtsp_session)
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/support/rtsp.py", line 253, in teardown
return await self.exchange("TEARDOWN", headers={"Session": rtsp_session})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/support/rtsp.py", line 294, in exchange
resp = await self.connection.send_and_receive(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/testbench-mac/PyCharmMiscProject/.venv1/lib/python3.12/site-packages/pyatv/support/http.py", line 467, in send_and_receive
raise exceptions.ConnectionLostError("connection was lost")
pyatv.exceptions.ConnectionLostError: connection was lost
This is most likely due to incompatibility in pyatv, I have only tested a few receivers. So I'm not surprised. I'll look into it when I have some time.
I would appreciate any help. I am looking for a way to automate Airplay receiver testing on newly manufactured Hi-Fi premium units.
Hi there,
I have some more specific findings for my Samsung Q70 (Model: QRQ70) using pyatv version 0.16.0. My LG C3 works correctly for comparison.
Issue with SET_PARAMETER volume on Samsung Q70:
-
PlayUrlFailure: Fails withRTSP/1.0 method PUT failed with code 501: Not Implemented. -
StreamFileBehavior &SET_PARAMETER volume:- When
atv.stream.stream_file(...)is called,pyatvattempts an initial RTSP `SET_PARAMETER volume - The Samsung Q70's RTSP server responds to this command with
RTSP/1.0 500 Internal Server Errorandpyatvthen crashes
- When
Working Workaround (in pyatv/protocols/raop/stream_client.py):
The following modification to StreamClient.set_volume allows stream_file to work and for subsequent volume changes to take effect audibly on the Samsung Q70, by having pyatv ignore the erroneous 500 error from the TV:
# In pyatv/protocols/raop/stream_client.py
# Original method:
# async def set_volume(self, volume: float) -> None:
# await self.rtsp.set_parameter("volume", str(volume))
# self.context.volume = volume
# Modified method (workaround):
async def set_volume(self, volume: float) -> None:
"""Change volume on the receiver."""
try:
await self.rtsp.set_parameter("volume", str(volume))
except Exception as ex:
_LOGGER.debug("Failed to set volume via RTSP: %s", ex)
# Continue execution even if volume setting fails
self.context.volume = volume
Relevant Log Snippets for Samsung Q70:
-
Initial
SET_PARAMETER volumeduringstream_filestartup:2025-05-26 15:44:19,258 - DEBUG - pyatv.support.http - Sending RTSP/1.0 message: b'SET_PARAMETER ... volume: -20.1' 2025-05-26 15:44:19,408 - DEBUG - pyatv.support.http - Received: b'RTSP/1.0 500 Internal Server Error ... CSeq: 3' 2025-05-26 15:44:19,409 - DEBUG - pyatv.protocols.raop.stream_client - Failed to set volume via RTSP: RTSP/1.0 method SET_PARAMETER failed with code 500: Internal Server Error ``` *(At this point, with the workaround, `pyatv` continues and audio starts at ~33% on the TV).* -
Subsequent
SET_PARAMETER volume(e.g., to 10% which is -27.0 dBFS) during active stream:2025-05-26 15:44:28,021 - DEBUG - pyatv.support.http - Sending RTSP/1.0 message: b'SET_PARAMETER ... volume: -27.0' 2025-05-26 15:44:28,118 - DEBUG - pyatv.support.http - Received: b'RTSP/1.0 500 Internal Server Error ... CSeq: 12' 2025-05-26 15:44:28,118 - DEBUG - pyatv.protocols.raop.stream_client - Failed to set volume via RTSP: RTSP/1.0 method SET_PARAMETER failed with code 500: Internal Server Error(With the workaround,
pyatvlogs this, but the TV's audible volume does change to 10%).
/info Response Comparison Summary:
-
Samsung Q70: The parsed
/inforesponse does not containvolumeControlTypeorinitialVolume.sdkreportsAirPlay;2.1.1-f.1. -
LG C3 (Works Correctly): The parsed
/inforeportsvolumeControlType: 1.sdkreportsAirPlay;3.5.0.244.
Conclusion:
It looks as if the Samsung Q70's AirPlay implementation (thus maybe also the one from the Samsung QN90D) has a bug where it correctly processes SET_PARAMETER volume commands but incorrectly reports a 500 Internal Server Error. This prevents pyatv from starting the stream setup, and also makes pyatv believe subsequent volume changes failed.
I had some questions, might the difference in /info (especially the lack of volumeControlType from Samsung) be why pyatv attempts the initial SET_PARAMETER volume more assertively than it might for a device like the LG C3?
And can this help pyatv to ignore these specific erroneous 500 errors for volume commands?
Hope this somehow helps, thanks in advance!
Max