companion: Use static id for _i in _systemInfo
This change generates a random "rp identifier" that is included in _systemInfo sent by the Companion protocol. It's not really known what this identifier is, but it comes from rapportd/Rapport.framework and seems to be unique per device. So we generate a unique one per device and store it with settings.
Adjustments have been made so that if this identifier is missing in settings, a new identifier will be generated and saved automatically.
Relates to #2656
@albaintor I added a new setting per device, rp_id, that contains a random identifier. It it is stored persistently. Can you verify if this works?
Hi @postlund ,
I just tested it and it works well so far Thanks
Hi,
Running this pull currently as well on one 18.4 AppleTV.
Seeing repeated connection lost.
Works on restart for a while, but then connection lost as logging here recurs.
Not completely sure its not my problem/end - but thought would post logging info here for you whilst I figure out.
This should include multiple reconnections. Connection lost and then reconnects as per earlier reports.
rp_id is unique and in file-storage
have re-paired.. and waiting to see whether recurrent...
My issue - async/non-async issue, now fixed. A lot more testing across 18.4 - no ongoing issues.
So all in all a thumbs up for me.
Thanks again for the fantastical library!
13-04-2025 11:45:29.462 DEBUG pyatv.core.facade.connect:facade.py:724: Connected to protocol: Protocol.MRP
13-04-2025 11:45:29.462 DEBUG pyatv.core.facade.connect:facade.py:722: Connecting to protocol: Protocol.Companion
13-04-2025 11:45:29.462 DEBUG pyatv.protocols.companion.api.connect:api.py:140: Connect to Companion from API
13-04-2025 11:45:29.464 DEBUG pyatv.protocols.companion.connection.connection_made:connection.py:123: Connected to companion device 192.168.1.142:49221
13-04-2025 11:45:29.465 DEBUG pyatv.protocols.companion.protocol.start:protocol.py:105: Companion credentials: e019f02652fd55aa235b745cc614e0c564bf1eba5cc2d704123081efe83189af:624d2987795b928b0a4fd2d4cd4041c484b15c5971feaa35db81f0f1c64af438:42323730433239372d384144352d344430432d393639392d463737453133343336453434:36373339643633622d336666332d346137312d386539332d376233646564353265643661
13-04-2025 11:45:29.465 DEBUG pyatv.protocols.companion.protocol._exchange_generic_opack:protocol.py:162: Exchange OPACK: {'_pd': b'\x06\x01\x01\x03 n\x9a\x8a/\x82\xd1YJ\x1cG\x08GFB\x8d1H\x00D\xbap\x843\x86\xc4\x13\xd0\x1a\x93,\xfe4', '_auTy': 4}
13-04-2025 11:45:29.465 DEBUG pyatv.protocols.companion.protocol.send_opack:protocol.py:185: Send OPACK: {'_pd': b'\x06\x01\x01\x03 n\x9a\x8a/\x82\xd1YJ\x1cG\x08GFB\x8d1H\x00D\xbap\x843\x86\xc4\x13\xd0\x1a\x93,\xfe4', '_auTy': 4, '_x': 8194}
13-04-2025 11:45:29.465 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: >> Send data (Data=e3435f7064912506010103206e9a8a2f82d1594a1c47084746428d31480044ba70843386c413d01a932cfe34455f617554790c425f78310220, FrameType=05)
13-04-2025 11:45:29.477 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: Received data (Data=060000a6e1435f7064919f05784ba0686d790bc82bc1b6269c52ea55340bc53748db20d4c0c57259478f6d250211efaca842412a7f530b450eca696022851665c48a6493e8eb86ec9b6de1114f4c3e1a08cdf342b158eb52f5b25e17907d164b83348dacaecfbb5f0f46bbb3e6018e9c1109fd61f408bb01c16229e19cb520179d852477ba0601020320ae1456010de0c48d870d0277f9b26fead54cae5b38cfc5094fde4f336545d728)
13-04-2025 11:45:29.478 DEBUG pyatv.protocols.companion.protocol.frame_received:protocol.py:190: Received frame FrameType.PV_Next: b'\xe1C_pd\x91\x9f\x05xK\xa0hmy\x0b\xc8+\xc1\xb6&\x9cR\xeaU4\x0b\xc57H\xdb \xd4\xc0\xc5rYG\x8fm%\x02\x11\xef\xac\xa8BA*\x7fS\x0bE\x0e\xcai`"\x85\x16e\xc4\x8ad\x93\xe8\xeb\x86\xec\x9bm\xe1\x11OL>\x1a\x08\xcd\xf3B\xb1X\xebR\xf5\xb2^\x17\x90}\x16K\x834\x8d\xac\xae\xcf\xbb_\x0fF\xbb\xb3\xe6\x01\x8e\x9c\x11\t\xfda\xf4\x08\xbb\x01\xc1b)\xe1\x9c\xb5 \x17\x9d\x85$w\xba\x06\x01\x02\x03 \xae\x14V\x01\r\xe0\xc4\x8d\x87\r\x02w\xf9\xb2o\xea\xd5L\xae[8\xcf\xc5\tO\xdeO3eE\xd7('
13-04-2025 11:45:29.478 DEBUG pyatv.protocols.companion.protocol._handle_auth:protocol.py:210: Process incoming auth frame (FrameType.PV_Next): {'_pd': b'\x05xK\xa0hmy\x0b\xc8+\xc1\xb6&\x9cR\xeaU4\x0b\xc57H\xdb \xd4\xc0\xc5rYG\x8fm%\x02\x11\xef\xac\xa8BA*\x7fS\x0bE\x0e\xcai`"\x85\x16e\xc4\x8ad\x93\xe8\xeb\x86\xec\x9bm\xe1\x11OL>\x1a\x08\xcd\xf3B\xb1X\xebR\xf5\xb2^\x17\x90}\x16K\x834\x8d\xac\xae\xcf\xbb_\x0fF\xbb\xb3\xe6\x01\x8e\x9c\x11\t\xfda\xf4\x08\xbb\x01\xc1b)\xe1\x9c\xb5 \x17\x9d\x85$w\xba\x06\x01\x02\x03 \xae\x14V\x01\r\xe0\xc4\x8d\x87\r\x02w\xf9\xb2o\xea\xd5L\xae[8\xcf\xc5\tO\xdeO3eE\xd7('}
13-04-2025 11:45:29.478 DEBUG pyatv.protocols.companion.auth.log_binary:__init__.py:92: Device (Encrypted=4ba0686d790bc82bc1b6269c52ea55340bc53748db20d4c0c57259478f6d250211efaca842412a7f530b450eca696022851665c48a6493e8eb86ec9b6de1114f4c3e1a08cdf342b158eb52f5b25e17907d164b83348dacaecfbb5f0f46bbb3e6018e9c1109fd61f408bb01c16229e19cb520179d852477ba, Public=e019f02652fd55aa235b745cc614e0c564bf1eba5cc2d704123081efe83189af)
13-04-2025 11:45:29.479 DEBUG pyatv.protocols.companion.protocol._exchange_generic_opack:protocol.py:162: Exchange OPACK: {'_pd': b'\x06\x01\x03\x05x\t\xb0\x82\x8e\x0fzC\x15}I\xf0\x9b98F\x9fy\xad\x9b\x81\x029U\xbd4\x9e\x06\xad4\xf0T\xa9^\xfd4La\x7f\x95VxY\xf4\x8c^\x87\xe1=OUl\xd5\xe5\x089\xceX\xcf\x90 \xcb5_\xf2\n\xda\xdbL}x\\g\xb9<P\x80\xabPX\xddCV\x97\xf7\xfe\x98\xd0\xa4\xff\xbb\x84\xb2w;[|S!\x05\xc0m\x12\x06\x92\x8d3\xd0g\x91\x15\x18\xea@\xa1\x83\x9d\x10\x8ca\x10'}
13-04-2025 11:45:29.479 DEBUG pyatv.protocols.companion.protocol.send_opack:protocol.py:185: Send OPACK: {'_pd': b'\x06\x01\x03\x05x\t\xb0\x82\x8e\x0fzC\x15}I\xf0\x9b98F\x9fy\xad\x9b\x81\x029U\xbd4\x9e\x06\xad4\xf0T\xa9^\xfd4La\x7f\x95VxY\xf4\x8c^\x87\xe1=OUl\xd5\xe5\x089\xceX\xcf\x90 \xcb5_\xf2\n\xda\xdbL}x\\g\xb9<P\x80\xabPX\xddCV\x97\xf7\xfe\x98\xd0\xa4\xff\xbb\x84\xb2w;[|S!\x05\xc0m\x12\x06\x92\x8d3\xd0g\x91\x15\x18\xea@\xa1\x83\x9d\x10\x8ca\x10', '_x': 8195}
13-04-2025 11:45:29.479 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: >> Send data (Data=e2435f7064917d060103057809b0828e0f7a43157d49f09b3938469f79ad9b81023955bd349e06ad34f054a95efd344c617f95567859f48c5e87e13d4f556cd5e50839ce58cf9020cb355ff20adadb4c7d785c67b93c5080ab5058dd435697f7fe98d0a4ffbb84b2773b5b7c532105c06d1206928d33d067911518ea40a1839d108c6110425f78310320, FrameType=06)
13-04-2025 11:45:29.485 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: Received data (Data=06000009e1435f706473060104)
13-04-2025 11:45:29.485 DEBUG pyatv.protocols.companion.protocol.frame_received:protocol.py:190: Received frame FrameType.PV_Next: b'\xe1C_pds\x06\x01\x04'
13-04-2025 11:45:29.485 DEBUG pyatv.protocols.companion.protocol._handle_auth:protocol.py:210: Process incoming auth frame (FrameType.PV_Next): {'_pd': b'\x06\x01\x04'}
13-04-2025 11:45:29.486 DEBUG pyatv.auth.hap_srp.log_binary:__init__.py:92: Keys (Input=692c518167c61b7906e86d73b71a4f44e0b86a1a1c2916b4853044f770778e67, Output=18f613d6f1fbb2e3a44b5502d6b082425f0ed897b966ff778083284f4138e8fd)
13-04-2025 11:45:29.486 DEBUG pyatv.protocols.companion.api.system_info:api.py:188: Sending system information
13-04-2025 11:45:29.486 DEBUG pyatv.protocols.companion.protocol._exchange_generic_opack:protocol.py:162: Exchange OPACK: {'_i': '_systemInfo', '_t': 2, '_c': {'_bf': 0, '_cf': 512, '_clFl': 128, '_i': 'defe90b8cffa', '_idsID': b'6739d63b-3ff3-4a71-8e93-7b3ded52ed6a', '_pubID': 'FF:70:79:61:74:76', '_sf': 256, '_sv': '170.18', 'model': 'iPhone10,6', 'name': 'pyatv'}, '_x': 8196}
13-04-2025 11:45:29.487 DEBUG pyatv.protocols.companion.protocol.send_opack:protocol.py:185: Send OPACK: {'_i': '_systemInfo', '_t': 2, '_c': {'_bf': 0, '_cf': 512, '_clFl': 128, '_i': 'defe90b8cffa', '_idsID': b'6739d63b-3ff3-4a71-8e93-7b3ded52ed6a', '_pubID': 'FF:70:79:61:74:76', '_sf': 256, '_sv': '170.18', 'model': 'iPhone10,6', 'name': 'pyatv'}, '_x': 8196}
13-04-2025 11:45:29.487 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: >> Send data (Data=e4425f694b5f73797374656d496e666f425f740a425f63ea435f626608435f6366310002455f636c466c3080a04c646566653930623863666661465f6964734944912436373339643633622d336666332d346137312d386539332d376233646564353265643661465f70756249445146463a37303a37393a36313a37343a3736435f7366310001435f7376463137302e3138456d6f64656c4a6950686f6e6531302c36446e616d65457079617476425f78310420, FrameType=08)
13-04-2025 11:45:29.487 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: >> Send (Encrypted=9fc7dfa1bcb5e8a432fe365611ba01ff802b982d0d26570dd55a907a9a53c8db48ad5c6998f98d793d4be50ff3507d9a03c84eebfce57cd29ad2b1058dcc7d482599dc8506cb308a55bd8fa2418463f57aade40b4c4bed8c68f102f7df4099fd9bba40651e7d620da9766dac39630d8787e73e478f4f1fc2400b06dedd980c175048668a50000d099b9e83d094e765ca1eaa369bcd8c14920b7880c5c0d64988ad04d074a0d7b712794b59a4354dc8d68e90818b7362f387bfe01ce66805c3d24568293b, Header=080000c4)
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: Received data (Data=0800197b5343d25002c514b89132e516c15b1107441baf2c7aba93b5acd099ca1d064b04c19629f04c4a3b00b2f1208d8273dd00d4a7a7a2212e00994426a79ed512a4f69c747f5d1c26ab8897e30a30b9012d36546569bc790719125f6f9eb9f47df3b40061ffdad7ecc0689ee0b5d22d2d7ef01cc81ecf0448db67f06fa7908ef2cfa3e5a9715b391d8af191632544dc1429b8d417be92d12f06857889086010ee8aec95ca68670259202e7d01c07e92b40613ac18d6acda406303cf5fc457eda831af0d5e08eb3cc12a01533d270e2682d72488455d51c88d232c6ef196724d8b3571af578c5b78eb598d7bf9f54cf90e0a688a82a44f565869e4794ac...)
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.connection.data_received:connection.py:136: Require 6527 bytes but only 1448 in buffer
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: Received data (Data=ceef0e8e2c0448008a66d209eb77c41912ef75c45b830dff12cd05526492522f9e1b9f8534e986d9dfef0cda5d4ca58e39a9b54bdd8dedd89a4acb2f44e430620388765a1f0ade555ac534e8d34715c536d8ba40d057725fa7490f1054e6bc2193599910cd2912ff77c3c038803573edb530cd485c9c4df08b47e2ee1c34ff29e42607edaa11d26b892a0361c24b566cfc0b30fd8f4109bd2b589cd744210fbbd759bc30c1b318cd630e72afc3b8084c5f13d740eb1b18801b1015c206966d3d6012228a46e40d2313cef9ff7684b7a1326da159ce59190d9999bacd5e113fdd2b26c074b79a6b80cf4ccc0cb3c5f70cc8514decd4629027b306f34a8d608...)
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.connection.data_received:connection.py:136: Require 6527 bytes but only 2896 in buffer
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: Received data (Data=fb3a4217a2e9e76c18ceaf9a3a55bd5e0ff334aa7fb45e7ee13bb5b1b7356a8ea4ab4b522d187b769a0c0601a4e517885540d4c44c69f005c2128863a45eb08b0eb24b8a44488931c74c413f2f52c61305f4d544345d1becbb08b81ed8a0c1230aa68da38ea62188b793d84fbb45a7c7e1092656274bdd5a4e798d5f1ac331b68e59ecbf7c09debffee3a4c9044f7834becefb7b55dd46ac1c34eeca760576a7111df2b5a421521a0e4cc2b906de782c9973e3aeaad77a807ed4eb0b1dbd26341fa147caab245648bc10f271e95cda77a6e8b98b545a15053983cfed5fcde8251192cad4cfeb5761640e68d8bca13fa4fd93d54bda5e95a0837ebd638c15d...)
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.connection.data_received:connection.py:136: Require 6527 bytes but only 4344 in buffer
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: Received data (Data=95c67ba776a7c98c5d6ec772c4fc1ef7eb24ed9239bd125a462f4664b4678f163b207cf403fc7085647fc804344c8b806efa4b8426900d4cc1f7060e7f1a3f88b7dd383c82877a302feb0ffcabb98a972d51b983ff3d6bbd43b84a3305357e936b6963ee4b6dae8ef27b73c9247b9e85e3c112bf05072525aaf397ba3f6bdff3b31992fdfc7f1a63d84bc6f6f268357c3aafe065473391a40adf8205779c7e45cf46847c35024a12ea9ae78399a687da2d19a47ca555c2f2f7ebbbb7becdef844c66253fad9b2b39fd9acf751a6d598117f837c0f1bd05832dc5756c9775227a03e2e7cfecc7e2d39fb5f351d1b373f7140bbefc298a7c72045ca4362abc3...)
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.protocol.frame_received:protocol.py:190: Received frame FrameType.E_OPACK: b'\xe3B_c\xefE_msSt\tC_sf2\x00\x00\x01\x00E_msRo\x0bC_lP2E\xc0\x00\x00E_hkID\x05lY%(0\x1e^H\x8aB\x89\x84\xa9\x83\x05,C_cf1\x00\x02F_pubIDQAC:76:2A:92:82:70K_accAltDSIDa.001616-10-421e9694-a959-42ba-97ce-d738234e8d3dD_stA\xdfa,com.apple.callservicesd.CompanionLinkManagerZcom.apple.bluetooth.remotea\'com.apple.devicediscoveryui.rapportwakeUcom.apple.siri.wakeupQcom.apple.Seymour\\com.apple.biomesyncd.rapportXcom.apple.home.messaginga-com.apple.accessibility.axremoted.rapportWakea$com.apple.biomesyncd.cascade.rapportZcom.apple.tvremoteservicesXcom.apple.SeymourSessiona#com.apple.wifivelocityd.rapportWake\xb3`com.apple.workflow.remotewidgetsa&com.apple.networkrelay.on-demand-setup\x03C_svH650.26.1E_mrIDa$B270C297-8AD5-4D0C-9699-F77E13436E44DnameQAppleTV - TV RoomI_aaltDSID\xaeF_dCapF\tF_hkUID\xd2\x05\xfc\x14\x89=\xea\xde[g\x8f\xdfU\xfb\x88\xae\x87\xf7\x05A\xd4\x03\x0e\x95\xcd_\x92\x87\xf7\xde\xd7\x80\xb4ktI_siriInfo\xe7HpeerData\xeaSassistantIdentifiera$7283BAF7-99D1-48CC-88DE-659D5F4DB644LbuildVersionF22L255KproductTypeKAppleTV11,1TsharedUserIdentifiera$A8DFE147-E25A-4AF7-83C1-2D4F13EA2672WisLocationSharingDevice\x02JaceVersionH13.0-20ARuserInterfaceIdiomDZEUSVisSiriCloudSyncEnabled\x01VuserAssignedDeviceName\xc1#NtrialTreatment@TdeviceCapabilitiesV2\xd5\x92C\x03bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10_\x10$SVDAssistantEnabledCapabilityBackingV$class\x80\x02\x80\n\xd4\x12\x0e\x13\x14\x15\x16\x17\x18_\x107primitivesMap_AssistantEnabledCapability::supportStatusSkey]primitiveKeys\x80\x07\x80\t\x80\x03\x80\x04_\x10\x1aAssistantEnabledCapability\xd2\x1b\x0e\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10)AssistantEnabledCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\x0e()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x106SiriVirtualDeviceResolution.AssistantEnabledCapability\xa21%_\x106SiriVirtualDeviceResolution.AssistantEnabledCapability\xd2!"34_\x10\x1dSVDAssistantEnabledCapability\xa356%_\x10\x1dSVDAssistantEnabledCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00\x91\x00\x98\x00\x9a\x00\x9c\x00\xa5\x00\xdf\x00\xe3\x00\xf1\x00\xf3\x00\xf5\x00\xf7\x00\xf9\x01\x16\x01\x1b\x01&\x01(\x01*\x01,\x01X\x01]\x01h\x01q\x01y\x01|\x01\x85\x01\x8a\x01\x98\x01\x9a\x01\x9c\x01\xa1\x01\xc1\x01\xc4\x01\xe4\x01\xe9\x02"\x02%\x02^\x02c\x02\x83\x02\x87\x02\xa7\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xb5\x92\x0b\x03bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10_\x10\x1dSVDAppLaunchCapabilityBackingV$class\x80\x02\x80\n\xd4\x0e\x12\x13\x14\x15\x16\x17\x18Skey_\x100primitivesMap_AppLaunchCapability::supportStatus]primitiveKeys\x80\t\x80\x03\x80\x07\x80\x04_\x10\x13AppLaunchCapability\xd2\x1b\x0e\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10"AppLaunchCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\x0e()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x10/SiriVirtualDeviceResolution.AppLaunchCapability\xa21%_\x10/SiriVirtualDeviceResolution.AppLaunchCapability\xd2!"34_\x10\x16SVDAppLaunchCapability\xa356%_\x10\x16SVDAppLaunchCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00\x8a\x00\x91\x00\x93\x00\x95\x00\x9e\x00\xa2\x00\xd5\x00\xe3\x00\xe5\x00\xe7\x00\xe9\x00\xeb\x01\x01\x01\x06\x01\x11\x01\x13\x01\x15\x01\x17\x01<\x01A\x01L\x01U\x01]\x01`\x01i\x01n\x01|\x01~\x01\x80\x01\x85\x01\xa5\x01\xa8\x01\xc8\x01\xcd\x01\xff\x02\x02\x024\x029\x02R\x02V\x02o\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02}\x92+\x03bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10_\x10!SVDVideoPlaybackCapabilityBackingV$class\x80\x02\x80\n\xd4\x0e\x12\x13\x14\x15\x16\x17\x18Skey_\x104primitivesMap_VideoPlaybackCapability::supportStatus]primitiveKeys\x80\t\x80\x03\x80\x07\x80\x04_\x10\x17VideoPlaybackCapability\xd2\x1b\x0e\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10&VideoPlaybackCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\x0e()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x103SiriVirtualDeviceResolution.VideoPlaybackCapability\xa21%_\x103SiriVirtualDeviceResolution.VideoPlaybackCapability\xd2!"34_\x10\x1aSVDVideoPlaybackCapability\xa356%_\x10\x1aSVDVideoPlaybackCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00\x8e\x00\x95\x00\x97\x00\x99\x00\xa2\x00\xa6\x00\xdd\x00\xeb\x00\xed\x00\xef\x00\xf1\x00\xf3\x01\r\x01\x12\x01\x1d\x01\x1f\x01!\x01#\x01L\x01Q\x01\\\x01e\x01m\x01p\x01y\x01~\x01\x8c\x01\x8e\x01\x90\x01\x95\x01\xb5\x01\xb8\x01\xd8\x01\xdd\x02\x13\x02\x16\x02L\x02Q\x02n\x02r\x02\x8f\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x9d\x923\x03bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10_\x10"SVDSeymourRoutingCapabilityBackingV$class\x80\x02\x80\n\xd4\x12\x0e\x13\x14\x15\x16\x17\x18_\x105primitivesMap_SeymourRoutingCapability::supportStatusSkey]primitiveKeys\x80\x07\x80\t\x80\x03\x80\x04_\x10\x18SeymourRoutingCapability\xd2\x1b\x0e\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10\'SeymourRoutingCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\x0e()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x104SiriVirtualDeviceResolution.SeymourRoutingCapability\xa21%_\x104SiriVirtualDeviceResolution.SeymourRoutingCapability\xd2!"34_\x10\x1bSVDSeymourRoutingCapability\xa356%_\x10\x1bSVDSeymourRoutingCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00\x8f\x00\x96\x00\x98\x00\x9a\x00\xa3\x00\xdb\x00\xdf\x00\xed\x00\xef\x00\xf1\x00\xf3\x00\xf5\x01\x10\x01\x15\x01 \x01"\x01$\x01&\x01P\x01U\x01`\x01i\x01q\x01t\x01}\x01\x82\x01\x90\x01\x92\x01\x94\x01\x99\x01\xb9\x01\xbc\x01\xdc\x01\xe1\x02\x18\x02\x1b\x02R\x02W\x02u\x02y\x02\x97\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xa5\x92C\x03bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10V$class_\x10$SVDProfileSwitchingCapabilityBacking\x80\n\x80\x02\xd4\x12\r\x13\x14\x15\x16\x17\x18]primitiveKeysSkey_\x107primitivesMap_ProfileSwitchingCapability::supportStatus\x80\x04\x80\t\x80\x03\x80\x07_\x10\x1aProfileSwitchingCapability\xd2\x1b\r\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10)ProfileSwitchingCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\r()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x106SiriVirtualDeviceResolution.ProfileSwitchingCapability\xa21%_\x106SiriVirtualDeviceResolution.ProfileSwitchingCapability\xd2!"34_\x10\x1dSVDProfileSwitchingCapability\xa356%_\x10\x1dSVDProfileSwitchingCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00q\x00\x98\x00\x9a\x00\x9c\x00\xa5\x00\xb3\x00\xb7\x00\xf1\x00\xf3\x00\xf5\x00\xf7\x00\xf9\x01\x16\x01\x1b\x01&\x01(\x01*\x01,\x01X\x01]\x01h\x01q\x01y\x01|\x01\x85\x01\x8a\x01\x98\x01\x9a\x01\x9c\x01\xa1\x01\xc1\x01\xc4\x01\xe4\x01\xe9\x02"\x02%\x02^\x02c\x02\x83\x02\x87\x02\xa7\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xb5a&audio-session-coordination.system-info\xe4ZmediaRemoteGroupIdentifiera$72FCF078-7559-4DDF-9F49-C0E57C6C6194OhomeKitRoomNameGTv RoomZmediaRemoteRouteIdentifier\xc1!UisSupportedAndEnabled\x02OstationaryScore5RfZAKisCollector\x02XcollectorElectionVersion5\x00\x00\x80?RsharedDataProtoBuf\x92F\x03\x08\x01"$AC9A067B-A7A0-4CE0-93EE-34E5106C3861*\x05en-AU2$7283BAF7-99D1-48CC-88DE-659D5F4DB644:\x19https://guzzoni.apple.comH\x00R$A8DFE147-E25A-4AF7-83C1-2D4F13EA2672b\x02\x10\x00j\x14\n\x05en-AU\x10\x02\x1a\tcatherinep\x01x\x00\x82\x01DAssistant(Apple TV/AppleTV11,1; Apple TVOS/18.4/22L255) Ace/13.0-20A\x88\x01\x00\x9a\x01\x07Celsius\xa2\x01$3FF95149-3D29-4F87-BA56-4F5645EF071A\xaa\x01$A10610BE-7FA0-4DA0-8AF1-177DD646829F\xb2\x01\x0c143460-27,33\xba\x01$B270C297-8AD5-4D0C-9699-F77E13436E44\xca\x01\xec\x01AnUpZh9KdK_wnzJ-tLF3gO98gf0SO1_TBDvlgOG6kd57RmfeY4QGCzw1g9uOFKCxEHb-WqvKH-Ajj5kZB4itkhB6E2f_I9mt8ZvAfqJMAySIvcP9s9gP-Rx5MpKE5degPdpwnqfSfrorIA-kPqc3M0IDvkDXulvatRy1Iyoafh4NxXWzrH-2x5E4mHq2P-GHVWVqYqBWq8Tl28tLh3haI7jQO3iVY0K2GIWLqRCipH1j\xd0\x01\x01\xda\x01\x11AppleTV - TV Room\xe2\x01\xa2\x01\n\r\n\x06caller\x12\x03wlk\n\x0f\n\x06locale\x12\x05en-AU\n-\n\x05utscf\x12$OjAAAAEAAAAAAAQAEAAAAAwADQAOACMAJAA~\n\n\n\x03pfm\x12\x03atv\n\x0c\n\x02sf\x12\x06143460\n\x07\n\x01v\x12\x0284\n.\n\x04utsk\x12&7c48dc66beceb5d7::::::574b40e3259023ef\xea\x01\x08OptedOutG_idsCIDa$576b6088-73fe-4f62-8ce3-7b632371fb70B_iL3e23d3575fb2F_accIDRme@glennhawken.comE_clFl1\x80\x00C_bf1\xa0\x07Emodel\xc10D_osVF18.4.0F_mRtID\xc1!F_idsIDa$17F69021-0F48-4C64-9D9E-CEEFCFD18D66I_roomName\xc1EC_dCGunknown\x03B_t\x0bB_x1\x04 '
13-04-2025 11:45:29.493 DEBUG pyatv.protocols.companion.protocol._handle_opack:protocol.py:218: Process incoming OPACK frame (FrameType.E_OPACK): {'_c': {'_msSt': 1, '_sf': 65536, '_msRo': 3, '_lP': 49221, '_hkID': UUID('6c592528-301e-5e48-8a42-8984a983052c'), '_cf': 512, '_pubID': 'AC:76:2A:92:82:70', '_accAltDSID': '001616-10-421e9694-a959-42ba-97ce-d738234e8d3d', '_stA': ['com.apple.callservicesd.CompanionLinkManager', 'com.apple.bluetooth.remote', 'com.apple.devicediscoveryui.rapportwake', 'com.apple.siri.wakeup', 'com.apple.Seymour', 'com.apple.biomesyncd.rapport', 'com.apple.home.messaging', 'com.apple.accessibility.axremoted.rapportWake', 'com.apple.biomesyncd.cascade.rapport', 'com.apple.tvremoteservices', 'com.apple.SeymourSession', 'com.apple.wifivelocityd.rapportWake', 'com.apple.siri.wakeup', 'com.apple.workflow.remotewidgets', 'com.apple.networkrelay.on-demand-setup'], '_sv': '650.26.1', '_mrID': 'B270C297-8AD5-4D0C-9699-F77E13436E44', 'name': 'AppleTV - TV Room', '_aaltDSID': '001616-10-421e9694-a959-42ba-97ce-d738234e8d3d', '_dCapF': 1, '_hkUID': [UUID('fc14893d-eade-5b67-8fdf-55fb88ae87f7'), UUID('41d4030e-95cd-5f92-87f7-ded780b46b74')], '_siriInfo': {'peerData': {'assistantIdentifier': '7283BAF7-99D1-48CC-88DE-659D5F4DB644', 'buildVersion': '22L255', 'productType': 'AppleTV11,1', 'sharedUserIdentifier': 'A8DFE147-E25A-4AF7-83C1-2D4F13EA2672', 'isLocationSharingDevice': False, 'aceVersion': '13.0-20A', 'userInterfaceIdiom': 'ZEUS', 'isSiriCloudSyncEnabled': True, 'userAssignedDeviceName': 'AppleTV - TV Room', 'trialTreatment': ''}, 'deviceCapabilitiesV2': [b'bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10_\x10$SVDAssistantEnabledCapabilityBackingV$class\x80\x02\x80\n\xd4\x12\x0e\x13\x14\x15\x16\x17\x18_\x107primitivesMap_AssistantEnabledCapability::supportStatusSkey]primitiveKeys\x80\x07\x80\t\x80\x03\x80\x04_\x10\x1aAssistantEnabledCapability\xd2\x1b\x0e\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10)AssistantEnabledCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\x0e()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x106SiriVirtualDeviceResolution.AssistantEnabledCapability\xa21%_\x106SiriVirtualDeviceResolution.AssistantEnabledCapability\xd2!"34_\x10\x1dSVDAssistantEnabledCapability\xa356%_\x10\x1dSVDAssistantEnabledCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00\x91\x00\x98\x00\x9a\x00\x9c\x00\xa5\x00\xdf\x00\xe3\x00\xf1\x00\xf3\x00\xf5\x00\xf7\x00\xf9\x01\x16\x01\x1b\x01&\x01(\x01*\x01,\x01X\x01]\x01h\x01q\x01y\x01|\x01\x85\x01\x8a\x01\x98\x01\x9a\x01\x9c\x01\xa1\x01\xc1\x01\xc4\x01\xe4\x01\xe9\x02"\x02%\x02^\x02c\x02\x83\x02\x87\x02\xa7\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xb5', b'bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10_\x10\x1dSVDAppLaunchCapabilityBackingV$class\x80\x02\x80\n\xd4\x0e\x12\x13\x14\x15\x16\x17\x18Skey_\x100primitivesMap_AppLaunchCapability::supportStatus]primitiveKeys\x80\t\x80\x03\x80\x07\x80\x04_\x10\x13AppLaunchCapability\xd2\x1b\x0e\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10"AppLaunchCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\x0e()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x10/SiriVirtualDeviceResolution.AppLaunchCapability\xa21%_\x10/SiriVirtualDeviceResolution.AppLaunchCapability\xd2!"34_\x10\x16SVDAppLaunchCapability\xa356%_\x10\x16SVDAppLaunchCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00\x8a\x00\x91\x00\x93\x00\x95\x00\x9e\x00\xa2\x00\xd5\x00\xe3\x00\xe5\x00\xe7\x00\xe9\x00\xeb\x01\x01\x01\x06\x01\x11\x01\x13\x01\x15\x01\x17\x01<\x01A\x01L\x01U\x01]\x01`\x01i\x01n\x01|\x01~\x01\x80\x01\x85\x01\xa5\x01\xa8\x01\xc8\x01\xcd\x01\xff\x02\x02\x024\x029\x02R\x02V\x02o\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02}', b'bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10_\x10!SVDVideoPlaybackCapabilityBackingV$class\x80\x02\x80\n\xd4\x0e\x12\x13\x14\x15\x16\x17\x18Skey_\x104primitivesMap_VideoPlaybackCapability::supportStatus]primitiveKeys\x80\t\x80\x03\x80\x07\x80\x04_\x10\x17VideoPlaybackCapability\xd2\x1b\x0e\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10&VideoPlaybackCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\x0e()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x103SiriVirtualDeviceResolution.VideoPlaybackCapability\xa21%_\x103SiriVirtualDeviceResolution.VideoPlaybackCapability\xd2!"34_\x10\x1aSVDVideoPlaybackCapability\xa356%_\x10\x1aSVDVideoPlaybackCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00\x8e\x00\x95\x00\x97\x00\x99\x00\xa2\x00\xa6\x00\xdd\x00\xeb\x00\xed\x00\xef\x00\xf1\x00\xf3\x01\r\x01\x12\x01\x1d\x01\x1f\x01!\x01#\x01L\x01Q\x01\\\x01e\x01m\x01p\x01y\x01~\x01\x8c\x01\x8e\x01\x90\x01\x95\x01\xb5\x01\xb8\x01\xd8\x01\xdd\x02\x13\x02\x16\x02L\x02Q\x02n\x02r\x02\x8f\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x9d', b'bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10_\x10"SVDSeymourRoutingCapabilityBackingV$class\x80\x02\x80\n\xd4\x12\x0e\x13\x14\x15\x16\x17\x18_\x105primitivesMap_SeymourRoutingCapability::supportStatusSkey]primitiveKeys\x80\x07\x80\t\x80\x03\x80\x04_\x10\x18SeymourRoutingCapability\xd2\x1b\x0e\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10\'SeymourRoutingCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\x0e()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x104SiriVirtualDeviceResolution.SeymourRoutingCapability\xa21%_\x104SiriVirtualDeviceResolution.SeymourRoutingCapability\xd2!"34_\x10\x1bSVDSeymourRoutingCapability\xa356%_\x10\x1bSVDSeymourRoutingCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00\x8f\x00\x96\x00\x98\x00\x9a\x00\xa3\x00\xdb\x00\xdf\x00\xed\x00\xef\x00\xf1\x00\xf3\x00\xf5\x01\x10\x01\x15\x01 \x01"\x01$\x01&\x01P\x01U\x01`\x01i\x01q\x01t\x01}\x01\x82\x01\x90\x01\x92\x01\x94\x01\x99\x01\xb9\x01\xbc\x01\xdc\x01\xe1\x02\x18\x02\x1b\x02R\x02W\x02u\x02y\x02\x97\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xa5', b'bplist00\xd4\x01\x02\x03\x04\x05\x06\x07\nX$versionY$archiverT$topX$objects\x12\x00\x01\x86\xa0_\x10\x0fNSKeyedArchiver\xd1\x08\tTroot\x80\x01\xab\x0b\x0c\x11\x19\x1a\x1f &*.2U$null\xd2\r\x0e\x0f\x10V$class_\x10$SVDProfileSwitchingCapabilityBacking\x80\n\x80\x02\xd4\x12\r\x13\x14\x15\x16\x17\x18]primitiveKeysSkey_\x107primitivesMap_ProfileSwitchingCapability::supportStatus\x80\x04\x80\t\x80\x03\x80\x07_\x10\x1aProfileSwitchingCapability\xd2\x1b\r\x1c\x1eZNS.objects\xa1\x1d\x80\x05\x80\x06_\x10)ProfileSwitchingCapability::supportStatus\xd2!"#$Z$classnameX$classesWNSArray\xa2#%XNSObject\xd2\'\r()]supportStatus\x10\x01\x80\x08\xd2!"+,_\x10\x1dSVDBooleanCapabilityPrimitive\xa2-%_\x10\x1dSVDBooleanCapabilityPrimitive\xd2!"/0_\x106SiriVirtualDeviceResolution.ProfileSwitchingCapability\xa21%_\x106SiriVirtualDeviceResolution.ProfileSwitchingCapability\xd2!"34_\x10\x1dSVDProfileSwitchingCapability\xa356%_\x10\x1dSVDProfileSwitchingCapability]SVDCapability\x00\x08\x00\x11\x00\x1a\x00$\x00)\x002\x007\x00I\x00L\x00Q\x00S\x00_\x00e\x00j\x00q\x00\x98\x00\x9a\x00\x9c\x00\xa5\x00\xb3\x00\xb7\x00\xf1\x00\xf3\x00\xf5\x00\xf7\x00\xf9\x01\x16\x01\x1b\x01&\x01(\x01*\x01,\x01X\x01]\x01h\x01q\x01y\x01|\x01\x85\x01\x8a\x01\x98\x01\x9a\x01\x9c\x01\xa1\x01\xc1\x01\xc4\x01\xe4\x01\xe9\x02"\x02%\x02^\x02c\x02\x83\x02\x87\x02\xa7\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xb5'], 'audio-session-coordination.system-info': {'mediaRemoteGroupIdentifier': '72FCF078-7559-4DDF-9F49-C0E57C6C6194', 'homeKitRoomName': 'Tv Room', 'mediaRemoteRouteIdentifier': 'B270C297-8AD5-4D0C-9699-F77E13436E44', 'isSupportedAndEnabled': False}, 'stationaryScore': 13.649980545043945, 'isCollector': False, 'collectorElectionVersion': 1.0, 'sharedDataProtoBuf': b'\x08\x01"$AC9A067B-A7A0-4CE0-93EE-34E5106C3861*\x05en-AU2$7283BAF7-99D1-48CC-88DE-659D5F4DB644:\x19https://guzzoni.apple.comH\x00R$A8DFE147-E25A-4AF7-83C1-2D4F13EA2672b\x02\x10\x00j\x14\n\x05en-AU\x10\x02\x1a\tcatherinep\x01x\x00\x82\x01DAssistant(Apple TV/AppleTV11,1; Apple TVOS/18.4/22L255) Ace/13.0-20A\x88\x01\x00\x9a\x01\x07Celsius\xa2\x01$3FF95149-3D29-4F87-BA56-4F5645EF071A\xaa\x01$A10610BE-7FA0-4DA0-8AF1-177DD646829F\xb2\x01\x0c143460-27,33\xba\x01$B270C297-8AD5-4D0C-9699-F77E13436E44\xca\x01\xec\x01AnUpZh9KdK_wnzJ-tLF3gO98gf0SO1_TBDvlgOG6kd57RmfeY4QGCzw1g9uOFKCxEHb-WqvKH-Ajj5kZB4itkhB6E2f_I9mt8ZvAfqJMAySIvcP9s9gP-Rx5MpKE5degPdpwnqfSfrorIA-kPqc3M0IDvkDXulvatRy1Iyoafh4NxXWzrH-2x5E4mHq2P-GHVWVqYqBWq8Tl28tLh3haI7jQO3iVY0K2GIWLqRCipH1j\xd0\x01\x01\xda\x01\x11AppleTV - TV Room\xe2\x01\xa2\x01\n\r\n\x06caller\x12\x03wlk\n\x0f\n\x06locale\x12\x05en-AU\n-\n\x05utscf\x12$OjAAAAEAAAAAAAQAEAAAAAwADQAOACMAJAA~\n\n\n\x03pfm\x12\x03atv\n\x0c\n\x02sf\x12\x06143460\n\x07\n\x01v\x12\x0284\n.\n\x04utsk\x12&7c48dc66beceb5d7::::::574b40e3259023ef\xea\x01\x08OptedOut'}, '_idsCID': '576b6088-73fe-4f62-8ce3-7b632371fb70', '_i': '3e23d3575fb2', '_accID': '[email protected]', '_clFl': 128, '_bf': 1952, 'model': 'AppleTV11,1', '_osV': '18.4.0', '_mRtID': 'B270C297-8AD5-4D0C-9699-F77E13436E44', '_idsID': '17F69021-0F48-4C64-9D9E-CEEFCFD18D66', '_roomName': 'homeKitRoomName', '_dC': 'unknown'}, '_t': 3, '_x': 8196}
13-04-2025 11:45:29.494 DEBUG pyatv.protocols.companion.protocol._exchange_generic_opack:protocol.py:162: Exchange OPACK: {'_i': '_touchStart', '_t': 2, '_c': {'_height': 1000.0, '_tFl': 0, '_width': 1000.0}, '_x': 8197}
13-04-2025 11:45:29.494 DEBUG pyatv.protocols.companion.protocol.send_opack:protocol.py:185: Send OPACK: {'_i': '_touchStart', '_t': 2, '_c': {'_height': 1000.0, '_tFl': 0, '_width': 1000.0}, '_x': 8197}
13-04-2025 11:45:29.494 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: >> Send data (Data=e4425f694b5f746f7563685374617274425f740a425f63e3475f686569676874360000000000408f40445f74466c08465f7769647468a5425f78310520, FrameType=08)
13-04-2025 11:45:29.494 DEBUG pyatv.protocols.companion.connection.log_binary:__init__.py:92: >> Send (Encrypted=644ee7d1b5d77f1ba9b45218aecb8a72d2f67e589ca8ad6f0a3367635d798a250f356b812637d66c3a37490f72ce014090f2f5d04ee25def9d2ec02530135470dd2dfec7cde8d832802e139479, Header=0800004d)
13-04-2025 11:45:29.494 DEBUG pyatv.protocols.companion.connection.connection_lost:connection.py:162: Connection lost to remote device: None
13-04-2025 11:45:29.494 DEBUG pyatv.protocols.airplay.mrp_connection.close:mrp_connection.py:52: Closing connection
Could this be merged into a release? At the moment, every time there's a new Home Assistant release, I need to ssh into the HA docker instance to hand-edit the api.py file and change cafecafecafe to a random identifier or my log quickly fills up with connection errors.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 88.83%. Comparing base (
16285cf) to head (69d0b16). Report is 1 commits behind head on master.
Additional details and impacted files
@@ Coverage Diff @@
## master #2680 +/- ##
==========================================
+ Coverage 88.82% 88.83% +0.01%
==========================================
Files 168 168
Lines 11574 11585 +11
==========================================
+ Hits 10281 10292 +11
Misses 1293 1293
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.