noble / node-bluetooth-hci-socket

MIT License
153 stars 188 forks source link

doesn't compile on RPi 3B+ #107

Open janeksz opened 5 years ago

janeksz commented 5 years ago

root@janek:~/.node-red# service nodered stop root@janek:~/.node-red# uname -a Linux janek 4.14.90-v7+ #1183 SMP Fri Dec 21 14:03:50 GMT 2018 armv7l GNU/Linux root@janek:~/.node-red# npm install --unsafe-permit node-red-contrib-noble

usb@1.5.0 install /root/.node-red/node_modules/usb node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using needle for node-pre-gyp https download node-pre-gyp WARN Tried to download(404): https://github.com/tessel/node-usb/releases/download/1.5.0/usb_bindings-v1.5.0-node-v64-linux-arm.tar.gz node-pre-gyp WARN Pre-built binaries not found for usb@1.5.0 and node@10.15.0 (node-v64 ABI, glibc) (falling back to source compile with node-gyp) make: Entering directory '/root/.node-red/node_modules/usb/build' CC(target) Release/obj.target/libusb/libusb/libusb/core.o CC(target) Release/obj.target/libusb/libusb/libusb/descriptor.o CC(target) Release/obj.target/libusb/libusb/libusb/hotplug.o CC(target) Release/obj.target/libusb/libusb/libusb/io.o CC(target) Release/obj.target/libusb/libusb/libusb/strerror.o CC(target) Release/obj.target/libusb/libusb/libusb/sync.o CC(target) Release/obj.target/libusb/libusb/libusb/os/poll_posix.o CC(target) Release/obj.target/libusb/libusb/libusb/os/threads_posix.o CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_usbfs.o CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_udev.o AR(target) Release/obj.target/usb.a COPY Release/usb.a CXX(target) Release/obj.target/usb_bindings/src/node_usb.o ../src/node_usb.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE SetDebugLevel(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/node_usb.cc:99:73: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations] if (info.Length() != 1 || !info[0]->IsUint32() || info[0]->Uint32Value() > 4) { ^ In file included from /root/.node-gyp/10.15.0/include/node/v8.h:26:0, from ../src/node_usb.h:12, from ../src/node_usb.cc:1: /root/.node-gyp/10.15.0/include/node/v8.h:2477:47: note: declared here V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const); ^ /root/.node-gyp/10.15.0/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’ declarator attribute((deprecated(message))) ^~~~~~ ../src/node_usb.cc:103:53: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations] libusb_set_debug(usb_context, info[0]->Uint32Value()); ^ In file included from /root/.node-gyp/10.15.0/include/node/v8.h:26:0, from ../src/node_usb.h:12, from ../src/node_usb.cc:1: /root/.node-gyp/10.15.0/include/node/v8.h:2477:47: note: declared here V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const); ^ /root/.node-gyp/10.15.0/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’ declarator attribute((deprecated(message))) ^~~~~~ ../src/node_usb.cc: In function ‘void handleHotplug(std::pair<libusb_device, libusb_hotplug_event>)’: ../src/node_usb.cc:151:58: warning: ‘v8::Local Nan::MakeCallback(v8::Local, const char, int, v8::Local)’ is deprecated [-Wdeprecated-declarations] Nan::MakeCallback(Nan::New(hotplugThis), "emit", 2, argv); ^ In file included from ../src/helpers.h:3:0, from ../src/node_usb.h:21, from ../src/node_usb.cc:1: ../../nan/nan.h:1001:46: note: declared here NAN_DEPRECATED inline v8::Local MakeCallback( ^~~~ ../src/node_usb.cc: In function ‘v8::Local libusbException(int)’: ../src/node_usb.cc:301:14: warning: ‘v8::Local v8::Value::ToObject() const’ is deprecated: Use maybe version [-Wdeprecated-declarations] e->ToObject()->Set(Nan::New("errno").ToLocalChecked(), Nan::New(errorno)); ^ In file included from ../src/node_usb.h:12:0, from ../src/node_usb.cc:1: /root/.node-gyp/10.15.0/include/node/v8.h:10046:15: note: declared here Local Value::ToObject() const { ^~~~~ CXX(target) Release/obj.target/usb_bindings/src/device.o ../src/device.cc: In static member function ‘static void Req::default_after(uv_work_t)’: ../src/device.cc:237:64: warning: ‘v8::Local Nan::MakeCallback(v8::Local, v8::Local, int, v8::Local)’ is deprecated [-Wdeprecated-declarations] Nan::MakeCallback(device, Nan::New(baton->callback), 1, argv); ^ In file included from ../src/helpers.h:3:0, from ../src/node_usb.h:21, from ../src/device.cc:1: ../../nan/nan.h:959:46: note: declared here NAN_DEPRECATED inline v8::Local MakeCallback( ^~~~ CXX(target) Release/obj.target/usb_bindings/src/transfer.o ../src/transfer.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE Transfer_Submit(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/transfer.cc:58:47: warning: ‘v8::Local v8::Value::ToObject() const’ is deprecated: Use maybe version [-Wdeprecated-declarations] Local buffer_obj = info[0]->ToObject(); ^ In file included from ../src/node_usb.h:12:0, from ../src/transfer.cc:1: /root/.node-gyp/10.15.0/include/node/v8.h:10046:15: note: declared here Local Value::ToObject() const { ^~~~~ ../src/transfer.cc: In function ‘void handleCompletion(Transfer)’: ../src/transfer.cc:126:72: warning: ‘v8::Local Nan::MakeCallback(v8::Local, v8::Local, int, v8::Local*)’ is deprecated [-Wdeprecated-declarations] Nan::MakeCallback(self->handle(), Nan::New(self->v8callback), 3, argv); ^ In file included from ../src/helpers.h:3:0, from ../src/node_usb.h:21, from ../src/transfer.cc:1: ../../nan/nan.h:959:46: note: declared here NAN_DEPRECATED inline v8::Local MakeCallback( ^~~~ SOLINK_MODULE(target) Release/obj.target/usb_bindings.node COPY Release/usb_bindings.node COPY /root/.node-red/node_modules/usb/src/binding/usb_bindings.node TOUCH Release/obj.target/action_after_build.stamp make: Leaving directory '/root/.node-red/node_modules/usb/build'

bluetooth-hci-socket@0.5.1 install /root/.node-red/node_modules/bluetooth-hci-socket node-gyp rebuild

make: Entering directory '/root/.node-red/node_modules/bluetooth-hci-socket/build' CXX(target) Release/obj.target/binding/src/BluetoothHciSocket.o ../src/BluetoothHciSocket.cpp: In member function ‘void BluetoothHciSocket::poll()’: ../src/BluetoothHciSocket.cpp:251:95: warning: ‘v8::Local Nan::MakeCallback(v8::Local, v8::Local, int, v8::Local ’ is deprecated [-Wdeprecated-declarations] back(Nan::New(this->This), Nan::New("emit").ToLocalChecked(), 2, argv); ^ In file included from ../src/BluetoothHciSocket.cpp:8:0: ../../nan/nan.h:980:46: note: declared here NAN_DEPRECATED inline v8::Local MakeCallback( ^~~~ ../src/BluetoothHciSocket.cpp: In member function ‘void BluetoothHciSocket::emitErrnoError()’: ../src/BluetoothHciSocket.cpp:275:72: error: no matching function for call to ‘v8::Function::NewInstance(int, v8::Local [1])’ Local error = errorConstructor->NewInstance(1, constructorArgs); ^ In file included from /root/.node-gyp/10.15.0/include/node/node.h:63:0, from /root/.node-gyp/10.15.0/include/node/node_buffer.h:25, from ../src/BluetoothHciSocket.cpp:7: /root/.node-gyp/10.15.0/include/node/v8.h:3993:44: note: candidate: v8::MaybeLocal v8::Function::NewInstance(v8::Local, int, v8::Local) const V8_WARN_UNUSED_RESULT MaybeLocal NewInstance( ^~~ /root/.node-gyp/10.15.0/include/node/v8.h:3993:44: note: candidate expects 3 arguments, 2 provided /root/.node-gyp/10.15.0/include/node/v8.h:3996:44: note: candidate: v8::MaybeLocal v8::Function::NewInstance(v8::Local) const V8_WARN_UNUSED_RESULT MaybeLocal NewInstance( ^~~ /root/.node-gyp/10.15.0/include/node/v8.h:3996:44: note: candidate expects 1 argument, 2 provided ../src/BluetoothHciSocket.cpp:282:93: warning: ‘v8::Local Nan::MakeCallback(v8::Local, v8::Local, int, v8::Local* ’ is deprecated [-Wdeprecated-declarations] back(Nan::New(this->This), Nan::New("emit").ToLocalChecked(), 2, argv); ^ In file included from ../src/BluetoothHciSocket.cpp:8:0: ../../nan/nan.h:980:46: note: declared here NAN_DEPRECATED inline v8::Local MakeCallback( ^~~~ ../src/BluetoothHciSocket.cpp: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE BluetoothHciSocket::BindRaw(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/BluetoothHciSocket.cpp:395:34: warning: ‘int64_t v8::Value::IntegerValue() const’ is deprecated: Use maybe version [-Wdeprecated-declarations] devId = arg0->IntegerValue(); ^ In file included from /root/.node-gyp/10.15.0/include/node/v8.h:26:0, from /root/.node-gyp/10.15.0/include/node/node.h:63, from /root/.node-gyp/10.15.0/include/node/node_buffer.h:25, from ../src/BluetoothHciSocket.cpp:7: /root/.node-gyp/10.15.0/include/node/v8.h:2476:46: note: declared here V8_DEPRECATED("Use maybe version", int64_t IntegerValue() const); ^ /root/.node-gyp/10.15.0/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’ declarator attribute((deprecated(message))) ^~~~~~ ../src/BluetoothHciSocket.cpp: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE BluetoothHciSocket::BindUser(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/BluetoothHciSocket.cpp:417:34: warning: ‘int64_t v8::Value::IntegerValue() const’ is deprecated: Use maybe version [-Wdeprecated-declarations] devId = arg0->IntegerValue(); ^ In file included from /root/.node-gyp/10.15.0/include/node/v8.h:26:0, from /root/.node-gyp/10.15.0/include/node/node.h:63, from /root/.node-gyp/10.15.0/include/node/node_buffer.h:25, from ../src/BluetoothHciSocket.cpp:7: /root/.node-gyp/10.15.0/include/node/v8.h:2476:46: note: declared here V8_DEPRECATED("Use maybe version", int64_t IntegerValue() const); ^ /root/.node-gyp/10.15.0/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’ declarator attribute((deprecated(message))) ^~~~~~ binding.target.mk:99: recipe for target 'Release/obj.target/binding/src/BluetoothHciSocket.o' failed make: *** [Release/obj.target/binding/src/BluetoothHciSocket.o] Error 1 make: Leaving directory '/root/.node-red/node_modules/bluetooth-hci-socket/build' gyp ERR! build error gyp ERR! stack Error: make failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23) gyp ERR! stack at ChildProcess.emit (events.js:182:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12) gyp ERR! System Linux 4.14.90-v7+ gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /root/.node-red/node_modules/bluetooth-hci-socket gyp ERR! node -v v10.15.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm WARN node-red-project@0.0.1 No repository field. npm WARN node-red-project@0.0.1 No license field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: xpc-connection@0.1.4 (node_modules/xpc-connection): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for xpc-connection@0.1.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bluetooth-hci-socket@0.5.1 (node_modules/bluetooth-hci-socket): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bluetooth-hci-socket@0.5.1 install: node-gyp rebuild npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

  • node-red-contrib-noble@0.3.0 updated 1 package and audited 6537 packages in 59.264s found 28 vulnerabilities (14 low, 9 moderate, 5 high) run npm audit fix to fix them, or npm audit for details root@janek:~/.node-red#
goapilz commented 5 years ago

I have the same error under ubuntu (AMD E350 CPU) with node 11.

First i installed the bluetooth drivers via: sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev

And then i installed noble with the bluetooth-hci-socket dependency npm install noble

Pre-built binaries not found for usb@1.5.0 and node@11.6.0 (node-v67 ABI, glibc) (falling back to sourc e compile with node-gyp) ... binding.target.mk:101: recipe for target 'Release/obj.target/binding/src/BluetoothHciSocket.o' failed make: * [Release/obj.target/binding/src/BluetoothHciSocket.o] Error 1 make: Leaving directory '/home/nodeUser/dev/node/bluetooth-test/node_modules/bluetooth-hci-socket/build' gyp ERR! build error gyp ERR! stack Error: make failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/home/nodeUser/.nvm/versions/node/v11.6.0/lib/node_modules/npm/node_modules/node -gyp/lib/build.js:262:23) gyp ERR! stack at ChildProcess.emit (events.js:188:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12) gyp ERR! System Linux 4.15.0-42-generic gyp ERR! command "/home/nodeUser/.nvm/versions/node/v11.6.0/bin/node" "/home/nodeUser/.nvm/versions/node/v11.6.0/lib/node_mod ules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/nodeUser/dev/node/bluetooth-test/node_modules/bluetooth-hci-socket gyp ERR! node -v v11.6.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok** npm WARN bluetooth-test@1.0.0 No description npm WARN bluetooth-test@1.0.0 No repository field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: xpc-connection@0.1.4 (node_modules/xpc-connection): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for xpc-connection@0.1.4: wanted {"os":"darwin","arch" :"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bluetooth-hci-socket@0.5.1 (node_modules/bluetooth-hci-socket): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bluetooth-hci-socket@0.5.1 install: node-gyp rebuild npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

quito96 commented 5 years ago

i have the same problem on the same device : pi@quitos_rpi3:~ $ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)" NAME="Raspbian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=raspbian ID_LIKE=debian

janeksz commented 5 years ago

the temporary solution is to downgrade nodejs to version 9, it works for me. I was told it is a known problem and will be fixed (???)

atc1441 commented 5 years ago

Hi does anybody have found another solution for this? i still dont get it to work even with the downgrade to node 9.

And everything BLE relatet is build on the hci socket.

dbryar commented 4 years ago

Confirmed working with abandonware patch

To use in noble, navigate to your project folder and

nano node_modules/noble/lib/hci-socket/hci.js

edit line 6

var BluetoothHciSocket = require('@abandonware/bluetooth-hci-socket');

and then install the abandonware update to get your project working (again)

npm install @abandonware/bluetooth-hci-socket
morkeltry commented 4 years ago

Or, aliasing the package name instead of changing requires in the code:

npm install bluetooth-hci-socket@npm:@abandonware/bluetooth-hci-socket