Bluetooth

From ArmadeusWiki
Revision as of 15:33, 7 May 2010 by JulienB (Talk | contribs) (Usage)

Jump to: navigation, search

Page under construction... Construction.png 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.

Hardware

First you have to get a compatible hardware. Currently there are 3 solutions:

  • Get a Wireless extension board from armadeus systems (only available for APF27)
  • Get a cheap USB<->Bluetooth adapter (requires an USB Host port)
  • Get a RS232<->Bluetooth adapter

Tested hardware

Model Status
APF9328 / APF27
Chipset Comments
BELKIN - Mini Bluetooth Adapter Belkin Mini Bluetooth.jpg 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)
Can't init device hci1: Input/output error (5)

TRUST - Bluetooth 2.1 USB Adapter Trust Small Bluetooth.jpg TBT KO Product: BCM2046B1
Manufacturer: Broadcom
# hciconfig hci1 up piscan

btusb_submit_intr_urb: hci1 urb c3bdac40 submission failed (28)
Can't init device hci1: Input/output error (5)

RUEDUCOMMERCE - Mini adaptateur USB Bluetooth RDC USB Bluetooth.jpg TBT OK Manufacturer: Cambridge Silicon Radio
GIGABYTE - GN-BTD01 Gigabyte gn-btd01.jpg TBT OK Manufacturer: Cambridge Silicon Radio Bluetooth 1.1 ?
BELKIN - F8T003 v2 TBT OK Manufacturer: Cambridge Silicon Radio

Software

Bluetooth Linux stack is divided into several parts:

  • kernel drivers
  • userland libraries/daemon (bluez)

Driver installation

  • (Done by default on APF27)
$ 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

$ make menuconfig
Package Selection for the target  --->
    ...
    [*] XML handling  --->
        [*]   libxml2
    ...
    [*] Hardware handling / blockdevices and filesystem maintenance  --->
        [*]   dbus
              XML library to use (libxml2)
    ...
    *** Armadeus specific packages ***
    [*] bluez
$ make

Custom Bring up

APW

  • APW has a CSR BlueCore 4 chipset connected to i.MX 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.

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.

Links