Giter Club home page Giter Club logo

node-appletv's Introduction

node-appletv

A node module for interacting with an Apple TV (4th-generation or later) over the Media Remote Protocol.

npm version Maintainability Coverage Build License

Overview

node-appletv is a node.js implementation of the Media Remote Protocol which shipped with the 4th-generation Apple TV. This is the protocol that the Apple TV remote app uses, so this should enable the creation of an Apple TV remote app for various platforms. It can also be used in a homebridge plugin to connect Apple TV events to HomeKit and vice versa. node-appletv can be used as a standalone command line application, or as a module in your own node app. Keep reading for installation and usage instructions.

Documentation

Developer documentation for node-appletv can be found here.

Usage

As a standalone cli

# Install
$ npm install -g node-appletv

# Display built-in help
$ appletv --help

The appletv cli supports several commands, such as:

pair: Scans for Apple TVs on the local network and initiates the pairing process

command <command>: Execute a command on an Apple TV (play, pause, menu, volume, wake, suspend, etc.)

state: Logs state changes from an Apple TV (now playing info)

queue: Requests the current playback queue from an Apple TV

artwork: Requests the current now playing artwork from an Apple TV

messages: Logs all raw messages from an Apple TV

help <command>: Get help for a specific command

As a node module

$ npm install --save node-appletv

node-appletv makes heavy use of Promises. All functions, except for the observe functions, return Promises.

Examples

Scan for Apple TVs and pair

import { scan } from 'node-appletv';

let devices = await scan();
// devices is an array of AppleTV objects
let device = devices[0];
await device.openConnection();
let callback = await device.pair();
// the pin is provided onscreen from the Apple TV
await callback(pin);
// you're paired!
let credentials = device.credentials.toString();
console.log(credentials);

Connect to a paired Apple TV

import { scan, parseCredentials, NowPlayingInfo } from 'node-appletv';

// see example above for how to get the credentials string
let credentials = parseCredentials(credentialsString);

let devices = await scan(uniqueIdentifier)[]
let device = devices[0];
await device.openConnection(credentials);
// you're connected!
// press menu
await device.sendKeyCommand(AppleTV.Key.Menu);
console.log("Sent a menu command!");

// monitor now playing info
device.on('nowPlaying', (info: NowPlayingInfo) => {
	console.log(info.toString());
});

The uniqueIdentifier is advertised by each Apple TV via Bonjour. Use an app like Bonjour Browser to find it. The identifier is also the first value in the string value of the Credentials object.

See homebridge-theater-mode for a more practical use of this module.

Development

node-appletv is written in Typescript. Edit files in the src directory and then run npm link to clean, build, and create the symlinks to use the library and cli.

Acknowledgments

node-appletv would not have been possible without the work of these people:

Meta

You can find me on Twitter @evandcoleman

Distributed under the MIT license. See LICENSE for more information.

node-appletv's People

Contributors

evandcoleman avatar octalmage avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-appletv's Issues

impossible to send the "a" key keyboard

I'm trying to use your api to send keyboard events to the apple TV, I can send all the letter of a keyboard but impossible to send the "a".

  • usagePage: 0x07
  • usage: 0x04
    It works fine with usage= 0x05 for the letter "b".

Any idea how to solve this issue?

Suspend command doesn't send CEC off to TV

I'm just starting to learn about this protocol, but what I wanted to do with it was replace my logitech harmony system by having commands to turn the TV's in my house on and off. When you hold the menu button and select sleep it will send a CEC command to turn off my TV, but when I do appletv command suspend via node-appletv it does not, it just puts the Apple TV to sleep without sending the command.

Sending any command will send the CEC wake command if the TV is off, as expected.

I guess what I wanted to know is: is it possible to script the 'hold down TV button, click sleep' sequence using this plugin (or Media Remote Protocol in general) or if I'm wasting my time?

Calling methods directly on TV object in response to external event

Hi Evan,

Sorry to raise this in an issue, but I'm hoping to get some clarity on how to use this library with emitted events.

I'm hoping to use this library in an event-driven environment (node red) and so am wanting to call AppleTV methods on a defined object rather than via a promise chain.

Given my limited understanding of Promises, it seems that I'd have to call scan() to kick off a promise chain every time I receive an event, which I'm hoping to avoid.

Would the following be the right way to go about instantiating an AppleTV object (opening a connection in the process while I can leverage off the promise chain)?

`let TV = return scan(uniqueIdentifier)
.then(devices => {
return devices[0].openConnection(credentials);
})
.then(device => {
return device
})

example.on('input' function(command) {
  TV.sendKeyCommand(AppleTV.Key[command]);
})  `

I realise I'll have to do something to handle the promise returned by sendKeyCommand (which I'm not yet sure how to do, but I'll work it out)

I'm not super great with promises, so trying to suss this out!

Laggy responses

I read your Medium article and you briefly touched on the issue of messages coming much later than actual events (like pressing pause on the remote and being notified of it), and so on.

Is it possible you are queuing up messages in protocol buffer state (or something like that) that aren't processed as received (but really are received)?

If my guess is right, only upon next message filling up the input buffers more will cause the prior event to be "received" and this would be much later than expected.

The play/pause/stopped state is completely unreliable for me.

Select command not working, giving error to add argument

Tried this:

appletv --credentials '484549D6-494C-4F05-AA5E-8E41C61B6322:37303635464237452d373430412d343632382d383434372d454644443537373336383145:62393837643266312d363637652d343262332d383631322d333363336438633533363033:ca4bd75d8fae485dd5705e2f8a5d9cdaf4f6738b7ee5dc0ab66b044dfde2e5d3:af0b16a02984110d862095ab47a798218be8f15b9d56bea1a6fa8f9e58d83a3f' command select

Error: Invalid value 'select' for argument command.
undefined
Type appletv --help for help.

Please suggest how to add arguments for select command. Also please share the list of command I can use other than mentioned in document.

Cannot pair with AppleTV from MacOs

Hi,

I am found your library and tried it out on my SmartHome RasbPi with Raspian installed. This works fine out of the box. Next try was the same but on the current MacOs 10.13.6.

But this doesn't work. The appletv pair command shows me the available AppleTs but cannot connect them. There is no error message, sometimes there is a timeout message.

Do I need to install or configure anything? The MacBool is in the same network.

Thanks
Thorsten

Broken docs

Hiya, seem to be referencing the wrong files/location for your docs. Every link in the sidebar or via search returns 404

3th-generation

Hi! Why did you made the package without a support of 3th-generation?

Cannot pair with Apple TV

Sorry if this is a repeated issue.

Running tvOS 15, when running the pair command I get:
No Apple TVs found on the network. Try again.

I can pair the Apple TV with my Macbook, so it should be discoverable somehow. Is this because of the new tvOS?

Thanks

Open specific app on the Apple TV

How can I open a specific app on the apple TV? I didn't find any hints on how to do that in the readme. But when I create a shortcut with the shortcuts app on an iOS device, there is an action "run app on apple tv". So there must be a some way to do that.

Connections cannot be made when IPv6 addresses are used along-side IPv4

If an IPv6 address has taken priority then no connection to the Apple TV can be made.

My current work-around is to prioritise the IPv4 address like such:

    if (device.service.addresses.length > 0) {
      const addresses = device.service.addresses.filter(address => address.includes('.'));
      device.address = addresses[0];
    }

but this obviously won't work if IPv4 is disabled on the router completely.

Error code 2 - Try rebooting your Apple TV

Hey,

I successfully paired my application with the Apple TV using the v2 branch. Unfortunately I receive following error on initiating a connection with it

(node:71918) UnhandledPromiseRejectionWarning: Error: Wohnzimmer Apple TV responded with error code 2. Try rebooting your Apple TV. at PairingClient.<anonymous> (/Users/dennis/Development/Homey/node-appletv/dist/lib/pairing/client.js:78:23) at Generator.next (<anonymous>) at /Users/dennis/Development/Homey/node-appletv/dist/lib/pairing/client.js:8:71 at new Promise (<anonymous>) at __awaiter (/Users/dennis/Development/Homey/node-appletv/dist/lib/pairing/client.js:4:12) at PairingClient.handle (/Users/dennis/Development/Homey/node-appletv/dist/lib/pairing/client.js:65:16) at TVClient.onReceiveMessage (/Users/dennis/Development/Homey/node-appletv/dist/lib/tvclient.js:305:32) at TVClient.<anonymous> (/Users/dennis/Development/Homey/node-appletv/dist/lib/tvclient.js:311:18) at TVClient.emit (events.js:315:20) at TVClient.<anonymous> (/Users/dennis/Development/Homey/node-appletv/dist/lib/appletv.js:167:22) at Generator.next (<anonymous>) at fulfilled (/Users/dennis/Development/Homey/node-appletv/dist/lib/appletv.js:5:58)

Node Version: v12.16.1
Arch: arm

typed-events.ts Errors during install

Can anyone tell me how to fix the following errors during install:
src/lib/typed-events.ts:12:3 - error TS2416: Property 'on' in type 'TypedEventEmitter' is not assignable to the same property in base type 'EventEmitter'.
Type '(event: keyof T, callback: (arg: T[keyof T]) => void) => this' is not assignable to type '(event: string | symbol, listener: (...args: any[]) => void) => this'.
Types of parameters 'event' and 'event' are incompatible.
Type 'string | symbol' is not assignable to type 'keyof T'.
Type 'string' is not assignable to type 'keyof T'.

12 on(event: keyof T, callback: (arg: T[typeof event]) => void): this {
~~

src/lib/typed-events.ts:13:21 - error TS2345: Argument of type 'keyof T' is not assignable to parameter of type 'string | symbol'.
Type 'string | number | symbol' is not assignable to type 'string | symbol'.
Type 'number' is not assignable to type 'string | symbol'.
Type 'keyof T' is not assignable to type 'symbol'.
Type 'string | number | symbol' is not assignable to type 'symbol'.
Type 'string' is not assignable to type 'symbol'.

13 return super.on(event, callback)
~~~~~

src/lib/typed-events.ts:16:3 - error TS2416: Property 'emit' in type 'TypedEventEmitter' is not assignable to the same property in base type 'EventEmitter'.
Type '(event: keyof T, payload?: T[keyof T]) => boolean' is not assignable to type '(event: string | symbol, ...args: any[]) => boolean'.
Types of parameters 'event' and 'event' are incompatible.
Type 'string | symbol' is not assignable to type 'keyof T'.
Type 'string' is not assignable to type 'keyof T'.

16 emit(event: keyof T, payload?: T[typeof event]): boolean {
~~~~

src/lib/typed-events.ts:17:23 - error TS2345: Argument of type 'keyof T' is not assignable to parameter of type 'string | symbol'.
Type 'keyof T' is not assignable to type 'symbol'.

17 return super.emit(event, payload)

No state messages with tvOS14 Beta

Hello,

with tvOS14 there are not state messages received any more. Still working are comamnds, queue, artwork and raw messages. Could you please check if anything has to be adjusted?

Thanks,
Thomas

node-sodium build error on Mojave

I see node-appletv is on sodium@2. I'm having trouble building this on MacOS Mojave, but no problem with sodium@3. Perhaps it's time to upgrade?

Volume Control?

What about commands for the volume control? Typically this can control audio volume over HDMI-CAC instead of IR for TV's and amplifiers that support HDMI-CAC.

No Apple TVs found on the network

I totally believe that it didn't find an Apple TV on the network. There is one on the network, though. Are there any advanced options, maybe ports that need to be open, etc.?

[gio@homebridgeserver ~]$ appletv pair
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
No Apple TVs found on the network. Try again.

[gio@homebridgeserver ~]$ ping 10.1.1.82 -c 4
PING 10.1.1.82 (10.1.1.82) 56(84) bytes of data.
64 bytes from 10.1.1.82: icmp_seq=1 ttl=64 time=0.968 ms
64 bytes from 10.1.1.82: icmp_seq=2 ttl=64 time=0.957 ms
64 bytes from 10.1.1.82: icmp_seq=3 ttl=64 time=1.02 ms
64 bytes from 10.1.1.82: icmp_seq=4 ttl=64 time=0.932 ms

--- 10.1.1.82 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 0.932/0.969/1.022/0.050 ms

[gio@homebridgeserver ~]$ ping maintv -c 4
PING maintv (10.1.1.82) 56(84) bytes of data.
64 bytes from MainTV (10.1.1.82): icmp_seq=1 ttl=64 time=0.853 ms
64 bytes from MainTV (10.1.1.82): icmp_seq=2 ttl=64 time=1.05 ms
64 bytes from MainTV (10.1.1.82): icmp_seq=3 ttl=64 time=0.928 ms
64 bytes from MainTV (10.1.1.82): icmp_seq=4 ttl=64 time=1.18 ms

--- maintv ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 0.853/1.006/1.185/0.126 ms```

Apple TV paired, but can't send commands

Hey everyone,

I got my AppleTV by the paring command appletv pair
I also got my credentials and the program shows up as a remote on the AppleTV.
However as soon as I try to send a command I get the following:

appletv command play
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see http://0pointer.de/avahi-compat?s=libdns_sd&e=node
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister
Credentials are required. Pair first.

Doesn't work for me, not been updated in months...

Thanks for making this, but I'm having trouble getting it to work.

Ubuntu 18,10

npm start

> [email protected] start /home/mschwartz/github/RoboDomo/appletv-microservice
> node ./index.js

*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
[Function: scan]
events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo -3008
    at errnoException (/home/mschwartz/github/RoboDomo/appletv-microservice/node_modules/mdns/lib/resolver_sequence_tasks.js:199:11)
    at getaddrinfo_complete (/home/mschwartz/github/RoboDomo/appletv-microservice/node_modules/mdns/lib/resolver_sequence_tasks.js:112:10)
    at GetAddrInfoReqWrap.oncomplete (/home/mschwartz/github/RoboDomo/appletv-microservice/node_modules/mdns/lib/resolver_sequence_tasks.js:120:9)
Emitted 'error' event at:
    at on_resolver_done (/home/mschwartz/github/RoboDomo/appletv-microservice/node_modules/mdns/lib/browser.js:28:14)
    at next (/home/mschwartz/github/RoboDomo/appletv-microservice/node_modules/mdns/lib/browser.js:100:7)
    at /home/mschwartz/github/RoboDomo/appletv-microservice/node_modules/mdns/lib/resolver_sequence_tasks.js:160:11
    at getaddrinfo_complete (/home/mschwartz/github/RoboDomo/appletv-microservice/node_modules/mdns/lib/resolver_sequence_tasks.js:112:7)
    at GetAddrInfoReqWrap.oncomplete (/home/mschwartz/github/RoboDomo/appletv-microservice/node_modules/mdns/lib/resolver_sequence_tasks.js:120:9)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node ./index.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start 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!     /home/mschwartz/.npm/_logs/2019-02-11T17_53_45_234Z-debug.log

Problem to install

Hi,

I also experience some problem to install.

Hombrew installed, libtool autoconf automake installed, node installed. The process npm install -g node-appletv seems to proceed as it supposed to do but after a few lines I have :
../src/ed25519.cc:19:98: error: too few arguments to function call, single argument 'context' was not specified if ((info.Length() < 1) || (!Buffer::HasInstance(info[0])) || (Buffer::Length(info[0]->ToObject()) != 32)) { ~~~~~~~~~~~~~~~~~ ^ /Users/jeremiexxxx/Library/Caches/node-gyp/14.5.0/include/node/v8.h:2818:3: note: 'ToObject' declared here V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject( ^ /Users/jeremiexxxx/Library/Caches/node-gyp/14.5.0/include/node/v8config.h:422:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT' #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) ^ ../src/ed25519.cc:22:77: error: too few arguments to function call, single argument 'context' was not specified const unsigned char* seed = (unsigned char*)Buffer::Data(info[0]->ToObject());

20 lines like that and after :
fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. make: *** [Release/obj.target/ed25519/src/ed25519.o] Error 1
I am a bit stuck. What do I miss ? Thanks

I am on Mac Catalina

DeviceInfoUpdate.proto missing

Hi,

I'm receiving the message Error: ENOENT: no such file or directory, open '/Users/rhodesy22/Dev/homebridge-apple-tv/node_modules/node-appletv/dist/lib/protos/DeviceInfoUpdate.proto' when putting the Apple TV to sleep.

Thanks

Unable to install

Hello all, i am having an issue installing Node AppleTV in macOS Mojave 10.14.6.

i have tried every solution here on this, the Homebridge Home Theater, and Homebridge Apple TV git projects.

when i ran a Yarn for this, this is the error i got.
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/Cellar/node/12.9.0/libexec/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.2.0 gyp ERR! command "/usr/local/Cellar/node/12.9.0/bin/node" "/usr/local/Cellar/node/12.9.0/libexec/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /Users/PaRkThEcAr1/node_modules/curve25519-n2 gyp ERR! node -v v12.9.0

when i try to install Note-AppleTV using sudo npm install -g node-appletv -unsafe--permissions
i get this error.

`> [email protected] preinstall /usr/local/lib/node_modules/sodium

node install.js --preinstall

Static libsodium was not found at /usr/local/lib/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/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/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! [email protected] preinstall: node install.js --preinstall
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] 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/PaRkThEcAr1/.npm/_logs/2019-08-23T18_10_29_033Z-debug.log`

any help would be wonderful

SendVoiceInputMessage usage

Hi,
I would like to send Siri voice commands to AppleTV, which can be much more handy than buttons for controlling the UI (like launching an App or starting a Channel).
I've seen that the SendVoiceInputMessage/AudioFormatSettings/AudioBuffer are already described which is great.
Would be nice to get an interface at node-AppleTV level, by example, to send an audio file containing the voice command.
Thx.

no longer working with latest tvOS update

Since the latest tvOS update (the one with the great new TV app), this library doesn't seem to work anymore.

My code that was working now constantly reports connection refused.

When I turn the appletv pair command, it is not found.

This is urgent if you want this library to be useful anymore.

Thanks for making it public though.

Add missing keys.

I noticed https://github.com/postlund/pyatv has a couple extra keys, what would it take to get them implemented here? I need to be able to click something, like a menu option. Have you looked into emulating a click event?

I'm going to look into it, but I'm curious if you have any experience here. Thanks!

Switch Sodium package

Would it be possible to use this package for Sodium instead?

I'm having a lot of issues trying to install it on macOS. Would also make installs a lot faster since it wouldn't have to compile from scratch.

Happy to make a PR if you're ok with it 👍.

Missing proto

Like the title says...

appletv-theater ENOENT: no such file or directory, open '/home/app/node_modules/node-appletv/dist/lib/protos/SetDisconnectingStateMessage.proto'

This is for an ATV that is turned off.

error on pairing

bash-4.4# bin/appletv pair
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html>
⠙ Scanning for Apple TVs...events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo -3008
    at errnoException (/homebridge/node_modules/node-appletv/node_modules/mdns/lib/resolver_sequence_tasks.js:199:11)
    at getaddrinfo_complete (/homebridge/node_modules/node-appletv/node_modules/mdns/lib/resolver_sequence_tasks.js:112:10)
    at GetAddrInfoReqWrap.oncomplete (/homebridge/node_modules/node-appletv/node_modules/mdns/lib/resolver_sequence_tasks.js:120:9)
Emitted 'error' event at:
    at on_resolver_done (/homebridge/node_modules/node-appletv/node_modules/mdns/lib/browser.js:28:14)
    at next (/homebridge/node_modules/node-appletv/node_modules/mdns/lib/browser.js:100:7)
    at /homebridge/node_modules/node-appletv/node_modules/mdns/lib/resolver_sequence_tasks.js:160:11
    at getaddrinfo_complete (/homebridge/node_modules/node-appletv/node_modules/mdns/lib/resolver_sequence_tasks.js:112:7)
    at GetAddrInfoReqWrap.oncomplete (/homebridge/node_modules/node-appletv/node_modules/mdns/lib/resolver_sequence_tasks.js:120:9)

linux, latest sodium

Timed out waiting for crypto sequence 2

Hey,

Great plugin, thanks!

I'm struggling to get through the "Initiating Pairing" stage due to the error message "Timed out waiting for crypto sequence 2" showing.

Any ideas?

Cannot install on macOS High Sierra with homebrew node v10.12.0

I've been trying to install it to support homebrew-theater-mode with no luck. I have an existing well functioning homebridge setup running on node v10.12.0

Attempts to npm -g install homebridge-theater-mode are failing with:

Error: make nodesodium exited with code null
    at ChildProcess.<anonymous> (/usr/local/lib/node_modules/node-appletv/node_modules/sodium/install.js:287:19)

Can this library just be switched on to tweetnacl instead of sodium? It seems like something a few people have issues installing. TweetNaCl-js is a pure javascript implementation of NaCl, so it's a lot more portable, you maybe able to eliminate all compilation dependancy. It's a little slower, but i'm guessing for this application that's not important?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.