Mostrando entradas con la etiqueta PDA. Mostrar todas las entradas
Mostrando entradas con la etiqueta PDA. Mostrar todas las entradas

jueves, 4 de diciembre de 2008

Synce en KDE

Hace poco he actualizado mi Kubuntu a la última versión de ese sistema, la 8.10 Intrepid Ibex.

El proceso de actualización fue bien, sin que haya nada que destacar, salvo que en esta versión desaparece el KDE 3.5 y se instala por defecto la versión 4.1. Es muy bonita y tiene muchas cosas nuevas, algunas de ellas muy radicales, como que la carpeta del Escritorio pasa a ser una carpeta más y todos los accesos directos y carpetas que tuviéramos creados antes desaparecen del nuevo, pasando a ser ficheros normales y corrientes. También está muy bien el visor de documentos (y) PDFs (Okular se llama) que permite hacer anotaciones y marcas sobre el texto. Y muchas más cosas que no describiré aquí (como los plasmoides, o las mejoras en efectos gráficos).

Lo que no está tan bien es lo que han hecho con el software para conectarse a PDAs. En la versión 3.5 estaba el paquete synce-kde para conectar con el aparato y con Raki y Kcemirror se podía acceder a sus ficheros y controlarla con el ratón. Este paquete ha sido sustituido en la versión 4.1 por otro llamado synce-kpm. Se supone que tiene las mismas funcionalidades, pero está pensado para dispositivos con Windows Mobile 5 o 6, los que son más viejos y llevan versiones anteriores no se podrán conectar, o lo harán muy limitadamente.

Lo peor es que no se puede volver a instalar el software antiguo, el paquete synce-kde no funciona con la nueva versión y por ello ha desaparecido de los repositorios de Intrepid. Debido a que lo necesito para trabajar con mi "vieja" PDA, que el OpenOffice que trae sigue siendo el 2.4 (y no el 3.0), y a que al entorno aun le quedan algunos detalles por pulir, estoy pensando seriamente volver a instalarme la versión 8.04, que además es LTS. Lo que significa que durante 3 años tendrá actualizaciones de seguridad, y si en este tiempo jubilo mi actual PDA y me hago con otra más nueva, siempre estaré a tiempo de actualizar.

lunes, 9 de junio de 2008

Puntero alternativo para la PDA

Desde que tengo la PDA hay dos cosas que me hacen sufrir por ella: Una es que se me caiga al suelo y se le destroce la pantalla. Para evitarlo al poco de tenerla me hice con una funda de aluminio bastante robusta.

La otra cosa que me hace andar con mil ojos es el puntero o lapiz con el que se maneja la PDA mediante toques en su pantalla táctil. Siempre tengo mucho cuidado para que no se me pierda o peor todavía, se me rompa por sentarme encima de él.

Bien, para los que seais tan paranoicos como yo con este tema tengo buenas noticias. Hay una alternativa sencilla y barata que, si bien no sustituye al puntero original cuando nos llevamos la PDA por ahí, sí que puede servir para cuando la utilizamos en casa y no queremos estar pendientes de dónde dejamos cada vez el dichoso adminículo: Se trata de los lápices de IKEA que se pueden coger al entrar a cualquiera de sus centros comerciales para apuntar las medidas y códigos de los muebles que se van a comprar.

Aquí podéis ver en detalle a lo que me refiero:


Se puede manejar de la misma forma que el puntero original, apenas hay diferencia y si la punta no está afilada (que no suele estarlo) no hay peligro de dañar la pantalla. Además, se pueden tener varios lápices distribuidos por la casa o la mesa y en cada momento utilizar el que esté más a mano. Aquí un par de fotos del invento en acción:

Consultando la versión móvil de la Wikipedia.


Manteniendo apretado el lápiz aparece el menú contextual


Foto de conjunto. Anotada con el lápiz la velocidad de transferencia por Bluetooth de las fotos entre el móvil y el ordenador, unos 55 KBytes/s

miércoles, 13 de febrero de 2008

Configuración de un NAP bluetooth (II)

Este post es una ampliación de otro anterior en el que se explicaba cómo configurar un punto de acceso bluetooth (NAP) en Linux. Con ello se conseguía una forma básica de conectar una PDA a Internet, pero tiene el inconveniente de que no sirve si se quieren conectar al mismo tiempo varios dispositivos.

A continuación resumiré todos los pasos que hay que seguir para configurar un NAP que permite la conexión de varios dispositivos simultáneamente. Están hechos pensando en Debian/Ubuntu Linux, en otras distribuciones se hará de forma parecida aunque posiblemente algún fichero esté en otro sitio.

1) Instalar utilidades de bluetooth y de ethernet bridging:

$ sudo aptitude install bluez-utils
$ sudo aptitude install bridge-utils


2) Asegurarse de que se detecta el adaptador bluetooth en el ordenador:

$ hcitool dev
Devices:
hci0 00:03:7A:EE:B6:76


3) Editar /etc/bluetooth/hcid.conf y modificar las siguientes líneas para que queden así:

# Default PIN code for incoming connections
# (Aquí ponemos el PIN que queramos).
passkey "1234";

# 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;


4) Si no existe ya, crear un interfaz puente Ethernet de nombre pan0, con el siguiente comando:

# brctl addbr pan0

Para asegurarnos de que se ha creado podemos ejecutar:

$ brctl show
bridge name bridge id STP enabled interfaces
pan0 8000.000000000000 no


5) El interfaz pan0 se puede configurar como cualquier otro, en /etc/network/interfaces, por ejemplo así:

auto pan0
iface pan0 inet static
address 192.168.2.1
netmask 255.255.255.0
gateway 192.168.0.1


6) Editar /etc/default/bluetooth y modificar las siguientes líneas para que queden así:

BLUETOOTH_ENABLED = 1
PAND_ENABLED = 1
PAND_OPTIONS=" --listen --role NAP --devup /etc/bluetooth/pan/dev-up"
SDPTOOL_OPTIONS="add NAP"


7) Crear el fichero /etc/bluetooth/pan/dev-up con el siguiente contenido:

#!/bin/sh
ifup pan0
brctl addif pan0 $1
ifconfig $1 0.0.0.0

No olvidarse de darle permisos de ejecución. Este script se invocará cada vez que se conecte al ordenador un dispositivo. Cuando esto sucede se crea automáticamente un interfaz de red llamado bnep0 (o bnep1, bnep2... si se conectan otros después). El script anterior lo que hace es añadir el recien creado interfaz al puente pan0 del que hemos hablado antes y se asegura de que está levantado.

8) En el fichero /etc/init.d/bluetooth buscar la parte donde pone start) y justo después de donde pone start_pan || true añadir una línea como esta:

start_rfcomm || true
start_pan || true
(sleep 5; run_sdptool || true) &
log_end_msg 0

Que lo que hace es esperar 5 segundos antes de lanzar el servidor SDP (el que anuncia los servicios ofrecidos por el bluetooth). El "&" del final lo lanza como tarea de fondo, para que el arranque no se ralentice mientras pasan los cinco segundos.

9) Por último, para que el PC haga de router:

$ sudo echo "1" > /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Se supone que la PDA tiene una dirección IP estática en la misma red que la que se ha configurado para el interfaz pan0. Se podría poner también que fuera dinámica configurando en el PC un servidor DHCP para esa red, que es bastante sencillo.

Si todo funciona como debería cada vez que se conecte un dispositivo bluetooth al PC deberá aparecer un interface de red llamado bnepX. Al hacer un ifconfig veremos que no tiene IP asignada en el PC, pero responderá a un ping si se lo hacemos a la dirección estática que le hubieramos configurado

Cosas que pueden fallar

  • Al intentar conectar desde la PDA al PC no ofrece ningún servicio bluetooth: No se ha configurado bien SDP. Revisar el parámetro SDPTOOL_OPTIONS y que se ha cambiado /etc/init.d/bluetooth como se decía en el apartado 8.
    Se puede añadir el servicio a mano ejecutando sdptool add nap.
    Deberá responder con el mensaje "NAP service registered", de lo contrario significará, que algo está pasando con ese servicio que no funciona bien...

  • El servicio de Network Access Point se ve, pero cuando se intenta conectar falla. Puede ser por muchas cosas. Asegurarse de que:

    • Existe el interface pan0 y tiene configurada una IP: ifconfig pan0
      pan0 Link encap:Ethernet direcciónHW 00:03:7a:ee:b6:76
      inet dirección:192.168.2.1 Difusión:192.168.2.255 Máscara:255.255.255.0
      ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1
      RX packets:16 errors:0 dropped:0 overruns:0 frame:0
      TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
      colisiones:0 txqueuelen:0
      RX bytes:796 (796.0 B) TX bytes:2565 (2.5 KB)

    • Está creado el puente ethernet y en él está el interface pan0: brctl show
      bridge name bridge id STP enabled interfaces
      pan0 8000.00037aeeb676 no

    • Está ejecutándose el demonio pand: ps -ef | grep pand

      root 26317 1 0 Jun04 ? 00:00:00 /usr/bin/pand --devup /etc/bluetooth/pan/dev-up --listen --role NAP

      Si no está corriendo podemos lanzarlo a mano desde la línea de comandos con los parámetros de arriba. Si al hacerlo sigue sin lanzarse miraremos el log /var/log/syslog y es probable que encontremos algún mensaje como:

      Bind failed. Address already in use(98)

      Puede ser debido a que haya alguna otra utilidad de bluetooth pululando en el sistema. En alguna ocasión que me ha pasado eso mirando los procesos había dos llamados así:

      root 16844 16839 0 20:52 ? 00:00:00 /usr/lib/bluetooth/bluetoothd-service-input
      root 16845 16839 0 20:52 ? 00:00:00 /usr/lib/bluetooth/bluetoothd-service-network

      Tras matarlos pude lanzar el demonio pand.

    Si falla alguna de estas tres cosas se puede probar a reiniciar el servicio de bluetooth entero (/etc/init.d/bluetooth restart) o a descargar y volver a cargar el driver del dispositivo bluetooth que tengamos (puede variar según el hardware).

miércoles, 12 de diciembre de 2007

Configuración de un NAP bluetooth en Ubuntu Linux

En la jerga de bluetooth un NAP es un Network Access Point. Es decir, podemos hacer que nuestro ordenador actúe cómo router o pasarela para conectarse a Internet desde algún dispositivo que se comunique por bluetooth, como una PDA o un teléfono móvil.

Ubuntu tiene unas buenas utilidades gráficas para el manejo de dispositivos bluetooth, pero están orientadas al intercambio de ficheros y utilización como módem de los teléfonos móviles. No he sido capaz de configurar un NAP solo con esas utilidades, así que hay que hacerlo por línea de comandos. Para ello, hay que configurar por un lado la parte concreta de bluetooth, y por otro la parte más general de red del sistema. Estos pasos están pensados para Ubuntu y Debian, pero en otros sabores de Linux serán similares.

Configuración de la parte bluetooth

Para empezar, si no lo tenemos ya hay que instalar las utilidades bluetooth, ejecutando como root:

aptitude install bluez-utils

Lo primero será comprobar que el sistema detecta el adaptador de bluetooth que tengamos en el PC, mediante el comando:

hcitool dev

Deberá aparecer algo parecido a:

Devices:
hci0 00:03:7A:EE:B6:16

Donde hci0 es el dispositivo bluetooth y los números su dirección MAC. Si no aparece nada, es que el sistema no está detectando el adaptador.

Editar el fichero /etc/default/bluetooth. Está muy bien comentado qué es cada parámetro de los que aparecen en él, para nuestros propósitos será necesario asegurarse de que, al menos, los siguiente valores están así:

BLUETOOTH_ENABLED = 1

PAND_ENABLED = 1
PAND_OPTIONS="--devup /etc/bluetooth/pan/dev-up"
PAND_OPTIONS=$PAND_OPTIONS" --listen --role NAP "

SDPTOOL_OPTIONS="add NAP"

Aquí hay un par de cosas importantes que no vienen configuradas por defecto y que no he visto bien explicado en ningún sitio: En la primera línea PAND_OPTIONS indicamos la ruta de un script que se ejecutará cuando se establezca la conexión para levantar el interface. Este script no existe, hay que crearlo; es muy simple y más abajo se explica cómo hacerlo. El otro detalle es que en la otra línea donde pone PAND_OPTIONS, si no le añadimos lo que hemos puesto en la línea anterior se perderá. Para que no ocurra, se pone primero el valor que ya tenía, con $PAND_OPTIONS, y a continuación se le concatenan los nuevos valores.

A continuación, editar el fichero /etc/bluetooth/hcid.conf, y modificar la que pone passkey, donde indicaremos un password para la conexión desde la PDA. Más abajo donde pone Default link mode deberá poner: lm accept,master;

En el paquete bluez-utils hay una cosa mal en el script de arranque /etc/init.d/bluetooth, y es que no se lanza el demonio del servicio SDP, que se encarga de mostrar los servicios ofrecidos por nuestro servidor a los dispositivos que se quieran conectar a él. Para que lo lance deberemos buscar en el mencionado fichero la parte donde pone start) y veremos que hay varias líneas donde pone 'start_algo || true'. Añadiremos run_sdptool || true



Configuración de la parte de red del sistema

Cuando se establezca la conexión bluetooth se creará un interface llamado bnep0, que deberá tener su dirección IP. Para hacerlo más simple, suponemos que esta dirección es estática, y lo configuramos en el fichero donde se encuentran todos los interfaces de red del sistema, en /etc/network/interfaces :

auto bnep0
iface bnep0 inet static
address 192.168.2.1
netmask 255.255.255.0
gateway 192.168.0.1 (o el que tengamos en nuestra conexión a Internet por defecto)

Con esto configuramos la IP, pero el interface no estará activo hasta que no se conecte un dispositivo como una PDA. Para activarlo cuando llegue ese momento es necesario un pequeño script al que nos hemos referido más arriba. Lo habíamos configurado para que se llamara /etc/bluetooth/pan/dev-up, pero podría estar en cualquier otro sitio. Su contenido es el siguiente:

#!/bin/sh
ifup --force $1

La opción de --force es mejor ponerla porque a veces al terminar la conexión el interface se queda creado y la siguiente vez no se vuelve a levantar porque se piensa que sigue activo. El script este es ejecutado por el demonio que atiende las conexiones bluetooth, y le pasa como parámetro el nombre del interfaz creado, en nuestro caso bnep0.

Para que el PC haga de router y conseguir así que la PDA se conecte a internet, deberemos ejecutar estos dos comandos:

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Suponiendo que sea eth0 la tarjeta de red por la que salimos. Estos comandos pueden ponerse en algún script de arranque para que se ejecuten al iniciar el sistema.

Para terminar, reiniciaremos los servicios de bluetooth y de red para asegurarnos de que los cambios se aplican:

/etc/init.d/networking restart
/etc/init.d/bluetooth restart

Conexión desde la PDA

Esta parte ya depende del dispositivo que tengamos. En mi caso, una PDA HP iPAQ.

Lo primero es configurarle una dirección IP. Por simplificar, se la pongo también estática y la configuro como tarjeta de red. Esto también es importante, he visto muchos tutoriales que para hacer esto mismo usan una conexión serie, como si fuera un módem. En nuestro caso todo lo contrario, lo hacemos como si fuera una tarjeta ethernet.

A continuación, activar el interface bluetooth y escanear en busca de dispositivos. Deberá aparecer nuestro PC. Lo seleccionaremos y saldrán los servicios ofrecidos. Debería aparecer uno llamado "Network Access Point" o similar. Lo seleccionaremos y nos pedirá que introduzcamos un PIN, que es el que habremos configurado en el fichero /etc/bluetooth/hcid.conf

Y si todo va bien, se establecerá la conexión. En nuetro PC al ejecutar un ifconfig aparecerá el interface bnep0 y si hacemos ping a la IP de la PDA deberá responder. Parece complicado, pero después de hacerlo tres o cuatro veces es muy sencillo :-)

Más información:
http://bluez.sourceforge.net/contrib/HOWTO-PAN
http://quozl.netrek.org/bluetooth/
http://www.triptico.com/software/bluetooth.html