Bluetooth is a wireless technology standard for exchanging data over short distances from fixed and mobile devices, and building personal area networks ... Wikipedia
root@edison:~/bluez-alsa/build# opkg list | grep blue
bluetooth-rfkill-event - 1.0-r0 - bluetooth-rfkill-event version 1.0-r0 Bluetooth rfkill event daemon for
bluetooth-rfkill-event-dbg - 1.0-r0 - bluetooth-rfkill-event version 1.0-r0 - Debugging files Bluetooth rfkill
bluetooth-rfkill-event-dev - 1.0-r0 - bluetooth-rfkill-event version 1.0-r0 - Development files Bluetooth
bluez5 - 5.37-r0 - Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
bluez5-dbg - 5.37-r0 - Linux Bluetooth Stack Userland V5 - Debugging files Linux Bluetooth
bluez5-dev - 5.37-r0 - Linux Bluetooth Stack Userland V5 - Development files Linux Bluetooth
bluez5-doc - 5.37-r0 - Linux Bluetooth Stack Userland V5 - Documentation files Linux Bluetooth
bluez5-obex - 5.37-r0 - Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
bluez5-testtools - 5.37-r0 - Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
kernel-module-bcm-bt-lpm - 1.0-r2 - bcm-bt-lpm kernel module bcm-bt-lpm kernel module; bcm43xx_bluetooth
libasound-module-bluez - 5.37-r0 - Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
pulseaudio-lib-bluez5-util - 6.0-r0 - PulseAudio library for bluez5-util PulseAudio library for bluez5-util
pulseaudio-module-bluetooth-discover - 6.0-r0 - PulseAudio module for bluetooth-discover PulseAudio module for
bluetooth-discover
pulseaudio-module-bluetooth-policy - 6.0-r0 - PulseAudio module for bluetooth-policy PulseAudio module for bluetooth-
pulseaudio-module-bluez5-device - 6.0-r0 - PulseAudio module for bluez5-device PulseAudio module for bluez5-device
pulseaudio-module-bluez5-discover - 6.0-r0 - PulseAudio module for bluez5-discover PulseAudio module for
bluez5-discover
webmin-theme-blue-theme - 1.700-r0 - Webmin theme for blue-theme Webmin theme for blue-theme
Kernel Integration
BlueZ. Official Linux Bluetooth Protocol Stack
Bluetooth tools and daemons. This package contains tools and system daemons for using Bluetooth devices. BlueZ is the official Linux Bluetooth protocol stack. It is an Open Source project distributed under GNU General Public License (GPL). Bluez Homepage
root@edison:~# dmesg
...
[ 85.022971] usb 1-1: new full-speed USB device number 2 using dwc3-host
[ 85.085188] usb 1-1: New USB device found, idVendor=0a12, idProduct=0001
[ 85.085218] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 85.085240] usb 1-1: Product: Bluetooth V2.0 Dongle
[ 85.085259] usb 1-1: Manufacturer: Bluetooth v2.0
```sh
### Kernel Modules
```sh
root@edison:~# lsmod
Module Size Used by
usb_f_acm 14335 1
...
bcm_bt_lpm 13708 0
bcm4334x 587105 0
Applications / Libraries
ConnMan
Daemon for managing Internet connections within embedded device and integrates a vast range of communication features usually split between many daemons such as DHCP, DNS and NTP. The result of this consolidation is low memory consumption with a fast, coherent, synchronized reaction to changing network conditions. ConnMan Homepage
RFKill
A small userspace tool to query the state of the rfkill switches, buttons and subsystem interfaces. Some devices come with a hard switch that lets you kill different types of RF radios: 802.11 / Bluetooth / NFC / UWB / WAN / WIMAX / FM. Some times these buttons may kill more than one RF type. The Linux kernel rfkill subsystem exposes these hardware buttons and lets userspace query its status and set its status through a /dev/rfkill. Given that at times some RF devices do not have hardware rfkill buttons rfkill the Linux kernel also exposes software rfkill capabilities that allows userspace to mimic a hardware rfkill event and turn on or off RF. Rfkill Homepage
root@edison:~# rfkill list
0: phy0: wlan
Soft blocked: no
Hard blocked: no
1: brcmfmac-wifi: wlan
Soft blocked: no
Hard blocked: no
2: bcm43xx Bluetooth: bluetooth
Soft blocked: yes
Hard blocked: no
root@edison:~# systemctl status bluetooth.service
root@edison:~# systemctl stop bluetooth
root@edison:~# systemctl start bluetooth
root@edison:~# systemctl enable bluetooth
root@edison:~# rfkill unblock bluetooth
root@edison:~# rfkill list bluetooth
2: bcm43xx Bluetooth: bluetooth
Soft blocked: no
Hard blocked: no
4: hci0: bluetooth
Soft blocked: no
Hard blocked: no
root@edison:~# hciconfig hci0 down
root@edison:~# hciconfig hci0 up
root@edison:~# hciconfig hci0 status
hci0: Type: BR/EDR Bus: UART
BD Address: 98:4F:EE:03:39:02 ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN
...
root@edison:~# hciconfig hci0 piscan
...
root@edison:~# hcitool scan
root@edison:~# rfkill unblock bluetooth
root@edison:~# bluetoothctl
[bluetooth]# scan on
[bluetooth]# scan off
[bluetooth]# pair 40:78:6A:26:4A:C2
[bluetooth]# connect 40:78:6A:26:4A:C2
[bluetooth]# paired-devices
[bluetooth]# info 40:78:6A:26:4A:C2
[bluetooth]# exit
root@edison:~# rfcomm bind - 40:78:6A:26:4A:C2 1
root@edison:~# ls /dev/rfcomm0
Text
root@edison:~# systemctl status bluetooth.service
root@edison:~# systemctl start bluetooth
root@edison:~# systemctl enable bluetooth
root@edison:~# rfkill unblock bluetooth
root@edison:~# rfkill list bluetooth
root@edison:~# hciconfig hci0 status
Make Your Device Discoverable
root@edison:~# hcitool scan
root@edison:~# rfcomm bind 0 40:78:6A:26:4A:C2
SPP
root@edison:~# systemctl enable bluetooth
root@edison:~# rfkill unblock bluetooth
root@edison:~# vi /etc/dbus-1/system.d/bluetooth.conf
At this point you need to pair the Intel Edison with your android device (see example above on how to use bluetoothctl, hcicontrol or any other user level application in your Edison).
Once paired, open the Bluetooth SPP Manager app, hit search, and when the Intel Edison appears tap on in to connect. now you can send text messages to Edison which can be seen on the terminal window of the Edison.
I know this need a lil' bit further explanation. just dropped here so i won't forget. Also what is going to be added is how to programmatically do the device discovering, pairing and SPP using c and python