Jeija / bluefluff

Reverse Engineering Furby Connect's Bluetooth Protocol and Update Format
MIT License
478 stars 82 forks source link

Cannot connect to Furby on MacOSX #20

Open Bartman236 opened 7 years ago

Bartman236 commented 7 years ago

I installed node 8.8.1 and this seems to go well. Only a few warnings, no errors:

npm WARN fluffd@1.0.0 No repository field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bluetooth-hci-socket@0.5.1 (node_modules/bluetooth-hci-socket): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for bluetooth-hci-socket@0.5.1: wanted {"os":"linux,android,win32","arch":"any"} (current: {"os":"darwin","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: brace-expansion@1.1.6 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: concat-map@0.0.1 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: balanced-match@0.4.2 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: inherits@2.0.1 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: wrappy@1.0.2 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fs.realpath@1.0.0 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: rimraf@2.5.4 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: request@2.74.0 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: tunnel-agent@0.4.3 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: tough-cookie@2.3.1 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: stringstream@0.0.5 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: qs@6.2.1 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/qs): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined

added 152 packages in 6.204s

However, when I try to connect to Furby by starting "node fluffd.js" nothing seems to happen. I can open the HTTP client and send commands, but no response from Furby. What does work is connecting to Furby via NRF connect on my iPhone and getting it into debug mode via the "db" command. The Furby app also fully works. What am I doing wrong? It cannot be my Macbook hardware because it late 2013 and therefore supports BLE.

Jeija commented 7 years ago

Are you using macOS High Sierra by chance? According to this noble library issue, the BLE bindings currently seem to be broken. Also, if I recall correctly you might need to install the xpc-connection npm package for noble to work properly.

Bartman236 commented 7 years ago

Indeed I am. I tried to install xmc-connection and it gives me the following errors:

gyp ERR! configure error gyp ERR! stack Error: EACCES: permission denied, mkdir '/Users/bart/Downloads/bluefluff-master/fluffd/node_modules/xpc-connection/build' gyp ERR! System Darwin 17.0.0 gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /Users/bart/Downloads/bluefluff-master/fluffd/node_modules/xpc-connection gyp ERR! node -v v8.8.1 gyp ERR! node-gyp -v v3.6.2 gyp ERR! not ok npm WARN fluffd@1.0.0 No repository field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bluetooth-hci-socket@0.5.1 (node_modules/bluetooth-hci-socket): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for bluetooth-hci-socket@0.5.1: wanted {"os":"linux,android,win32","arch":"any"} (current: {"os":"darwin","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: inflight@1.0.5 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: once@1.3.3 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: wrappy@1.0.2 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: minimatch@3.0.3 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: brace-expansion@1.1.6 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: concat-map@0.0.1 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: balanced-match@0.4.2 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: inherits@2.0.1 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inherits): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: wrappy@1.0.2 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fs.realpath@1.0.0 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: request@2.74.0 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: tunnel-agent@0.4.3 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/tunnel-agent): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: semver@5.3.0 (node_modules/usb/node_modules/node-pre-gyp/node_modules/semver): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: rimraf@2.5.4 (node_modules/usb/node_modules/node-pre-gyp/node_modules/rimraf): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: tough-cookie@2.3.1 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/tough-cookie): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined npm WARN optional SKIPPING OPTIONAL DEPENDENCY: stringstream@0.0.5 (node_modules/usb/node_modules/node-pre-gyp/node_modules/request/node_modules/stringstream): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Cannot read property 'type' of undefined

npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! xpc-connection@0.1.4 install: node-gyp rebuild npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the xpc-connection@0.1.4 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/bart/.npm/_logs/2017-10-28T20_34_58_541Z-debug.log

Jeija commented 7 years ago

Well, if you're using High Sierra there is nothing you can do now but wait until the noble developers add High Sierra support (or try bluefluff on another OS). Since there already is a pull request for noble, that should just be a matter of days / weeks. And for installing xpc-connection: You probably need sudo before npm install.

tetreault commented 5 years ago

for continuity's sake im just reporting i'm having similar (but not 100% similar) errors on MacOS Mojave

tetreault commented 5 years ago

sorry to bump an old issues @Jeija but I just got fluffd working on MacOS Mojave 10.14.5 by switching from noble to @abandonware/noble

tetreault commented 5 years ago
Stephens-MacBook-Pro-2:fluffd stephentetreault$ node fluffd.js
info: Discovered Furby: f5fc63e59e024d81a6be371983bd6ae8
info: Connected to Furby
debug: Read all fluff characteristics
(node:18814) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
verbose: generalPlusWrite: 00
verbose: GP notification: 2100000001000000
verbose: GP notification: 200e
verbose: GP notification: 2100030001000000
verbose: GP notification: 2100020001000000
verbose: GP notification: 2100000001000000
verbose: generalPlusWrite: 00
verbose: generalPlusWrite: 00
verbose: generalPlusWrite: 00
verbose: generalPlusWrite: 00
verbose: generalPlusWrite: 00
verbose: generalPlusWrite: 00
verbose: generalPlusWrite: 00
verbose: generalPlusWrite: 00
hartos commented 5 years ago

Thanks @tetreault - switching from noble to @abandonware/noble worked for me too.

Changes:

file::package.json

in the section "dependencies": { change "noble": "1.9.1", to "@abandonware/noble": "^1.9.2-2", and

file::fluffd.js change const noble = require("noble"); to const noble = require("@abandonware/noble");

Great project - thank you @Jeija

PwRhGaStPY commented 4 years ago

Well, if you're using High Sierra there is nothing you can do now but wait until the noble developers add High Sierra support (or try bluefluff on another OS). Since there already is a pull request for noble, that should just be a matter of days / weeks. And for installing xpc-connection: You probably need sudo before npm install.

do you mean this as in sudo npm install or something else?