The following are instructions for connecting a Bluetooth device for serial communication using BlueZ 5.31. (adapted from https://gist.github.com/0/c73e2557d875446b9603) ==== Prerequisites ==== The following packages are required: * `bluez`: `bluetoothd` * `bluez-utils`: `bluetoothctl`, `rfcomm` ==== Pair ==== * Start daemon: `systemctl start bluetooth` * Pair using `bluetoothctl`: power on agent on scan on ... wait ... scan off pair * Create serial device: `rfcomm bind 0 ` You should now have `/dev/rfcomm0`. ==== Unpair ==== * Remove serial device: `rfcomm release 0` * Unpair using `bluetoothctl`: remove power off * Stop daemon: `systemctl stop bluetooth` ==== Troubleshooting ==== Check `rfkill list` to make sure that the Bluetooth device is not blocked. ===== Accessing from Folk ===== The folk user needs to be able to open the serial port - make sure the folk user is a member of the dialout group. Folk program to read from the serial port (in this case a n M5StickC running the following program: https://github.com/naninunenoy/AxisOrange): Start process { Wish $::thisProcess shares statements like \ [list /someone/ claims the m5stickC has quaternion /q/] set serial [open /dev/rfcomm0 r+] chan configure $serial -mode "115200,n,8,1" chan configure $serial -blocking 0 -buffering none -translation binary while {1} { set data [read $serial] ;# read ALL incoming bytes set size [string length $data] ;# number of received byte, may be 0 if { $size } { #puts "received $size bytes: $data" # parse header binary scan $data {su su iu f3 f3 f4} dataId dataLen t a g q #puts "$dataId $dataLen $t $a $g $q" Retract $::thisProcess claims the m5stickC has quaternion /q/ Assert $::thisProcess claims the m5stickC has quaternion $q } else { #puts "" } Step } }