viernes, 16 de noviembre de 2007

Bluetooth USB ES-388, no funciona bien en Linux.


El muy económico y publicitado ES-388 que viene con un CD con los driver de BlueSolei para Win98/WinXP/Vista. Aunque en algunos sitios se hace propaganda que es compatible con Linux, pues NO, no funciona bien en Linux. Cuando uno lo conecta y levanta los demonios de BlueZ, ya comenzamos mal el BD-Adress es una dirección no permitida.

# sudo /usr/sbin/hciconfig
hci0: Type: USB
BD Address: 11:11:11:11:11:11 ACL MTU: 672:3
SCO MTU: 48:1
UP RUNNING PSCAN ISCAN
RX bytes:2723942 acl:0 sco:53400 events:16
errors:0
TX bytes:313 acl:0 sco:0 commands:16 errors:0

La 11:11:11:11:11:11 (en hexadecimal). Si bien se puede conectar con casi todos los celulares y descubrir sus prestaciones.

# hcitool scan
Scanning ...
00:19:B7:97:65:C8 Nokia 5200


Acá detectó el Nokia 5200 y con esto descubrimos sus prestaciones... (las del celu)

# sdptool records 00:19:B7:97:65:C8
Service Name: Dial-up networking
Service RecHandle: 0x10000
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201
........
.........

Y se puede hacer un ping al celu..

$ hcitool cc 00:19:B7:97:65:C8
$ sudo l2ping 00:19:B7:97:65:C8
Ping: 00:19:B7:97:65:C8 from 11:11:11:11:11:11 (data size 44) ...
0 bytes from 00:19:B7:97:65:C8 id 0 time 11.49ms
0 bytes from 00:19:B7:97:65:C8 id 1 time 8.40ms
0 bytes from 00:19:B7:97:65:C8 id 2 time 9.11ms
0 bytes from 00:19:B7:97:65:C8 id 3 time 23.14ms
0 bytes from 00:19:B7:97:65:C8 id 4 time 23.80ms

Cuando se intenta conectarse al teléfono aún eliminando toda medida de segurirad no es posible.

$ obexftp -b 00:19:B7:97:65:C8 -B 10 -l
Browsing 00:19:B7:97:65:C8 ...
Channel: 10
Connecting...failed: connect

Y aparece un error impreso en dmseg a razón de 500 por segundo...

hci_scodata_packet: hci0 SCO packet for unknown connection handle 92
hci_scodata_packet: hci0 SCO packet for unknown connection handle 92
hci_scodata_packet: hci0 SCO packet for unknown connection handle 92


El motivo, una incompatibilidad en el módulo hci_usb.ko, según este reporte:
-----------------
I bought a bluetooth dongle from BlueSoleil (or compatible with). It kept flooding syslog with this message:

hci_scodata_packet: hci0 SCO packet for unknown connection handle 92

I found references [1,2] to that bug related to the same device (or a similar one with the same idVendor and idProduct) as well as to other devices. I patched hci_usb.c in the same way others did for other devices, and it also worked for this one. The hardware from RTX Telecom is simply buggy. Even the new DONGLE has this problem.

>lsusb

Bus 001 Device 004: ID 0e5e:6622

>uname -a
Linux dave-laptop 2.6.22-9-generic #1 SMP Wed Aug 1 17:31:10 GMT 2007
i686 GNU/Linux

>dmesg
-----SNIP----
[37829.836000] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92
[37829.836000] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92
[37829.836000] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92
[37829.844000] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92
[37829.844000] hci_scodata_packet: hci0 SCO packet for unknown connection handle 92
----SNIP-----


El parche sugerido que no he probado todavía es:

-----------------------------
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c
index d73eb10..963c014 100644
--- a/drivers/bluetooth/hci_usb.c
+++ b/drivers/bluetooth/hci_usb.c
@@ -124,8 +124,9 @@ static struct usb_device_id blacklist_id
/* ISSC Bluetooth Adapter v3.1 */
{ USB_DEVICE(0x1131, 0x1001), .driver_info = HCI_RESET },

- /* RTX Telecom based adapter with buggy SCO support */
+ /* RTX Telecom based adapters with buggy SCO support */
{ USB_DEVICE(0x0400, 0x0807), .driver_info = HCI_BROKEN_ISOC },
+ { USB_DEVICE(0x0400, 0x080a), .driver_info = HCI_BROKEN_ISOC },

/* Belkin F8T012 and F8T013 devices */
{ USB_DEVICE(0x050d, 0x0012), .driver_info = HCI_WRONG_SCO_MTU },
---------------------------

Ahora llama la atención que este parche fue publicado con mucho tiempo de antelación, sin embargo todavía no se ha oficializado y sigue siendo imposible usar este adaptador en Linux.

5 comentarios:

Pablo J. dijo...

Estimado habra probado el parche ya que tengo ese drama, me funciona pero se me preducen intermitencia ya que lo tengo conectado a asterisk y estoy usandolo como una especie de celulink pero en algunos caso me aparece ese error en el messages del centos y asterisk Trunk.

Lo otro que en ultimo caso no tengo problema en aplicarlo y probarlo yo pero no se como parcharlo haber si me ayudas un poco y asi sabemos si es real el parche.

Saludos.

Dementor dijo...

No todavía no lo he probado ya que voy a cambiar por D-Link DBT-120, solo basta que alguien me confirme que anda sin problemas en Linux.

Respecto a Parchear parte de códico, los pasos son los siguiente:

1- Copiá el código en un archivo ASCII

2- Te vas al directorio donde está ubicado el código fuente hci_usb.c y copias el archivo con el código del parche

3- patch −p1 <../nombre_del_parche fijate en el man patch, porque -px es la profundidad del parche.

4- recompilá solo el módulo afectado no todos...

Saludos, y comentá si te funcionó.

Anyeos dijo...

Yo sí apliqué el parche y se solucionó el problema del mensaje molesto en syslog pero después de como 10 minutos funcionando deja de encontrar dispositivos. Es decir: hago un hcitool scan o hcitool inq y no encuentra nada. No sé qué pasa porque en Windows parece que anda bien. Lo que pasa que por más que en Windows parezca que anda bien yo lo necesito andando en Linux de una forma especial corriendo en un demonio que hace escaneos a cada momento. No sé si el dispositivo queda muy cargado y deja de responder o qué pasa. El asunto es que luego de un tiempo no encuentra más nada por más que le haga un hciconfig down y luego un hciconfig up de nuevo. Yo no sé qué falla, si el dispositivo o el software. Me tiro más para el software que de paso podría inclusive (aunque el dispositivo falle) solventar el problema.
Saludos.

Anónimo dijo...

PERDON, PERO EN EL BLISTER LEO: "WI-FI USB ADAPTER" Y NO BLUETOOH... O SEA QUE CREO Q ESTAS TRATANDO DE UTILIZAR UNA CONEXION BUE TOOH CON UN APARATE DE RED DE WIFI.

Dementor dijo...

Nop... es un dongle así que el que leyó mal sos vos...