Teléfonos móviles y Bluetooth

Aqui van los manuales sobre bluetooth.

Cómo conectar un Nokia 3220 y similares en Mandriva Spring 2007

Por fin puedo acceder en Linux a las fotos que tomo con él ¡Chao windows! :-P

Nokia 3220

Cable DKU-5 Serial-to-USB (puerto serie a USB)

  1. Conectar el teléfono a la PC
    Tenemos que ver si el sistema lo detecta y que carguen los módulos y drivers respectivos que, en general, ya vienen incluidos con Mandriva Linux. Para ellos vemos qué nos dicen los comandos dmesg y lsusb, como root:

    [root@sempron danny]# dmesg
    usb 4-2: new full speed USB device using uhci_hcd and address 2
    usb 4-2: configuration #1 chosen from 1 choice
    usbcore: registered new driver usbserial
    drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
    usbcore: registered new driver usbserial_generic
    drivers/usb/serial/usb-serial.c: USB Serial Driver core
    drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
    pl2303 4-2:1.0: pl2303 converter detected
    usb 4-2: pl2303 converter now attached to ttyUSB0
    usbcore: registered new driver pl2303
    drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver
    [root@sempron danny]# lsusb
    Bus 005 Device 001: ID 0000:0000
    Bus 004 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
    Bus 004 Device 001: ID 0000:0000
    Bus 003 Device 001: ID 0000:0000
    Bus 002 Device 001: ID 0000:0000
    Bus 001 Device 001: ID 0000:0000

    Todo bien hasta aquí, el cable y el celular son detectados y los datos arriba nos servirán para buscar más detalles en Google por si lo necesitamos.

  2. Instalar Gammu vía URPMI. Facilísimo.
    [root@sempron danny]# urpmi gammu
    To satisfy dependencies, the following package is going to be installed:
    gammu-1.09.00-1mdv2007.1.i586
    libgammu0.0-1.09.00-1mdv2007.1.i586
    Proceed with the installation of the 2 packages? (3 MB) (Y/n) y
    
        ftp://ftp.free.fr/pub/Distributions_Linux/MandrivaLinux/official/2007.1/...
    contrib/release/libgammu0.0-1.09.00-1mdv2007.1.i586.rpm
        ftp://ftp.free.fr/pub/Distributions_Linux/MandrivaLinux/official/2007.1/...
    contrib/release/gammu-1.09.00-1mdv2007.1.i586.rpm
    installing libgammu0.0-1.09.00-1mdv2007.1.i586.rpm gammu-1.09.00-1mdv2007.1.i586.rpm from /var/cache/urpmi/rpms
    Preparing...                     #############################################
          1/2: libgammu0.0           #############################################
          2/2: gammu                 #############################################
    [root@sempron danny]

    Ahora tenemos que configurarlo. Ya sin root creamos en huestro home un simple archivo de texto llamado .gammurc y en él agregamos (con Kwrite, Midnight Commander, Gedit o lo que sea) estas líneas:

    [gammu]
     port=/dev/ttyUSB0
     connection=dlr3
     name=gammu

    Vamos a comprobar que Gammu reconozca el teléfono y el modelo con el siguiente comando:

    [danny@sempron ~]$ /usr/bin/gammu --identify
    Manufacturer  : Nokia
    Model         : 3220 (RH-49)
    Firmware      : 05.10 I (07-09-05)
    Hardware      : 6203
    IMEI          : 359359009758415
    Original IMEI : 359359/00/975841/5
    Manufactured  : 07/2006
    Product code  : 0532577
    UEM           : 400

    Hasta aquí todo perfecto. Ahora viene lo mejor :-)

  3. Descargar las fotos del Nokia 3220 a la PC

    Tenemos que ver ahora en qué directorio de la memoria del celular están almacenadas las fotos. Para esto el comando es:
    gammu --getfilesystem -flatall

    Saldrá una lista muy larga (demasiado como para pegarlo aquí), toma su tiempo así que hay que ser pacientes. Debemos identificar dónde estan las fotos que, en mi caso, los nombres las asigna automáticamte el teléfono como Imagen000.jpg, Imagen001.jpg y así sucesivamente. El directorio dónde están se llama d:/predefgallery/predefphotos/

    El comando para pasarlas a nuestro home es
    gammu --getfilefolder d:/predefgallery/predefphotos

    [danny@sempron ~]$ /usr/bin/gammu --getfilefolder d:/predefgallery/predefphotos
    
    Getting "Imagen001.jpg"
      100 percent
      Saving to Imagen001.jpg
    Getting "Imagen000.jpg"
      100 percent
      Saving to Imagen000.jpg
    [danny@sempron ~]

    Aquí una muestra:

    Este modelo toma fotos a una cálidad básica, como una webcam: 640x480 300K
    Como para salir del apuro está bien, para cosas serias uso la cámara digital ;-)

¡Y eso es todo amigos!
Guía en la que me basé.

Cómo configuré un dispositivo USB Bluetooth y lo usé exitosamente con dos celulares

La verdad, no hay mucho que explicar. Yo, hasta el momento en que Jesuán (mi amigo) me dió ese Bluetooth, jamás había usado esa tecnología.

Lo primero que hice fue enchufar el Bluetooth al puerto USB. Nada ocurre. Ni ventanas de notificación ni nada.

Acto seguido, como no tenía idea que hacer me fui a RPMDrake y en la búsqueda escribí "bluetooth".

De los resultados obtenidos, instalé el paquete kdebluetooth con sus correspondientes dependiencias. Aclaro que estos paquetes están disponibles en el DVD Free. Yo no tengo conexión a internet, pero todo estuvo disponible sin problemas.

Una vez instalado, lancé la aplicación kbtobexclient (que está en la categoría RED), que es la aplicación mediante la cual envío archivos a los teléfonos.

En la interfaz de esta aplicación hay un botón que dice "Search". Le di click y ahí estaban listados los dos teléfonos celulares.

No hice nada mas (lo juro). La ventana de la aplicación está dividida en tres partes:

* Una ocupa la mitad superior (se puede redimensionar arrastrando el borde con el mouse); y sirve para navegar tu PC.

La mitad inferior se divide nuevamente a la mitad:

* La mitad izquierda tiene listados los dispositivos detectados.
* La mitad derecha es donde se sueltan los elementos que se quieren transferir al teléfono. Se maneja "arrastrando y soltando". Se puede arrastrar elementos desde la mitad superior o desde cualquier ventana de navegación de archivos (como Konqueror).

Una vez que se han soltado los elementos, se presiona el botón "Send" y el celular se ilumina preguntando si se acepta el elemento entrante.

Cuando alguien envía un elemento desde el celular hacia la PC, aparece una pequeña ventana de notificación, que pregunta si se acepta o no el elemento entrante; y también en que carpeta depositarlo. Muy sencillo.

Los teléfonos celulares con los que se llevó a cabo este "experimento" son:

* Sony Ericsson W 300i
* Nokia N73

Con respecto a la marca del dispositivo Bluetooth, no tiene impresa ninguna. A pesar de que la carcaza es transparente, los componentes no muestran ninguna marca. Lo que sí puedo detallar es lo siguiente:

Al ir a MCC --> Hardware --> Examinar y configurar el hardware con mi pequeño dispositivo Bluetooth conectado al puerto USB; antes de listar nada, aparece una pequeña ventana en la parte superior izquierda que dice Detección en progreso.

A los pocos segundos esta ventana desaparece y aparece otra que me pide instalar el paquete gnome-bluetooth (¿será esto porque además de KDE, que es mi escritorio por defecto y desde donde estoy haciendo todo este experimento, tengo instalado Gnome?). Le doy y ahora sí, me lista todo el hardware, incluído mi Bluetooth USB.

La información listada en este apartado (Drakconf --> Hardware --> Examinar y configurar el Hardware --> Hardware detectado --> Dispositivos Bluetooth --> ISSCBTA) es:

Identificación
Fabricante: ‎Desconocido

Descripción: ‎ISSCBTA

Clase de soporte: ‎Wireless|Radio Frequency|Bluetooth

Conexión
Bus: ‎USB

Bus PCI nº: ‎1

Dispositivo PCI nº: ‎3

ID del fabricante: ‎0x1131

ID del dispositivo: ‎0x1001

Sub-ID del fabricante: ‎0x0000

Sub-ID del dispositivo: ‎0x0000

Varios
Módulo: ‎hci_usb

Por su parte, KInfoCenter (KInfoCenter --> Dispositivos USB --> OHCI Host Controller (1) --> ISSCBTA) muestra la siguiente información:

ISSCBTA

Clase 224 (Wireless)
Subclase 0
Protocolo 0
Versión USB 1.10

ID del vendedor 0x1131 (Integrated System Solution Corp.)
ID del producto 0x1001 (KY-BT100 Bluetooth Adapter)
Revisión 3.73

Velocidad 12 Mbit/s
Canales 0
Tamaño máximo del paquete 0

Los que han tenido oportunidad de leer el post original, se darán cuenta que lo he editado añadiendo toda la información sobre el dispositivo Bluetooth, que me fue posible encontrar.

Como comentario final, quiero decir que lo anecdótico de esto, es que Jesuán me regaló el pequeño llaverito bluetoth porque se cansó de tratar de hacerlo funcionar en su XP y nunca anduvo. Y en mi Mandriva 2008.0 funciónó a la primera.

Espero que esta información resulte de utilidad. Quedo a vuestra disposición para ayudar hasta donde me dé el conocimiento.

Un abrazo

T@villo

Cómo instalar Moto4Lin en Mandriva Linux

Después de haber asistido a un par de acaloradas discusiones (dentro y fuera de la comunidad) sobre el uso de telefonos Motorola en Mandriva, en concreto el V3, me decanto por hacer este pequeño manual.

El software que tenemos disponible para poder conectar nuestro Motorola V3 con Mandriva y descargar/subir a el archivos con imágenes y musica, principalmente es Moto4lin. Este software no esta disponible en repositorios, así que no queda mñas remedio que compilarlo. De todos modos, su autor es bastante apañado y la compilación es sencilla.

Lo primero que vamos a hacer es descargarnos el software:

http://sourceforge.net/project/showfiles.php?group_id=132142

En esta dirección se nos ofrece la posibilidad de descargar dos programas:

moto4lin --> El software que emplearemos para conectarnos.
p2kmoto ---> Permite conectar el teléfono como sistema P2K (si alguien sabe que significa, agradezco explicaciones).

Ambos son necesarios, así que los descargamos los dos a nuestra home y los descomprimimos cada uno en su carpeta.
Ahora llega el momento de meterle mano. Pero antes de fundirnos, pensemos detenidamente si tenemos instalado todo lo que se necesita siempre para compilar: gcc, make, etc. Si todo esta listo, le echamos un vistazo a las dependencias del programa.

ATENTO: Si algo he aprendido en los años que llevo con linux, es a mirar los README de los tar que me descargo. Te ofrecen información valiosa como las dependecias del software, creditos y licencia. No olvides revisarlos.

Las dependencias de moto4lin son las siguientes, tal y como indica el fichero INSTALL:

To compile you need:
* QT Library 3.3.3 (c++ headers and binary lib)
* libusb-devel 0.8 (headers and binary lib)
* g++

Los dos primeros corresponden a estos paquetes en Mandriva:

*qt3-common-3.3.8b-1mdv2008.1.i586
*libusb-devel-0.1.12-9mdv2008.1.i586

G++ es el paquete de compiladores de GNU. Si no quieres pasarte la tade buscando este paquete, echa un vistazo a este hilo. Seguimos su consejo, nos vamos a la consola y le damos un repaso a urpmi:

urpmi qt
urpmi libusb-devel
urpmi task-c++-devel

Además, si te fijas hay un fichero en la carpeta de moto4lin llamado "moto4lin.kdevelop". Esto indica que necesitará librerías de desarrollo de KDevelop, para interfaz grafica. Pues nada, nos curamos en salud y tambien.

urpmi kdevelop

La instalación total es de alrededor de 300Mb, creo que algo más. Tardará al menos unos 20 min. En realizarse, pero por lo menos lo tendremos todo listo para no tener problemas.

Cuando este todo preparado ya podemos ir a la carpeta donde hayamos descomprimido el moto4lin para empezar a compilar. En el archivo INSTALL de la carpeta te indica como debes hacerlo (cita textual):

Installing
========
1.  qmake
    make

2. Now you can run application.

Tal cual. Desde la consola, como usuario root, nos posicionamos en la carpeta de moto4lin y ejecutamos

qmake
make

Ambas operaciones tardan un rato largo, dependiendo de la maquina que tengas. Una vez este hecho, verás en la carpeta de moto4lin un fichero con idéntico nombre. Enlazalo al escritorio para tener un acceso directo y ya esta. Cmomprobarás que ya puedes arrancar la aplicación, pero no puedes conectar el teléfono.

Ahora vamos a instalar el otro paquete. Las dependencias son las mismas, así que sin mayor problema vamos a la consola y, como usuario root, entramos en la carpeta e introduciomos nuestro "sota, caballo y rey":

./configure
make 
make install

La instalación debería ser limpia. Si no, revisa si te estadando problemas por acceso a carpetas o falta de dependencias, aunque no debería.
Con esto ya esta listo para funcionar.

Ahora, cada teléfono tiene su porpia historia. A la hora de configurar tu telefono pasate por el Wiki de Moto4lin (en inglés) y busca información para tu modelo de telefono. En mi caso, vamos a ver como configuramos y usamos un Motorla V3:

Para el Motorola V3, consulta los pormenores aquí. Igualmente esta en inglés. Lo primero veamos como lo configuramos:

  1. Conectamos el telefono por cable USB.
  2. Ejecutamos moto4lin como root para poder configurarlo, desde consola:
    cd [ruta donde lo hayas descargado]
    su
    moto4lin
    
  3. En otra consola, también como root, ejecutamos:
    echo AT+MODE=8 > /dev/ttyACM0

    para que reconozca el dispositivo conectado como tipo P2K, en lugar del predeterminado, AT.

  4. De vuelta a la aplicación, clickamos en "Prefs." y clicakmos en "Update List". Veremos el telefono conectado:

    Seleccionamos el telefono y clickamos en "Set as P2K device". Presionamos Ok. Salimos de la aplicacion y desconectamos el teléfono.

  5. Ahora conectamos el teléfono. Arrancamos moto4lin como usuario normal y en una consola ponemos como root el comando de antes. Si todo ha ido bien, automaticamente la barra de abajo indicará que se ha reconocido como P2K y podremos comenzar a utilizar el teléfono, para lo cual hacemos click en el icono "Connect".
  6. A partir de aquí, cada vez que lo tengais que conectar seguid estos pasos:

    • Conectar el telefono con el cable
    • Arrancar Moto4lin
    • Ejecutar "echo AT+MODE=8 > /dev/ttyACM0" desde una consola como root.
    • Hacer click en "Connect"

    Y ya esta conectado. Ahora veamos como se usa. Es sencillo para cualquiera que haya utilizado un front-end grafico de administraciond e ficheros (konqueror, nautilus. ¿explorador de windows?). Para comenzar, hay que visualizar los ficheros. Para ello clickamos en "Update List". Esto nos hace aparecer a la izquierda la estructura de directorios y a la derecha los ficheros del directorio actual. Debemos hacer esto cada vez que cambiemos de directorio, subamos o borremos ficheros:

    Ahora es tan sencillo como emplear los botones "Download" para descargar un fichero desde el movil al PC, "Upload" para subirlo del PC al movil, y "Delete" para eliminar un fichero del telefono.

    NOTA MUY IMPORTANTE "NO METAMOS LA PATA": Como recomendación personal, os digo que apliquéis la norma "Si o no lo he puesto ahí, mejor no lo toco". Con moto4lin se tiene acceso a todos los ficheros del telefono, algunos estan bloqueados por el fabricante o el operador que os lo haya vendido, y pueden causar mal funcionamiento si se eliminan. Algunos incluso, pueden hacer que vuestro movil no vuelva a iniciarse, pues pertenecen al sistema.

    Las carpetas seguras donde se almacenan las fotos y la musica son audio y pictures. Las fotos tomadas con la camara del telefono tienen nombres como 30-04-08_1607.jpg.

    Una vez hayáis cacharreado con vuestros ficheros todo lo necesario, sencillamente hacemos click en "Connect" para desconectar el telefono y cerramos la aplicación.

    Para cualquier tipo de problema os remito directamente a la pagina del proyecto moto4lin en sourceforge, asi como al Wiki de Moto4Lin, o si hay algo que quizás yo os pueda contestar, a través de este mismo foro.

    Que disfrutéis con vuestro movil sin renunciar jamás al software libre.

    ACTUALIZADO: Aunque no es mi estilo dar las cosas hechas y dejar a la imaginacion de la gente estas cosas, os adjunto un script que se me ha ocurrido y nos quita el engorro de tener que abir la consola para pasar el comando de cambio a modo P2K. Moto4lin en un solo click, solamente ajustando el valor de la variable RUTA por el directorio donde está el ejecutable de motolin (dependiendo de donde lo pusierais al instalarlo). A mi me funciona chévere:

    #!/bin/bash
    #
    # Lanzamiento de moto4lin para el Motorola V3.
    #
    # Una tontería a su disposición por Kursordriver en BlogDrake (2008).
    # Agradecimientos y anonimos por favor a traves del foro.
    # Con este sencillo script arrancas moto4lin y ejecutas el comando para el modo P2K
    # sin abrir terminales ni despeinarte.
    #
    # Para comenzar, ajusta la variable RUTA a la ruta donde tienes el ejecutable de moto4lin
    RUTA=/home/kursordriver/moto4lin-0.3/moto_ui
    # Ya esta. Cambiamos al directorio donde esta moto4lin
    cd $RUTA
    # Ejecutamos moto4lin en segundo plano (con un ampersand al final)
    ./moto4lin &
    # Ejecutamos mientras tanto el comando para el cambio a P2K
    echo AT+MODE=8 > /dev/ttyACM0
    # Veras como con un solo click, el telefono esta listo para usar automagicamente.

Configurar adaptador USB Bluetooth chipset Broadcom BCM2045 en Mandriva 2008

Gracias a tavillo1980 por su manual.

Me prestaron por un rato estos dos chismes así que a Googlear e investigar.

- Dakota Bluetooth 2.0 EDR USB Dongle Class 1 de Conitech Italia

Free Image Hosting at www.ImageShack.us

Free Image Hosting at www.ImageShack.us

- Samsung GSM SGH-D500

Lo primero es instalar el soporte para Bluetooth en KDE vía urpmi:

[root@sempron ~]# urpmi kdebluetooth
Para satisfacer las dependencias, se instalarán los paquetes siguientes:
   Package                        Version      Release       Arch
(medium "main")
  bluez-utils                    3.15         3mdv2008.0    i586
  kdebluetooth                   1.0          0.beta8.5mdv> i586
  libkdebluetooth0               1.0          0.beta8.5mdv> i586
  libopenobex1                   1.3          3mdv2008.0    i586
(medium "non-free")
  bluez-firmware                 1.2          3mdv2008.0    i586    (suggested)
4.9MB of additional disk space will be used.
¿Efectuar la instalación de los 5 paquetes? (S/n) s

    ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2008...
main/release/bluez-utils-3.15-3mdv2008.0.i586.rpm
    ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2008...
main/release/libopenobex1-1.3-3mdv2008.0.i586.rpm
    ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2008...
main/release/libkdebluetooth0-1.0-0.beta8.5mdv2008.0.i586.rpm
    ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2008...
main/release/kdebluetooth-1.0-0.beta8.5mdv2008.0.i586.rpm
    ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2008...
non-free/release/bluez-firmware-1.2-3mdv2008.0.i586.rpm
instalando bluez-utils-3.15-3mdv2008.0.i586.rpm bluez-firmware-1.2-3mdv2008.0.i586.rpm libkdebluetooth0-1.0-0.beta8.5mdv2008.0.i586.rpm
 libopenobex1-1.3-3mdv2008.0.i586.rpm kdebluetooth-1.0-0.beta8.5mdv2008.0.i586.rpm desde /var/cache/urpmi/rpms
Preparando...                    #############################################
      1/5: libopenobex1          #############################################
      2/5: libkdebluetooth0      #############################################
      3/5: bluez-firmware        #############################################
      4/5: kdebluetooth          #############################################
      5/5: bluez-utils           #############################################

Conecto el adaptador y veo cómo lo detecta Linux:

[root@sempron ~]# lsusb
Unknown line at line 2389
Bus 003 Device 002: ID 0a5c:2101 Broadcom Corp.
Bus 003 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 005 Device 002: ID 05a9:8519 OmniVision Technologies, Inc.
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000

y dmesg me da esto:

usb 3-2: new full speed USB device using uhci_hcd and address 2
usb 3-2: configuration #1 chosen from 1 choice
Bluetooth: Core ver 2.11
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: HCI USB driver ver 2.9
usbcore: registered new interface driver hci_usb
Bluetooth: L2CAP ver 2.8
Bluetooth: L2CAP socket layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM ver 1.8
Bluetooth: HIDP (Human Interface Emulation) ver 1.2

Seguí los pasos de este manual: Mandriva Linux Tips for Free - Configuration of Mandriva 2005 Limited Edition, la sección que dice Bluetooth mobile phone communication. Así que después de la instalación con urpmi, y con el celular con la opción Bluetooth activada, inicié el servicio en Linux que está en el Menú K --» Herramientas --» Herramientas del sistema --» kbluetooth. Aparecerá un ícono en el tray o bandeja del sistema e informará que ha encontrado el adaptador USB. Para detectar los dispositivos Bluetooth (en este caso el celular Samsung) hay que ingresar esta URL bluetooth:/ en Konqueror.

Lanzamos kbtobexclient que está en Menú K --» Red

Free Image Hosting at www.ImageShack.us

Y con él he podido enviar MP3s e imágenes GIF/JPG al teléfono. Automáticamente se van a un folder llamado Archivos descargados (o algo así). No he podido hacer más pruebas pues no eran míos pero en general todo ha ido bien. Espero que les sirva :-)

HOWTO: pinganillo bluetooth en Skype

Bueno, pues hace un par de días, me compré un pinganillo (headset) bluetooth para poderlo usar en skype, concretamente el modelo Voyager 510 de Plantronics en unión a mi bluetooth USB del carrefour (Energy sistem - Linnker 1550).

Deciros que el dispositivo es una maravilla. La batería dura bastante, es muy cómodo y tiene un led azul muy bonito XDD

Pero el sistema bluetooth en linux aún tiene muuuuucho que crecer. Me ha costado bastante emparejar (saber cómo) el dispositivo y eso que se supone que no debe ser complicado... el sistema pin_helper ha cambiado y ya no se usa como antes.

Os comento los pasos que he seguido:

0.- Antes de nada, necesitareis el kdebluetooth, bluez y demás rpms relacionados con el tema bluetooth instalados en Mandriva2007.

1.- Me hice con el archivo "btsco-0.42.tar.gz" de la web:
http://sourceforge.net/projects/bluetooth-alsa/

2.- Lo descomprimí (como root), abrí una consola y lo compilé:

cd btsco-0.42
./configure --prefix=/usr
make
make install

cd kernel
make
make install

Con esto compilamos el módulo para el kernel y los programas necesarios.

El primer problema que me encuentro es que el módulo se me instala en el directorio "/lib/modules/2.6.17-5mdvcustom/extra" en lugar de meterse en el "/lib/modules/2.6.17-5mdv/kernel/extra" por lo que lo hice a mano. Copiando la carpeta extra de un lado al otro.

3.- Luego ejecuté el comando (como root):

modprobe snd-bt-sco
modprobe -ae

Y comprobé con:

lsmod | grep snd

que estaba cargado

Ya tenia soporte para mi pinganillo, al menos en el kernel. Ahora venia la locura del emparejamiento.

4.- Para emparejar el dispositivo tuve que ejecutar (como root) el comando:

passkey-agent --default /usr/bin/bluez-pin

Ya que por lo visto, no se usa el sistema "pin_helper" del archivo "/etc/bluetooth/hci.conf". El programa de emparejamiento de Kdebluetooth no me funciona y el de gnome tampoco por lo que usé el propio de bluez: /usr/bin/bluez-pin

Posteriormente metí ese comando en "/etc/rc.local" para que se ejecutara en cada arranque y poder así emparejar cualquier otro dispositivo.

5.- Luego accedí al dispositivo de la siguiente manera (como root):
5a.- Debemos conocer la MAC del dispositivo por lo que lo puse en modo emparejamiento (mira las instrucciones, el mio necesita pulsar 2 teclas a la vez) y ejecuté el comando:

hcitool -i hci0 scan

Y obtendrás las MACs de los diferentes dispositivos al alcance.

5b.- Intenta realizar una conexión al dispositivo mediante (como root):

hcitool cc 00:00:00:00:00:00

Con esto nos debería salir una ventana pidiéndonos el PIN

6.- Con el dispositivo ya emparejado, podemos conectar el pinganillo para empezar a usar skype. Y a partir de ahora sin ser root, ejecutamos:

btsco -v 00:00:00:00:00:00

Con eso, el icono de Kdebluetoothd deberia estar en azul continuo y deberíais poder acceder (con el botón derecho sobre él) a la opción "connection details".

7.- Ahora vamos al skype, dentro de herramientas, opciones, dispositivos de sonido. Seleccionamos el motor ALSA y en las dos pestañas ponemos: BT Headset y reiniciamos el skype.

8.- De vuelta en el Skype, añadimos al usuario "echo123" y le llamamos. Es un usuario de prueba de skype para ver si funciona todo.

9.- Para la próxima vez que arranques el ordenador, sólo bastaría con meter el modulo de nuevo en el kernel ("modprobe snd-bt-sco") y ejecutar como usuario normal: "btsco -v 00:00:00:00:00:00" ya que el emparejamiento se mantiene.

Espero que no tengáis tantos problemas como yo y esta "guía" os solucione algún problemilla o al menos os sirva para encarrilar vuestra búsqueda.

Un saludo.

[Mdk 10.1] Configurar una red Bluetooth en Mandrake y Debian GNU/Linux

Esta semana pasada configuré una red Bluetooth con 2 dispositivos USB Bluetooth de 22 euros cada uno: los Conceptronics CBT100U (alcance de 100 metros). Estos dispositivos son bastante baratos y me han permitido montar una red inalámbrica fácilmente entre mi servidor Debian Woody y mi portátil MandrakeLinux 10.1, permitiéndo a este el acceso a Internet así como al resto de equipos de mi red local.

En este artículo explico paso a paso cómo he realizado la configuración.

Tendréis siempre una versión actualizada del Howto en mi página web:

http://pinsa.escomposlinux.org/sromero/linux/bluetooth_ht.php

En cualquier caso, voy a reproducir aquí la versión actual del howto para los lectores de BlogDrake:


Montando una red bluetooth en Linux


Este documento es un pequeño y rápido howto que muestra la configuración
de mi red con 2 dispositos de bluetooth. El objetivo del montaje era que
mi portátil pudiera acceder al servidor y, a ser posible, a Internet,
estando conectados el portátil y el servidor por 2 Bluetooth USB modelo
Conceptronics CBT100U.

Mi portátil es Mandrake GNU/Linux y mi servidor es Debian GNU/Linux, de
modo que el Howto muestra la configuración en ambos sistemas. En este ejemplo
se ha configurado Mandrake (el portatil) como cliente PANU y Debian (el
servidor) como NAP, es decir, Debian será la que dará acceso a Internet
al portátil con Mandrake.

Cabe destacar también que con la presente configuración un portátil
Windows configurado con la IP adecuada (192.168.6.69 en este caso),
y el PIN/clave adecuado (el que estableceremos en la configuración
del BT en Linux) también podrá emparejarse con el servidor Linux y
salir a internet a través de él (utilizando el software para Windows
que viene normalmente con los USB). Escaneando en Windows el entorno
veremos el servidor Bluetooth Linux y podremos conectar a él y usar
su "Acceso a red" para navegar.



Mandrake GNU/Linux

En Mandrake debemos instalar los siguientes paquetes:

$ urpmi hotplug
$ urpmi bluez-hcidump bluez-hciemu bluez-pin bluez-utils

Hay que asegurarse de que se tienen insertados los módulos adecuados para
el chipset USB de nuestra placa, entre los siguientes (si no se
tienen, insertarlos con modprobe):

uhci-hcd
ohci-hcd
ehci-hcd

El kernel tiene que tener compilado como módulo el soporte
de bluetooth (en el kernel oficial de Mandrake 2.6.x viene así).
En mi caso, al insertar los 2 Conceptronics USBde 100 metros
(modelo CBT100U), se inserta el modulo usb_hci, así como el
resto de módulos de bluetooth.



Debian GNU/Linux

En esencia, la configuración se realiza igual que en Mandrake,
pero con las siguientes particularidades:

Para instalar el software, añadir las siguientes fuentes de apt:

# Software de bluetooth para Debian Woody
deb http://bluez.sourceforge.net/download/debian/woody ./

o bien:

# Software de bluetooth para Debian Sarge
deb http://bluez.sourceforge.net/download/debian/ ./

Instalar los siguientes paquetes:

$ apt-get install bluez-utils bluez-sdp bluez-hcidump bluez-pan
$ apt-get install hotplug

Recompilar el kernel activando las opciones de USB y Bluetooth
necesarias como modulos.



Detectando el dispositivo USB BT

Al tener instalado Hotplug y pinchar el bluetooth se detecta
automáticamente, y aparece lo siguiente en los logs:

/var/log/kernel/info:

compiler kernel: usb 3-1: new full speed USB device using address 2
compiler kernel: Bluetooth: HCI USB driver ver 2.7
compiler kernel: usbcore: registered new driver hci_usb
compiler kernel: Bluetooth: HIDP (Human Interface Emulation) ver 1.0
compiler kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.2
compiler kernel: Bluetooth: BNEP filters: protocol multicast

Tras realizar esto en ambas máquinas, ambos dispositivos bluetooth deberían verse.
Podemos chequear el estado de nuestro dispositivo con el comando
"hcitool dev", y realizar una búsqueda de dispositivos bluetooth
disponibles mediante "hcitool scan". En este último veremos la
MAC de los dispositivos, de forma que podemos hacer un ping a
nivel 2 (l2ping) para ver si responde nuestro dispositivo
remoto, mediante "l2ping MAC" (ej: l2ping 00:30:A5:10:80:10).

# hcitool dev
Devices:
        hci0    00:80:A5:03:8C:41

# hcitool scan
Scanning ...
        00:80:A5:03:8C:2D       pinsa (0)

# l2ping 00:80:A5:03:8C:2D
Ping: 00:80:A5:03:8C:2D from 00:80:5A:30:8C:41 (data size 20) ...
20 bytes from 00:80:A5:03:8C:2D id 200 time 25.25ms
20 bytes from 00:80:A5:03:8C:2D id 201 time 12.02ms
20 bytes from 00:80:A5:03:8C:2D id 202 time 25.02ms
3 sent, 3 received, 0% loss

Si el dispositivo responde, tenemos enlace a nivel 2, es decir,
ambos dispositivos se ven y podemos hacer ping entre ellos
a nivel casi físico. Ahora es necesario crear una capa TCP/IP
sobre ellos para poder asignar una IP a cada uno de ellos.
Antes de continuar es imprescindible que podamos hacer ping
de nivel 2 desde cada uno de los 2 dispositivos al otro.



PIN o clave de comunicaciones entre 2 dispositivos

Obviamente, no vamos a permitir a cualquier otro dispositivo
bluetooth que se conecte a nuestro servidor para tener acceso a
nuestra red, por lo que deberemos configurar ambos dispositivos
(tanto cliente como servidor) con el mismo PIN o clave (debe de
ser una clave fuerte, que no se pueda averiguar fácilmente).

Podemos configurar el PIN para la conexion en /etc/bluetooth/pin .

$ cat /etc/bluetooth/pin
clave123456789



Configuración del enlace

Editamos el fichero /etc/bluetooth/hcid.conf para que contenga los
siguientes valores de configuración:

(
Para el servidor sería el siguiente fichero (para el cliente
sería igual, pero con las opciones que van comentadas con
triple comentario o ### delante):
).

#
# HCI daemon configuration file.
#
# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $
#

# HCId options
options {
        # Automatically initialize new devices
        autoinit yes;

        # Security Manager mode
        #   none - Security manager disabled
        #   auto - Use local PIN for incoming connections
        #   user - Always ask user for a PIN
        security auto;

        # Pairing mode
        #   none  - Pairing disabled
        #   multi - Allow pairing with already paired devices
        #   once  - Pair once and deny successive attempts
        pairing multi;

        # PIN helper
        pin_helper /bin/bluepin;

        # D-Bus PIN helper
        dbus_pin_helper;
}

# Default settings for HCI devices
device {
        # Local device name
        #   %d - device id
        #   %h - host name
        name "%h-%d";

        # Local device class
        ###class 0x120104;
        class 0x100;

        # Default packet type
        #pkt_type DH1,DM1,HV1;

        # Inquiry and Page scan
        iscan enable; pscan enable;

        # Default link mode
        #   none   - no specific policy
        #   accept - always accept incoming connections
        #   master - become master on incoming connections,
        #            deny role switch on outgoing connections
        #
        #lm accept,master;
        #
        lm accept;

        # Default link policy
        #   none    - no specific policy
        #   rswitch - allow role switch
        #   hold    - allow hold mode
        #   sniff   - allow sniff mode
        #   park    - allow park mode
        #
        #lp hold,sniff;
        #
        ###lp rswitch,hold,sniff,park;
        lp hold,sniff,park;

        # Authentication and Encryption
        #auth enable;
        #encrypt enable;
}



Estableciendo el enlace bnep0

A continuación configuramos pand para permitir conexiones entrantes en el caso
del servidor y para conectarse al servidor remoto de forma
continuada en el caso del cliente, mediante el fichero
/etc/sysconfig/pand en caso de Mandrake o /etc/default/bluez-pan.

Para el servidor:

$ cat /etc/default/bluez-pan.
DUND_ENABLED=0
PAND_ENABLED=1
PAND_OPTIONS="-s -M --role=NAP"

Para el cliente:

$ cat /etc/sysconfig/pand
PANDARGS='--role=PANU --search --persist --encrypt'

Para que el BT USB funcione hay que asegurarse de que:

  • El servicio /etc/init.d/bluetooth ha sido arrancado.
  • El servicio /etc/init.d/pand ha sido arrancado.
  • El BT-USB está pinchado y ha sido detectado (ver logs).

Así pues, desconectamos el BT-USB, paramos ambos servicios y los arrancamos
en ese orden (que será el mismo en que arrancaría al iniciar
el PC).

Al hacer esto en ambos PCs, podremos ver en el fichero
/var/log/messages cómo se establece un diálogo con el
siguiente aspecto (en el servidor):

 Portatil:

tatil pand[3683]: Inquiring
tatil pand[3683]: Searching for NAP on 00:60:57:8E:63:B2
tatil pand[3683]: Searching for NAP on 00:80:A5:03:8C:2D
tatil pand[3683]: Connecting to 00:80:A5:03:8C:2D
tatil pand[3683]: bnep0 connected

 Servidor:

compiler pand[4247]: New connection from 00:80:A5:03:8C:41 bnep0

En el cliente vemos un diálogo de búsqueda de dispositivos,
conexión con el dispositivo remoto y establecimiento del
dispositivo bnep0, mientras que en el servidor vemos la
conexión establecida.

Al levantar el dispositivo bnep0 se ejecuta el script de
/etc/bluetooth/pan/dev-up (creadlo y dadle +x), que contendrá
los comandos para levantar la IP deseada en el dispositivo
bnep0. En mi caso tengo 192.168.6.1 para el servidor y
192.168.6.69 para el cliente (portatil):

Para el servidor:

$ cat /etc/bluetooth/pan/dev-up
#!/bin/sh
/sbin/ifconfig bnep0 192.168.6.1
/sbin/route add 192.168.6.69 dev bnep0

$ cat /etc/bluetooth/pan/dev-down
#!/bin/sh

ifconfig bnep0 down
route del 192.168.6.69

Para el cliente:

$ cat /etc/bluetooth/pan/dev-up
#!/bin/sh
/sbin/ifconfig bnep0 192.168.6.69
/sbin/route add 192.168.6.1 dev bnep0

$ cat /etc/bluetooth/pan/dev-down
#!/bin/sh

ifconfig bnep0 down
route del 192.168.6.1

Estos scripts levantarán las IPs y las rutas para el nuevo
interfaz bnep0. Tras esto ya podremos hacer ping entre las
máquinas.

Recomiendo añadir las máquinas al /etc/hosts para mayor
comodidad al nombrarlas. Por ejemplo, en el servidor:

$ grep 192.168.6 /etc/hosts
192.168.6.69    tatil-bt
192.168.6.1     compiler-bt



Dando routing a Internet

En el script dev-up del servidor podemos, aparte de levantar
la interfaz, añadir reglas de firewall sobre bnep0 o activar IP forwarding e IP Masquerade,
para compartir la conexión a Internet. Con esto, aparte de
que nuestro portatil pueda hacer ping, telnet, ssh, y VNC
(entre otros) al servidor, tambien podremos salir directamente
a Internet desde el portatil.

En mi caso al principio no necesité masquerade, porque con VNC
podía conectar al servidor y hacer de todo, pero al final lo
activé por comodidad.

Basta con las siguientes reglas de fw en mi red de ejemplo:

 #bluetooth
 #sromero 03-02-2005
 echo "Adding bluetooth network rules"
 echo "1" > /proc/sys/net/ipv4/ip_forward
 ${IPTABLES} -A INPUT -s 192.168.6.69/32 -j ACCEPT
 ${IPTABLES} -t nat -A POSTROUTING \
             -s 192.168.6.69/32 -o eth0 -j MASQUERADE
 ${IPTABLES} -A FORWARD -i bnep0 -o eth0 -j ACCEPT
 ${IPTABLES} -A FORWARD -o bnep0 -i eth0 -j ACCEPT

 ${IPTABLES} -t nat -A POSTROUTING \
             -s 192.168.6.69/32 -o eth1 -j MASQUERADE
 ${IPTABLES} -A FORWARD -i bnep0 -o eth1 -j ACCEPT
 ${IPTABLES} -A FORWARD -o bnep0 -i eth1 -j ACCEPT



El routing a eth0 da acceso a internet, mientras que
el acceso a eth1 da al portatil acceso a la red local
pinchada al servidor. En resumen: desde mi portatil llego
al servidor, llego a Internet, y llego al resto de PCs de
la red, y todo con 2 pequeños dispositivos USB que aprox.
20 euros cada uno.

Santiago Romero

NoP/Compiler

Manual: Cómo configurar Bluetooth en Mandriva 2007

De todos es sabido el problema con la conexión de teléfonos móviles con mandriva 2007 por bluetooth, siguiendo una explicacion de la pagina de bugs de mandriva, no conseguía hacerlo funcionar, por fin lo conseguí de la siguiente manera:

Hay que instalar:

  • bluez-utils
  • kdebluetooth

A continuación se enchufa el bluetooth al puerto usb, en la consola se ve que no sucede nada, se teclea en consola como root:

# service bluetooth start

y el bluetooth empieza a parpadear, eso quiere decir que funciona, a continuación ponemos en el móvil el bluetooth en marcha, tecleamos en la consola:

# hciconfig hci0 piscan

para que el bluetooth del pc se haga visible entonces abrimos kbtobexclient, que estará en el menú: Internet->Transferencia de archivos y empezar a buscar, cuando encuentra el móvil introducimos la clave 1234 y se abre en el pc un cajetín donde debemos introducir la misma clave, y ya nos da el aviso de que están emparejados con exito, a partir de entonces ya podemos utilizarlos, si bien cada vez que enchufemos el bluetooth tendremos que ponerlo en marcha con la orden:

#service bluetooth start

Espero que esto sirva para solventar este problema

Jugando con Bluetooth - I


En este capitulo se tratará:

    - Informacion sobre Interfaces bluetooth

    - Escaneo de red

    - Busqueda de servicios en los dispositivos remotos


Todo esto usando la consola por supuesto ;)

He usado bluetooth desde hace algo de tiempo pero siempre desde modo gràfico, como que quiero saber un poco mas como funciona intentaré usarlo desde consola jugando con los comandos de bluez-utils, una serie de herramientas libres destinadas a la creación de aplicaciones que trabajen con bluetooth.

Primero intentaré ver desde consola qual es mi dispositivo de conexion bluetooth, por lo que a primera vista se puede ver es un conceptronic bluetooth con 40 metros de radio de alcance. (esta claro que el mobil no  llegarà ni a 20...)

vicent@ferrervicent:~$ hciconfig -a
hci0: Type: USB
BD Address: 00:80:5A:46:21:67 ACL MTU: 384:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:1544 acl:7 sco:0 events:57 errors:0
TX bytes:560 acl:5 sco:0 commands:32 errors:0
Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'ferrervicent-0'
Class: 0x3e0100
Service Classes: Networking, Rendering, Capturing
Device Class: Computer, Uncategorized
HCI Ver: 2.0 (0x3) HCI Rev: 0x7a6 LMP Ver: 2.0 (0x3) LMP Subver: 0x7a6
Manufacturer: Cambridge Silicon Radio (10)

Como podeis observar esto nos da bastante informacion sobre el trastito, por ejemplo que el fabricante (del chip serà) es Cambridge Silicon Radio y no conceptronic como en un primer momento se podria pensar (es una cosa típica en el hardware usar chips genericos)

Ahora que ya sabemos bastantes cosas sobre nuestra interface bluetooth vamos a ver que podemos hacer con ella..

vicent@ferrervicent:~$ hcitool
hcitool - HCI Tool ver 2.24
Usage:
hcitool [options] [command parameters]
Options:
--help Display help
-i dev HCI device
Commands:
dev Display local devices
inq Inquire remote devices
scan Scan for remote devices
name Get name from remote device
info Get information from remote device
cmd Submit arbitrary HCI commands
con Display active connections
cc Create connection to remote device
dc Disconnect from remote device
sr Switch master/slave role
cpt Change connection packet type
rssi Display connection RSSI
lq Display link quality
tpl Display transmit power level
afh Display AFH channel map
lst Set/display link supervision timeout
auth Request authentication
enc Set connection encryption
key Change connection link key
clkoff Read clock offset
clock Read local or remote clock

For more information on the usage of each command use:
hcitool --help

Vemos que las posibilidades de hci tool son bastante amplias... :)

Primero de todo escanearemos el entorno en busca de algun dispositivo...

vicent@ferrervicent:~$ hcitool -i hci0 scan
Scanning ...
08:00:1F:85:4F:E1 GX25.D

I que tenemos aqui? un telefono mobil.. " 08:00:1F:85:4F:E1" es la direccion bluetooth, en hexadecimal como podeis ver, i GX25.D es el nombre del dispositivo...

Ya sabemos que existe, pero ... que podemos hacer con eso?, Muchas de las veces que nos encotraremos delante un dispositivo bluetooth a primera vista subestimaremos sus posibilidades.. Portanto para estar seguros de que puede hacer realmente escanearemos el dispositivo en busca de posibles servicios que ofrece..

vicent@ferrervicent:~$ sdptool browse 08:00:1F:85:4F:E1
Browsing 08:00:1F:85:4F:E1 ...
Service Name: OBEX Object Push
Service RecHandle: 0x10001
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 4
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100

Service Name: Serial Port
Service RecHandle: 0x10002
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 5
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100

Service Name: Dial-up networking
Service RecHandle: 0x10003
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100

Service Name: Voice gateway
Service RecHandle: 0x10004
Service Class ID List:
"Headset Audio Gateway" (0x1112)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Headset" (0x1108)
Version: 0x0100

Service Name: Voice gateway
Service RecHandle: 0x10005
Service Class ID List:
"Handfree Audio Gateway" (0x111f)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Handsfree" (0x111e)
Version: 0x0101

Como podemos observar admite transferencia de ficheros (OBEX Object Push), Conexion como si de un puerto de serie se tratara (Serial Port), Usar el mobil como modem para gprs (Dial-up networking), conectarle dispositivos de voz y manos libres (Voice gateway) - que aparecen como 2 dispositivos diferentes -...

Y aqui acaba el capitulo 1 de jugando con bluetooth....

Este book es una traduccion del catalan desde el articulo original del blog "Carta de navegació".

 Citar el autor y no comercial

Jugando con Bluetooth - II


En este capitulo se tratará:


    - Introduccion al HCI sniffer


    - Haciendo un sniff de conexion


    - Estudio casero de la cobertura Bluetooth


Vamos a hacer un sniff de la conexion por bluetooth para ver un poco mejor como funciona

Para hacer el sniff usaremos el HCI sniffer, una vez instalado se ejecuta con hcidump como root (en este caso he instalado sudo para hacerlo mas facil)

Partimos de que hemos entendido los contenidos de "Jugando con bluetooth - I", lo primero que haremos serà arrancar el HCI sniffer

vicent@ferrervicent:~$ sudo hcidump HCI sniffer - Bluetooth
packet analyzer

ver 1.28 device: hci0 snap_len: 1028 filter: 0xffffffff


Ese es el mensaje que nos da al arrancar, se pueden hacer variaciones en los parametros estandard que usa hci dump para el sniff, consultando la ayuda veremos todas las opciones posibles,haremos pues un "man hcidump" si queremos ver todas las posibilidades de el sniffer

He probado algunas opciones y aunque algunas tienen bastante utilidad (reenviar los datos capturados o cambiar el modo de visualizacion -ascii, hex, etc..- ) yo de momento no las voy a usar....

Una vez el sniffer en marcha probaremos a generar trafico (enviar una petición de autentificacion desde el mobil por ejemplo) y podremos comprobar que efectivamente escucha el trafico...
Hay que decir que ese trafico es el local que està escuchando la propia interfaz bluetooth... no se si se podran escuchar otros canales sin afectar al trafico.. lo que en wifi's se denomina de forma comun "modo monitor"..

Asi pues tenemos el trafico de la peticion de autentificacion desde el mobil..

> HCI Event: Connect Request (0x04) plen 10

< HCI Command: Accept Connection Request (0x01|0x0009) plen 7

> HCI Event: Command Status (0x0f) plen 4

> HCI Event: PIN Code Request (0x16) plen 6

< HCI Command: PIN Code Request Reply (0x01|0x000d) plen 23

> HCI Event: Command Complete (0x0e) plen 10

> HCI Event: Link Key Notification (0x18) plen 23

> HCI Event: Connect Complete (0x03) plen 11

< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4

> HCI Event: Page Scan Repetition Mode Change (0x20) plen 7

> HCI Event: Max Slots Change (0x1b) plen 3

> HCI Event: Command Complete (0x0e) plen 6

< HCI Command: Change Connection Packet Type (0x01|0x000f) plen 4

> HCI Event: Command Status (0x0f) plen 4

> HCI Event: Connection Packet Type Changed (0x1d) plen 5


Ademas podemos ver de una forma bastante buena la diferencia entre lo que entra y lo que sale.. si os fijais en las linias 4 y 5 envia la peticion del pin y el ordenador la acepta ...

Y al pasar unos segundos automaticamente se corta la conexión..

> HCI Event: Disconn Complete (0x05) plen 4


Cosa que no acabo de entender ya que en el mobil està puesto que no se desconecte pero bien...

Ara que hemos visto un poco como se comunica bluetooth (todo esto lo digo por la experiencia de ir probando, en ningun momento he estudiado teoria del protocolo bluetooth asi que puede que me equivoque en algunos aspectos).. Vamos a hacer conexiones desde el ordenador al mobil para hacer pruebas de señal, para ver la cobertura..,esto lo haremos con el comando "hcitool" (que hemos visto en Jugando con Bluetooth - I), usando la opcion "hcitool
cc"
para conectar y "hcitool lq" para ver el estado de la señal..

Iniciaremos el sniffer (HCIdump) para ver tambien que es lo que pasa...

Hacemos un intento de conexion al mobil:

vicent@ferrervicent:~$ sudo hcitool cc 08:00:1F:85:4F:E1


y a continuacion podemos ver desde el sniffer que la conexion tiene éxito..

vicent@ferrervicent:~$ sudo hcidump

HCI sniffer - Bluetooth packet analyzer ver 1.28

device: hci0 snap_len: 1028 filter: 0xffffffff

< HCI Command: Create Connection (0x01|0x0005) plen 13

> HCI Event: Command Status (0x0f) plen 4

> HCI Event: Link Key Request (0x17) plen 6

< HCI Command: Link Key Request Reply (0x01|0x000b) plen 22

> HCI Event: Command Complete (0x0e) plen 10

> HCI Event: Connect Complete (0x03) plen 11

< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4

> HCI Event: Page Scan Repetition Mode Change (0x20) plen 7

> HCI Event: Command Complete (0x0e) plen 6

> HCI Event: Max Slots Change (0x1b) plen 3


Pero pasa como antes.. que al poco rato (de no usarlo realmente) se desconecta.. supongo que serà para no gastar tanta bateria y supongo que en cada acción se harà automaticamente una prueba de conexion y se reconectarà en caso de que se haya desconectado.. pero no me hagais mucho caso.. son solo hipotesis mias..

Seguimos pues con el tema de la señal, la señal se mide con el comando "hcitool lq" como he dicho antes, portanto si lo ejecutamos correctamente:

vicent@ferrervicent:~$ sudo hcitool lq 08:00:1F:85:4F:E1

Link quality: 255


Observamos que nos saca 255 de señal, que es el maximo (el mobil esta a la parte delantera de la torre y la interface bluetooth detras)

y HCIDump como no nos muestra que evidentemente esa medida de señal ha sido realizada:

< HCI Command: Read Link Quality (0x05|0x0003) plen 2

> HCI Event: Command Complete (0x0e) plen 7


He hecho varias pruebas poniendo el mobil cada vez en una posición diferente, y seguidamente ejecutando cada vez las ordenes correspondientes a conectar y 
mirar el estado de la señal.

Visión directa:

  1. Al lado, medio metro  > 255

  2. 2 metros mas o menos > 255

  3. 4 metros mas o menos > 247

  4. 6 metros con poca visibilidad > 212


(No he probado mas porque tendria que mover el ordenador de
sitio)

Sin visión directa:

  1. A la otra parte de la torre > 255

  2. Con la pantalla en medio > 254-220

  3. Bajo la mesa (cpu arriba) > 255

  4. Dentro de una vitrina con visión directa
    > 255

  5. A 3 metros y una puerta de cristal doble > 190

  6. A l'escala de casa > ya no conecta

  7. A 4 metros y una pared enmedio > tampoco


No lo sé seguro pero por la experiencia se puede deducir que el bluetooth usa un espectro de frequèncias y una potencia de emision buena para distancias cortas pero que en largas distàncias se ve afectado. sobretodo si hay objetos por el medio.

Para la idea que llebo en mente para proximos numeros deberé buscar un poco de documentación.. pero estoy seguro que no os defraudarà la idea ;)



Este book es una traduccion del catalan desde el articul o riginal del blog "carta de navegació"


 Citar el autor y no comercial

Jugando con Bluetooth - III (Explotando Vulnerabilidad sharp Gx25)

Escrito el 13 de septiembre de 2006..

Después de que publicaran en Bluehack un articulo que escribí de Bluetooth sobre hcisniff, me he vuelto de animar con esto del bluetooth. Después de ver que en pocos meses las cosas han avanzado bastante, en una casualidad de la vida he descubierto una fallo en el teléfono sharp Gx25. El fallo en cuestión hace que el teléfono se bloquee por unos instantes parando todo proceso que se estuviera realizando en el momento al recibir un paquete ping muy grande por bluetooth.

Se puede decir que el fallo es parecido al famoso "ping de la muerte", aquella vulnerabilidad que tenían muchos sistemas antiguos en la cual si se enviaba un paquete ping muy grande se podía llegar a colgar el equipo remoto. De eso hace mucho tiempo, pero quien lo iba a pensar, la historia se repite...

Estaba navegando en una web con información sobre bluetooth y herramientas en Linux cuando he visto que parecía una herramienta llamada l2ping, al ver que era una herramienta para hacer pings he pensado que podría comprobar si el ping subía conforme se ponía el teléfono mas lejos, también he pensado que podría enviar paquetes cada vez mas pesados para ver la diferencia de tiempo de respuesta...

Primero de todo he hecho un "hcitool scan" para ver la dirección hexadecimal del móvil.

vicent@ferrervicent:~$
hcitool scan

    Scanning

    08:00:1F:85:4F:A1       GX25.D

Seguidamente, he dirigido un l2ping hacia la dirección del
teléfono..

    vicent@ferrervicent:~$ sudo l2ping 08:00:1F:85:4F:A1

    Ping: 08:00:1F:85:4F:A1 from 00:70:5A:46:21:67 (data size 44) ?

    0 bytes from 08:00:1F:85:4F:A1 id 0 time 128.62ms

    0 bytes from 08:00:1F:85:4F:A1 id 1 time 51.11ms

    0 bytes from 08:00:1F:85:4F:A1 id 2 time 49.90ms

    0 bytes from 08:00:1F:85:4F:A1 id 3 time 76.45ms

    0 bytes from 08:00:1F:85:4F:A1 id 4 time 78.75ms

    0 bytes from 08:00:1F:85:4F:A1 id 5 time 48.18ms

    0 bytes from 08:00:1F:85:4F:A1 id 6 time 56.75ms

    0 bytes from 08:00:1F:85:4F:A1 id 7 time 56.02ms

    0 bytes from 08:00:1F:85:4F:A1 id 8 time 36.44ms

    0 bytes from 08:00:1F:85:4F:A1 id 9 time 52.51ms
    Send failed: Connection reset by peer

Eso era un ping normal, el teléfono seguía con vida.. lo que no entiendo es porque siempre al cabo de unos segundos se corta la conexión, cosa que ya pasaba con este movil cuando escribí "jugando con bluetooth" I y II.


Para informarme un poco he mirado a ver como se usaba
correctamente l2ping:

vicent@ferrervicent:~$ sudo l2ping

l2ping - L2CAP ping

Usage:

l2ping [-i device] [-s size] [-c count] [-t timeout] [-f]


Eso de size me gusta...., que pasaría si hacemos
un:

    vicent@ferrervicent:~$ sudo l2ping -s 50000 08:00:1F:85:4F:A1

    Ping: 08:00:1F:85:4F:A1 from 00:70:5A:46:21:67 (data size 50000) ?

    no response from 08:00:1F:85:4F:A1: id 0

Se colgó!! Tengo que decir que he puesto 50000 por poner un valor, tampoco sabia realmente de cuanto tamaño estávamos hablando hasta después.. así que son varias coincidencias juntas (decir que funciona con valores bastante mas bajos...), como podéis entender 50000 es demasiado, así que se puede hacer la prueba igualmente enviándole un paquete grande.. pero sin ser excesivo como este.. (decir que si lo haces por ping bajo Ethernet, mi router mismo lo ignoraba :O )


Bueno, un vídeo vale mas que mil palabras sin sentido así
que.. he colgado un vídeo en youtube desde donde podéis ver los cortos pero molestos efectos que podría suponer un ataque de este tipo. Decir que técnicamente -por lo que me han comentado expertos en el tema- lo que el teléfono sufre es un softreset y no una denegación de servicio propiamente dicha..

Este softreset vendría implementado por las bajas capacidades del teléfono, y por lo tanto es una forma de auto limitarse antes de quedarse colgado, aun así no creo que sea la mejor forma de solucionar el problema: Autoresetearse? Haré una comparación, puede que exagerada pero útil: cuando un servidor tiene mucha carga se autoresetea? Está claro que no.. (puede que m$ incorpore esa nueva feature en alguna nueva version del w$ server, pero de momento no, no hay servidores que tengan implementada esa funcionalidad -o por lo menos no voluntariamente que yo sepa-).

Como podemos saber que el teléfono tiene poca capacidad? pues a continuación probaremos a ir aumentando el tamaño del paquete de ping para ver como va aumentando.




44     > de 47 a 96 ms (es el ping estàndard
en l2ping)
500 > 76ms

1000 > de 139 a 169 ms

1500 > de 195 a 230 ms

1850 > de 231 a 246 ms

Resultando la siguiente curva:

También quería hacer una prueba dependiendo de la distancia, claro, como la diferencia entre un ping y otro puede ser mucha, lo que he hecho ha sido capturar un gran volumen de datos y con una simple función en bash exportarlo a un fichero donde los datos estan expresados en el tipo X Y de forma automatizada, porque hacerlo manual podría ser brutal..

Siento decir que ese archivo lo he perdido (es lo que tiene hacer reinstalaciones completas y pensar que no tenias nada importante en el /home) así que en cuanto puedo volveré a hacer la prueba.

Con Gnuplot se podría hacer de todo, pero por ahora me quedo con el OpenOffice Calc ya que el gnuplot lo manejo mas bien poco..


 Comentario a 14/9/06:Ayer por la noche encontré este tipo de fallo, si estaba documentado!.. no para este móvil en concreto sino que es una clase de ataque, el ataque se llama Bluesmack. Y es un fallo de cada dispositivo en cuestión, no del protocolo bluetooth aun así confío que habrá bastantes dispositivos, que como este Gx25 de sharp tendrán el fallo.

Ya me creía yo que había descubierto un bug nuevo.. :( no, pero realmente algo si, ya que nadie antes había probado este tipo de fallo contra un sharp gx25 [si alguien lo ha probado antes, no lo ha puesto en Internet] así que al menos contra el gx25... De todos modos lo que ha servido ha sido la experi?ncia :D

Es la sensacion del sentido Original de Hacker.

Mas comentarios:


Hará meses que envié un correo a sharp, no tiene correo técnico ni nada por el estilo así que lo tuve que enviar a una subdelegación para que lo reenviaran.. seguramente pasarían de el..  ellos se lo pierden, yo quería ayudarles a que mejorasen el producto pero bueno..

Este documento és una traducción con algunas mejoras
del documento original escrito el 13 de septiembre de 2006 en
ferrervicent.com

Además está protegido bajo Creative Commons-es,
compartir igual, reconocimiento y no comercial.


Copyleft 2006, Vicent Ferrer i Rodrigo.


Para más información: www.ferrervicent.com

[MDV 2005] Tutorial sobre como conectar Movil Motorola C650 via USB en Mandriva

Para todos aquellos que posean un Celular Motorola C650 aquí el pequeño tutorial para
Conectarlo via USB en Mandriva 2005 LE.-
Primero conectamos el teléfono, a continuación cargamos el módulo del módem usb,deberemos tener privilegios de Root para ello ejecutamos el comando ¨su¨ y luego para cargar el módulo el comando:
# modprobe cdc_acm
(No debe salir nada, a no ser que ya este cargado, en mi caso no estaba cargado)

Para verificar si se cargó el módulo y detecta el teléfono ejecutamos el comando:
# dmesg|grep ACM
(debe salir algo parecido a:
cdc_acm 1-1:1.0:ttyAcm0:USB Acm Device

Si no llegara a aparecer se deberá recompilar el kernel con soporte para dispositivos CDC ACM, en las opciones de compilación habilitar:
Device Drivers --->
USB support --->
USB Modem (CDC ACM) support

En mi caso y seguro será para todos el soporte ya existía por defecto en Mandriva, así que continuamos, ahora deveremos verificar si existe el Link para comunicarse:

# ls – lh /dev/ttyACM0

nos debe salir:
Crw-r—r—1 root 166 0 /dev/ttyACM0
(que es donde se encuentra creado el dispositivo). Sino aparece crear:

# mknod /dev/ttyACM0 c 166 0
(a mi me apareció automáticamente).

Ahora daremos permiso a un usuario común a acceder al dispositivo:
# chmod a+rw /dev/ttyACM0

Con esto ya tenemos disponible la conexión entre el teléfono y la Pc, ahora vamos al tema de los programas para gestionar la información:
Por un lado tenemos al KmobileTools que nos sirve para gestionar la agenda, enviar sms entre otras cosas (yo no lo he probado).-
Aquí les dejo la dirección:
http://kmobiletools.berlios.de/

Y Por otro, el para mí más interesante Moto4lin que nos permite bajar las fotos que sacamos con el celular, y otras cosillas como subirle melodías, borrarle las existentes, en fin manipularlo a gusto y placer del usuario!!.-
Aquí les dejo la dirección del sitio del Moto4lin:
http://sourceforge.net/projects/moto4lin
Tienen para bajar un rpm que aunque no es para Mandriva, funciona igualmente bien.

Una vez instalado el programa ejecutamos desde una consola:
# moto4lin
nos abrirá una bonita interfaz gráfica desde la cual podremos acceder al celular. Lo primero que debemos hacer es ir al menu Options--->Settings --> Preferences
y configurar el dispositivo ACM colocando:
/dev/ttyACM0

una vez hecho esto le damos al boton ¨Connect¨ y el programa intentará conectarse al teléfono, sino lo hace a la primera desconecten el cable conecten nuevamente y prueben de nuevo, el programa esta un poco verde, ténganle paciencia.
Una vez conectados le damos al botón ¨Update list¨ y listo, en la ventana de la izq les aparecera un árbol con las carpetas del teléfono.

A partir de aquí es todo suyo muchachos, ojo con lo que borran que pueden dejar el celular inservible. A mi me funciona perfecto para bajar las fotos.
Cada día me convenzo más del poder de Linux, para realizar todas estas tareas bajo Hasefroch debía bajar un programa propietario de Motorola (51 MB contra mucho menos de 1 MB Moto4lin) amen de una pesadilla para instalar el driver.-Gracias a Dios y a Google que di con el Moto4lin!!.-
Para más información, tutoriales y mucho más acerca del moto4lin y los C650 dense una vuelta por:
http://www.motorolac650.tk/
Espero que les sirva.
Saludos desde el sur.