Firefox 2.0
Recientemente he escrito un post sobre los plugins mas interesantes para el firefox. Con la aparición de la version 2.0 de Firefox, muchos de ellos han quedado obsoletos . Quizás el mas importante sea el Tab Mix Plus, que ha dejado de funcionar por completo, sin embargo las funcionalidades mas importantes de este plugin pueden ser sustituidas por otro metodos:
Para restaurar sesiones automáticamente basta con ir a las Preferencias del Firefox en la pestaña Main y poner el desplegable Startup adecuado. Otro metodo es poner el parametro browser.startup.page=3 del firefox, para hacerlo solo tenemos que escribir about:config en la direccion a navegar y pulsar intro. Otra funcionalidad interesante era la de Colorear las pestañas de paginas que aun no leimos, eso lo conseguimos con el plugin: ColoUnReadTabs que podemos descargar aqui.
El resto de funcionalidad del Tab Mix Plus es poco relevante para mi, con lo que no me he puesto ni siquiera a buscar substitutos.
Los otros plugins que menciono en mi post funcionan perfectamente, con lo que ya se puede instalar la version 2.0 del Firefox con tranquilidad.
Emacs: Coloreando la sintaxis

Es algo natural que cada 3 o 4 meses a los que nos pasamos 10 horas delante de la pantalla del ordenador, nos salte el chip de la locura y se nos de por aprender alguna tecnologia nueva, ya sea un lenguaje, una nueva arquitectura, o un editor de textos.
Pues bien, en esta ocasion le ha tocado el turno a emacs, ya hacía un monton de tiempo que queria aprender a usarlo (yo soy un usuario de vim ya desde pequeñito), y por fin he encontrado un hueco para probarlo. Con lo primero con lo que me encuentro es que NO viene habilitado por defecto el syntax highlight , algo que considero un requisito imprescindible, preguntádole a google, me cuenta que hay que habilitar la opción :
(global-font-lock-mode 1)
en el archivo ~/.emacs, cosa facil ... Segun el manual, es obvio que global-font-lock-mode=1 quiere decir que syntax-highlight=1. Puffffff ... quizás sea mas intuitivo el syntax on del vim , pero para gustos hay colores. La lista de atajos de teclado es bastante larga, pero los mas usados son bastante faciles de recordar.
Tunel ssh , el poder de la encriptacion
Muchos de nosotros usamos el ssh para conectarnos a maquinas unix remotas, para realizar tareas de administracion, para entrar en la shell y revisar el correo, para programar, para cientos de cosas. Ya hace algún tiempo vengo usando ssh para encriptar mis conexiones al servidor de correo IMAP/SMTP, pero recientemente en la oficina de un cliente tienen todas las conexiones WEB salientes monitorizadas y a mi no me apetece que espien las webs que visito, con lo que he empleado de nuevo los tuneles ssh.
Por lo tanto estas son las instrucciones para montar un tunel ssh que nos permita navegar a traves de un proxy que tengamos en un ordenador remoto (en el ordenador de casa, mismo).
Instalamos Squid en el ordenador remoto en el puerto 3128.
Instrucciones en entorno de escritorio Linux
En el ordenador local establecemos un tunel ssh que mapea el puerto LOCAL 23128 con el puerto remoto 3128:
coffman@bender$ ssh -N -l username -L 23128:localhost:3128 ip.servidor.casa
Con esto nos pedirá el password del usuario username en el ordenador remoto de casa y quedará establecido el tunel siguiente :
|----------- S S H T U N N E L ---------| host: localhost <-----------------------------------------> ip.servidor.casa tcp port: 23128 3128
Instrucciones de configuracion en Windows
TODO: Pendiente de realizar capturas y conseguir un sistema operativo windows
Instrucciones de configuracion del Navegador (común)
De modo que para conectar con el navegador a internet ya solo tenemos que configurarlo para que use un proxy local (que en realidad está mapeado con el squid remoto):

El proceso para establecer un tunel ssh contra un servidor de correo IMAP/SMTP es similar :
coffman@bender ssh -N -l username -L 2125:localhost:25 server.smtp
Enlaces relacionados:
http://www.afp548.com/Articles/security/ssh-tunnels.html
Ya podemos navegar seguros y en modo anonimo ;)
Extensiones Firefox, imprescindibles
Las extensiones del firefox es sin duda su mejor caracteristica, no tiene sentido usar el navegador sin que estén instaladas ciertas extensiones, yo las clasifico en aquellas que son Imprescindibles , las que en ocasiones uso mucho y las que instalo unicamente porque me parecen interesantes.
Extensiones Imprescindibles
Son aquellas extensiones sin las cuales no me siento a trabajar en un ordenador, siempre que reinstalo un equipo o uso otro nuevo las instalo inmediatamente despues de instalar el firefox.
FireGestures
FireGestures usa la novedosa caracteristica de Gestos del raton, que basicamente indica al navegador que accion realizar con solo un gesto del raton, sin necesidad de usar el menu, especialmente útil para abrir nuevas ventanas, pestañas, ir hacia adelante, hacia atrás, etc ...
Esta extension deberia venir incorporada por defecto (como lo hace el opera).
Google Toolbar
Google Toolbar es la barra que nos permite realizar busquedas en google de manera rapida y sencilla, su unico problema es que ocupa demasiado (el tamaño de la barra de las bookmarks). El principal uso que le doy yo es la traduccion en tiempo real de cualquier palabra contenida en una pagina web con solo dejar el raton encima de la misma durante unos segundos.
Download
Gmail Notifier
Gmail sigue siendo beta, pero aun asi lo usa todo el mundo, es por ello que la utilidad de gmail para chequear el correo desde el navegador directamente es imprescindible, ademas de indicar el numero de correos que tienes pendientes de leer y la capacidad total del buzón.
Download
Tab Mix Plus
Esta extension es la ultima que he descubierto, no recuerdo la pagina pero es de las que he incluido en la lista de imprescindibles mas rapidamente. Sirve sobre todo para añadir funcionalidad extra a las pestañas del firefox, estilos para cada pestaña, barras de progreso, etc ... pero sin duda la funcionalidad mas util es el guardado de sesiones, de modo que cuando vuelves a iniciar el firefox te permite recomponer el estado del navegador (con las mismas pestañas que tenias abiertas) antes de cerrarlo.
Download
Extensiones Utiles
La mayoria de veces que uso el ordenador para trabajar, necesito de estas extensiones, sin embargo no son tan importantes como las imprescindibles y puedo pasar perfectamente sin ellas.
Web developer Extension
Si eres diseñador, si tienes pagina web o si haces paginas por cualquier motivo, esta extension es imprescindible, te permite alterar el tamaño de tu navegador para una u otra resolucion, localizar divs, modificar el estilo de la pagina on-line, y muchas otras cosas que si haces o retocas paginas web necesitarás.
Download
Adblock
Para evitar los odiosos banners publicitarios, esta extension te permite añadir filtros y reglas para denegar determinados dominios que solo sacan banners. Si en una pagina ves un banner que quieres eliminar, tambien lo puedes hacer mediante el menu de la extensión.
Download
Extensiones Interesantes
De vez en cuando me paso por la pagina de extensiones de mozilla, siempre encuentro alguna extension interesante para probar, a veces se convierte en util y las menos en imprescindible.
Screengrab
Screengrab te permite relizar capturas de paginas web enteras, muy chulas cuando quieres presentar la pagina web de arriba a abajo. Ademas te evita el tener que abrir un programa de captura para sacar una instantanea de la web que estás viendo. Requiere java , pero ... quien no tiene java instalado ?? ;) UPDATED 23-abr-07: La nueva version de ScreenGrab ya no es necesario tener Java instalado, y es recomendable bajarlo de la pagina del autor:
Download
Nota (25/07/2008): Se ha sustituido el Mouse Gestures por el FireGestures, pues este primero se ha quedado obsoleto con la versión 3 de Firefox.
Screencast en linux , grabando lo que sucede en la pantalla de linux es facil
Bueno, haciendo referencia a una de las necesidades que tenia yo basicas para linux y encontrandolo sin querer (como suele pasar), he encontrado un pequeño manual de como hacer screencasts en linux, quedan bastante bien y son muy faciles de hacer, pongo aqui un pequeño manual.
Introducción
Necesitaremos vnc , pues este metodo usa vnc4server, OJO la version anterior a esta es vncserver y tiene los archivos de configuracion cambiados de sitio.
Instalamos y configuramos
#apt-get install vnc4server xvncviewer
Bajamos pyvnc2swf de aqui , lo destarreamos y en ese directorio ya lo ejecutaremos luego. para el vnc4server necesitamos crear un archivo de ejecucion inicial (ejecuta un gestor de ventanas y esas cosas) el archivos es ~/.vnc/xstartup, el mio tiene esto (pero es muy facil de hacerlo al gusto de cada uno)
#!/bin/sh
# Uncomment the following two lines for normal desktop: unset SESSION_MANAGER exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r HOME/.Xresources \] && xrdb HOME/.Xresources xsetroot -solid grey vncconfig -iconic & xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & startx &
Este archivo lo hacemos ejecutable : vic@whitewidow:.vnc$ chmod 755 ~/.vnc/xstartup, y tambien /etc/X11/xinit/xinitrc whitewidow:/home/vic/pyvnc2swf-0.8.2# chmod 755 /etc/X11/xinit/xinitrc
Al grano
Lo primero es ejecutar el vnc4server y proporcionarle una contraseña para conectarnos a el :
vic@whitewidow:pyvnc2swf-0.8.2$ vnc4server -geometry 800x600 :4
New 'whitewidow:4 (vic)' desktop is whitewidow:4
Starting applications specified in /home/vic/.vnc/xstartup Log file is /home/vic/.vnc/whitewidow:4.log
Ejecutamos el servidor a 800x600 en la pantalla virtual numero 4 si es la primera vez nos pregunta la password que va a tener el servidor.
Ejecutamos el visor de este escritorio:
vic@whitewidow:pyvnc2swf-0.8.2$ vncviewer whitewidow:4 VNC viewer version 3.3.7 - built Apr 27 2006 07:09:29 Copyright (C) 2002-2003 RealVNC Ltd. Copyright (C) 1994-2000 AT&T Laboratories Cambridge. See http://www.realvnc.com for information on VNC. VNC server supports protocol version 3.8 (viewer 3.3) Password:
En otra consola o poniendo en segundo plano la ejecucion de esta misma, ejecutaremos OTRO visor del vncserver en el que vamos a grabar lo que vayamos haciendo en la ventana recien surgida: Pulsamos ctrl-z (pausamos la ejecucion del vncviewer):
[1]+ Stopped vncviewer whitewidow:4 vic@whitewidow:pyvnc2swf-0.8.2 bg \[1\]+ vncviewer whitewidow:4 & vic@whitewidow:pyvnc2swf-0.8.2
Ahora ejecutamos el vnc2swf que se conecta al servidor y solo mira (graba) todo lo que hagamos:
vic@whitewidow:pyvnc2swf-0.8.2$ ./vnc2swf.py -n -o salida.swf whitewidow:4 Using pygame 1.7.1release open /dev/sequencer: No such device Connected: whitewidow:5904, protocol_version=3.8, preferred_encoding=(0, -232, -239) Password for whitewidow:5904: VNC Screen: size=800x600, name='whitewidow:4 (vic)' Output movie size: 800x600 Creating movie: 'salida.swf': version=5, size=800x600, framerate=12.0, compression=None
Con esto todo lo que hagamos en la ventana del vncviewer de la sesion 4 estará grabado en un archivo llamado salida.swf y lo podremos ver poniendo en el navegador la pagina slida.html.
Links
- http://panela.blog-city.com/howto_create_a_basic_screencast_on_linux.htm
- http://showmedo.com/videos/video?name=UsingVNC2SWF.py
Pues al final es bien facil hacer screencasts desde linux ;)
AOP Aspect Oriented Programming
Interesantísimos son los últimos documentos que estoy leyendo sobre AOP, una metodología de trabajo que nos ayuda en un montón de tareas de las que ahora nos ocupábamos usando ñapas o malos hábitos de programación.
Problema
El problema es que la programación orientada a objetos no escala con facilidad en cuanto se aumentan funcionalidades trasversales o requerimientos al desarrollo del programa. Me refiero a funcionalidades trasversales, funcionalidades que no son intrínsecas al modelo de nuestro desarrollo y que pueden ser externalizadas y aplicadas a múltiples desarrollos, como por ejemplo los logs, la seguridad, la persistencia, ... Una clase desarrollada por nosotros a priori no tiene porqué saber como implementar la seguridad, como persistirse a si misma o como logear sus propias acciones.
Solución
La solución viene de la mano de AOP. Nos permite establecer "puntos de ruptura" en los cuales "salta" la ejecución de otras clases, realizan tareas y devuelven el control al punto de ruptura. Mediante la definicion en un archivo xml del punto de ruptura (que puede ser un patron en el nombre del metodo por ejemplo), le indicamos a nuestro "cargador de clases" ( tomcat, spring, ...) que ejecute otra clase y luego devuelva el control, todo ello sin necesidad de modificar la clase original por supuesto.
Implementaciones de AOP
Algunas implementaciones de AOP son AspectJ, Aspectwerkz, Jboss AOP, Spring AOP, ... . Aunque probablemente el mas potente (y el que yo uso) sea Spring AOP, quizás no sea el mas adecuado para aprender el funcionamiento de la Programacion Orientada a Aspectos. Yo creo que el mas adecuado para aprender es Aspectwerkz debido a la sencillez de su sintaxis y a que se centra exclusivamente en la AOP.
Conceptos Clave
Cross-cutting concerns: Un problema cruzado es aquella funcionalidad que es trasversal a nuestra clase, de modo que se pueda implementar a varias clases o incluso programas, por ejemplo Logging Advice: Del inglés consejo, es el codigo adicional que queremos añadir a nuestro modelo, que puede ser codigo especifico de log, de persistencia, ... Point-cut : El punto de corte, es el punto determinado en la ejecucion de nuestro programa donde queremos aplicar el consejo o codigo adicional.
Articulos y Links Relacionados
http://www.programacion.com/java/articulo/jap_aop/ http://en.wikipedia.org/wiki/Aspect-oriented_programming http://www.onjava.com/pub/a/onjava/2004/07/14/springaop.html
Linux: Cosas que hecho en falta ...

Llevo usando linux desde hace practicamente 10 años, unicamente lo uso para trabajar en la oficina y en casa, para mis momentos de ocio uso Windows XP , pues por desgracia es demasiado complicado instalar juegos nuevos en Linux y unicamente el Quake 3 es tremendamente sencillo de instalar y jugar; Y desde mi punto de vista jugar debe ser tan facil de hacer como en la PS2 o en la PSP, enchufar y jugar , no quiero tirarme una hora preparando el wine para poder jugar o bajandome un nuevo emulador (se me suelen quitar las ganas y tengo poco tiempo para el ocio). En mis linux tengo instalado Debian, Ubuntu, Redhat y Slackware, aunque he ido sustituyendo practicamente todos ellos por Debian (incluso en el portatil). Con esto quiero decir que de las 10 horas que me paso cada dia delante de un ordenador, aproximadamente 9 son usando linux. Y por mucho que busco hecho de menos algunas herramientas que veo en los Mac o en los Windows :
- Herramienta de Diagramas como el Visio de Microsoft (que nadie me comente el dia o el xfig, por favor)
- Herramienta de prototipado de aplicaciones WEB (creo que con el visio se puede hacer tambien), sin embargo en linux no encuentro nada.
- Herramienta pesada de publicacion en BLOGs (del estilo del w.bloggar) incluso me he puesto a hacer una yo mismo en java de lo desesperado que estaba (Jdiary).
- Utilidad de Captura de Pantalla (simples screenshots pero de areas de pantalla pudiendo añadir imagenes, marcos, etc ...), una que me parece buena es SnagIt.
Utilidad para hacer screencasts bajo linux, para Mac y Windows hay bastantes, pero para linux no he encontrado ninguna. UPDATED (26-jul-06) Ya he encontrado varios modos, está posteando en esta entrada de mi blog.- Los juegos ?¿ Bueno puedo pasar sin ellos ... pero me fastidia tener un windows solo para jugar al WoW
No, se .. para mi uso habitual no necesito mucho mas ... las herramientas que mas usi habitualmente son :
- Eclipse
- Vim (solo le falta auto-completar y quito el eclipse)
- OpenOffice (una maravilla, especialmente el OOCalc)
- Firefox (en Windows o en Mac tambien lo usaria)
- Thunderbird (lector de correo muy decente)
Si alguien tiene una sugerencia me encantaria conocerla.
Encriptacion de directorios y archivos en Linux con encfs
La encriptacion de sistemas de archivos, directorios y archivos es algo que siempre ha estado ahí, pero con la inclusion en el nucleo 2.6 de la api de encriptacion CryptoAPI han aparecido nuevas aplicaciones, aunque la que aquí voy a usar es sencilla de instalar, de usar y no requiere un nucleo 2.6 Sobre todo está enfocado a :
- Administradores de Sistemas que quieren guardar cuidadosamente sus scripts
- Simples usuarios quue quieren guardar su informacion sensible
- Trabajadores que no desean que los administradores de la empresa vean sus archivos
- .... seguro que un monton de usos mas ...
Vamos a suponer que estamos usando una Debian, de lo contrario adapta los comandos como creas conveniente. Lo primero es bajarse encfs (#apt-get install encfs deberia servir). esto nos baja e instala encfs y fuse si no lo tuvieramos instalado. FUSE es acronimo de filesystem Userspace, y nos permite montar y desmontar sistema de archivos con un usuario normal. FUSE debe ser introducido en el kernel de linux, o bien como modulo o bien en el propio kernel. Para meterlo como modulo tenemos estas opciones:
- Instalamos fuse-source
- (#apt-get install fuse-source) y nos vamos al directorio del mismo y lo descomprimimos
-
- cd /usr/src ; bunzip2 fuse-src.tar.bzip2 ; tar zvf fuse-src.tar
- Ahora compilamos e instalamos : cd /usr/src/modules/fuse/kernel/ ; ./configure ; make ; make install
- el modulo deberia estar listo y lo cargamos con modprobe fuse
- cd /usr/src ; bunzip2 fuse-src.tar.bzip2 ; tar zvf fuse-src.tar
- Existe un paquete llamado fuse-modules que seguramente lo instale automaticamente pero no lo probé aun
- desde el menu de compilacion del nucleo seleccion en Filesystems->fuse añadir como Modulo y listo
Ahora creamos un directorio para meter todos los datos privados como un usuario normal si lo preferimos: **mkdir ~/.privado/ ~/privado/ (necesitaremos los 2 directorios)** Nos aseguramos que el module fuse está cargado: #**modprobe fuse** Añadimos a nuestro usuario al grupo fuse #**usermod -Gfuse coffman** (para que linux coja este cambio puede ser necesario que reinicies la sesión) Creamos el sistema de archivos: encfs ~/.privado/ ~/privado/ Creando nuevo volumen cifrado. Por favor, seleccione una de las siguientes opciones: introduzca "x" para modo de configuración para expertos, introduzca "p" para el modo preconfigurado paranoico, cualquier otra cosa o una línea vacía seleccionarán el modo estándar. ?>p
Configuración paranoica seleccionada.
Configuración finalizada. El sistema de ficheros que se va a crear tendrá las siguientes propiedades: Cifrado del sistema de ficheros: "ssl/aes", versión 2:1:1 Codificación de nombres de ficheros: "nameio/block", versión 3:0:1 Tamaño de clave: 256 bits Block Size: 512 bytes, including 8 byte MAC header Cada fichero contiene una cabecera de 8 bytes con datos únicos del IV. Los nombres de ficheros se codificarán usando el modo de encadenamiento de IV. El IV de los datos del fichero está encadenado al IV del nombre del fichero.
A continuación se le pedirá una contraseña para el sistema de ficheros. Debe recordar esta contraseña, ya que no existe absolutamente ningún mecanismo de recuperación. No obstante, la contraseña puede cambiarse después con encfsctl. Nueva contraseña Encfs: ******* Verifique la contraseña Encfs: *******
Con esto ya deberiamos tener el directorio ~/privado/ protegido perfectamente ... Para desmontar el directorio : $ fusermount -u ~/privado/
Listo... nuestros datos ya estan a salvo, siempre que los metamos en el directorio ~/privado , claro está ;)
Tutorial minimalista sobre comunicacion RMI en Java
Esto no pretende ser un tutorial ni mucho menos, mas bien una pequeñas prueba de concepto para la tecnologia RMI.
Recientemente me ha tocado colaborar en un proyecto con una parte cliente y una parte servidor , ambas en entornos unix y separadas fisicamente por firewalls. De modo que para comunicar las 2 partes del software estoy evaluando varias posibilidades, y para cada una de ellas tendre un ejemplo basico de funcionamiento.
En esta primera parte la evaluacion será de RMI Para la prueba construiremos el "Hola Mundo" en version cliente/servidor Los archivos necesarios serán:
- Hello.java (Una interface con lo basico)
- HelloImpl.java (El Objeto servidor en si mismo, con metodo main para poder ejecutarse)
- HelloClient.java (El cliente java)
Estos 3 archivos componen la parte servidora (objetos en el lado del servidor) Hello.java
import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws RemoteException; }
HelloImpl.java
import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; import java.rmi.server.UnicastRemoteObject;
public class HelloImpl extends UnicastRemoteObject implements Hello {
public HelloImpl() throws RemoteException { super(); }
public String sayHello() { return "Hola, holita..."; }
public static void main(String args[]) {
// Create and install a security manager if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); }
try { HelloImpl obj = new HelloImpl();
// Bind this object instance to the name "HelloServer" Naming.rebind("//192.168.0.18/HelloServer", obj);
System.out.println("HelloServer bound in registry"); } catch (Exception e) { System.out.println("HelloImpl err: " + e.getMessage()); e.printStackTrace(); } } }
policy
grant { // Allow everything for now permission java.security.AllPermission; };
Este es para la parte cliente HelloClient.java
import java.rmi.Naming; import java.rmi.RemoteException; public class HelloClient { static String message = "blank"; static Hello obj = null; public static void main(String args[]) { try { obj = (Hello)Naming.lookup("//192.168.0.18" + "/HelloServer"); message = obj.sayHello(); } catch (Exception e) { System.out.println("HelloApplet exception: " + e.getMessage()); e.printStackTrace(); } System.out.println("MENSAJE:"+message); }
}
Una vez que tenemos y revisamos estos archivos, compilamos y generamos los proxys para que el cliente**
** remoto pueda acceder al objeto servidor (que simplemente devuelve un mensaje)
javac Hello.java HelloImpl.java rmic HelloImpl
Lo cual nos genera los .class de Hello.java y HelloImpl.java . Ademas de esto, el comando rmic, genera unos proxys para copiar en el lado cliente son: HelloImpl_Stub.class y HelloImpl_Skel.class
El archivo policy lo necesitamos en el lado del servidor para dar seguridad al acceso a nuestro objeto, el ejemplo es INSEGURO para un entorno de producción. Ahora que tenemos toda la parte del servidor lista, ejecutamos el rmiregistry que levanta un servidor escuchando en el puerto 1099, Este programa se encarga de recibir peticiones de Clientes que intentan localizar objetos servidores y les indica donde se encuentran fisicamente.
Una vez que tenemos levantado el rmiregisty , Levantamos nuestro objeto de lado del servidor:
java -Djava.security.policy=$HOME/Programacion/java/rmi/policy HelloImpl
haciendo referencia al archivo policy antes creado.
En el lado cliente compilamos HelloClient.java y copiamos el Stub y el Skel generados en el servidor, de modo que tengamos:
HelloClient.class HelloImpl_Skel.class HelloImpl_Stub.class
y ejecutamos : java HelloClient , que como resultado deberia dar : vic@coffdeb:rmi$ java HelloClient MENSAJE:Hola, holita...
Transferir archivos entre nokia 6630 y Linux via Bluetooth
El topic suena interesante , eh ?? pues aun encima es mas fácil de lo que parece, empecemos con los pasos a seguir ...
Debemos tener un nucleo que tenga compilado ó en forma de modulo lo siguiente :
hci_usb (seguramente ya lo tengamos metido)
rfcomm (para las comunicaciones)
l2cap (idem)
bluetooth (logico, no ?)
No pienso explicar como recompilar el nucleo , hay cientos de páginas que dicen como hacerlo ...
Instalamos tambien los paquetes relacionados con bluetooth, pongo el caso de la debian, si usais otra distribución ejecutar el comando equivalente.
apt-get install bluez-utils bluez-pin bluez-firmware bluez-hcidump bluetooth
La transferencia de archivos la vamos a hacer "a mano" pues la interface grafica a mi aun no me funciona ...
Antes de empezar metemos el bluetooth en una ranura USB y vemos los LOGS que deberia aparecer algo como esto :
Jun 1 18:57:48 localhost kernel: usb 4-2: new full speed USB device using uhci_hcd and address 3 Jun 1 18:57:48 localhost kernel: Bluetooth: HCI USB driver ver 2.9 Jun 1 18:57:48 localhost kernel: usbcore: registered new driver hci_usb Jun 1 18:57:48 localhost usb.agent[22990]: hci_usb: loaded successfully Jun 1 18:57:48 localhost usb.agent[22989]: hci_usb: loaded successfully
Con lo que
1.- Descubrimos la ID de nuestro teléfono movil (es único para cada telefono y este es un ejemplo)
zoidberg:~# hcitool scan Scanning ... 00:16:4E:0C:2B:91 O jato
2.- Ponemos una password (p.ej. 1111) al bluetooth del PC:
# echo "1111" > /etc/bluetooth/pin
3.- Vemos el canal que usa nuestro móvil para el envio y recepción de archivos (que es el de Nombre OBEX File Transfer) :
vic@zoidberg:Elephant$ sdptool browse 00:16:4E:0C:2B:91 Browsing 00:16:4E:0C:2B:91 ... Service Name: Hands-Free Audio Gateway Service RecHandle: 0x10000 Service Class ID List: "Handfree Audio Gateway" (0x111f) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Handfree Audio Gateway" (0x111f) Version: 0x0101 Service Name: OBEX File Transfer Service RecHandle: 0x1000a Service Class ID List: "OBEX File Transfer" (0x1106) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 10 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "OBEX File Transfer" (0x1106) Version: 0x0100 ...
En mi caso el número de Canal para la transferencia de archivos es el 10 (OBEX File Transfer).
Ponemos al bluethooth del ordenador en espera de conexiones en ese canal ...
obexserver
Vinculamos desde el telefono movil ... dandole en Bluetooth->buscar dispositivos-> ... -> Asociar
y a enviar archivos ...
Cada vez que queramos enviar un archivo tenemos que volver a ejecutar el obexserver****Links:http://www.e-oss.net/wordpress/?p=12http://usefulinc.com/software/gnome-bluetoothhttp://es.wikibooks.org/wiki/Hacks_para_sistemas_operativos_Unix-like/Redes/Bluetooth/Linux





