User loginНа сайте
3g
asus
aveo
bit
bluetooth
canon
cms
crypt
d-link
dd-wrt
ddos
deb
debian
drupal
ericsson
exim
flash
g505s
gprs
gpt
grub
gsm
hdd
huawei
ifconfig
javascript
jQuery
k800i
kvm
libvirt
linux
m51tr
mac
mdadm
modem
mustek
myisam
mysql
mysqli
mysqlnd
mysqltuner
nginx
openvpn
parted
PEOPLEnet
php
powermust
pppd
pptp
pro57t
proxmox
raid
rescue
router
rsync
samsung
sony
squeeze
subversion
ups
usb
video
virsh
vpn
wifi
windows
x50n
xorg
МТС
авто
аудио
железо
книги
незаконченное
новый
покупка
разработка
сайт
сканер
телефон
|
Настройка Bluetooth в Debian GNU/Linux 5.0 "Lenny"Всё началось с того, что пропал интернет :) andrew@newstar:~$ lsusb Bus 002 Device 002: ID 0a48:5014 I/O Interconnect Mass Storage Device Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub andrew@newstar:~$ Только вот даже при установленных ранее bluez-utils и стандартном ядре из дистрибутива подключение настроено не было, а в /var/log/kernel.log и /var/log/syslog после присоединения адаптера сыпалось очень много сообщений об ошибках: Feb 22 23:51:49 newstar kernel: [24980.359767] Bluetooth: HCI USB driver ver 2.9 Feb 22 23:51:49 newstar kernel: [24980.359767] usbcore: registered new interface driver hci_usb Feb 22 23:52:07 newstar kernel: [24998.638066] usb 2-5: new full speed USB device using ohci_hcd and address 7 Feb 22 23:52:07 newstar kernel: [24998.840514] usb 2-5: configuration #1 chosen from 1 choice Feb 22 23:52:07 newstar kernel: [24998.846267] usb 2-5: New USB device found, idVendor=0a12, idProduct=0001 Feb 22 23:52:07 newstar kernel: [24998.846273] usb 2-5: New USB device strings: Mfr=0, Product=0, SerialNumber=0 Feb 22 23:52:46 newstar kernel: [25038.857528] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar last message repeated 2 times Feb 22 23:52:46 newstar kernel: [25038.867195] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.867204] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.867207] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.876347] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.876359] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.876361] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.886327] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.886334] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.886337] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:46 newstar kernel: [25038.886339] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.896324] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.896335] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.896338] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.905574] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.905584] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.905587] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.915577] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.915588] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.915591] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.915593] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.925580] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.925589] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.925591] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.935577] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.935588] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.935591] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Feb 22 23:52:47 newstar kernel: [25038.945577] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92 Что любопытно, ошибки появлялись только при запущеном hcid Погуглив немного по интернету решил внести правки в модуль ядра и подложить вместо дистрибутивного. На помощь пришло не руководство по сборке нового ядра, а Руководство по сборке пакета официального ядра Debian, потому что нужно было максимальное соответствие с оригинальным дистрибутивным (практически - правки в модуль дистрибутивного ядра) andrew@newstar:~$ apt-get source linux-image-2.6.26-2-686 andrew@newstar:~$ apt-get build-dep linux-image-2.6.26-2-686 andrew@newstar:~$ apt-get install fakeroot build-essential andrew@newstar:~$ cd linux-2.6-2.6.26 andrew@newstar:~/linux-2.6-2.6.26$ fakeroot make -f debian/rules.gen setup_i386_none_686 После этого вносим в drivers/bluetooth/hci_usb.c следующие правки: --- drivers/bluetooth/hci_usb.c.orig 2008-07-14 00:51:29.000000000 +0300 +++ drivers/bluetooth/hci_usb.c 2009-02-22 21:53:18.000000000 +0200 @@ -105,7 +105,8 @@ static struct usb_device_id blacklist_ids[] = { /* CSR BlueCore devices */ - { USB_DEVICE(0x0a12, 0x0001), .driver_info = HCI_CSR }, + //{ USB_DEVICE(0x0a12, 0x0001), .driver_info = HCI_CSR }, + { USB_DEVICE(0x0a12, 0x0001), .driver_info = HCI_BROKEN_ISOC }, /* Broadcom BCM2033 without firmware */ { USB_DEVICE(0x0a5c, 0x2033), .driver_info = HCI_IGNORE }, Вообще-то непонятно что за чёрный список и зачем он нужен, и почему в отдельную категорию выделены кстройства от Cambridge Silicon Radio, Ltd ... Если необходима дополнительная конфигурация ядра перед сборкой - можно перейти в каталог debian/build/build_i386_none_686 и запустить там make menuconfig, после чего для продолжения работы вернуться в основной каталог cd ../../.. (правда, в таком случае трудно гарантировать совместимость модулей) andrew@newstar:~/linux-2.6-2.6.26$ fakeroot make -f debian/rules.gen binary-arch_i386_none_686 binary-indep DEBIAN_KERNEL_JOBS=${NR_CPUS} Псле сборки модуль можно смело подкладывать вместо дистрибутивного - разницы ядро не заметит :) Далее пошли танцы с настройкой bluetooth-соединения: newstar:/var/log# hcitool scan Device is not available: No such device newstar:/var/log# Ничего нет. Попробуем сконфигурировать: newstar:/var/log# 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 newstar:/var/log# hciconfig hci0 up newstar:/var/log# hciconfig hci0: Type: USB BD Address: 00:15:83:15:B1:53 ACL MTU: 672:4 SCO MTU: 48:1 UP RUNNING RX bytes:342 acl:0 sco:0 events:10 errors:0 TX bytes:35 acl:0 sco:0 commands:10 errors:0 newstar:/var/log# hcitool scan Scanning ... 00:1D:28:B3:7C:84 Andrew K800i newstar:/var/log# Таки - Да! :) newstar:/var/log# l2ping 00:1D:28:B3:7C:84 Ping: 00:1D:28:B3:7C:84 from 00:15:83:15:B1:53 (data size 44) ... 44 bytes from 00:1D:28:B3:7C:84 id 0 time 20.90ms 44 bytes from 00:1D:28:B3:7C:84 id 1 time 22.90ms 44 bytes from 00:1D:28:B3:7C:84 id 2 time 26.90ms ^C3 sent, 3 received, 0% loss newstar:/var/log# Теперь смотрим что и как он поддерживает newstar:/var/log# sdptool browse 00:1D:28:B3:7C:84 Browsing 00:1D:28:B3:7C:84 ... Service Description: Sony Ericsson K800 Service RecHandle: 0x10000 Service Class ID List: "PnP Information" (0x1200) Service Name: OBEX SyncML Client Service RecHandle: 0x10001 Service Class ID List: UUID 128: 00000002-0000-1000-8000-0002ee000002 Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 "OBEX" (0x0008) Service Name: Dial-up Networking Service RecHandle: 0x10002 Service Class ID List: "Dialup Networking" (0x1103) "Generic Networking" (0x1201) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 2 Profile Descriptor List: "Dialup Networking" (0x1103) Version: 0x0100 Service Name: Serial Port Service RecHandle: 0x10003 Service Class ID List: "Serial Port" (0x1101) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 3 Service Name: PAN Network Access Point Service Description: NAP provides access to internet for one connecting PANu Service RecHandle: 0x10008 Service Class ID List: "Network Access Point" (0x1116) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 15 "BNEP" (0x000f) Version: 0x0100 SEQ8: 0 6 dd Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Network Access Point" (0x1116) Version: 0x0100 Service Name: Hands-Free Gateway Service RecHandle: 0x10009 Service Class ID List: "Handsfree Audio Gateway" (0x111f) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 4 Profile Descriptor List: "Handsfree" (0x111e) Version: 0x0105 Service Name: Headset Gateway Service RecHandle: 0x1000a Service Class ID List: "Headset Audio Gateway" (0x1112) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 5 Profile Descriptor List: "Headset" (0x1108) Version: 0x0100 Service Name: OBEX Object Push Service RecHandle: 0x1000b Service Class ID List: "OBEX Object Push" (0x1105) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 6 "OBEX" (0x0008) Profile Descriptor List: "OBEX Object Push" (0x1105) Version: 0x0100 Service Name: OBEX File Transfer Service RecHandle: 0x1000c Service Class ID List: "OBEX File Transfer" (0x1106) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 7 "OBEX" (0x0008) Profile Descriptor List: "OBEX File Transfer" (0x1106) Version: 0x0100 Service Name: OBEX IrMC Sync Server Service RecHandle: 0x1000d Service Class ID List: "IrMC Sync" (0x1104) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 8 "OBEX" (0x0008) Profile Descriptor List: "IrMC Sync" (0x1104) Version: 0x0100 Service Name: HID Mouse & Keyboard Service Description: Remote Control of PC applications and other devices Service Provider: Sony Ericsson Service RecHandle: 0x1000e Service Class ID List: "Human Interface Device" (0x1124) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 17 "HIDP" (0x0011) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Human Interface Device" (0x1124) Version: 0x0100 Service Name: OBEX Phonebook Server Service RecHandle: 0x10010 Service Class ID List: "Phonebook Access - PSE" (0x112f) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 9 "OBEX" (0x0008) Profile Descriptor List: "Phonebook Access - PSE" (0x112f) Version: 0x0100 Из ответа выше видно что Dialup Networking находится в канале 2 (Channel 2). Будем использовать эту информацию при подключении с помощью rfcomm: newstar:~# rfcomm connect rfcomm0 00:1D:28:B3:7C:84 В ответ на эту команду телефон проинформирует о попытке подключения и запросит пароль (1234), после чего с большой вероятностью не примет его. И при последующих попытках - то же самое :) newstar:/var/log# rfcomm connect rfcomm0 00:1D:28:B3:7C:84 Can't connect RFCOMM socket: Connection refused newstar:/var/log# rfcomm connect rfcomm0 00:1D:28:B3:7C:84 Can't connect RFCOMM socket: Connection refused newstar:/var/log# Лечится запуском в другом окне волшебной программы passkey-agent из /usr/share/doc/bluez-utils/examples во время запрса пароля на телефоне newstar:/etc/bluetooth# /usr/share/doc/bluez-utils/examples/passkey-agent 1234 Passkey request for device 00:1D:28:B3:9A:51 ^Cnewstar:/etc/bluetooth# ( categories: )
|