Bluetooth
Page under construction... Informations on this page are not guaranteed !!
This page will give you all the informations needed to have a running Bluetooth configuration on your Armadeus board.
Contents
Hardware
First you have to get a compatible hardware. Currently there are 3 solutions:
- You have an APF51Dev board, then you're a lucky man because Bluetooth is integrated on the board ;-)
- If you have an APF27Dev, then you can get a Wireless extension board with WiFi/Bluetooth option from ARMadeus Systems
- Otherwise: get a cheap USB<->Bluetooth adapter (requires an USB Host port) or a RS232<->Bluetooth adapter
Tested USB adapters
Model | Status APF9328 / APF27 |
Chipset | Comments | |
---|---|---|---|---|
BELKIN - Mini Bluetooth Adapter | TBT | KO | Product: BLUETOOTH USB +EDR ADAPTER v2.1 UHE Manufacturer: Broadcom Corp |
# hciconfig hci1 up piscan
btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28) |
TRUST - Bluetooth 2.1 USB Adapter | TBT | KO | Product: BCM2046B1 Manufacturer: Broadcom |
# hciconfig hci1 up piscan
btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28) |
RUEDUCOMMERCE - Mini adaptateur USB Bluetooth | TBT | OK | Manufacturer: Cambridge Silicon Radio | |
GIGABYTE - GN-BTD01 | TBT | OK | Manufacturer: Cambridge Silicon Radio | Bluetooth 1.1 ? |
BELKIN - F8T003 v2 | TBT | OK | Manufacturer: Cambridge Silicon Radio | |
D-LINK - DBT-122 | TBT | OK | Product: BCM2035 Manufacturer: Broadcom |
Software
Bluetooth Linux stack is divided into several parts:
- kernel drivers
- userland libraries/daemon (bluez)
Driver installation
$ make linux26-menuconfig
[*] Networking support ---> <M> Bluetooth subsystem support ---> --- Bluetooth subsystem support <M> L2CAP protocol support <M> SCO links support <M> RFCOMM protocol support [*] RFCOMM TTY support <M> BNEP protocol support [ ] Multicast filter support (NEW) [ ] Protocol filter support (NEW) <M> HIDP protocol support Bluetooth device drivers ---> <M> HCI USB driver < > HCI SDIO driver (NEW) <M> HCI UART driver [*] UART (H4) protocol support [*] BCSP protocol support [ ] HCILL protocol support (NEW) < > HCI BCM203x USB driver (NEW) < > HCI BPA10x USB driver (NEW) < > HCI BlueFRITZ! USB driver (NEW) < > HCI VHCI (Virtual HCI device) driver (NEW)
$ make
Bluez installation
(Done by default on APF51)
$ make menuconfig
Package Selection for the target ---> ... [*] XML handling ---> [*] libxml2 ... [*] Hardware handling ---> [*] dbus XML library to use (libxml2) ... Networking applications ---> [*] bluez [*] bluez-utils
$ make
Custom Bring up (each hardware may have a different init sequence)
APF51Dev
- APF51Dev has a CSR BlueCore 4 chipset connected to the i.MX51 UART3 (ttymxc2)
- Attach it to the kernel bluez UART driver:
# /usr/sbin/hciattach -s 921600 ttymxc2 csr 921600 CSR build ID 0x00-0x37 Bluetooth: Core ver 2.15 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: HCI UART driver ver 2.2 Bluetooth: HCI H4 protocol initialized Bluetooth: HCI BCSP protocol initialized
APF27Dev + APW
- APW has a CSR BlueCore 4 chipset connected to the i.MX27 serial port ttySMX5 (UART6)
- Reset it:
# source /usr/bin/gpio_helpers.sh # gpio_mode PB14 1 # gpio_set_value PB14 0; sleep 1; gpio_set_value PB14 1; sleep 1
- Attach it to the kernel bluez UART driver:
# /usr/sbin/hciattach -s 921600 ttySMX5 csr 921600
USB module
- Make sure your hardware is connected to the APF. If using an USB dongle, load corresponding driver:
# modprobe btusb Bluetooth: Core ver 2.14 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: Generic Bluetooth USB driver ver 0.4 usbcore: registered new interface driver btusb
Common Bring up
- Check if Bluetooth interface was detected:
# hciconfig hci0: Type: USB BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0 DOWN RX bytes:0 acl:0 sco:0 events:0 errors:0 TX bytes:0 acl:0 sco:0 commands:0 errors:0
- If interface is DOWN, bring it up:
# hciconfig hci0 up piscan
- Check your Bluetooth device is correctly initialized:
# hcitool dev Devices: hci0 00:10:60:D1:92:0F
Usage
Scanning network
- To get surrounding devices addresses and names:
# hcitool scan Scanning ...
- To get surrounding devices addresses and classes:
# hcitool inq Inquiring ...
Get info on a given device
# hcitool info 00:19:0E:xx:xx:xx ...
Pinging other devices
# l2ping 00:19:0E:xx:xx:xx Ping: 00:19:0E:xx:xx:xx from 00:19:88:xx:xx:xx (data size 44) ... 44 bytes from 00:19:0E:xx:xx:xx id 0 time 38.05ms 44 bytes from 00:19:0E:xx:xx:xx id 1 time 37.09ms ...
Here 00:19:0E:xx:xx:xx is the Bluetooth MAC address of the Host.
Advanced usages
Setup a Terminal between a PC and your APF through Bluetooth
On the APF :
- the first step is to create the corresponding node for the future connection:
# mknod /dev/rfcomm0 c 216 0
- then, listen to an incoming connection, on the rfcomm0 (here channel 7 is choosen):
# rfcomm -i hci0 listen /dev/rfcomm0 7 &
- and the last step, when the connection is open, is to connect a terminal (through getty) to the device /dev/rfcomm0:
# getty 38400 /dev/rfcomm0
On the PC :
- after the two first steps on the APF, you need to connect the PC to the APF with the same channel (7):
$ rfcomm connect 0 00:19:88:2B:xx:xx 7 (replace 00:19:88:2B:xx:xx with the Bluetooth @ of your APF)
- and configure minicom ($HOME/.minirc.dfl):
pu port /dev/rfcomm0 pu baudrate 38400 pu bits 8 pu parity N pu stopbits 1
- when getty is running on the APF, you could you connect with minicom:
$ minicom -o
- it could be a good idea to create an additional user account for remotely login through Bluetooth, by following these instructions.
Using a Bluetooth keyboard on your APF
The only thing needed after having a bluetooth correctly configured is to use this command :
$ hidd --connect keyboard_bdaddr
Others
- TCP/IP with Bluetooth
- OBEX transfers
- Wiimote