Using a TECOM BT3033A bluetooth dongle with FreeBSD 6

Tag: bluetooth, freebsd, os

Report of successful user experience using a USB bluetooth dongle to connect a laptop to a mobile phone (cellular). Steps described in detail...Report of successful user experience using a USB bluetooth dongle to connect a laptop to a mobile phone (cellular). Steps described in detail...

"Recapitulating the problem and the solution, for my own future reference.


THE PROBLEM:

I first complained because when I plugged my bluetooth dongle (wishing to connect to a mobile phone) the OS assumed it to be a usb/bluetooth keyboard; created a /dev/uskbo and assigned it to be the console keyboard, thus leaving me with no way to type.


THE HARDWARE:

I am using a TECOM BT3033A dongle with a Compaq Presario 1215EA (it has two USB plugs, the first has the dongle, the second a USB a4Tech mouse - but the mouse part is relevant for the issue). The mobile phone is a SonyEricsson K700i. I am running FBSD 5.3-release.



THE SOLUTION:

A - Following Maksim Yevmenkin's suggestion, I commented out the following lines from /etc/dev.conf
# When a USB keyboard arrives, attach it as the console keyboard
# attach 100 {
# device-name ""ukbd0"";
# action ""test -c /dev/kbd1 && kbdcontrol -k /dev/kbd1 < /dev/console"";
# };
# detach 100 {
# device-name ""ukbd0"";
# action ""kbdcontrol -k /dev/kbd0 < /dev/console"";
# };


B - Now, with ng_ubt_load=""YES"" in /boot/load.conf I get at startup the info bellow (the following devs are created: ukbd0, kb1, ums0, ums1. ukbd0, kb1 and ums1 disappear as soon as I type «/etc/rc.bluetooth start ubt0». As far as I can understand this means a bluetooth mouse and or bluetooth keyboard could work if I had them); since the ukbd0 is no longer automatically assigned as console keyboard my problem disappeared:

Nov 18 01:55:35 kernel: uhci0: port 0x1800-0x181f irq 5 at device 7.2 on pci0
Nov 18 01:55:35 kernel: uhci0: [GIANT-LOCKED]
Nov 18 01:55:35 kernel: usb0: on uhci0
Nov 18 01:55:35 kernel: usb0: USB revision 1.0
Nov 18 01:55:35 kernel: uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
Nov 18 01:55:35 kernel: uhub0: 2 ports with 2 removable, self powered
Nov 18 01:55:35 kernel: ums0: A4Tech USB Optical Mouse, rev 1.10/0.01, addr 2, iclass 3/1
Nov 18 01:55:35 kernel: ums0: 7 buttons and Z dir.
Nov 18 01:55:35 kernel: uhub1: Broadcom product 0x3535, class 9/0, rev 2.00/1.00, addr 3
Nov 18 01:55:35 kernel: uhub1: 3 ports with 0 removable, bus powered
Nov 18 01:55:35 kernel: ubt0: Broadcom Corp Bluetooth Transceiver, rev 1.10/1.00, addr 4
Nov 18 01:55:35 kernel: ubt0: Broadcom Corp Bluetooth Transceiver, rev 1.10/1.00, addr 4
Nov 18 01:55:35 kernel: ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
Nov 18 01:55:35 kernel: ubt0: Interface 1 (alt.config 4) endpoints: isoc-in=0x83, isoc-out=0x3; wMaxPacketSize=64; nframes=5, buffer size=320
Nov 18 01:55:35 kernel: ukbd0: Broadcom product 0x0099, rev 1.10/1.00, addr 5, iclass 3/1
Nov 18 01:55:35 kernel: kbd1 at ukbd0
Nov 18 01:55:35 kernel: ums1: Broadcom product 0x0097, rev 1.10/1.00, addr 6, iclass 3/1
Nov 18 01:55:35 kernel: ums1: 3 buttons


C - usbdevs -v -d shows:

Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), VIA(0x0000),rev 1.00
uhub0
port 1 addr 2: low speed, power 100 mA, config 1, USB Optical Mouse(0x0006), A4Tech(0x09da), rev 0.01
ums0
port 2 addr 3: full speed, power 100 mA, config 1, product 0x3535(0x3535), Broadcom(0x0a5c), rev 1.00
uhub1
port 1 addr 4: full speed, self powered, config 1, Bluetooth Transceiver(0x200a), Broadcom Corp(0x0a5c), rev 1.00
ubt0
port 2 addr 5: full speed, self powered, config 1, product 0x0099(0x0099), Broadcom(0x0a5c), rev 1.00
ukbd0
port 3 addr 6: full speed, self powered, config 1, product 0x0097(0x0097), Broadcom(0x0a5c), rev 1.00
ums1

AFTER «/etc/rc.bluetooth start ubt0» that turns into:

Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), VIA(0x0000),rev 1.00
uhub0
port 1 addr 2: low speed, power 100 mA, config 1, USB Optical Mouse(0x0006), A4Tech(0x09da), rev 0.01
ums0
port 2 addr 3: full speed, power 100 mA, config 1, product 0x3535(0x3535), Broadcom(0x0a5c), rev 1.00
uhub1
port 1 addr 4: full speed, self powered, config 1, Bluetooth Transceiver(0x200a), Broadcom Corp(0x0a5c), rev 1.00
ubt0
port 2 powered
port 3 powered


*********************************
Just for the sake of argument and because eventually it might be helpful to someone, this is what I did next following the instructions found here:

and here:

*********************************


D - Started the stack and found my dongle address to be 00:03:c9:34:d1:f5:
# /etc/rc.bluetooth start ubt0
BD_ADDR: 00:03:c9:34:d1:f5
Features: 0xff 0xff 0xd 0x38 0x8 0x8 00 00
<3-Slot> <5-Slot>




Max. ACL packet size: 377 bytes
Number of ACL packets: 10
Max. SCO packet size: 16 bytes
Number of SCO packets: 0


E - With bluetooth on on the mobile, set to be in «receptive mode»,
I found the mobile phone address to be 00:0e:07:e4:55:f7:
# hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
BD_ADDR: 00:0e:07:e4:55:f7
Page Scan Rep. Mode: 0x1
Page Scan Period Mode: 00
Page Scan Mode: 00
Class: 52:02:04
Clock offset: 0x4756
Inquiry complete. Status: No error [00]



F - Checked that the PC was able to get the name the phone was reporting
# hccontrol -n ubt0hci remote_name_request 00:0e:07:e4:55:f7
BD_ADDR: 00:0e:07:e4:55:f7
Name: K700i


G - Checked that the PC was able to connect to the mobile
# hccontrol -n ubt0hci create_connection 00:0e:07:e4:55:f7
BD_ADDR: 00:0e:07:e4:55:f7
Connection handle: 6
Encryption mode: Disabled [0]


H - Checked that the connection was properly listed
# hccontrol -n ubt0hci read_connection_list
Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State
00:0e:07:e4:55:f7 6 ACL 0 MAST NONE 0 0 OPEN


I - Tested the quality of the connection
# hccontrol -n ubt0hci get_link_quality 6
Connection handle: 6
Link quality: 255



F - Checked the PC was able to terminate the connection
# hccontrol -n ubt0hci disconnect 6
Connection handle: 6
Reason: Connection terminated by local host [0x16]



G - Pinged the phone just for the sake of it.
# l2ping -a 00:0e:07:e4:55:f7
0 bytes from 00:0e:07:e4:55:f7 seq_no=0 time=30164.356 ms result=0x22
0 bytes from 00:0e:07:e4:55:f7 seq_no=1 time=5142.148 ms result=0x4
0 bytes from 00:0e:07:e4:55:f7 seq_no=2 time=2678.448 ms result=0
0 bytes from 00:0e:07:e4:55:f7 seq_no=3 time=23.042 ms result=0
0 bytes from 00:0e:07:e4:55:f7 seq_no=4 time=21.016 ms result=0
0 bytes from 00:0e:07:e4:55:f7 seq_no=5 time=19.766 ms result=0
0 bytes from 00:0e:07:e4:55:f7 seq_no=6 time=27.627 ms result=0
0 bytes from 00:0e:07:e4:55:f7 seq_no=7 time=27.354 ms result=0
0 bytes from 00:0e:07:e4:55:f7 seq_no=8 time=21.189 ms result=0
0 bytes from 00:0e:07:e4:55:f7 seq_no=9 time=20.949 ms result=0
0 bytes from 00:0e:07:e4:55:f7 seq_no=10 time=19.870 ms result=0



H - I then made sure the addresses were translated to easier to use names by editing:

/etc/bluetooth/hosts
00:03:c9:34:d1:f5 PCNAME # Localhost
00:0e:07:e4:55:f7 K700i # K700i




I - And made sure hcsecd would know about the phone

/etc/bluetooth/hcsecd.conf
device {
bdaddr 00:0e:07:e4:55:f7;
name ""K700i"";
key nokey;
pin ""1234"";
}


J - Started hcsecd with «verbose» mode in console
# hcsecd -d


K - I then paired the devices (from phone). The following info showed up:

hcsecd[1406]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 00:0e:07:e4:55:f7
hcsecd[1406]: Found matching entry, remote bdaddr 00:0e:07:e4:55:f7, name 'K700i', PIN code exists
hcsecd[1406]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 00:0e:07:e4:55:f7
hcsecd[1406]: Got Link_Key_Notification event from 'ubt0hci', remote bdaddr 00:0e:07:e4:55:f7
hcsecd[1406]: Updating link key for the entry, remote bdaddr 00:0e:07:e4:55:f7,name 'K700i', link key exists


I - The phone shows the PC reporting Push Object support.


J - Finaly I checked the services available in the phone from the PC:

# sdpcontrol -a K700i browse

Record Handle: 0x00010000
Service Class ID List:
Dial-Up Networking (0x1103)
Generic Networking (0x1201)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 1
Bluetooth Profile Descriptor List:
Dial-Up Networking (0x1103) ver. 1.0

Record Handle: 0x00010002
Service Class ID List:
Headset Audio Gateway (0x1112)
Generic Audio (0x1203)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 4
Bluetooth Profile Descriptor List:
Headset (0x1108) ver. 1.0

Record Handle: 0x00010003
Service Class ID List:
Serial Port (0x1101)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 2

Record Handle: 0x00010004
Service Class ID List:
Serial Port (0x1101)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 3

Record Handle: 0x00010005
Service Class ID List:
OBEX Object Push (0x1105)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 6
OBEX (0x0008)
Bluetooth Profile Descriptor List:
OBEX Object Push (0x1105) ver. 1.0

Record Handle: 0x00010006
Service Class ID List:
IrMC Sync (0x1104)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 8
OBEX (0x0008)
Bluetooth Profile Descriptor List:
IrMC Sync (0x1104) ver. 1.0

Record Handle: 0x0001000a
Service Class ID List:
Imaging Responder (0x111b)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 9
OBEX (0x0008)
Bluetooth Profile Descriptor List:
Imaging (0x111a) ver. 1.0

Record Handle: 0x0001000d
Service Class ID List:
OBEX File Transfer (0x1106)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 7
OBEX (0x0008)
Bluetooth Profile Descriptor List:
OBEX File Transfer (0x1106) ver. 1.0

Record Handle: 0x0001000e
Service Class ID List:
Handsfree Audio Gateway (0x111f)
Generic Audio (0x1203)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 5
Bluetooth Profile Descriptor List:
Handsfree (0x111e) ver. 1.1

Record Handle: 0x00010018
Service Class ID List:
0xee000058-0002-8000-1000-000000000002
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 15
OBEX (0x0008)

Record Handle: 0x0001001b
Service Class ID List:
PNP Information (0x1200)

Record Handle: 0x0001001c
Service Class ID List:
Human Interface Device (0x1124)
Protocol Descriptor List:
L2CAP (0x0100)
Protocol specific parameter #1: u/int/uuid16 17
HIDP (0x0011)
Bluetooth Profile Descriptor List:
Human Interface Device (0x1124) ver. 1.0


I have yet to try the rest of the stuff.



*****************************************************************
EXTRA INFO (shown at boot time with different scenarios):
*****************************************************************

I - With NO ng_ubt_load=""YES"" in /boot/load.conf and with USB mouse plugged in:

Nov 18 00:52:56 kernel: uhci0: port 0x1800-0x181f irq 5 at device 7.2 on pci0
Nov 18 00:52:56 kernel: uhci0: [GIANT-LOCKED]
Nov 18 00:52:56 kernel: usb0: on uhci0
Nov 18 00:52:56 kernel: usb0: USB revision 1.0
Nov 18 00:52:56 kernel: uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
Nov 18 00:52:56 kernel: uhub0: 2 ports with 2 removable, self powered
Nov 18 00:52:56 kernel: ums0: A4Tech USB Optical Mouse, rev 1.10/0.01, addr 2, iclass 3/1
Nov 18 00:52:56 kernel: ums0: 7 buttons and Z dir.
Nov 18 00:52:56 kernel: uhub1: Broadcom product 0x3535, class 9/0, rev 2.00/1.00, addr 3
Nov 18 00:52:56 kernel: uhub1: 3 ports with 0 removable, bus powered
Nov 18 00:52:56 kernel: ugen0: Broadcom Corp Bluetooth Transceiver, rev 1.10/1.00, addr 4
Nov 18 00:52:56 kernel: ukbd0: Broadcom product 0x0099, rev 1.10/1.00, addr 5, iclass 3/1
Nov 18 00:52:56 kernel: kbd1 at ukbd0
Nov 18 00:52:56 kernel: ums1: Broadcom product 0x0097, rev 1.10/1.00, addr 6, iclass 3/1
Nov 18 00:52:56 kernel: ums1: 3 buttons


II - With NO ng_ubt_load=""YES"" in /boot/load.conf and no USB mouse plugged in

Nov 18 01:09:31 kernel: uhci0: port 0x1800-0x181f irq 5 at device 7.2 on pci0
Nov 18 01:09:31 kernel: uhci0: [GIANT-LOCKED]
Nov 18 01:09:31 kernel: usb0: on uhci0
Nov 18 01:09:31 kernel: usb0: USB revision 1.0
Nov 18 01:09:31 kernel: uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
Nov 18 01:09:31 kernel: uhub0: 2 ports with 2 removable, self powered
Nov 18 01:09:31 kernel: uhub1: Broadcom product 0x3535, class 9/0, rev 2.00/1.00, addr 2
Nov 18 01:09:31 kernel: uhub1: 3 ports with 0 removable, bus powered
Nov 18 01:09:31 kernel: ugen0: Broadcom Corp Bluetooth Transceiver, rev 1.10/1.00, addr 3
Nov 18 01:09:31 kernel: ukbd0: Broadcom product 0x0099, rev 1.10/1.00, addr 4, iclass 3/1
Nov 18 01:09:31 kernel: kbd1 at ukbd0
Nov 18 01:09:31 kernel: ums0: Broadcom product 0x0097, rev 1.10/1.00, addr 5, iclass 3/1
com product 0x3535, class 9/0, rev 2.00/1.00, addr 2
Nov 18 01:09:31 kernel: uhub1: 3 ports with 0 removable, bus powered
Nov 18 01:09:31 kernel: ugen0: Broadcom Corp Bluetooth Transceiver, rev 1.10/1.00, addr 3
Nov 18 01:09:31 kernel: ukbd0: Broadcom product 0x0099, rev 1.10/1.00, addr 4, iclass 3/1
Nov 18 01:09:31 kernel: kbd1 at ukbd0
Nov 18 01:09:31 kernel: ums0: Broadcom product 0x0097, rev 1.10/1.00, addr 5, iclass 3/1
Nov 18 01:09:31 kernel: ums0: 3 buttons


III - WITH ng_ubt_load=""YES"" in /boot/load.conf and NO USB mouse

Nov 18 01:16:19 kernel: uhci0: port 0x1800-0x181f irq 5 at device 7.2 on pci0
Nov 18 01:16:19 kernel: uhci0: [GIANT-LOCKED]
Nov 18 01:16:19 kernel: usb0: on uhci0
Nov 18 01:16:19 kernel: usb0: USB revision 1.0
Nov 18 01:16:19 kernel: uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
Nov 18 01:16:19 kernel: uhub0: 2 ports with 2 removable, self powered
Nov 18 01:16:19 kernel: uhub1: Broadcom product 0x3535, class 9/0, rev 2.00/1.00, addr 2
Nov 18 01:16:19 kernel: uhub1: 3 ports with 0 removable, bus powered
Nov 18 01:16:19 kernel: ubt0: Broadcom Corp Bluetooth Transceiver, rev 1.10/1.00, addr 3
Nov 18 01:16:19 kernel: ubt0: Broadcom Corp Bluetooth Transceiver, rev 1.10/1.00, addr 3
Nov 18 01:16:19 kernel: ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
Nov 18 01:16:19 kernel: ubt0: Interface 1 (alt.config 4) endpoints: isoc-in=0x83, isoc-out=0x3; wMaxPacketSize=64; nframes=5, buffer size=320
Nov 18 01:16:19 kernel: ukbd0: Broadcom product 0x0099, rev 1.10/1.00, addr 4, iclass 3/1
Nov 18 01:16:19 kernel: kbd1 at ukbd0
Nov 18 01:16:19 kernel: ums0: Broadcom product 0x0097, rev 1.10/1.00, addr 5, iclass 3/1
Nov 18 01:16:19 kernel: ums0: 3 buttons
"