Skip to content
Advertisement

Pairing bluetooth devices with Passkey/Password in python – RFCOMM (Linux)

I am working on a Python script to search for bluetooth devices and connect them using RFCOMM. This devices has Passkey/Password. I am using PyBlueZ and, as far as I know, this library cannot handle Passkey/Password connections (Python PyBluez connecting to passkey protected device).

I am able to discover the devices and retrieve their names and addresses:

JavaScript

But if tried to connect to a specific device using:

JavaScript

I get an error 'Device or resource busy (16)'.

I tried some bash commands using the hcitool and bluetooth-agent, but I need to do the connection programmatically. I was able to connect to my device using the steps described here: How to pair a bluetooth device from command line on Linux.

I want to ask if someone has connected to a bluetooth device with Passkey/Password using Python. I am thinking about to use the bash commands in Python using subprocess.call(), but I am not sure if it is a good idea.

Thanks for any help.

Advertisement

Answer

Finally I am able to connect to a device using PyBlueZ. I hope this answer will help others in the future. I tried the following:

First, import the modules and discover the devices.

JavaScript

When you discover the device you want to connect, you need to know port, the address and passkey. With that information do the next:

JavaScript

Now, you are connected!! You can use your socket for the task you need:

JavaScript

Official PyBlueZ documentation is available here

Advertisement