Linux
If you have a graphical Bluetooth manager, you can use that to pair your laptop to the Bluetoothmodule and skip most of these steps. You’ll probably still have to this step though.
Power up
First, your laptop’s Bluetooth transceiver may be OFF. Check its status with hciconfig
and turn itON if necessary:
$ hciconfig
hci0: Type: Primary Bus: USB
BD Address: 68:17:29:XX:XX:XX ACL MTU: 310:10 SCO MTU: 64:8
DOWN <--
RX bytes:580 acl:0 sco:0 events:31 errors:0
TX bytes:368 acl:0 sco:0 commands:30 errors:0
$ sudo hciconfig hci0 up
$ hciconfig
hci0: Type: Primary Bus: USB
BD Address: 68:17:29:XX:XX:XX ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING <--
RX bytes:1190 acl:0 sco:0 events:67 errors:0
TX bytes:1072 acl:0 sco:0 commands:66 errors:0
Then you need to launch the BlueZ (Bluetooth) daemon:
- On systemd based Linux distributions, use:
$ sudo systemctl start bluetooth
- On Ubuntu (or upstart based Linux distributions), use:
$ sudo /etc/init.d/bluetooth start
You may also need to unblock your Bluetooth, depending on what rfkill list
says:
$ rkfill list
9: hci0: Bluetooth
Soft blocked: yes # <--
Hard blocked: no
$ sudo rfkill unblock bluetooth
$ rkfill list
9: hci0: Bluetooth
Soft blocked: no # <--
Hard blocked: no
Scan
$ hcitool scan
Scanning ...
20:16:05:XX:XX:XX Ferris
$ # ^^^^^^
Pair
$ bluetoothctl
[bluetooth]# scan on
[bluetooth]# agent on
[bluetooth]# pair 20:16:05:XX:XX:XX
Attempting to pair with 20:16:05:XX:XX:XX
[CHG] Device 20:16:05:XX:XX:XX Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
rfcomm device
We’ll create a device file for our Bluetooth module in /dev
. Then we’ll be able to use it justlike we used /dev/ttyUSB0
.
$ sudo rfcomm bind 0 20:16:05:XX:XX:XX
Because we used 0
as an argument to bind
, /dev/rfcomm0
will be the device file assigned to ourBluetooth module.
You can release (destroy) the device file at any time with the following command:
$ # Don't actually run this command right now!
$ sudo rfcomm release 0