Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't discover service, and then 'org.bluez.Error.Failed' after a minute #13

Open
mohse-n opened this issue Sep 8, 2020 · 10 comments
Open

Comments

@mohse-n
Copy link

mohse-n commented Sep 8, 2020

I'm using RPi 4 (with node 14.9.0, BlueZ 5.50). I can discover the device, but not the service.

require('dotenv').config()

const { createBluetooth } = require('.')
const { TEST_DEVICE, TEST_SERVICE, TEST_CHARACTERISTIC, TEST_NOTIFY_SERVICE, TEST_NOTIFY_CHARACTERISTIC } = process.env

async function main () {
  const { bluetooth, destroy } = createBluetooth()

  // get bluetooth adapter
  const adapter = await bluetooth.defaultAdapter()
  await adapter.startDiscovery()
  console.log('discovering')

  // get device and connect
  const device = await adapter.waitDevice('D4:CA:6E:F1:84:BE')
  console.log('got device', await device.getAddress(), await device.getName())
  await device.connect()
  console.log('connected')

  const gattServer = await device.gatt()

  // read write characteristic
  const service1 = await gattServer.getPrimaryService('15172000-4947-11e9-8646-d663bd873d93')
  console.log('got primary service.')
  const characteristic1 = await service1.getCharacteristic('15172001-4947-11e9-8646-d663bd873d93')
  console.log('got control characteristic.')
  //await characteristic1.writeValue(Buffer.from('Hello world'))
  const buffer = await characteristic1.readValue()
  console.log('read', buffer, buffer.toString())

}

main()
  .then(console.log)
  .catch(console.error)

Console output

discovering
got device D4:CA:6E:F1:84:BE Xsens DOT
DBusError: Software caused connection abort
    at _methodReturnHandlers.<computed> (/home/pi/node-ble-master/node_modules/dbus-next/lib/bus.js:339:27)
    at handleMessage (/home/pi/node-ble-master/node_modules/dbus-next/lib/bus.js:98:11)
    at EventEmitter.<anonymous> (/home/pi/node-ble-master/node_modules/dbus-next/lib/bus.js:147:9)
    at EventEmitter.emit (events.js:314:20)
    at /home/pi/node-ble-master/node_modules/dbus-next/lib/connection.js:112:14
    at Socket.<anonymous> (/home/pi/node-ble-master/node_modules/dbus-next/lib/message.js:63:9)
    at Socket.emit (events.js:314:20)
    at emitReadable_ (_stream_readable.js:563:12)
    at processTicksAndRejections (internal/process/task_queues.js:79:21) {
  type: 'org.bluez.Error.Failed',
  text: 'Software caused connection abort',
  reply: Message {
    type: 3,
    _sent: false,
    _serial: 1494,
    path: undefined,
    interface: undefined,
    member: undefined,
    errorName: 'org.bluez.Error.Failed',
    replySerial: 13,
    destination: ':1.68',
    sender: ':1.22',
    signature: 's',
    body: [ 'Software caused connection abort' ],
    flags: 1
  }
}


@chenkaiC4
Copy link

@mohse-n have your solved the problem, i catch the same case.

@chenkaiC4
Copy link

i am use ubuntu18.04. when i connect to device,it never give a correct response, but a “Software caused connection abort”

@titaniumwhite
Copy link

Same here, "Software caused connection abort" when trying to connect to the device. I run on Ubuntu 18.04 as well.

@mohse-n
Copy link
Author

mohse-n commented Dec 2, 2020

I was using Raspberry Pi 3 and 4. Upgrading to the latest version of Raspbian (Raspberry Pi OS) solved the problem for me.

@ManDon5
Copy link

ManDon5 commented Jan 14, 2021

I got the same problem. I am using node-ble inside a homebridge plugin. My Raspberry Pi Zero W is running the latest Raspberry Pi OS and node.

Any ideas how to fix it?

@chrvadala
Copy link
Owner

In order to debug the issue, I suggest you the following lines:

$  bluetoothctl
> connect DC:A6:32:3F:7B:7A
> menu gatt
> list-attributes

Does bluetoothctl list the expected services?

@ManDon5
Copy link

ManDon5 commented Jan 18, 2021

Thank you for your quick respond. I think that was a mistake of mine. I will check it at the weekend and get back in touch here.

@ManDon5
Copy link

ManDon5 commented Jan 22, 2021

I checked my implementation. I am getting the following error after a few seconds if the peripheral is not reachable:

DBusError: Software caused connection abort

Is it possible to search/wait for the peripheral till it is available?
I want to integrated node-ble inside my homebridge plugin and it should search for peripherals in an endless loop if it is not reachable.

If my peripheral is reachable everything runs fine.

@rick-loz
Copy link

Hello! I get the same error. It connects to the device and can display my phone's name, but when I try device.connect() it throws that error after a bit. I'm running it from a RPi 4 using Raspbian.

Also, I can connect to my device using bluetoothctl, but nothing is listed when I use the list-attributes command.

Has anyone found a solution?

@dave190265
Copy link

In order to debug the issue, I suggest you the following lines:

$  bluetoothctl
> connect DC:A6:32:3F:7B:7A
> menu gatt
> list-attributes

Does bluetoothctl list the expected services?

I get the same problem. I'm running in a Docker Image on a RPi4.

I can ssh into the docker image and when I try #13 (comment) I get the following :

[bluetooth]#
[CHG] Device 7B:41:00:00:04:98 ManufacturerData Value: 0x00
[bluetooth]#
[CHG] Device 7B:41:00:00:04:98 ManufacturerData Value: 0x00
[bluetooth]# connect 7B:41:00:00:04:98
Attempting to connect to 7B:41:00:00:04:98
[bluetooth]#
Failed to connect: org.bluez.Error.Failed
[bluetooth]#

In my code, I can get the device, and getAddress and getName work as expected, but when I attempt to connect, I get :

*** BLE devices: [ '7B:41:00:00:04:98', 'DC:0D:30:01:14:C3' ]
got device 7B:41:00:00:04:98 ThermoBeacon false
(node:32) UnhandledPromiseRejectionWarning: DBusError: Software caused connection abort
at methodReturnHandlers.(anonymous function) (/srv/node_modules/dbus-next/lib/bus.js:343:27)
at handleMessage (/srv/node_modules/dbus-next/lib/bus.js:101:11)
at EventEmitter.MessageBus.conn.on (/srv/node_modules/dbus-next/lib/bus.js:151:9)
at EventEmitter.emit (events.js:198:13)
at /srv/node_modules/dbus-next/lib/connection.js:116:14
at Socket. (/srv/node_modules/dbus-next/lib/message.js:63:9)
at Socket.emit (events.js:198:13)
[Logs] [4/10/2021, 1:23:47 PM] [smart-hub] at emitReadable
(_stream_readable.js:555:12)
[Logs] [4/10/2021, 1:23:47 PM] [smart-hub] at process._tickCallback (internal/process/next_tick.js:63:19)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants