grover / homebridge-dacp

Remotely control Apple TV and iTunes via HomeKit.
MIT License
153 stars 15 forks source link

tvos 13 breaks remote's homekit support? #71

Open tvtechdir opened 5 years ago

tvtechdir commented 5 years ago

Looks like tvos13 breaks the remote. It does not show up in Homekit to add as an accessory, neither as a device in the Apple TV to pair.

I am running oznu-hombridge in a Synology Docker.

The plugin itself seems configured correctly. Logs do not throw errors, Homekit doesn't see it.

My config is as follows:

  {
    "platform": "DACP",
    "devices": [
      {
        "name": "AppleTV",
        "features": {
          "no-volume-controls": true,
          "input-controls": true,
          "alternate-playpause-switch": true
        }
      }
    ]
  }

Log indicates no problems with the configuration of the plugin itself. The remote does not show up to pair in the ATV.

[37m[9/25/2019, 12:14:28 PM] Loaded plugin: homebridge-dacp [9/25/2019, 12:14:28 PM] Registering platform 'homebridge-dacp.DACP' [9/25/2019, 12:14:49 PM] Loaded plugin: homebridge-dacp [9/25/2019, 12:14:49 PM] Registering platform 'homebridge-dacp.DACP' [9/25/2019, 12:14:53 PM] [DACP] Initializing DACP platform... [9/25/2019, 12:14:53 PM] [DACP] DACP Platform Plugin Loaded - Version 0.9.2 [9/25/2019, 12:14:53 PM] [DACP] Found accessory in config: "AppleTV" [9/25/2019, 12:14:53 PM] [DACP] [9/25/2019, 12:14:53 PM] [DACP] Skipping creation of the accessory "AppleTV" because it doesn't have a pairing code or [9/25/2019, 12:14:53 PM] [DACP] service name yet. You need to pair the device/iTunes, reconfigure and restart homebridge. [9/25/2019, 12:14:53 PM] [DACP] [9/25/2019, 12:14:53 PM] [DACP] Beginning remote control announcements for the accessory "AppleTV". [9/25/2019, 12:14:53 PM] [DACP] [9/25/2019, 12:14:53 PM] [DACP] Use passcode 6334 to pair with this remote control. [9/25/2019, 12:14:53 PM] [DACP] [9/25/2019, 12:14:53 PM] [DACP] Starting DACP browser...

-edit-

I’ve since rolled back to 12.4.1. Everything is working as it should.

pax0707 commented 5 years ago

Looks like it.

galbartal commented 5 years ago

Doesn't work for me either....

dior4ik commented 5 years ago

the same problem. is this project alive?

ElectroGloop commented 5 years ago

I couldn't find much info about it online, but from what I understand DACP support has been removed in tvOS 13.

tvtechdir commented 5 years ago

I couldn't find much info about it online, but from what I understand DACP support has been removed in tvOS 13.

If that's the case it's a big loss for Apple. I will not upgrade software or hardware any further.

ElectroGloop commented 5 years ago

You can use the newer 'Media Remote' protocol to communicate with the Apple TV.

There is an interesting post about using this protocol with Apple TV written by Evan Coleman: https://medium.com/@evancoleman/apple-tv-meet-my-lights-dissecting-the-media-remote-protocol-d07d1909ad82

He has even created a homebridge plugin here

I have just set this up on my homebridge and can confirm it is working perfectly with tvOS 13

pax0707 commented 5 years ago

Nice. Will give this a go.

tvtechdir commented 5 years ago

Maybe I'm doing something wrong, but I can't get that homebridge plug in to install on my NAS. It errors out every time. Heading over to submit logs.

PaRkThEcAr commented 5 years ago

You can use the newer 'Media Remote' protocol to communicate with the Apple TV.

There is an interesting post about using this protocol with Apple TV written by Evan Coleman: https://medium.com/@evancoleman/apple-tv-meet-my-lights-dissecting-the-media-remote-protocol-d07d1909ad82

He has even created a homebridge plugin here

I have just set this up on my homebridge and can confirm it is working perfectly with tvOS 13

@ElectroGloop how did you manage to get this plug in installed? i have had NO luck whatsoever. the Node-Appletv repo and the Homebridge Theater Mode repos refuse to install on my mac mini.

tvtechdir commented 5 years ago

@ParkTheCar @ElectroGloop, same here which was my primary reason for using DACP. I am on a Synology NAS 1018+ running oznu-homebridge in Docker.

ElectroGloop commented 5 years ago

To be honest I did have a bit of trouble getting it to run, but I thought that was down to my setup more than anything. I ended up having to manually recompile the sodium package it relies on. What errors are you getting?

PaRkThEcAr commented 5 years ago

Here are the errors I am getting @ElectroGloop.

For Homebridge Theater Mode:

Homebridge-Server:~ parkthecar$ sudo npm install -g homebridge-theater-mode

sodium@2.0.3 preinstall /usr/local/lib/node_modules/homebridge-theater-mode/node_modules/sodium node install.js --preinstall

Static libsodium was not found at /usr/local/lib/node_modules/homebridge-theater-mode/node_modules/sodium/deps/build/lib/libsodium so compiling libsodium from source. glibtoolize: error: Failed to create 'build-aux' make: *** [libsodium] Error 1 /usr/local/lib/node_modules/homebridge-theater-mode/node_modules/sodium/install.js:287 throw new Error(cmdLine + ' exited with code ' + code); ^

Error: make libsodium exited with code 2 at ChildProcess. (/usr/local/lib/node_modules/homebridge-theater-mode/node_modules/sodium/install.js:287:19) at ChildProcess.emit (events.js:209:13) at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! sodium@2.0.3 preinstall: node install.js --preinstall npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the sodium@2.0.3 preinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in: npm ERR! /Users/parkthecar/.npm/_logs/2019-10-03T14_22_11_491Z-debug.log Homebridge-Server:~ parkthecar$

For node-appletv I get this error:

curve25519-n2@1.1.3 install /usr/local/lib/node_modules/node-appletv/node_modules/curve25519-n2 node-gyp rebuild

CXX(target) Release/obj.target/curve/node_curve.o ../node_curve.cc:20 http://node_curve.cc:20/:17: error: variable has incomplete type 'void' extern "C" void init (Handle); ^ ../node_curve.cc:20 http://node_curve.cc:20/:23: error: use of undeclared identifier 'Handle' extern "C" void init (Handle); ^ ../node_curve.cc:20 http://node_curve.cc:20/:30: error: 'Object' does not refer to a value extern "C" void init (Handle); ^ /Users/parkthecar/Library/Caches/node-gyp/12.10.0/include/node/v8.h:3369:17: note: declared here class V8_EXPORT Object : public Value { ^ ../node_curve.cc:20 http://node_curve.cc:20/:37: error: expected expression extern "C" void init (Handle); ^ ../node_curve.cc:28 http://node_curve.cc:28/:64: error: no matching member function for call to 'ToObject' unsigned char arg0 = (unsigned char) Buffer::Data(info[0]->ToObject());


/Users/parkthecar/Library/Caches/node-gyp/12.10.0/include/node/v8.h:2545:44: note: 
      candidate function not viable: requires single argument 'context', but no
      arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                           ^
/Users/parkthecar/Library/Caches/node-gyp/12.10.0/include/node/v8.h:2559:31: note: 
      candidate function not viable: requires single argument 'isolate', but no
      arguments were provided
                Local<Object> ToObject(Isolate* isolate) const);
                              ^
../node_curve.cc:29 <http://node_curve.cc:29/>:64: error: no matching member function for call to
      'ToObject'
  unsigned char* arg1 = (unsigned char*) Buffer::Data(info[1]->ToObject());
                                                      ~~~~~~~~~^~~~~~~~
/Users/parkthecar/Library/Caches/node-gyp/12.10.0/include/node/v8.h:2545:44: note: 
      candidate function not viable: requires single argument 'context', but no
      arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                           ^
/Users/parkthecar/Library/Caches/node-gyp/12.10.0/include/node/v8.h:2559:31: note: 
      candidate function not viable: requires single argument 'isolate', but no
      arguments were provided
                Local<Object> ToObject(Isolate* isolate) const);
                              ^
../node_curve.cc:30 <http://node_curve.cc:30/>:64: error: no matching member function for call to
      'ToObject'
  unsigned char* arg2 = (unsigned char*) Buffer::Data(info[2]->ToObject());
                                                      ~~~~~~~~~^~~~~~~~
/Users/parkthecar/Library/Caches/node-gyp/12.10.0/include/node/v8.h:2545:44: note: 
      candidate function not viable: requires single argument 'context', but no
      arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                           ^
/Users/parkthecar/Library/Caches/node-gyp/12.10.0/include/node/v8.h:2559:31: note: 
      candidate function not viable: requires single argument 'isolate', but no
      arguments were provided
                Local<Object> ToObject(Isolate* isolate) const);
                              ^
../node_curve.cc:34 <http://node_curve.cc:34/>:17: error: variable has incomplete type 'void'
extern "C" void init (Handle<Object> target) {
                ^
../node_curve.cc:34 <http://node_curve.cc:34/>:23: error: use of undeclared identifier 'Handle'
extern "C" void init (Handle<Object> target) {
                      ^
../node_curve.cc:34 <http://node_curve.cc:34/>:30: error: 'Object' does not refer to a value
extern "C" void init (Handle<Object> target) {
                             ^
/Users/parkthecar/Library/Caches/node-gyp/12.10.0/include/node/v8.h:3369:17: note: 
      declared here
class V8_EXPORT Object : public Value {
                ^
../node_curve.cc:34 <http://node_curve.cc:34/>:38: error: use of undeclared identifier 'target'
extern "C" void init (Handle<Object> target) {
                                     ^
../node_curve.cc:34 <http://node_curve.cc:34/>:45: error: expected ';' after top level declarator
extern "C" void init (Handle<Object> target) {
                                            ^
                                            ;
12 errors generated.
make: *** [Release/obj.target/curve/node_curve.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:196:23)
gyp ERR! stack     at ChildProcess.emit (events.js:209:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Darwin 18.7.0
gyp ERR! command "/usr/local/Cellar/node/12.10.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/node-appletv/node_modules/curve25519-n2
gyp ERR! node -v v12.10.0
gyp ERR! node-gyp -v v5.0.3
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! curve25519-n2@1.1.3 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the curve25519-n2@1.1.3 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/parkthecar/.npm/_logs/2019-10-03T14_25_15_203Z-debug.log

I have tried other Repo’s for these plug ins, but neither seem to install. Would you mind helping me learn to compile Libsodium? I am on macOS Mojave.

> On Oct 3, 2019, at 7:38 AM, ElectroGloop <notifications@github.com> wrote:
> 
> To be honest I did have a bit of trouble getting it to run, but I thought that was down to my setup more than anything.
> I ended up having to manually recompile the sodium package it relies on.
> What errors are you getting?
> 
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub <https://github.com/grover/homebridge-dacp/issues/71?email_source=notifications&email_token=AJJYF4F6WMVXNBVH4CJRM7TQMXYUHA5CNFSM4I2FLT4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAIHJTI#issuecomment-537949389>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AJJYF4CYNJ6LM25IHFDLT4DQMXYUHANCNFSM4I2FLT4A>.
> 
ElectroGloop commented 5 years ago

This is different to the error I was getting. It might be worth checking out one of the forks as they claim to fix sodium dependencies.

PaRkThEcAr commented 5 years ago

Well, I have tried several forks that claim to solve sodium dependancies. Most of them dont actually say anything or have an “issues” tab that I can reference. But when I try to install globally, it errors out. Installing non globally installs, but the CLI does not function for node-appletv. The same is true of home bridge theater mode.

On Oct 9, 2019, at 9:23 AM, ElectroGloop notifications@github.com wrote:

This is different to the error I was getting. It might be worth checking out one of the forks as they claim to fix sodium dependencies.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/grover/homebridge-dacp/issues/71?email_source=notifications&email_token=AJJYF4FQ7IF5ZRY4U3WK2PLQNXZOTA5CNFSM4I2FLT4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAYIPZY#issuecomment-540051431, or mute the thread https://github.com/notifications/unsubscribe-auth/AJJYF4C7TWNL3IPDJVDONFDQNXZOTANCNFSM4I2FLT4A.