pyatv icon indicating copy to clipboard operation
pyatv copied to clipboard

pyatv does not work at all on Mac Mini M4 with different devices

Open piotrek204 opened this issue 11 months ago • 3 comments

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

piotrek204 avatar Mar 23 '25 13:03 piotrek204

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.

postlund avatar Mar 28 '25 17:03 postlund

I would appreciate any help. I am looking for a way to automate Airplay receiver testing on newly manufactured Hi-Fi premium units.

piotrek204 avatar Mar 30 '25 14:03 piotrek204

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:

  1. PlayUrl Failure: Fails with RTSP/1.0 method PUT failed with code 501: Not Implemented.
  2. StreamFile Behavior & SET_PARAMETER volume:
    • When atv.stream.stream_file(...) is called, pyatv attempts an initial RTSP `SET_PARAMETER volume
    • The Samsung Q70's RTSP server responds to this command with RTSP/1.0 500 Internal Server Error and pyatv then crashes

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 volume during stream_file startup:

    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, pyatv logs this, but the TV's audible volume does change to 10%).

/info Response Comparison Summary:

  • Samsung Q70: The parsed /info response does not contain volumeControlType or initialVolume. sdk reports AirPlay;2.1.1-f.1.
  • LG C3 (Works Correctly): The parsed /info reports volumeControlType: 1. sdk reports AirPlay;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

lmgveerhoek avatar May 26 '25 14:05 lmgveerhoek