Open njuart opened 3 years ago
I've confirmed this is an issue with other open-source ATV libraries like pyatv as well. Like @njuart mentioned, everything just stops after DEVICE_INFO_MESSAGE
is called. Could be an issue with this particular beta. The official ATV remotes are still working, however.
I've confirmed this is an issue with other open-source ATV libraries like pyatv as well. Like @njuart mentioned, everything just stops after
DEVICE_INFO_MESSAGE
is called. Could be an issue with this particular beta. The official ATV remotes are still working, however.
Thx, for the input, at least something =))
The official ATV remotes are still working, however.
Which remotes are you referring to in this case?
The official ATV remotes are still working, however.
Which remotes are you referring to in this case?
@postlund The remote in the Control Center on iOS still works. I mentioned that because it might be possible to MITM the official remote connection and see if there's any difference with how it's working now.
@bsharper Control center uses another protocol, Companion, that's why it is working. Possibly also in conjunction with AirPlay 2 for metadata and such (not confirmed though). From what I have gathered, I suspect that apple is getting rid of (or at least less dependent on) MRP in tvOS 15. If you use the Remote app in iOS 15 beta, it probably says to use the control center widget, right? Does the Remote app work in iOS 14 or earlier at all?
@postlund Ah, I wasn't aware that the widget used the Companion protocol. Interestingly, tvOS 15 beta is still announcing _mediaremotetv._tcp
via zeroconf, but maybe they haven't removed it from the announcer yet. I'm also seeing _srpl-tls._tcp
from tvOS 15 beta (but not from tvOS 14) which I believe is related to the Apple's support for the new Thread protocol. That's probably more for letting Apple TV control IoT devices rather than allowing devices to control the Apple TV, but I'm not up to speed on that protocol.
I see you've done a lot of work with the Companion protocol with pyatv (the documentation under https://pyatv.dev/documentation/protocols is an incredible resource, I'm in awe of your skills). Have you had any luck sending commands (up/down/menu/select) to the ATV using Companion?
@bsharper Yeah, I think they switched to Companion in iOS 13 (in control center). Prior to that they used MRP. I also find it a bit peculiar that they still announce the service, that's why I'm not a 100% certain they are removing it. By actually removing support for MRP, they are ditching a bunch of features which I find a bit sad if they do (e.g. additional metadata and game pad support). I just hope they don't, especially after putting so much work into reverse engineering it...
I've never heard of _srpl-tls
, what makes you think it has to do with Thread/Matter? I know they already have _thread._tcp.local
(IIRC, which I might #not) as my HomePod announce that.
Yeah, I've put a lot of time into Companion. There's still a lot left and by the looks of it, I might have to spend more time with it. I haven't implemented support for any remote control buttons yet (I have all the button codes though, as mentioned in the documentation), but I can try to fix that tonight. Maybe you are willing to test it for me?
@postlund The reason I was thinking srpl-tls
was related to thread was that Discovery (zeroconf browser) showed srpl-tls
, then under the service it showed my ATV, Under the ATV there were a bunch of identifiers and a key=value pair that read: domain=openthread.thread.home.arpa
. Openthread is Google's Thread implementation.
And I would be more than happy to help test this. I have both a standard ATV running tvOS 14 and a 4K model running tvOS 15 beta. Let me know when you have something for me to test and we can go from there. Thanks!
(edited to fix punctuation)
@bsharper That was pretty much what I wanted to hear 👍 We can likely ignore that for now.
I'm working slowly on the Companion support, can hopefully finish it tomorrow or so. Just pushed support for scanning only for specific protocols, so you more easily can make atvremote ignore the MRP service and not get an error message when connect fails. I'll post here when I have something to test.
@bsharper After dealing with lots of annoyances, I've managed to stitch something together here: https://github.com/postlund/pyatv/pull/1218
You can see exactly which buttons are supported if you check the source. Scroll down to the CompanionRemoteControl
class. You can also do:
atvremote --debug --scan-protocols companion,airplay -s <ip> --companion-credentials <creds> features
Just replace ip and creds with your values. The same command can be used to send the commands, just change features
at the end to one of them, e.g. up
. Let me know if you need any help!
tvOS 15.0b3 no longer announcing _mediaremotetv._tcp
Note: Living
is missing.
Thanks for reporting that @elvisimprsntr! It's sad, because now we lose a lot of work and we will need to put a lot of effort in to get this working again 😕
@elvisimprsntr Just out of curiosity, do you know what protocol text input events are handled with from the Apple TV? I never saw events that would correlate to this over MRP when the ATV would broadcast that text input was available to any nearby paired device.
@bsharper After dealing with lots of annoyances, I've managed to stitch something together here: postlund/pyatv#1218
@postlund I'll take a look at this shortly, I apologize for not looking sooner, I must have not seen the notification when you posted this message, or perhaps a sleeping pill got in the way... either way I'll be looking at this soon.
If I checkout the companion_rc
branch and work with that, is that the best way to see your changes until the pull request is complete?
@bsharper Yeah, checkout that branch and do python setup.py install
(or develop
) and you should be fine 👍
Will be interesting to see, got a report about a missing service when testing it. Let's see if you get the same.
@postlund I used this code for testing: https://github.com/postlund/pyatv/blob/master/examples/pairing.py but replaced Protocol.MRP
with Protocol.Companion
in different combinations.
Protocol.Companion
, I get no results, even with a much longer timeout.Protocol.MRP
it finds the ATV. If I try to pair with Protocol.MRP
it throws a pyatv.exceptions.ConnectionFailedError
(as expected)Protocol.MRP
then try to pair with Protocol.Companion
, I get the no service error: pyatv.exceptions.NoServiceError: no service available for Protocol.Companion
Of course, this is under the assumption that scan results from MRP can be used as an input for pair using Companion, which may not be possible.
@bsharper You need service details for the companion protocol, so just MRP won't be enough. It's easier to just use atvremote:
$ atvremote -s <ip> --protocol companion pair
Does that work?
Progress! I got it paired using the companion protocol, and when I call features
it returns (reformatted for brevity):
Available: Up, Down, Left, Right, PlayPause, Select, Menu, VolumeUp, VolumeDown, Home, AppList, LaunchApp, TurnOn, TurnOff Unavailable: PlayUrl
When I try to run a command like "right" I get:
pyatv.exceptions.ProtocolError: Command _sessionStart failed: Unsupported service type
.
Here's the full stack trace:
Traceback (most recent call last):
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 708, in _run_application
return await cli_handler(loop)
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 497, in cli_handler
return await _handle_commands(args, config, loop)
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 606, in _handle_commands
ret = await _handle_device_command(args, cmd, atv, loop)
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 635, in _handle_device_command
return await _exec_command(atv.remote_control, cmd, True, *cmd_args)
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 674, in _exec_command
value = await tmp(*args)
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/support/facade.py", line 134, in home
return await self.relay("home")(action=action)
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 293, in home
await self.api.hid_command(False, HidCommand.Home)
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 189, in hid_command
await self._send_command(
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 144, in _send_command
await self._connect()
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 132, in _connect
await self._session_start()
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 171, in _session_start
resp = await self._send_command(
File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 163, in _send_command
raise exceptions.ProtocolError(
pyatv.exceptions.ProtocolError: Command _sessionStart failed: Unsupported service type
@bsharper That's more like it! Exactly the behavior I was anticipating. If you own a mac, have some free time and want to help out even more you can see my answer here: https://github.com/postlund/pyatv/issues/1168#issuecomment-883311720. I basically need to know if they changed name of the service.
Let me know if this is what you're looking for, FetchLaunchableApplicationsEvent
is in there:
default 16:50:09.209080-0500 rapportd 4: Received event ID '_interest', XID 0x400CF63B, 1 keys, from ed677523f119
default 16:50:09.209532-0500 rapportd Interest register remote: Peer ed677523f119, EventID _iMC (1 total)
default 16:50:09.209690-0500 rapportd MediaRemote changes start
default 16:50:09.209830-0500 rapportd MediaRemote supported commands get
default 16:50:09.209978-0500 rapportd Request: supportedCommands<83A4AAC5-81A0-44BD-93AA-5B7156939EE0> for origin-(null)-0/client--0/player-(null)
default 16:50:09.210122-0500 rapportd Request: resolvePlayerPath<752A5EDF-BD09-4624-AE68-56BD244154EA> for origin-(null)-0/client--0/player-(null)
default 16:50:09.211606-0500 rapportd Volume control available initial PB: yes
default 16:50:09.211982-0500 rapportd MediaControl flags changed: < Volume >
default 16:50:09.212738-0500 rapportd 4: SendEventID '_iMC', XID 0xB9DED363, <8529156ccb2507c50e5ffc18b019153e> (53 bytes) on link type WiFi
default 16:50:09.212888-0500 rapportd Volume control available initial: MR yes
default 16:50:09.213048-0500 rapportd Response: resolvePlayerPath<752A5EDF-BD09-4624-AE68-56BD244154EA> returned <origin-User Room-1280262988/client-(null)/player-(null)> for origin-(null)-0/client--0/player-(null) in 0.0024 seconds
default 16:50:09.213434-0500 rapportd 4: Received requestID '_mcc', XID 0x8630CF98, 1 keys, from ed677523f119
default 16:50:09.213633-0500 rapportd Command <GetCaptionSetting>, { "_mcc" : 12, }
default 16:50:09.215724-0500 rapportd MediaCaptionGet: AlwaysOn
default 16:50:09.216181-0500 rapportd 4: Send response XID 0x8630CF98, <94bc9e46684b64f297a86aac5c5926e4> (43 bytes) on link type WiFi, 0/0x0 noErr
default 16:50:09.216428-0500 rapportd Response: supportedCommands<83A4AAC5-81A0-44BD-93AA-5B7156939EE0> returned <0 commands> for origin-User Room-1280262988/client-(null)/player-(null) in 0.0066 seconds
default 16:50:09.216775-0500 rapportd MediaRemote supported commands got: 0 items
default 16:50:09.217096-0500 rapportd 4: Received requestID '_touchStart', XID 0x8630CF99, 3 keys, from ed677523f119
default 16:50:09.217871-0500 rapportd Touch start: { "_height" : 1000.000000, "_tFl" : 0, "_width" : 1000.000000, }
default 16:50:09.218031-0500 rapportd 4: Send response XID 0x8630CF99, <00aba531e4c3009e91ed36d3d4db63c4> (41 bytes) on link type WiFi, 0/0x0 noErr
default 16:50:09.218528-0500 rapportd 4: Received requestID '_tiStart', XID 0x8630CF9A, 0 keys, from ed677523f119
default 16:50:09.218677-0500 rapportd TextInput start: ID 'ed677523f119', Request {}, Response {} (0 bytes)
default 16:50:09.219384-0500 rapportd 4: Send response XID 0x8630CF9A, <d1301575bc7bca642cbde16190aa6656> (37 bytes) on link type WiFi, 0/0x0 noErr
default 16:50:09.233789-0500 rapportd 4: Received requestID 'FetchLaunchableApplicationsEvent', XID 0x8630CF9B, 1 keys, from ed677523f119
default 16:50:09.238668-0500 rapportd 4: ### Sending response XID 0x8630CF9B, error: kNotHandledErr (No request handler)
default 16:50:09.239012-0500 rapportd 4: Send response XID 0x8630CF9B, <ce744a39ae09979e453f7c96a91537fc> (85 bytes) on link type WiFi, -6714/0xFFFFE5C6 kNotHandledErr
default 16:50:09.588011-0500 rapportd NeedsCLink device found: SFDevice ID 7878e9de-b0fc-5eba-654e-cbdc3d210af4, IDS 72F5056B, 'NeedsCLink', RSSI -47 (0)~U, Nm 'iPhone', Md 'iPhone13,4', DuetSync, Hotspot 0x1E5, NeedsKeyboard, PairedBT, PairedSys Conjectured, rapportID 72F5056B-A94B-4FD2-AD96-ADA56C8711E8, WiFiP2P, DF 0xA8 < MyiCloud Ranging AirDrop >, ARS Max
default 16:50:09.588579-0500 rapportd AirPlay advertisement preferences: enabled 1, p2p 1, intraOnly 0
default 16:50:09.588737-0500 rapportd Enabling Bonjour AWDL advertiser as device (SFDevice ID 7878e9de-b0fc-5eba-654e-cbdc3d210af4, IDS 72F5056B, 'NeedsCLink', RSSI -47 (0)~U, Nm 'iPhone', Md 'iPhone13,4', DuetSync, Hotspot 0x1E5, NeedsKeyboard, PairedBT, PairedSys Conjectured, rapportID 72F5056B-A94B-4FD2-AD96-ADA56C8711E8, WiFiP2P, DF 0xA8 < MyiCloud Ranging AirDrop >, ARS Max) does not have target AuthTag
default 16:50:09.588819-0500 rapportd Using Bluetooth Identitfier FA:5C:84:26:82:4A and AuthTag a536e6ce1e6d for AWDL Bonjour advertisement
default 16:50:09.589283-0500 rapportd AirPlay advertisement preferences: enabled 1, p2p 1, intraOnly 0
default 16:50:09.589353-0500 rapportd Bonjour AWDL advertiser start: CUBonjourAdvertiser _companion-link._tcp, Name 'CLink-bbc9c92da5e4', Port 49153, AdvFlags 0x800, Domain 'local.', IfName 'awdl0', TXT { "rpBA" : "FA:5C:84:26:82:4A", "rpFl" : "0x4800", "rpAD" : "a536e6ce1e6d", "rpMRtID" : "58D2CB18-856B-4B09-A510-F02A92ADAAF8", "rpNm" : "User Room", "rpVr" : "300.56", }
default 16:50:09.589526-0500 rapportd CLink: Activate '_companion-link._tcp'
default 16:50:09.589600-0500 rapportd CLink: Update TXT: { "rpBA" : "FA:5C:84:26:82:4A", "rpFl" : "0x4800", "rpAD" : "a536e6ce1e6d", "rpMRtID" : "58D2CB18-856B-4B09-A510-F02A92ADAAF8", "rpNm" : "User Room", "rpVr" : "300.56", }
@bsharper Huh, interesting. It actually returns kNotHandledErr
. That's basically what the failing session setup in pyatv is supposed to fix. I assume you got the list in the Shortcuts app? Can you find any other instances of FetchLaunchableApplicationsEvent
? Do you see any _sessionStart
? In case you do (for any of them), I would be interested in some logs for those too!
@postlund Yes actually now I'm getting an error in the Shortcuts app:
Open App on Apple TV was unable to get the list of apps from "User Room". Make sure your Apple TV is running the latest software.
I tried that from both a beta and non-beta iOS device.
Fortunately I do temporarily have a 2nd ATV running tvOS 14 standard / non-beta. Let me try it on that, one sec.
@postlund This time the app list populated in Shortcuts. This is from an ATV running tvOS 14.6
default 17:39:33.266624-0500 rapportd 2: Received requestID '_sessionStart', XID 0xC0E7C175, 3 keys, from ed677523f119
default 17:39:33.267210-0500 rapportd Session start received: Service com.apple.tvremoteservices, PeerID ed677523f119, SID 0xA73A9B597ECA0DC8, Token 1
default 17:39:33.268135-0500 rapportd XPC publisher triggered: token 1
default 17:39:33.270679-0500 rapportd XPC publisher reply: token 1, {}
default 17:39:33.270893-0500 rapportd 2: Send response XID 0xC0E7C175, <08e7f6d836882967317df0d124761da1> (51 bytes), 0/0x0 noErr
default 17:39:33.280973-0500 rapportd 2: Received event ID '_interest', XID 0x400CF64B, 1 keys, from ed677523f119
default 17:39:33.281589-0500 rapportd Interest register remote: Peer ed677523f119, EventID _iMC (1 total)
default 17:39:33.281821-0500 rapportd MediaRemote changes start
default 17:39:33.282563-0500 rapportd MediaRemote supported commands get
default 17:39:33.284177-0500 rapportd Request: supportedCommands<8BCB3348-9D12-4989-A11B-8BBAD93AC80F> for origin-(null)-0/client--0/player-(null)
default 17:39:33.285187-0500 rapportd Request: resolvePlayerPath<D078E2FB-6B81-4409-81CF-F7022BD5DBC0> for origin-(null)-0/client--0/player-(null)
default 17:39:33.289727-0500 rapportd Volume control available initial PB: yes
default 17:39:33.289942-0500 rapportd MediaControl flags changed: < Volume >
default 17:39:33.290086-0500 rapportd 2: SendEventID '_iMC', XID 0xA1F22D9, <b26bf10c1015d466ae3a4eca97d0e354> (49 bytes)
default 17:39:33.290220-0500 rapportd Volume control available initial: MR yes
default 17:39:33.290355-0500 rapportd 2: Received requestID '_mcc', XID 0xC0E7C176, 1 keys, from ed677523f119
default 17:39:33.291059-0500 rapportd Command <GetCaptionSetting>, { "_mcc" : 12, }
default 17:39:33.298403-0500 rapportd Response: resolvePlayerPath<D078E2FB-6B81-4409-81CF-F7022BD5DBC0> returned <origin-Apple TV-1280262988/client-(null)/player-(null)> for origin-(null)-0/client--0/player-(null) in 0.0136 seconds
default 17:39:33.300251-0500 rapportd MediaCaptionGet: ForcedOnly
default 17:39:33.300724-0500 rapportd 2: Send response XID 0xC0E7C176, <6e9b6f82c8d466e75c9952ff3b881d26> (43 bytes), 0/0x0 noErr
default 17:39:33.300833-0500 rapportd 2: Received requestID '_touchStart', XID 0xC0E7C177, 3 keys, from ed677523f119
default 17:39:33.300924-0500 rapportd Touch start: { "_height" : 1000.000000, "_tFl" : 0, "_width" : 1000.000000, }
default 17:39:33.301012-0500 rapportd 2: Send response XID 0xC0E7C177, <433ef4147f191b8e2ec801918c905acb> (41 bytes), 0/0x0 noErr
default 17:39:33.301305-0500 rapportd Response: supportedCommands<8BCB3348-9D12-4989-A11B-8BBAD93AC80F> returned <0 commands> for origin-Apple TV-1280262988/client-(null)/player-(null) in 0.0175 seconds
default 17:39:33.301981-0500 rapportd MediaRemote supported commands got: 0 items
default 17:39:33.302110-0500 rapportd 2: Received requestID '_tiStart', XID 0xC0E7C178, 0 keys, from ed677523f119
default 17:39:33.302293-0500 rapportd TextInput start: ID 'ed677523f119', Request {}, Response {} (0 bytes)
default 17:39:33.302531-0500 rapportd 2: Send response XID 0xC0E7C178, <87a2a6329ea0632a8d9959a3503fc20b> (37 bytes), 0/0x0 noErr
default 17:39:33.312338-0500 rapportd 2: Received requestID 'FetchLaunchableApplicationsEvent', XID 0xC0E7C179, 1 keys, from ed677523f119
default 17:39:33.314660-0500 TVRemoteConnectionService XPC: Received TVRCFetchLaunchableApplicationsEvent request
default 17:39:33.315623-0500 TVRemoteConnectionService SendResponseID 'FetchLaunchableApplicationsEvent', 73 keys
default 17:39:33.319998-0500 rapportd 2: Send response XID 0xC0E7C179, <18f5cdc171bf16bc0f10d3ba52b0c79b> (2378 bytes), 0/0x0 noErr
Progress! I got it paired using the companion protocol, and when I call
features
it returns (reformatted for brevity):Available: Up, Down, Left, Right, PlayPause, Select, Menu, VolumeUp, VolumeDown, Home, AppList, LaunchApp, TurnOn, TurnOff
Unavailable: PlayUrl
When I try to run a command like "right" I get:
pyatv.exceptions.ProtocolError: Command _sessionStart failed: Unsupported service type
.Here's the full stack trace:
Traceback (most recent call last): File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 708, in _run_application return await cli_handler(loop) File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 497, in cli_handler return await _handle_commands(args, config, loop) File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 606, in _handle_commands ret = await _handle_device_command(args, cmd, atv, loop) File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 635, in _handle_device_command return await _exec_command(atv.remote_control, cmd, True, *cmd_args) File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/scripts/atvremote.py", line 674, in _exec_command value = await tmp(*args) File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/support/facade.py", line 134, in home return await self.relay("home")(action=action) File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 293, in home await self.api.hid_command(False, HidCommand.Home) File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 189, in hid_command await self._send_command( File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 144, in _send_command await self._connect() File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 132, in _connect await self._session_start() File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 171, in _session_start resp = await self._send_command( File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/pyatv-0.8.1-py3.8.egg/pyatv/companion/__init__.py", line 163, in _send_command raise exceptions.ProtocolError( pyatv.exceptions.ProtocolError: Command _sessionStart failed: Unsupported service type
From the looks of this:
Available: Up, Down, Left, Right, PlayPause, Select, Menu, VolumeUp, VolumeDown, Home, AppList, LaunchApp, TurnOn, TurnOff
I'd say the change is necessitated by the new ATV remote design?
@postlund Yes actually now I'm getting an error in the Shortcuts app:
Open App on Apple TV was unable to get the list of apps from "User Room". Make sure your Apple TV is running the latest software.
I tried that from both a beta and non-beta iOS device.
Fortunately I do temporarily have a 2nd ATV running tvOS 14 standard / non-beta. Let me try it on that, one sec.
Maybe we can conclude that something is broken in tvOS then? If the official shortcut doesn't work, it's hard for me to do anything. Let's hope it gets fixed in the next beta. Poor quality control on Apples part...
From the looks of this:
Available: Up, Down, Left, Right, PlayPause, Select, Menu, VolumeUp, VolumeDown, Home, AppList, LaunchApp, TurnOn, TurnOff
I'd say the change is necessitated by the new ATV remote design?
Not all commands need that service from what I've gathered. I added the _sessionStart
call because the all functions failed, more details in #1034. Removing the session start will likely make navigation buttons working:
Maybe someone can do that and verify with tvOS 15? If it works, I can clean up and finish the commit to merge it later tonight.
@postlund I commented out that line and tried some of the navigation commands.
For example: atvremote --debug --scan-protocols companion,airplay -s 192.168.X.X --companion-credentials $(cat ~/.companion_creds.txt) right
With _sessionStart
commented out, the command doesn't error out or anything, it stops at a[pyatv.companion.protocol]: Receive OPACK
line and nothing happens on the ATV. With _sessionStart
back in it starts with the same output but continues with [pyatv.support.hap_srp]: Keys
until finally Command _sessionStart failed: Unsupported service type
. This doesn't result in any action from the ATV either.
Let me know if I should have done something differently. I'm still using the code from the companion_rc
branch.
@bsharper Ok, that is interesting. Does turn_off
work for instance? That has worked in the past (or rather, it works in tvOS 14)? Can you include a log snippet from one of the command, so I can see what's going on? Can you try it on tvOS 14 S well? You shouldn't have to remove _sessionStart
in that case.
@postlund It does! Both turn_on
and turn_off
work on tvOS 15 beta. I can't pair tvOS 14 using atvremote -s 192.168.X.X --protocol companion pair
.
It gives me the error:
ERROR [root]: Could not find any Apple TV on current network
I've double-checked the IP, pairing using the companion protocol on tvOS 14 doesn't seem to work.
But this is good, I think other than pairing I haven't seen tvOS 15 respond to any of the companion commands until now.
@bsharper Woah, that is peculiar to say the least. I would expect pairing Companion on tvOS 14 to work just fine. I assume you are on the same VLAN as that device? Does atvremote scan
find it?
@postlund Interesting, when I remove -s 192.168.X.X
(which I'm certain is the correct IP) I can pair to the ATV running tvOS 14 using companion. And turn_off
and turn_on
work.
It may have also been a timing thing, since the tvOS 14 device was just powered on. I'm swapping ATVs (one HD running tvOS 14 and one 4K running tvOS 15 beta) by physically swapping the HDMI and power cables between them. I probably just needed to wait longer for the newly started ATV to make a few announcement broadcasts to the rest of the network.
@bsharper That might be the case, yes. It should work better and faster with -s
AFAIK. But it only works as long as the device is on the same network, whilst regular scanning works across networks (VLANs) in case for instance an MDNS relayer is used. Did you try any of the other buttons, like up
or down
on tvOS 14?
@postlund I tested the directional commands (up/down/left/right), and they are working on tvOS 14 using the companion protocol, but not on tvOS 15 beta. I'm not using any VLANs, everything on the network I'm testing on is pretty basic (one subnet). I've been testing from 2 devices, an iMac connected via ethernet and a Raspberry Pi 4 connected via both ethernet and wifi.
@bsharper Thank you, I'm satisfied enough with that. As long as tvOS 14 works it's ok as tvOS 15 seems to be all over the place right now. Since I managed to finish the PR yesterday with tests and all, I'm going to merge that now. I guess we will have to keep monitor the situation until tvOS 15 is released.
@postlund Sounds good, I'll test with Companion when the next beta drops and post if anything changes.
Anyone interested in the progress of making things work with tvOS 15 can follow my journey here: https://github.com/postlund/pyatv/issues/1255#issue-comment-box
I should hopefully have some early work available for testing within the next few days.
Hi, so it's basically stuck like this. Any ideas how to fix it? Thx in advance
It is stuck after sending the initial DEVICE_INFO_MESSAGE