On Intel Edison the BCM43341B Bluetooth controller has a default MAC address 43:34:1B:00:1F:AC if none
is given. This address contains the sequence 43341B, the name the controller itself. Using the same BD_ADDR is problematic when having multiple Edison modules in each others range and also prevents a BNEP device from being created, needed for BT tethering. Therefore this address is blacklisted in the kernel, which blocks Bluetooth
until a unique BD_ADDR is configured using
btmgmt -i hci0 public-addr xx:xx:xx:xx:xx:xx.
Each Intel Edison stores a unique BD_ADDR in
bluetooth_bd_addr is provided that powers on Bluetooth on boot and configures the factory provided address.
Bluetooth may be soft blocked. To unblock:
connmanctl enable bluetooth
Or the old school:
root@edison:~# rfkill list 0: phy0: wlan Soft blocked: no Hard blocked: no 1: hci0: bluetooth Soft blocked: yes Hard blocked: no root@edison:~# rfkill unblock 1 root@edison:~# rfkill list 0: phy0: wlan Soft blocked: no Hard blocked: no 1: hci0: bluetooth Soft blocked: no Hard blocked: no
In case of problems check the logs for the following:
dmesg | grep -i blue Bluetooth: Core ver 2.22 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized pci 0000:00:04.1: Registered Bluetooth device: hci_bcm Bluetooth: HCI UART driver ver 2.3 Bluetooth: HCI UART protocol H4 registered Bluetooth: HCI UART protocol Broadcom registered Bluetooth: hci0: BCM: chip id 82 Bluetooth: hci0: BCM: features 0x2f Bluetooth: hci0: BCM43341B0 Bluetooth: hci0: BCM43341B0 (002.001.014) build 0000 Bluetooth: hci0: BCM (002.001.014) build 0176 Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM socket layer initialized Bluetooth: RFCOMM ver 1.11
To connect to other devices use:
root@edison:~# systemctl start bluetooth root@edison:~# bluetoothctl [NEW] Controller 43:34:1B:00:1F:AC edison [default] Agent registered [bluetooth]# discoverable on Changing discoverable on succeeded [CHG] Controller 43:34:1B:00:1F:AC Discoverable: yes [bluetooth]# pairable on Changing pairable on succeeded [bluetooth]# scan on Discovery started [CHG] Controller 43:34:1B:00:1F:AC Discovering: yes [NEW] Device 00:0A:3A:71:BA:34 00-0A-3A-71-BA-34 [bluetooth]# connect 00:0A:3A:71:BA:34 Attempting to connect to 00:0A:3A:71:BA:34 [CHG] Device 00:0A:3A:71:BA:34 Connected: yes
and follow the instructions in Intel Edison Bluetooth Guide
Alternatively you might want to connect from the other device (your phone). It that case it might be easier to change the default agent:
agent off agent DisplayOnly default-agent agent on
I have succeeded in paring 2 BT 4.0 devices and failed in paring a BT 2.0 device. I was able to get a wireless terminal using the following command on the Edison:
rfcomm watch /dev/rfcomm0 3 /sbin/agetty -L 115200 rfcomm0 xterm-256color
and on the client (laptop):
sudo rfcomm bind /dev/rfcomm0 ##:##:##:##:##:## 3 screen /dev/rfcomm0 115200
On the other device (phone) enable tethering and connect to the Intel Edison.
connmanctl> services * O Wired gadget_000000000000_usb OP35_Extra wifi_xxxx_xxxxxxx_managed_psk ... Ferry Toth (Galaxy Note3) bluetooth_xxxx_xxxx connect bluetooth_xxxx_xxxx connmanctl> services * O Wired gadget_000000000000_usb * Ferry Toth (Galaxy Note3) bluetooth_xxxx_xxxx
© 2018 Ferry Toth