Bluetooth not working

I have installed NR on a tinker board with armbian. The OS can utilise bluetooth but NR cannot, is there something else I need to install for NR to detect bluetooth?

What node are you using in Node-RED to interact with Bluetooth?

node-red-contrib-generic-ble

in the node properties, "scan result" and "select from scan result" are greyed out.

Any ideas @knolleary ?

Have you checked the Node-RED log for any error messages?

What user are you running NR as?

Here is the log:

Welcome to Node-RED
===================
2 Jan 12:54:28 - [info] Node-RED version: v1.0.3
2 Jan 12:54:28 - [info] Node.js  version: v12.14.0
2 Jan 12:54:28 - [info] Linux 4.4.199-rockchip arm LE
2 Jan 12:54:32 - [info] Loading palette nodes
3 Jan 09:27:24 - [info] Settings file  : /home/mike/.node-red/settings.js
3 Jan 09:27:24 - [info] Context store  : 'default' [module=memory]
3 Jan 09:27:24 - [info] User directory : /home/mike/.node-red
3 Jan 09:27:24 - [warn] Projects disabled : editorTheme.projects.enabled=false
3 Jan 09:27:24 - [info] Flows file     : /home/mike/.node-red/flows_HASERVER.json
3 Jan 09:27:24 - [warn]
---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.
If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.
You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------
3 Jan 09:27:24 - [info] [GenericBLE] Start BLE scanning
3 Jan 09:27:24 - [info] Starting flows
3 Jan 09:27:24 - [info] Server now running at http://127.0.0.1:1880/
3 Jan 09:29:49 - [info] Stopping flows
3 Jan 09:29:49 - [info] Stopped flows
3 Jan 09:29:49 - [info] Starting flows
3 Jan 09:29:49 - [info] [GenericBLE] Start BLE scanning
3 Jan 09:29:49 - [info] Started flows

I installed NR with the script and set to autostart on boot so I assume it's running under my user.

My mouse pointer does this when hovering over the greyed out options mentioned above:

Is the pi user in the bluetooth group? You can check in terminal using

groups

if it is not try

sudo adduser pi bluetooth

reboot (not sure if you have too) and try again.

I don't have a pi user as i'm using a tinker-board

Have you searched on the armbian forums to see if there are any bluetooth issues?

No as I can use bluetooth normally in the OS itself, it's just node-red that doesn't seem to detect the adaptor

I don’t have experience with the tinkerboard, but do you know which user is running node-red, and if this is the same user you can execute Bluetooth related commands as? That might be a starting point. I had an ubuntu install with similar problems and I’m trying to remember what I did there to solve it. Have you read the wiki page on github of the ble node? I do remember it had a lot of useful information in tools to test connection and make sure I had the right characteristics after the connection did succeed.

mike@HASERVER:~$ ps -u mike
  PID TTY          TIME CMD
  707 ?        00:00:10 node-red
 1489 ?        00:00:00 systemd
 1492 ?        00:00:00 (sd-pam)
 1510 ?        00:00:00 sh
 1659 ?        00:00:00 dbus-launch
 1666 ?        00:00:00 dbus-daemon
 1747 ?        00:00:00 ssh-agent
 1778 ?        00:00:00 xfce4-session
 1819 ?        00:00:00 xfconfd
 1834 ?        00:00:00 gpg-agent
 1840 ?        00:00:01 xfwm4
 1844 ?        00:00:03 xfce4-panel
 1849 ?        00:00:00 Thunar
 1867 ?        00:00:01 pasystray
 1897 ?        00:00:48 nm-applet
 1922 ?        00:00:00 xfsettingsd
 1935 ?        00:00:01 blueman-applet
 1947 ?        00:00:00 polkit-gnome-au
 1961 ?        00:00:00 at-spi-bus-laun
 1965 ?        00:00:00 pulseaudio
 1976 ?        00:00:00 gvfsd
 2006 ?        00:00:00 gvfsd-fuse
 2019 ?        00:00:00 dbus-daemon
 2041 ?        00:00:00 gconf-helper
 2043 ?        00:00:00 gconfd-2
 2046 ?        00:00:00 gvfs-udisks2-vo
 2048 ?        00:00:00 at-spi2-registr
 2062 ?        00:00:00 gvfs-gphoto2-vo
 2069 ?        00:00:00 gvfs-mtp-volume
 2122 ?        00:00:00 gvfs-afc-volume
 2154 ?        00:00:00 gvfs-goa-volume
 2208 ?        00:00:00 panel-6-systray
 2209 ?        00:00:00 panel-2-actions
 2228 ?        00:00:00 obexd
 3422 ?        00:00:00 gvfsd-metadata
 3771 ?        00:00:00 xfce4-notifyd
 3923 ?        00:01:22 chromium-browse
 3944 ?        00:00:00 chromium-browse
 3969 ?        00:00:24 chromium-browse
 3972 ?        00:00:38 chromium-browse
 3999 ?        00:00:00 gnome-keyring-d
 4093 ?        00:01:49 chromium-browse
 5947 ?        00:00:00 xfdesktop
 5973 ?        00:00:00 xfce4-terminal
 5977 pts/0    00:00:00 bash
 5993 pts/0    00:00:00 ps

The only thing i've found from their wiki is if the options are greyed out, it means there's no devices nearby, but there's plenty and the OS can detect them fine.

I've tried this on a pi4 and having the same issue.

I noticed many errors when installing the node:

2020-01-07T08:16:20.387Z Install : node-red-contrib-generic-ble 3.1.0

2020-01-07T08:16:20.492Z npm install --no-audit --no-update-notifier --save --save-prefix="~" --production node-red-contrib-generic-ble@3.1.0
2020-01-07T08:16:29.527Z [out] 
2020-01-07T08:16:29.527Z [out] > bluetooth-hci-socket@0.5.1 install /home/pi/.node-red/node_modules/bluetooth-hci-socket
2020-01-07T08:16:29.527Z [out] > node-gyp rebuild
2020-01-07T08:16:29.527Z [out] 
2020-01-07T08:16:30.788Z [out] make: Entering directory '/home/pi/.node-red/node_modules/bluetooth-hci-socket/build'
2020-01-07T08:16:30.790Z [out]   CXX(target) Release/obj.target/binding/src/BluetoothHciSocket.o
2020-01-07T08:16:32.142Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:32.142Z [err] ../../nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
2020-01-07T08:16:32.142Z [err] ../../nan/nan.h:2298:62: warning: cast between incompatible function types from 'void (*)(uv_work_t*)' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [-Wcast-function-type]
2020-01-07T08:16:32.142Z [err]      , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
2020-01-07T08:16:32.142Z [err]                                                               ^
2020-01-07T08:16:32.304Z [err] ../src/BluetoothHciSocket.cpp: In member function 'void BluetoothHciSocket::poll()':
2020-01-07T08:16:32.304Z [err] ../src/BluetoothHciSocket.cpp:251:95: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
2020-01-07T08:16:32.304Z [err]      Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv);
2020-01-07T08:16:32.304Z [err]                                                                                                ^
2020-01-07T08:16:32.304Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:32.304Z [err] ../../nan/nan.h:1045:46: note: declared here
2020-01-07T08:16:32.304Z [err]    NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
2020-01-07T08:16:32.304Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:32.304Z [err] ../src/BluetoothHciSocket.cpp:251:95: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
2020-01-07T08:16:32.304Z [err]      Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv);
2020-01-07T08:16:32.304Z [err]                                                                                                ^
2020-01-07T08:16:32.304Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:32.304Z [err] ../../nan/nan.h:1045:46: note: declared here
2020-01-07T08:16:32.304Z [err]    NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
2020-01-07T08:16:32.304Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:32.306Z [err] ../src/BluetoothHciSocket.cpp: In member function 'void BluetoothHciSocket::emitErrnoError()':
2020-01-07T08:16:32.306Z [err] ../src/BluetoothHciSocket.cpp:275:72: error: no matching function for call to 'v8::Function::NewInstance(int, v8::Local<v8::Value> [1])'
2020-01-07T08:16:32.306Z [err]    Local<Value> error = errorConstructor->NewInstance(1, constructorArgs);
2020-01-07T08:16:32.306Z [err]                                                                         ^
2020-01-07T08:16:32.306Z [err] In file included from /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:63,
2020-01-07T08:16:32.306Z [err]                  from /home/pi/.cache/node-gyp/10.18.0/include/node/node_buffer.h:25,
2020-01-07T08:16:32.306Z [err]                  from ../src/BluetoothHciSocket.cpp:7:
2020-01-07T08:16:32.306Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:3993:44: note: candidate: 'v8::MaybeLocal<v8::Object> v8::Function::NewInstance(v8::Local<v8::Context>, int, v8::Local<v8::Value>*) const'
2020-01-07T08:16:32.306Z [err]    V8_WARN_UNUSED_RESULT MaybeLocal<Object> NewInstance(
2020-01-07T08:16:32.306Z [err]                                             ^~~~~~~~~~~
2020-01-07T08:16:32.306Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:3993:44: note:   candidate expects 3 arguments, 2 provided
2020-01-07T08:16:32.306Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:3996:44: note: candidate: 'v8::MaybeLocal<v8::Object> v8::Function::NewInstance(v8::Local<v8::Context>) const'
2020-01-07T08:16:32.306Z [err]    V8_WARN_UNUSED_RESULT MaybeLocal<Object> NewInstance(
2020-01-07T08:16:32.306Z [err]                                             ^~~~~~~~~~~
2020-01-07T08:16:32.306Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:3996:44: note:   candidate expects 1 argument, 2 provided
2020-01-07T08:16:32.307Z [err] ../src/BluetoothHciSocket.cpp:282:93: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
2020-01-07T08:16:32.307Z [err]    Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv);
2020-01-07T08:16:32.307Z [err]                                                                                              ^
2020-01-07T08:16:32.307Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:32.307Z [err] ../../nan/nan.h:1045:46: note: declared here
2020-01-07T08:16:32.307Z [err]    NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
2020-01-07T08:16:32.307Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:32.307Z [err] ../src/BluetoothHciSocket.cpp:282:93: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
2020-01-07T08:16:32.307Z [err]    Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv);
2020-01-07T08:16:32.307Z [err]                                                                                              ^
2020-01-07T08:16:32.307Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:32.307Z [err] ../../nan/nan.h:1045:46: note: declared here
2020-01-07T08:16:32.307Z [err]    NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
2020-01-07T08:16:32.307Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:32.314Z [err] ../src/BluetoothHciSocket.cpp: In static member function 'static Nan::NAN_METHOD_RETURN_TYPE BluetoothHciSocket::BindRaw(Nan::NAN_METHOD_ARGS_TYPE)':
2020-01-07T08:16:32.314Z [err] ../src/BluetoothHciSocket.cpp:395:34: warning: 'int64_t v8::Value::IntegerValue() const' is deprecated: Use maybe version [-Wdeprecated-declarations]
2020-01-07T08:16:32.314Z [err]        devId = arg0->IntegerValue();
2020-01-07T08:16:32.314Z [err]                                   ^
2020-01-07T08:16:32.315Z [err] In file included from /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:26,
2020-01-07T08:16:32.315Z [err]                  from /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:63,
2020-01-07T08:16:32.315Z [err]                  from /home/pi/.cache/node-gyp/10.18.0/include/node/node_buffer.h:25,
2020-01-07T08:16:32.315Z [err]                  from ../src/BluetoothHciSocket.cpp:7:
2020-01-07T08:16:32.315Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:2476:46: note: declared here
2020-01-07T08:16:32.315Z [err]    V8_DEPRECATED("Use maybe version", int64_t IntegerValue() const);
2020-01-07T08:16:32.315Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:32.315Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8config.h:324:3: note: in definition of macro 'V8_DEPRECATED'
2020-01-07T08:16:32.315Z [err]    declarator __attribute__((deprecated(message)))
2020-01-07T08:16:32.315Z [err]    ^~~~~~~~~~
2020-01-07T08:16:32.316Z [err] ../src/BluetoothHciSocket.cpp: In static member function 'static Nan::NAN_METHOD_RETURN_TYPE BluetoothHciSocket::BindUser(Nan::NAN_METHOD_ARGS_TYPE)':
2020-01-07T08:16:32.316Z [err] ../src/BluetoothHciSocket.cpp:417:34: warning: 'int64_t v8::Value::IntegerValue() const' is deprecated: Use maybe version [-Wdeprecated-declarations]
2020-01-07T08:16:32.316Z [err]        devId = arg0->IntegerValue();
2020-01-07T08:16:32.316Z [err]                                   ^
2020-01-07T08:16:32.316Z [err] In file included from /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:26,
2020-01-07T08:16:32.316Z [err]                  from /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:63,
2020-01-07T08:16:32.316Z [err]                  from /home/pi/.cache/node-gyp/10.18.0/include/node/node_buffer.h:25,
2020-01-07T08:16:32.316Z [err]                  from ../src/BluetoothHciSocket.cpp:7:
2020-01-07T08:16:32.316Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:2476:46: note: declared here
2020-01-07T08:16:32.316Z [err]    V8_DEPRECATED("Use maybe version", int64_t IntegerValue() const);
2020-01-07T08:16:32.316Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:32.316Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8config.h:324:3: note: in definition of macro 'V8_DEPRECATED'
2020-01-07T08:16:32.316Z [err]    declarator __attribute__((deprecated(message)))
2020-01-07T08:16:32.316Z [err]    ^~~~~~~~~~
2020-01-07T08:16:32.319Z [err] In file included from /home/pi/.cache/node-gyp/10.18.0/include/node/node_buffer.h:25,
2020-01-07T08:16:32.319Z [err]                  from ../src/BluetoothHciSocket.cpp:7:
2020-01-07T08:16:32.319Z [err] ../src/BluetoothHciSocket.cpp: At global scope:
2020-01-07T08:16:32.319Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:573:43: warning: cast between incompatible function types from 'void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void (*)(v8::Local<v8::Object>)'} to 'node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type]
2020-01-07T08:16:32.319Z [err]        (node::addon_register_func) (regfunc),                          \
2020-01-07T08:16:32.319Z [err]                                            ^
2020-01-07T08:16:32.319Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:607:3: note: in expansion of macro 'NODE_MODULE_X'
2020-01-07T08:16:32.319Z [err]    NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
2020-01-07T08:16:32.319Z [err]    ^~~~~~~~~~~~~
2020-01-07T08:16:32.319Z [err] ../src/BluetoothHciSocket.cpp:499:1: note: in expansion of macro 'NODE_MODULE'
2020-01-07T08:16:32.319Z [err]  NODE_MODULE(binding, BluetoothHciSocket::Init);
2020-01-07T08:16:32.319Z [err]  ^~~~~~~~~~~
2020-01-07T08:16:32.395Z [err] In file included from /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:63,
2020-01-07T08:16:32.395Z [err]                  from /home/pi/.cache/node-gyp/10.18.0/include/node/node_buffer.h:25,
2020-01-07T08:16:32.395Z [err]                  from ../src/BluetoothHciSocket.cpp:7:
2020-01-07T08:16:32.395Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]':
2020-01-07T08:16:32.395Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/node_object_wrap.h:84:78:   required from here
2020-01-07T08:16:32.395Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<node::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
2020-01-07T08:16:32.395Z [err]                 reinterpret_cast<Callback>(callback), type);
2020-01-07T08:16:32.395Z [err]                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020-01-07T08:16:32.432Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]':
2020-01-07T08:16:32.432Z [err] ../../nan/nan_object_wrap.h:65:61:   required from here
2020-01-07T08:16:32.432Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
2020-01-07T08:16:32.738Z [err] make: *** [binding.target.mk:101: Release/obj.target/binding/src/BluetoothHciSocket.o] Error 1
2020-01-07T08:16:32.738Z [out] make: Leaving directory '/home/pi/.node-red/node_modules/bluetooth-hci-socket/build'
2020-01-07T08:16:32.741Z [err] gyp
2020-01-07T08:16:32.741Z [err]  
2020-01-07T08:16:32.741Z [err] ERR! build error
2020-01-07T08:16:32.741Z [err]  
2020-01-07T08:16:32.742Z [err] gyp
2020-01-07T08:16:32.742Z [err]  ERR! stack
2020-01-07T08:16:32.743Z [err]  Error: `make` failed with exit code: 2
2020-01-07T08:16:32.743Z [err] gyp 
2020-01-07T08:16:32.743Z [err] ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:191:23)
2020-01-07T08:16:32.743Z [err] gyp ERR!
2020-01-07T08:16:32.743Z [err]  stack     at ChildProcess.emit (events.js:198:13)
2020-01-07T08:16:32.743Z [err] gyp ERR! 
2020-01-07T08:16:32.743Z [err] stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
2020-01-07T08:16:32.744Z [err] gyp
2020-01-07T08:16:32.744Z [err]  ERR! System
2020-01-07T08:16:32.744Z [err]  Linux 4.19.75-v7l+
2020-01-07T08:16:32.744Z [err] gyp
2020-01-07T08:16:32.744Z [err]  ERR! command
2020-01-07T08:16:32.744Z [err]  "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
2020-01-07T08:16:32.744Z [err] gyp ERR!
2020-01-07T08:16:32.745Z [err]  cwd /home/pi/.node-red/node_modules/bluetooth-hci-socket
2020-01-07T08:16:32.745Z [err] gyp ERR!
2020-01-07T08:16:32.745Z [err]  node -v v10.18.0
2020-01-07T08:16:32.745Z [err] gyp
2020-01-07T08:16:32.745Z [err]  ERR! 
2020-01-07T08:16:32.745Z [err] node-gyp -v v5.0.5
2020-01-07T08:16:32.745Z [err] gyp ERR!
2020-01-07T08:16:32.745Z [err]  not ok 
2020-01-07T08:16:32.774Z [out] 
2020-01-07T08:16:32.774Z [out] > @abandonware/bluetooth-hci-socket@0.5.3-3 install /home/pi/.node-red/node_modules/@abandonware/bluetooth-hci-socket
2020-01-07T08:16:32.774Z [out] > node-pre-gyp install --fallback-to-build
2020-01-07T08:16:32.774Z [out] 
2020-01-07T08:16:33.238Z [err] node-pre-gyp
2020-01-07T08:16:33.240Z [err]  
2020-01-07T08:16:33.240Z [err] WARN 
2020-01-07T08:16:33.241Z [err] Using needle for node-pre-gyp https download 
2020-01-07T08:16:33.951Z [err] node-pre-gyp
2020-01-07T08:16:33.951Z [err]  WARN Tried to download(404): https://github.com/sandeepmistry/node-bluetooth-hci-socket/releases/download/0.5.3-3/binding-0.5.3-3-node-v64-linux-arm.tar.gz 
2020-01-07T08:16:33.951Z [err] node-pre-gyp WARN
2020-01-07T08:16:33.951Z [err]  Pre-built binaries not found for @abandonware/bluetooth-hci-socket@0.5.3-3 and node@10.18.0 (node-v64 ABI, glibc) (falling back to source compile with node-gyp) 
2020-01-07T08:16:35.940Z [out] make: Entering directory '/home/pi/.node-red/node_modules/@abandonware/bluetooth-hci-socket/build'
2020-01-07T08:16:35.941Z [out]   CXX(target) Release/obj.target/binding/src/BluetoothHciSocket.o
2020-01-07T08:16:37.362Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:37.362Z [err] ../../../nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
2020-01-07T08:16:37.362Z [err] ../../../nan/nan.h:2298:62: warning: cast between incompatible function types from 'void (*)(uv_work_t*)' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [-Wcast-function-type]
2020-01-07T08:16:37.362Z [err]      , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
2020-01-07T08:16:37.362Z [err]                                                               ^
2020-01-07T08:16:37.520Z [err] ../src/BluetoothHciSocket.cpp: In member function 'void BluetoothHciSocket::poll()':
2020-01-07T08:16:37.520Z [err] ../src/BluetoothHciSocket.cpp:252:95: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
2020-01-07T08:16:37.520Z [err]      Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv);
2020-01-07T08:16:37.520Z [err]                                                                                                ^
2020-01-07T08:16:37.520Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:37.520Z [err] ../../../nan/nan.h:1045:46: note: declared here
2020-01-07T08:16:37.520Z [err]    NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
2020-01-07T08:16:37.520Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:37.520Z [err] ../src/BluetoothHciSocket.cpp:252:95: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
2020-01-07T08:16:37.520Z [err]      Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv);
2020-01-07T08:16:37.520Z [err]                                                                                                ^
2020-01-07T08:16:37.520Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:37.520Z [err] ../../../nan/nan.h:1045:46: note: declared here
2020-01-07T08:16:37.520Z [err]    NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
2020-01-07T08:16:37.520Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:37.522Z [err] ../src/BluetoothHciSocket.cpp: In member function 'void BluetoothHciSocket::emitErrnoError()':
2020-01-07T08:16:37.522Z [err] ../src/BluetoothHciSocket.cpp:274:93: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
2020-01-07T08:16:37.522Z [err]    Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv);
2020-01-07T08:16:37.522Z [err]                                                                                              ^
2020-01-07T08:16:37.522Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:37.522Z [err] ../../../nan/nan.h:1045:46: note: declared here
2020-01-07T08:16:37.522Z [err]    NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
2020-01-07T08:16:37.522Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:37.522Z [err] ../src/BluetoothHciSocket.cpp:274:93: warning: 'v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)' is deprecated [-Wdeprecated-declarations]
2020-01-07T08:16:37.522Z [err]    Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv);
2020-01-07T08:16:37.522Z [err]                                                                                              ^
2020-01-07T08:16:37.522Z [err] In file included from ../src/BluetoothHciSocket.cpp:8:
2020-01-07T08:16:37.522Z [err] ../../../nan/nan.h:1045:46: note: declared here
2020-01-07T08:16:37.522Z [err]    NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
2020-01-07T08:16:37.522Z [err]                                               ^~~~~~~~~~~~
2020-01-07T08:16:37.541Z [err] In file included from /home/pi/.cache/node-gyp/10.18.0/include/node/node_buffer.h:25,
2020-01-07T08:16:37.541Z [err]                  from ../src/BluetoothHciSocket.cpp:7:
2020-01-07T08:16:37.541Z [err] ../src/BluetoothHciSocket.cpp: At global scope:
2020-01-07T08:16:37.541Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:573:43: warning: cast between incompatible function types from 'void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void (*)(v8::Local<v8::Object>)'} to 'node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type]
2020-01-07T08:16:37.541Z [err]        (node::addon_register_func) (regfunc),                          \
2020-01-07T08:16:37.541Z [err]                                            ^
2020-01-07T08:16:37.541Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:607:3: note: in expansion of macro 'NODE_MODULE_X'
2020-01-07T08:16:37.541Z [err]    NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
2020-01-07T08:16:37.541Z [err]    ^~~~~~~~~~~~~
2020-01-07T08:16:37.541Z [err] ../src/BluetoothHciSocket.cpp:529:1: note: in expansion of macro 'NODE_MODULE'
2020-01-07T08:16:37.541Z [err]  NODE_MODULE(binding, BluetoothHciSocket::Init);
2020-01-07T08:16:37.541Z [err]  ^~~~~~~~~~~
2020-01-07T08:16:37.612Z [err] In file included from /home/pi/.cache/node-gyp/10.18.0/include/node/node.h:63,
2020-01-07T08:16:37.612Z [err]                  from /home/pi/.cache/node-gyp/10.18.0/include/node/node_buffer.h:25,
2020-01-07T08:16:37.612Z [err]                  from ../src/BluetoothHciSocket.cpp:7:
2020-01-07T08:16:37.612Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]':
2020-01-07T08:16:37.612Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/node_object_wrap.h:84:78:   required from here
2020-01-07T08:16:37.612Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<node::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
2020-01-07T08:16:37.612Z [err]                 reinterpret_cast<Callback>(callback), type);
2020-01-07T08:16:37.612Z [err]                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020-01-07T08:16:37.660Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h: In instantiation of 'void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]':
2020-01-07T08:16:37.660Z [err] ../../../nan/nan_object_wrap.h:65:61:   required from here
2020-01-07T08:16:37.660Z [err] /home/pi/.cache/node-gyp/10.18.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from 'v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback' {aka 'void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)'} to 'Callback' {aka 'void (*)(const v8::WeakCallbackInfo<void>&)'} [-Wcast-function-type]
2020-01-07T08:16:39.647Z [out]   SOLINK_MODULE(target) Release/obj.target/binding.node
2020-01-07T08:16:39.906Z [out]   COPY Release/binding.node
2020-01-07T08:16:39.924Z [out]   COPY /home/pi/.node-red/node_modules/@abandonware/bluetooth-hci-socket/lib/binding/binding.node
2020-01-07T08:16:39.943Z [out]   TOUCH Release/obj.target/action_after_build.stamp
2020-01-07T08:16:39.952Z [out] make: Leaving directory '/home/pi/.node-red/node_modules/@abandonware/bluetooth-hci-socket/build'
2020-01-07T08:16:39.982Z [out] 
2020-01-07T08:16:39.982Z [out] > @abandonware/noble@1.9.2-5 install /home/pi/.node-red/node_modules/@abandonware/noble
2020-01-07T08:16:39.982Z [out] > node-gyp rebuild
2020-01-07T08:16:39.982Z [out] 
2020-01-07T08:16:41.065Z [out] make: Entering directory '/home/pi/.node-red/node_modules/@abandonware/noble/build'
2020-01-07T08:16:41.067Z [out]   SOLINK_MODULE(target) Release/obj.target/noble.node
2020-01-07T08:16:41.310Z [out]   COPY Release/noble.node
2020-01-07T08:16:41.326Z [out] make: Leaving directory '/home/pi/.node-red/node_modules/@abandonware/noble/build'
2020-01-07T08:16:42.269Z [err] npm WARN optional SKIPPING OPTIONAL DEPENDENCY: xpc-connection@0.1.4 (node_modules/xpc-connection):
2020-01-07T08:16:42.269Z [err] npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for xpc-connection@0.1.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"})
2020-01-07T08:16:42.269Z [err] npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bluetooth-hci-socket@0.5.1 (node_modules/bluetooth-hci-socket):
2020-01-07T08:16:42.269Z [err] npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bluetooth-hci-socket@0.5.1 install: `node-gyp rebuild`
2020-01-07T08:16:42.269Z [err] npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
2020-01-07T08:16:42.269Z [err] 
2020-01-07T08:16:42.271Z [out] + node-red-contrib-generic-ble@3.1.0
2020-01-07T08:16:42.271Z [out] added 38 packages from 119 contributors in 19.478s
2020-01-07T08:16:42.521Z [out] 
2020-01-07T08:16:42.521Z [out] 1 package is looking for funding
2020-01-07T08:16:42.521Z [out]   run `npm fund` for details
2020-01-07T08:16:42.521Z [out] 
2020-01-07T08:16:42.547Z rc=0

Hope someone can solve this as it's driving me insane.

Thanks for reading.