Archivo de la categoría: PocketPC

En VMWare solo puedo sincronizar mi Pocket PC una vez

Últimamente uso bastante las máquinas virtuales VMWare, sobre todo para sincronizar mi iPod con un Windows XP virtual. VirtualBox, en cambio, tiene muchos problemas, no solo con la iPod sino también con las PDA, así que VMWare es de momento la mejor opción porque maneja muy bien y muy rápido los puertos USB 2.0. Ya se que es políticamente incorrecto para un linuxero de pro, pero sinceramente os digo que no he encontrado ningún software Linux que iguale al iTunes, ni siquiera nuestro querido Amarok. Sobre todo para los locos que todavía compramos música de vez en cuando (compraría mucha más si me la dieran desprotegida, pero el iTunes Plus tiene una oferta muy baja por culpa de las discográficas). En fin… hay gente que todavía no se ha enterado de por dónde va el mercado. Apple sí, desde luego, pero no las discográficas. Pero es que ni p* idea, vamos.

Pero me estoy enrollando, como siempre. A lo que iba, que aprovechando que voy tirando de la máquina virtual, la estoy usando también para sincronizar la PDA (con lo que he abandonado SynCE, tal vez para siempre). Solo hay un problema: hay alguna incompatibilidad aún no corregida con los drivers usb_storage de Linux, que hacen que solo funcione bien si no hay ningún disco duro USB funcionando. Aun así, es muy posible que solo consigas sincronizar la PDA una vez. Si la desenchufas y luego la vuelves a enchufar, verás que ya no la reconoce. Solo lo hará de nuevo si apagas la máquina virtual y luego reseteas Linux, una medida demasiado drástica, creo yo.

Hombre, tampoco hay que llegar a eso. Puedes parchear el problema sin necesidad de rebotar el ordenador. Lo único que hay que hacer es desmontar los módulos problemáticos del kernel cada vez que desenchufes la PDA.

Haz la prueba. Enchufa tu PDA a la máquina virtual y deja que se sincronice. Ahora desenchúfala. Ahora abre una terminal Konsole o Gnome-terminal y desmonta los módulos que nos molestan:

 
[lacofi@jeanne lacofi]$ su
password: 
[root@jeanne /home/lacofi]# rmmod rndis_wlan
[root@jeanne /home/lacofi]# rmmod rndis_host
[root@jeanne /home/lacofi]# rmmod cdc_ether
[root@jeanne /home/lacofi]# rmmod usbnet
[root@jeanne /home/lacofi]# exit
[lacofi@jeanne lacofi]$

Ahora vuelve a la máquina virtual y enchufa la PDA otra vez. Esta vez debería ser reconocida de nuevo sin problemas. :-)

No consigo conectar mi Pocket PC a Internet usando un Sharp 703SH

Esto me ha llamado mucho la atención. Resulta que he conectado a Internet con Linux a través de un móvil UMTS/3G Sharp 703SH con relativamente pocos problemas.

Y sin embargo, me ha resultado casi imposible conectar una iPAQ Rx3715 al mismo teléfono. Y eso a pesar de que hablamos del sistema operativo Windows Mobile 2003SE y de una marca y un proveedor que dan soporte a ese tipo de conexiones y a ese teléfono. Pero el Servicio de Atención al Cliente de Vodafone era incapaz de conseguir que me funcionara la conexión, y no he visto ninguna Web que me aclarara dónde estaba el problema.

De hecho, encontré la solución por mí mismo, símplemente porque Linux, que enganchaba el teléfono sin problemas, me estaba dando la respuesta delante de mis narices.

Porque vereis, descubrí que si tecleaba los comandos de módem de los scripts de linux en una ventana de terminal de la PocketPC, la iPAQ Rx3715 sí se conectaba a Internet. Unas cuantas pruebas más me llevaron a pensar que el problema estaba en las cadenas de inicialización del modem.

Y googleando un poco, descubrí que se podía modificar el registro de Windows Mobile para que envíe las cadenas de inicialización correctas al teléfono móvil. Tan simple como eso.

Sin enrollarme demasiado:

La configuración correcta de una Pocket PC con Windows Mobile 2003SE es tal y como dice el Servicio de Asistencia al Cliente de Vodafone:

  1. Abre «Configuración»
  2. Abre «Conexiones»
  3. Tap en icono «Conexiones»
  4. Abre «Agregar nueva conexión de módem»
  5. Ponle un nombre, por ejemplo «Vodafone»
  6. Selecciona como modem «Bluetooth Dialup Modem»
  7. Tap en «Siguiente»
  8. Ahora te pide un número de teléfono. Pon *99***1#
  9. Tap en «Siguiente»
  10. En Usuario pon «wap@wap» (también vale «vodafone»)
  11. En Contraseña pon «wap125» (también vale «vodafone»)
  12. Tap en «Avanzado»
  13. En Velocidad pon 115200
  14. Tap en «OK» (arriba a la derecha)
  15. Tap en «Finalizar»

Vale. Si ahora intentas poner en marcha la conexión verás que falla. El error está en la cadena de inicialización, que no es la correcta para este móvil. ¿Como cambiarla?. Bueno, pues tienes que hackear el registro de Windows Mobile. Para ello necesitas un editor del registro, como por ejemplo PHM RegEdit, que es el que te recomiendo.

Con el editor del registro, abre la siguiente entrada:

  1. HKEY_LOCAL_MACHINE
  2. Drivers
  3. Unimodem
  4. Init
  5. 2

Ahí verás que pone «ATE0V1&C1&D2<cr>». Cámbialo a «ATE0V1<cr>», simplemente (si te fijas, es la misma cadena de inicialización que enviaba linux). Pulsa OK, OK, cierra el editor, y haz un soft-reset a la PDA.

Ya está. Prueba ahora. Deberías conectar sin problemas. :-)

¿A velocidad 3G?.

Bueno, no. El Windows Mobile 2003SE tiene una estúpida limitación en el puerto que hace que no puedas seleccionar una velocidad superior a 115200, cuando con un teléfono UMTS/3G debería ser superior a 384000. Parece que eso se puede hackear también. Para ello edita de nuevo el registro de Windows Mobile y abre la siguiente entrada:

  1. HKEY_CURRENT_USER
  2. Comm
  3. RasBook
  4. Vodafone (o el nombre que tú le hayas puesto a la conexión)
  5. DevCfg

Ahora localiza la secuencia de bytes donde diga «00.c2.01» (115200 en hexadecimal), y cambialo por «00.08.07» (460800 en hexadecimal). Pulsa OK, OK, cierra el editor y haz un soft-reset a la PDA. Esto puede duplicar la velocidad de navegación de tu PDA. Si vuelves a abrir la configuración, verás que la velocidad de transmisión ahora está en blanco, pero así es como tiene que estar. Déjala así, no la cambies, ¿vale?.

Que lo disfrutes.

Aún necesito Windows para instalar programas en la PocketPC

Si has llegado a este punto, habrás comprobado que solo necesitas Windows para instalar algunos programas. Puedes sincronizar, copiar ficheros, acceder al árbol de directorios, incluso desinstalar programas desde Linux. Incluso puedes instalar software en formato CAB desde la propia PDA (te recomiendo usar el programa cabinst, porque te permite instalarlos en la iPAQ File Store o en la Tarjeta de Memoria, no solo en la memoria principal.

Pero hay mucho software que viene preparado para ser instalado desde Windows, en formato EXE o ZIP, por lo que aún lo necesitas para eso. ¿Quieres la total independencia?. ¿Quieres que ni siquiera tengas que entrar en Windows para eso?.

Lo que puedes usar es un programa Linux llamado Orange. Si usas Gentoo, viene incluido en los repositorios normales de la distribución, así que no tendrás problema.

Orange toma un programa PocketPC en formato EXE, ZIP, etc, y extrae de él los CAB embebidos, no visibles habitualmente. Una vez extraidos, ya puedes copiarlos a la PocketPC y usar Cabinst para instalarlos donde quieras. La operación es tan simple como:

[lacofi@jeanette:~]$ orange TDSetup.exe
squeezing out: /home/lacofi/ThemeDream.ARM.CAB
squeezing out: /home/lacofi/Bonus Themes.CAB
squeezing out: /home/lacofi/Bonus Animated Themes.CAB
squeezing out: /home/lacofi/Pocket Status.ARM.CAB
squeezing out: /home/lacofi/animatedtheme.ARM.CAB
-------
5 files
[lacofi@jeanette:~]$ ls -g *.CAB
-rw-r-----  1 lacofi  17K dic  4 16:44 animatedtheme.ARM.CAB
-rw-r-----  1 lacofi 1,5M dic  4 16:44 Bonus Animated Themes.CAB
-rw-r-----  1 lacofi 1,4M dic  4 16:44 Bonus Themes.CAB
-rw-r-----  1 lacofi  27K dic  4 16:44 Pocket Status.ARM.CAB
-rw-r-----  1 lacofi 465K dic  4 16:44 ThemeDream.ARM.CAB

Solo tienes que copiar esos CAB a la PocketPC y usar Cabinst, pero no te garantizo que funcione siempre ni en todas las circunstancias, claro, así que la independencia de Windows me temo que no será nunca total. ;-)

Y ya que estamos, puedes echarle un vistado a todos estos programas incluidos en SynCE. Quizás te interese alguno de ellos, como por ejemplo synce-sound o synce-list-programs. Los programas synce-serial-* deberían funcionar automáticamente, así que no los ejecutes por tu cuenta:

[lacofi@jeanette:~]$ ls /usr/bin/synce*
-rwxr-xr-x  1 root 7,6K jul 10 23:07 /usr/bin/synce-in-computer-folder*
-rwxr-xr-x  1 root  687 jul 10 23:00 /usr/bin/synce-install-cab*
-rwxr-xr-x  1 root 5,8K jul 10 23:00 /usr/bin/synce-list-programs*
-rwxr-xr-x  1 root 6,3K jul 10 23:01 /usr/bin/synce-matchmaker*
-rwxr-xr-x  1 root 8,5K jul 10 23:00 /usr/bin/synce-registry*
-rwxr-xr-x  1 root  447 jul 10 23:00 /usr/bin/synce-remove-program*
-rwxr-xr-x  1 root  476 jul 10 23:03 /usr/bin/synce-serial-abort*
-rwxr-xr-x  1 root 4,0K jul 10 23:03 /usr/bin/synce-serial-chat*
-rwxr-xr-x  1 root 2,7K jul 10 23:03 /usr/bin/synce-serial-config*
-rwxr-xr-x  1 root 2,3K jul 10 23:03 /usr/bin/synce-serial-start*
-rwxr-xr-x  1 root  22K jul 10 23:02 /usr/bin/synce-software-manager*
-rwxr-xr-x  1 root  942 jul 10 23:04 /usr/bin/synce-sound*
-rwxr-xr-x  1 root  26K jul 10 23:04 /usr/bin/synce-trayicon*

¿Cómo solucionar el famoso bloqueo del «iPAQ File Store»?

El bloqueo del «iPAQ File Store» es un fallo de software que aparece en muchas iPAQ, pero sobre todo en la PDA modelo HP iPAQ Rx3715, porque al contrario que otras PDAs tiene un iPAQ File Store bastante grande que se suele utilizar de forma intensiva. Pero en realidad, el fallo no solo ocurre en la Rx3715 sino que puede aparecer en cualquier iPAQ que tenga este sistema de almacenamiento.

El iPAQ File Store suele funcionar perfectamente y con muchas ventajas: es un espacio de almacenamiento siempre disponible y además muy rápido, casi tanto como la propia RAM de la PDA, con lo que es ideal para instalar ahí los programas dejando libre la siempre preciosa memoria principal. Pero los problemas comienzan cuando intentes grabar ahí un fichero que por su tamaño no cabe. Esto, que parece una tontería, desencadena un infierno que deja colgada la PDA. Si haces un Soft Reset, verás que puedes leer los datos de la «iPAQ File Store» sin problemas, pero el sistema de escritura en disco se ha corrompido por completo: no podrás grabar nada, ni modificar ningún fichero, ni tampoco formatear la unidad. La iPAQ File Store se ha vuelto sencillamente inservible, y tu PDA se colgará por completo en cuanto intentes grabar o modificar algo de su contenido. Es más, si por la configuración que tienes metida en tu máquina resulta que la PDA debe escribir algo ahí en el arranque, te encontrarás con que no puedes ni siquiera resetearla (se colgará nada más reiniciar), y te verás obligado a hacer un reseteo por hardware (Hard Reset), con lo que perderás todos tus datos y todos los programas instalados.

Pero los problemas no acaban ahí, claro. La corrupción del sistema de escritura sobrevive a cualquier tipo de reseteo, tanto Software como Hardware. Eso significa que la «iPAQ File Store» está perdida y seguirá dañada hagas lo que hagas, tanto despues de un Soft Reset como Hard Reset. Hasta donde yo sé, la Hewlett Packard no sabe cómo solucionar el problema.

La leche, diras tú, pero ¿este problema tiene solución?. La verdad es que sí. Y debo decir que no es un fallo de la Rx3715, ni de ningún producto de la Hewlett Packard. Es un fallo de la mielda de Windows CE Mobile 2003 que traen de serie. Es un fallo de Microsoft. Y eso me lleva a una pequeña reflexión:

Me consta, por los foros que he recorrido en busca de soluciones, que el modelo Rx3715 fue muy criticado, incluso denostado. Pero es bastante injusto. Lo cierto es que la Rx3715 fue en su día una buena PDA, incluso excelente, con un montón de ventajas y características avanzadas a un precio muy bajo para un producto de esta índole. Y debo decir también que el Servicio de Asistencia Técnica de Hewlett Packard a mi me ha funcionado perfectamente y han hecho lo que han podido para solucionarme todos mis problemas con el aparato. Pero la máquina tiene un defecto muy grave que sobrepasa a la propia HP: Viene con Microsoft Windows.

Pero desgraciadamente, ni siquiera actualizar la ROM (freir la ROM del aparato para dejarlo como vino de fábrica) soluciona el bloqueo del «iPAQ File Store». Para eso hace falta un procedimiento un poquito más complejo: instalar la actualización de la ROM, sí, pero en OTRO idioma, no en castellano. Y luego, repetir la maniobra por segunda vez para conseguir el idioma español. El procedimiento exacto lo saqué de los foros de la Web IpaqHQ Desde aquí quiero darles las gracias (y un gran abrazo) a los chicos que participaron en el hilo «HELP! ROM doesn’t respond – Fixing ROM Guidance», de IpaqHQ, especialmente a Ricouk, el primero en describir el procedimiento que a mí me ha funcionado. Pero también a D-Meter, el primero en describir una solución que ya funcionaba en algunas PDA. Y también a los miembros de ese misterioso foro ruso que mencionaba D-Meter (al parecer fueron ellos los que lo encontraron y D-Meter se encargó de hacerlo público y de guiar a los primeros interesados del foro IpaqHQ). Y en fin, de todos ellos es el mérito, no mío. :-)

Cuando encontré descrito el procedimiento en Internet, se usaba el idioma alemán para reparar una PDA en inglés. Seguramente funcionaría también usando el idioma inglés para reparar una PDA española. En cualquier caso, yo decidí no arriesgar y reparar mi PDA usando también el idioma alemán, como ellos. Tú mismo, por ejemplo, si quieres probar con el inglés.

ATENCIÓN, ATENCIÓN. Este procedimiento se basa en freir la ROM de tu iPAQ Rx3715. Es un procedimiento potencialmente peligroso, puede anular tu garantía y NO deberías utilizarlo si no estás de acuerdo en asumir los riesgos. Declino por completo toda responsabilidad sobre lo que ocurra: eres tú quien debe asumirlo. Es tu PDA, tu dinero y tus datos. Yo solo te cuento algo que le ha funcionado a mucha gente, y a mí mismo, pero que no necesariamente ha de funcionarte a tí. Tu verás lo que haces, majete, que ya eres mayorcito. Y si no lo eres, deberías pedirle consejo a tu papá. ¿Vale?. ¿VALE?. Pues eso.

El procedimiento es así:

  1. Vete a la página de descargas de HP y bájate las actualizaciones de la ROM para los idiomas alemán y castellano. Son unos 23 Mb cada uno. Guarda ambos ficheros en tu ordenador. Copialos a tu partición Windows (deberías tener una, con ActiveSync instalado).
  2. Resetea tu ordenador y arranca con Windows. Enchufa la PDA a la base USB y espera a que esté sincronizada.
  3. ATENCIÓN, ATENCIÓN, la base USB NO DEBERÍA estar conectada a un HUB, sino directamente al puerto USB del ordenador. Si estás conectado a traves de un HUB, el procedimiento fallará y dejará dañada tu PDA. Esta advertencia está especificada claramente en la Web de HP, asi que estás avisado.
  4. Ejecuta el fichero con la versión española. Cuando te pregunte si deseas comenzar la instalación automáticamente, cancela. Esto descomprimirá el fichero en un directorio aparte. Renombra esa carpeta a ESP-ROM. Haz una copia de esa carpeta y llamala ESP-ROM-orig
  5. Ejecuta el fichero con la versión alemana. Cuando te pregunte no se que, cancela otra vez. Renombra la carpeta resultante a GER-ROM. Haz una copia de esa carpeta a GER-ROM-orig.
  6. Entra en la carpeta GER-ROM y renombra el fichero d2b10111go.nbf a d2b10111eo.nbf.
  7. Entra en la carpeta ESP-ROM y ejecuta ROMUpdateUtility.exe.
  8. Te irán apareciendo una serie de pantallas en las que te pide que marques una casilla cuando hayas enchufado la PDA, te pregunta si estás seguro, etc. Son como cuatro o cinco pantallas. Memoriza su aspecto, especialmente la última, cuando dice que ha detectado un modelo de iPAQ en ESPAÑOL, y que va a instalar la nueva ROM del idioma ESPAÑOL. Memoriza el aspecto de esa pantalla, metela bien en tu cabezota (luego tendrás que reconocerla en alemán), pero no le des al Enter todavia.
  9. En este momento, el programa de instalación ya ha hecho todos los chequeos que necesitaba, asi que ahora ya puedes engañarle. Abre una ventana aparte y toma el fichero d2b10111eo.nbf que tienes en la carpeta GER-ROM, y copiala a la carpeta ESP-ROM. Te pedirá confirmación para sobreescribir el fichero. Acepta. Ahora regresa al programa de instalación y dile que continúe con la instalación. Allá va.
  10. Verás que la instalación tardará un poco en empezar. El icono de ActiveSync se cerrará y se encenderá de nuevo. La pantalla de la PDA se pondrá en blanco y dirá algo asi como «Wrong Image!!!». Espera y no te impacientes. Por Dios, no la quites de la base USB. Y reza porque no se vaya la luz en tu casa!!!. El procedimiento empezará, y verás una barra de progreso avanzando. Parecerá que se detiene y se queda colgada en el 90 %. Ahi se quedará durante un buen puñado de minutos: ES NORMAL. Por Dios, no la quites de la base USB. Sigue esperando. Cuando termine, la PDA se reseteará y arrancará de nuevo. Si, en perfecto alemán.
  11. Ahora toma tu PDA y echa un vistazo. Puedes entrar en el explorador de ficheros, entrar en el «iPAQ File Store» y ahi verás unicamente un directorio que se llama «Backup». Bórralo y comprobarás que no se cuelga. Efectivamente, el fallo del «iPAQ File Store» está reparado y ya funciona perfectamente. Pero ahora tienes que volver al idioma castellano, claro.
  12. Vuelve a enchufar la PDA en la base USB y en Windows borra los directorios ESP-ROM y GER-ROM. Ya no los necesitas y puedes liarte.
  13. Entra en ESP-ROM-orig y renombra el fichero d2b10111eo.nbf a d2b10111go.nbf. Ahora enra en GER-ROM-orig y arranca ROMUpdateUtility.exe. Volverán a aparecer todas las pantallas de antes pidiendo confirmaciones (pero ahora en alemán). Recuerda que «Weiter» significa «Continuar» y sigue adelante hasta que llegues a la cuarta o quinta pantalla, donde aparece por dos veces «DEUTCH», la que te dije que memorizaras su aspecto.
  14. Ahora abre otra ventana y copia el fichero d2b10111go.nbf que está en ESP-ROM-orig, sobreescribiendo el que está en GER-ROM-orig. Una vez hecho, continúa con la instalación de la ROM. Ocurrirá lo mismo que antes, pero ahora todo en alemán.
  15. No te comas las uñas cuando tarde en empezar. Ni grites de pánico cuando tarde un huevo al llegar al 90 %. Ya has pasado por eso, ¿recuerdas?. Pero sigue rezando porque no se vaya la luz en tu casa, precisamente ahora.
  16. Cuando termine, la PDA se reiniciará y volverá a aparecer, en castellano y con el «iPAQ File Store» reparado. Enhorabuena.

Ahora NO VUELVAS a grabar en el «iPAQ File Store» ningún fichero que sobrepase su capacidad. Este procedimiento que acabo de describirte borra el «iPAQ File Store», lo resetea, y permite usarlo de nuevo con normalidad. Pero NO resuelve el bug que provocó el bloqueo. Hasta la fecha, los sistemas operativos de Microsoft siguen teniendo el mismo fallo que ha causado todo esto (que chapuza, Dios mio, que chapuza), asi que si no tienes un poco de cuidado el bloqueo del «iPAQ File Store» volverá a aparecer una y otra vez. Procura tener siempre un espacio libre prudente para evitar accidentes. Y NUNCA, NUNCA grabes nada grande sin asegurarte antes de que cabe.

Dale las gracias a Microsoft y a Bill Gates por esta chapuza de sistema operativo que te han vendido en tu, por otro lado buena, PDA HP iPAQ Rx3715. Y dales las gracias tambien por el mal rato que te han hecho pasar.

¡¡INCREIBLE!!. Si intentas ahora el procedimiento de cambio temporal de idioma para solucionar el problema del bloqueo de tu iPAQ File Store, descubrirás que los enlaces a las páginas de HP donde estaban las actualizaciones de la ROM ya no funcionan. La Hewlett Packard ha retirado ese software porque resulta que el cambio de idioma viola la licencia de Microsoft y es, por tanto, ilegal. No importa que sea para solucionar un problema de funcionamiento del aparato, no importa que el cambio de idioma solo dure cinco minutos, lo justo para recuperar el iPAQ File Store que te vendieron. No importa nada de eso. Viola la licencia y por tanto te j*des.
La actitud de Hewlett Packard y de Microsoft es sencillamente indignante. :-(

Sincronizar la agenda de la PocketPC con Evolution

La sincronización entre la agenda de la PocketPC y Evolution es muy fácil. Solo hay que arrancar el programa Multisync y crear un par de sincronización. Pero no merece la pena que os haga una descripción detallada porque la teneis aquí, en el Gentoo Wiki .

Sin embargo sí me gustaría mencionaros una cosa que no he visto en los manuales: A veces ocurre que, aún correctamente configurado, Multisync se niega obstinadamente a sincronizarse. No muestra ningún mensaje de error, sino que simplemente no lo hace.

La causa más frecuente es sencillamente que la PDA no tenga ningún slot de sincronización libre. Lo de los slots es, por explicarlo de alguna forma, una configuración correcta acerca de qué y cuando debe copiarse de un lado al otro. El programa de sincronización (por ejemplo el ActiveSync de Windows, o bien el Multisync de Linux, usan ese slot para saber lo que tienen que hacer. Pero ocurre que solo hay dos slots: uno para el ordenador de sobremesa y otro para un portátil, por ejemplo. Nada más que eso. Si los dos slots están ya asignados, ningún otro ordenador (o sistema operativo) podrá engancharse a esa PDA. Así que la solución está bien clara: tenemos que borrar un slot que no usemos. Para ello, podemos usar un programa incluido en SynCE que se llama synce-matchmaker.

[lacofi@jeanette:~]$ synce-matchmaker status
Current partner index: 1
Partner 1 id:    0x14e432c5
Partner 1 name:  "JEANETTE"
Partner 2 id:    0x1085eb0c
Partner 2 name:  "jeanette"

¿Lo veis?. Los dos slots están ocupados, así que ya no cabe nada más. Pero podemos reemplazar uno de ellos, digamos que resetearlo o ponerlo a cero, con lo que vuelve a quedar disponible.

[lacofi@jeanette:~]$ synce-matchmaker replace 2

También hay más opciones. Podeis consultarlas simplemente ejecutando el programa sin argumentos.

[lacofi@jeanette:~]$ synce-matchmaker
The purpose of this program is to manage partnerships with the currently
connected device.

Syntax:
        synce-matchmaker [status|create|replace INDEX]

        status   Show partnership status for device
        create   Create partnership with device
        replace  Replace partnership on device
        INDEX    The partnership index (1 or 2)

Y, en fin, una vez tengamos el slot disponible, ya podemos volver a intentar la sincronización con Multisync. Esta vez no deberíamos tener problemas.

Sincronizar directorios entre la PocketPC (Windows) y Linux

Hasta ahora hemos conseguido un sistema de noticias parecido a AvantGo, desatendido y automático, que se actualiza con solo conectar la PDA a la base USB (o, si ya está conectada, a una hora determinada de la noche). Pero ahora vamos a dar un gran paso adelante. Vamos a conseguir que nuestra PDA mantenga un directorio «espejo» en nuestro Linux, de tal forma que cualquier cambio que hagamos en él se refleje en la PDA en la próxima sincronización (o a la inversa).

Esto nos permite mucha libertad de movimientos. Por ejemplo, bastará con añadir una serie de ficheros MP3 a un directorio concreto de nuestro linux para que automáticamente se transfiera a la PDA en cuanto la enchufemos a la base. O, del mismo modo, todas las fotos que tomemos con la PocketPC serán copiadas a nuestro Linux. Y quien dice eso, dice todos los documentos que escribamos, en Pocket Word o Pocket Excel. Naturalmente, para que el efecto sea completa, podemos ajustar nuestra PDA para que grabe los documentos en formato Word 97 y Excel 97 en lugar del formato Pocket. Esto nos permitirá editar esos ficheros con OpenOffice, en Linux, sabiendo que cuando se sincronice, los cambios pasarán a la PDA. Y encima nos sirve de copia de seguridad.

Para ello usaremos dos programas: un servidor FTP que instalaremos en la PDA, y un cliente FTP que accederá desde el ordenador Linux.

Zona Servidor (PDA)

Para instalar un servidor FTP en la PDA necesitaremos un programa comercial que se llama ShareIt FTP. La licencia cuesta menos de 29 euros. Yo tengo la versión Pro, que cuesta algo menos de 50 euros y proporciona soporte para SSL/TLS, pero realmente no lo necesitas para lo que vamos a hacer ahora (aunque sería muy conveniente si pretendes establecer conexiones por WiFi). Bien, para lo que aquí nos interesa, la versión Lite funciona perfectamente y es muy barata.

Tienes que instalar ShareIt FTP en tu PDA. Después arranca el programa y haz que funcione permanentemente en la PDA. Ahora tienes que configurarlo. En la sección «System» debes ajustar «Directory» a «Root=\». Esto hará que toda la PDA esté disponible, desde la tarjeta SD hasta el «iPAQ File Store». En la sección «Users» debes añadir un usuario con contraseña, el que quieras, y luego desmarcar la casilla «Allow anonymous user» (esta opción sería muy peligrosa con esta configuración). En «IP Access» debes ajustar la política por defecto en «Deny», y luego añadir una única máquina a la que permitr el acceso: 192.168.131.201. Si quieres usar el WiFi tendrás que meter otra dirección, ya que el acceso por WiFi y por USB tienen direcciones distintas. En la sección «Misc» asegúrate de que el «Power Save Scheme» indica «Keep alive for active users». Ahora tienes que reiniciar el servidor FTP. Y ya está. Hemos terminado con los ajustes de la PDA.

Zona cliente (Linux)

En la máquina Linux necesitaremos el programa LFTP, un magnífico cliente FTP, disponible en casi todos los repositorios (incluido Gentoo) y que incluye dos características que nos son imprescindibles:

  1. El comando «mirror». Este comando copia toda una estructura de directorios, desde el ordenador remoto al local. Tiene una opción «–only-newer» que permite hacer un mirror incremental. También dispone de «mirror –reverse», que copia en dirección contraria, es decir, desde local a remoto.
  2. Ejecución en script. Esta caracteristica permite escribir todos los comandos que nos interesan en un script, y luego hacer que lftp funcione en forma automática y desatendida. Inicialmente pensado para subir una página web al servidor automáticamente, a nosotros nos sirve para sincronizar la PDA con nuestro Linux.

El autor de este programa es Alexander V. Lukyanov, que imagino que nunca pensó que pudiera servir para esto, pero lo cierto que es que ha hecho un cliente FTP magnífico, que permite hacer esto y mucho más. Caramba, es tan bueno que si buscas un cliente FTP o SFTP en modo texto, te lo recomiendo con entusiasmo. De hecho, es el cliente que yo sigo usando hoy en día para transferir ficheros entre mis máquinas y para subir la Web a mi servidor. Gracias, Alexander. ;-)

Bien, pero volviendo al tema, ahora tenemos que crear una estructura de directorios que sirva para almacenar el espejo de la ipaq que estará en nuestro linux. No tiene por qué ser idéntica a la de la PDA, porque lftp hará todo lo necesario para emparejar cada oveja con su pareja. :-)

   [lacofi@jeanette:~]$ mkdir ipaq
   [lacofi@jeanette:~]$ cd ipaq
   [lacofi@jeanette:~/ipaq]$ mkdir ifs #o sea "iPAQ File Store"
   [lacofi@jeanette:~/ipaq]$ mkdir sd #o sea "Tarjeta de almacenamiento SD"
   [lacofi@jeanette:~/ipaq/ifs]$ cd ifs
   [lacofi@jeanette:~/ipaq/ifs]$ mkdir datos
   [lacofi@jeanette:~/ipaq/ifs]$ cd ~/ipaq/sd
   [lacofi@jeanette:~/ipaq/sd]$ mkdir documentos fotos musica
   [lacofi@jeanette:~/ipaq/sd]$ mkdir personal profesional

Ahora tenemos que crear el script para lftp. Básicamente no son más que una serie de comandos FTP, escritos tal y como haríamos si estuvieramos conectados:

----------- Comienza script /etc/lftp-ipaq.cmd ----------
open -u lacofi,contraseña ipaq
cd pub
lcd /home/lacofi/ipaq
cd "/pub/Tarjeta de almacenamiento"
lcd /home/lacofi/ipaq/sd
cd "/pub/Tarjeta de almacenamiento/My Documents"
cd "/pub/Tarjeta de almacenamiento/My Documents/My pictures"
lcd /home/lacofi/ipaq/sd/fotos
mirror --only-newer
mirror --only-newer --reverse
cd "/pub/Tarjeta de almacenamiento/My Documents"
lcd /home/lacofi/ipaq/sd
cd "/pub/Tarjeta de almacenamiento/My Documents/Personal"
lcd /home/lacofi/ipaq/sd/personal
mirror --only-newer
mirror --only-newer --reverse
cd "/pub/Tarjeta de almacenamiento/My Documents"
lcd /home/lacofi/ipaq/sd
cd "/pub/Tarjeta de almacenamiento/My Documents/Profesional"
lcd /home/lacofi/ipaq/sd/profesional
mirror --only-newer --no-recursion
mirror --only-newer --no-recursion --reverse
cd "/pub/Tarjeta de almacenamiento/My Documents/Profesional/chuletas"
lcd /home/lacofi/ipaq/sd/profesional/chuletas
mirror --only-newer
mirror --only-newer --reverse
cd "/pub/iPAQ File Store"
lcd /home/lacofi/ipaq/ifs
cd "/pub/iPAQ File Store/Datos"
lcd /home/lacofi/ipaq/ifs/datos
mirror --only-newer
mirror --only-newer --reverse
cd "/pub/Tarjeta de almacenamiento/Mi musica"
lcd /home/lacofi/ipaq/sd/musica
mirror --only-newer --reverse --delete-first
------------ Termina script /etc/lftp-ipaq.cmd ----------

Los comandos «lcd» cambian el directorio local. Los comandos «cd» cambian el remoto. Observad los comandos «mirror» y «mirror –reverse», así como la opción «–no-recursion». Todo esto ya depende de lo que vosotros necesiteis y querais sincronizar.

Observar que en el directorio «musica» no pongo ninguna orden «mirror –reverse» y sí una opción «–delete-first». Esto es porque aquí me interesa que la PDA actúe como esclava. Si borro un MP3 del ordenador, también se borrará en la PDA. Si lo añado en el ordenador, se añadirá en la PDA. Pero nada de lo que haga en la PDA se reflejará en el ordenador. Uso «–delete-first» y no «–delete» a secas, porque así se libera un montón de espacio en la PDA antes de hacer cualquier otra cosa. Para más detalles, tendreis que recurrir a las páginas man de lftp o al comando «help», que para eso están. ;-)

Mucho cuidadito con la opción «–delete». Para evitar problemas os recomiendo SIEMPRE usar trayectorias absolutas, no relativas (es decir, «lcd /home/lacofi/ipaq», y no «lcd ../ipaq». Esto es porque si calculais mal la jugada, entra dentro de lo posible que el programa FTP se ponga a recorrer toda la estructura de directorios de vuestro Linux y se ponga a borrar ¡TODOS VUESTROS FICHEROS!. A mí me ocurrió y os aseguro que el efecto es espectacular… Afortunadamente tenía copias de seguridad. Vosotros también las teneis, ¿verdad? ;-).

Vale. Pues ahora, para ejecutar un ftp desatendido basta con esto:

   [lacofi@jeanette:~]$ lftp -f /etc/lftp-ipaq.cmd

Vamos, que más fácil imposible. Ahora sólo teneis que incluir éste comando en vuestro crontab, en el script «subelo», o en ambos.

Con los cambios, el script subelo quedaría tal que así:

------------- Empieza script subelo ---------------------------
#!/bin/bash
LOG="/var/log/syncipaq.log"
FECHA=`date`
sleep 3

echo " " >> $LOG
echo "--- $FECHA ---" >> $LOG

pgrep -f "/usr/sbin/pppd call synce-device"
resultado=$?

if [ $resultado -eq 0 ]; then
  echo "La iPAQ esta conectada. Correcto." >> $LOG
  sleep 3
  for archivo in `find /home/lacofi/.plucker/*.pdb`
  do
    nombre=`basename $archivo`
    pcp $archivo ":/Tarjeta de almacenamiento/My Documents/$nombre.pdb"
    error=$?
    if [ $error -eq 0 ]; then
      echo "--> Transferido `basename $archivo.pdb` a la iPAQ" >> $LOG
    else
      echo "--> No pude subir `basename $archivo.pdb` a la iPAQ" >> $LOG
    fi
  done
  lftp -f /etc/lftp-ipaq.cmd
    error=$?
    if [ $error -eq 0 ]; then
      echo "Se han sincronizado los ficheros predeterminados" >> $LOG
    else
      echo "Hubo un error FTP" >> $LOG
    fi
else
  echo "No he detectado ninguna iPAQ!!" >> $LOG
fi
------------- Termina script subelo ---------------------------

Prescindir de AvantGo – Plucker

  1. El camino tortuoso
  2. El camino liso

1) El camino tortuoso

AvantGo es una red de páginas Web especialmente diseñadas para la navegación off-line en una PDA. Al conectar la PDA con la base USB, el ordenador principal (equipado con Windows) busca en la red los canales que nosotros hayamos especificado y los descarga a la PDA. El formato AvantGo intenta ahorrar espacio en la preciosa memoria de la PocketPC, por lo que las fotos son menos y más pequeñas, el texto intenta ir al grano, etc..

Bien, AvantGo tiene una estética muy cuidada, pero detrás se esconden dos problemas: es poco flexible, porque depende de canales predefinidos por los webmasters, y no hay (que yo sepa) ningún programa capaz de sincronizar nuestro AvantGo desde una máquina Linux. Accesoriamente, resulta que AvantGo es un sistema propietario, no libre, pero aunque no nos guste, no considero que eso sea un defecto en sí mismo.

La solución es sustituirlo, claro. Y poner en su lugar un sistema más flexible, que podamos configurar a nuestro gusto, y que sí pueda sincronizarse de forma desatendida desde Linux. La primera posibilidad que se nos viene a todos a la cabeza es Plucker.

Lo primero que necesitamos es el cliente a instalar en nuestra PDA. Plucker fue pensado y diseñado para Palm, así que para PocketPC de momento solo tenemos un cliente en fase alfa, Vade-Mecum.

Lo segundo que necesitamos es el servidor, el propio motor plucker. Os aconsejo que le echeis un buen vistazo a la documentación, que podeis bajaros desde la página de downloads. En el caso de Gentoo, podemos instalarlo simplemente con un «emerge plucker».

Ahora podeis usar plucker-desktop para configurar y organizar vuestros propios canales, de tal forma que la página web que vosotros especifiqueis se baje y se convierta a un fichero PDB concreto en vuestro disco duro. Sin embargo, no os recomiendo plucker-desktop, porque para eso hay otro programa mejor, Sunrise. Pero sí os puede ser útil el demonio Spider.py que se puede encontrar en /usr/lib/python2.3/site-packages/PyPlucker, aunque os recomiendo que lo linkeis a un sitio más accesible, porque si no es un peñazo.

# ln -s /usr/lib/python2.3/site-packages/PyPlucker/Spider.py \
> /usr/local/bin/Spider.py

Os recomiendo un «Spider.py –help» para que veais todas las opciones disponibles. Spider, tiene una gran ventaja sobre plucker-desktop: es un programa de línea de comando y desatendido, con lo que puede meterse en el crontab y olvidarse de él. ¿Vais captando?. La gracia está en crear un script tal que así:

------------ Comienza script actualiza_plucker ----------------
#!/bin/bash
Spider.py --pluckerhome=/home/lacofi/.plucker \
--pluckerdir=/home/lacofi/.plucker \
--doc-file=LibertadDigital \
--bpp=8 --maxdepth=3 --stayondomain \
-H http://movil.libertaddigital.com/pda

Spider.py --pluckerhome=/home/lacofi/.plucker \
--pluckerdir=/home/lacofi/.plucker \
--doc-file=BBCMundo \
--bpp=8 --maxdepth=3 \
-H http://www.bbcmundo.com/movil
------------ Termina script actualiza_plucker -----------------

De tal forma que cada vez que ejecutemos «actualiza_plucker», el demonio Spider.py busque y transforme las direcciones Web especificadas con la opción «-H». creando un fichero LibertadDigital.pdb y BBCMundo.pdb en el directorio /home/lacofi/.plucker, según el ejemplo que he puesto. Somos libres de añadir las opciones que queramos y las páginas que queramos, por lo que os recomiendo de nuevo que os leais «Spider.py –help» y la documentación de plucker.

Una vez hecho esto, es muy fácil meter este comando en un crontab para que se ejecute todos los días a las cuatro de la mañana, por ejemplo. ¿Os acordais de que en el script «synce» de hotplug, yo había metido una línea extra que llamaba a un script externo (sudo -u lacofi /opt/programas-usuario/subelo)?. Pues ahora podemos aprovecharnos de ellos editando el script tal que así:

------------- Empieza script subelo ---------------------------
#!/bin/bash
LOG="/var/log/syncipaq.log"
FECHA=`date`
sleep 3

echo " " >> $LOG
echo "--- $FECHA ---" >> $LOG

pgrep -f "/usr/sbin/pppd call synce-device"
resultado=$?

if [ $resultado -eq 0 ]; then
  echo "La iPAQ esta conectada. Correcto." >> $LOG
  sleep 3
  for archivo in `find /home/lacofi/.plucker/*.pdb`
  do
    nombre=`basename $archivo`
    pcp $archivo ":/Tarjeta de almacenamiento/My Documents/$nombre.pdb"
    error=$?
    if [ $error -eq 0 ]; then
      echo "--> Transferido `basename $archivo.pdb` a la iPAQ" >> $LOG
    else
      echo "--> No pude subir `basename $archivo.pdb` a la iPAQ" >> $LOG
    fi
  done
else
  echo "No he detectado ninguna iPAQ!!" >> $LOG
fi
------------- Termina script subelo ---------------------------

De esta forma, el script (que se ejecutará cada vez que coloquemos la PDA en la base USB), se encargará de subir automáticamente todos nuestros ficheros Plucker a la PDA (concretamente a la tarjeta SD), para que los tengamos disponibles cuando nos la llevemos al trabajo o a otro sitio. Adicionalmente, también podemos meter un comando «subelo» en nuestro crontab, a las 6 de la mañana (después de que haya terminado el comando actualiza_plucker), para que incluso sin mover la PDA, también se actualicen los archivos.

Un par de precisiones. Observad que el script «subelo» deja un registro, un LOG de lo que va haciendo, y lo coloca en «/var/log/syncipaq.log». Sin embargo, este script se ejecuta siempre como «lacofi», no como «root», por lo que para evitar «accesos denegados», tendremos que hacer, como root:

[root@jeanette:~]# touch /var/log/syncipaq.log
[root@jeanette:~]# chown lacofi:users /var/log/syncipaq.log
[root@jeanette:~]# exit

En el caso de Gentoo es fácil que nos encontremos con un pequeño problema: las imágenes de 8 bits no se ven, solo las de 1 bit. Esto es porque hay un bug, que se arregla metiendo las siguientes lineas en el fichero «~/.pluckerrc» (lo siento, no he conseguido que funcionen las imagenes de 16 bits):

[POSIX]
close_on_exit=0
close_on_error=0
palm1bit_graymap_file=/opt/maps_palm/palmgray1.map
palm2bit_graymap_file=/opt/maps_palm/palmgray2.map
palm4bit_graymap_file=/opt/maps_palm/palmgray4.map
palm8bit_stdcolormap_file=/opt/maps_palm/palmcolor8.map

Y después:

[lacofi@jeanette:~]$ su
contraseña:
[root@jeanette:/home/lacofi]# cd /opt
[root@jeanette:/opt]# mkdir maps_palm
[root@jeanette:/opt]# chmod a+rx maps_palm
[root@jeanette:/opt]# cd maps_palm
[root@jeanette:/opt/maps-palm]# cp /usr/share/doc/netpbm-10.20/palm* .
[root@jeanette:/opt/maps-palm]# gunzip palmgray1.map.gz
[root@jeanette:/opt/maps-palm]# gunzip palmgray2.map.gz
[root@jeanette:/opt/maps-palm]# gunzip palmgray4.map.gz
[root@jeanette:/opt/maps-palm]# gunzip palmcolor8.map.gz

¿Mas cosas que se pueden hacer?. Bueno, Spider.py no soporta RSS. Para eso necesitamos un programa externo que nos convierta el código RSS a HTML, para que Spider.py pueda a su vez convertirlo a PDB. Ese programa podría ser el que yo uso, hyperfeeder. No existe en los repositorios Gentoo, así que tendrás que compilarlo tú mismo, pero no tiene ningún misterio. La configuración es muy fácil, solo se necesita un fichero «~/.hyperfeeder/config» que contiene algo así:

DocumentRoot=/home/lacofi/.plucker/rss/
DocumentName=rss.html
IgnoreTimes
init2=NoticiasRSS

Y un fichero «~/.hyperfeeder/list» que contiene una lista de sitios:

http://www.pjorge.com/rss
http://www.ciencia-ficcion.com/noticias_sdcfcom.rss

Pero te recomiendo que leas las instrucciones en la página Web de hyperfeeder.

Después basta con ejecutar hyperfeeder desde crontab, pongamos a las dos de la mañana. A esa hora se creará un fichero /home/lacofi/.plucker/rss/rss.html que Spider.py podría usar más tarde. Eso sí, los colores que ajusta hyperfeeder para el texto son horrorosos, y no se ven bien en Vade-Mecum, así que te recomiendo cambiar el código (eh!, esto es código abierto!). Para eso, edita el fichero /usr/src/hyperfeeder/src/config.cc y busca la cadena «body vlink=». ¿Ya?. Pues donde pone:

body vlink=\"#FFCBCB\" text=\"#FEFFBB\" bgcolor=\"#00025C\"

Debería poner:

body vlink=\"#FFCBCB\" text=\"#00025C\" bgcolor=\"#FEFFBB\"

(Observa que he intercambiado los valores de «text» y «bgcolor»). Ahora ya puedes compilar.

Como ves, lo hemos organizado todo para esto: A las 2 de la mañana, hyperfeeder recoge las semillas RSS y las transforma en un único fichero HTML. A las 4 de la mañana, el script actualiza_plucker recoge diversas fuentes HTML (en Internet o locales, eso no importa), y lo transforma todo a varios ficheros Plucker. Por último, a las 6 de la mañana, se pondrá en marcha el script «subelo», que enviará a la PDA todos los ficheros plucker. Este último script también se pondrá en marcha cada vez que enchufemos la PDA a la base USB. Todo ello de forma automática y desatendida. No está mal, ¿no?.

2) El camino liso

Está bien, pero es un poco complicado de configurar, ¿no?. Para los interesados en complicarse poco la vida, hay otra solución más sencilla y de más calidad: Se trata de Sunrise. Sunrise es un programa Java, así que tendrás que instalar alguna versión de Java en tu linux. En el caso de Gentoo basta con un «emerge blackdown-jre».

Sunrise viene comprimido en un tar.gz que hay que descomprimir, por ejemplo en «/opt», con lo que quedará todo en un directorio «/opt/sunrise-0.42c» dependiendo de la versión. Pero Sunrise no funcionará sin más, por lo menos en Gentoo. Habrá que cambiar el propietario del directorio «/opt/sunrise-x.xxx» y de su contenido para que nos permita la lectura y escritura como usuarios normales. Además, deberíamos crear un script «/usr/local/bin/sunrise» que llame al programa de forma adecuada:

#!/bin/sh
cd /opt/sunrise-0.42c
./run.sh
cd -

Una vez ejecutado Sunrise tiene muchas ventajas sobre plucker-desktop. Funciona gráficamente, se configura con mucha facilidad y lee correctamente código Web, HTML local, así como RSS sin necesidad de hacer nada especial. Cuando se pulsa en cerrar queda en realidad en el System Tray tanto de KDE como de Gnome, funcionando en background. Y el aspecto final de los ficheros plucker que se crean es simplemente perfecto, incluidas las imágenes de 16 bits.

Su único inconveniente es que solo funcionará en un interfaz gráfico, no en línea de comandos, por lo que tienes que estar logado para que cumpla su función. Si tu máquina la usan dos personas (como es mi caso), y no siempre estás logado, entonces Sunrise solo proporcionará la actualización de la última vez que te deslogaste. No puedes ejecutarlo a altas horas de la madrugada en el crontab pero supongo que para la gran mayoría de la gente eso no es un inconveniente serio, así que a disfrutarlo se ha dicho.

Naturalmente, sigue siendo necesario un script subelo que se encargue de pasar los ficheros plucker creados a la PDA. Pero eso ya lo hemos visto y es muy fácil. :-)

El único problema que nos queda ahora es el cliente de la PDA, Vade-Medum. Es un cliente en fase alfa, y eso ya nos indica que es muy inestable y se cuelga a menudo. De hecho, esto es lo que ha terminado por decidirme a adoptar otra solución más fiable, hasta que ese tema haya quedado solucionado. Esa solución alternativa no es otra que iSilo.

Conectar una PocketPC (iPAQ Rx3715) con Linux

Se puede conectar de varias formas. Por infrarrojos, por Bluetooth, por Wifi… pero el método que buscas es sin duda la conexión USB, a través de la base, de tal forma que sólo colocándola ahí se ponga en marcha todo, de forma automática.

Naturalmente que puede hacerse. Pero no encontrarás ningún programa que lo haga todo por si mismo, así que tendrás que apañártelas para automatizarlo todo tú solito. No es complicado, pero requerirá sacarse de la manga unos cuantos trucos Linux, e instalar (y comprar) en tu PDA algún que otro programa propietario.

Lo primero que has de hacer es instalar SynCE.

En el caso de Gentoo Linux, el procedimiento a seguir se describe con mucho detalle en el Gentoo Wiki, así que con tu permiso no voy a repetirme.

Yo solo cambiaría el script /etc/hotplug/usb/synce, que en mi caso dejé así:

------------ Comienza script synce para hotplug -------------
#!/bin/bash

exec >>/var/log/synce

export time=`date +"%b %d %X"`
export uname=`uname -n`

echo "$time $uname $0 [$$]: añadido iPAQ"
(
for x in `seq 1 20`; do
        [ -c /dev/tts/USB0 ] && break
        sleep 1
done
if ! [ -c /dev/tts/USB0 ]; then
        echo "$time $uname $0 [$$]: Nodo /dev/tts/USB0 ¡no creado!"
        exit 1
fi
sudo -u lacofi dccm #aqui iria nuestro usuario, en mi caso lacofi.
synce-serial-abort
synce-serial-start
# a continuación, llamamos a un script que inicie la sincronización.
sudo -u lacofi /opt/programas-usuario/subelo #lacofi soy yo
) &

cat > $REMOVER <<END
exec >>/var/log/synce
export time=`date +"%b %d %X"`
export uname=`uname -n`
echo "$time $uname $0 [$$]: iPAQ eliminado"
sleep 15
synce-serial-abort 2>&1
END
chmod +x $REMOVER
-------------Termina script synce para hotplug --------------

Bien, en cualquier caso, no te hagas muchas ilusiones. Con esto lo que has conseguido es que cada vez que enchufes la PDA a la base USB se establezca una conexión TCP/IP estándar entre el ordenador Linux (con dirección IP local 192.168.131.102) y la PDA (con dirección IP remota 192.168.131.201). Pero poco más que eso, salvo quizás poder sincronizar la agenda con Evolution a través de MultiSync.

Sin embargo, aunque no lo parezca todo ha cambiado. Porque ahora la PDA y tu ordenador Linux pueden hablar entre sí, de igual a igual. Linux es un maestro del TCP/IP aunque la PDA requerirá algo más de ayuda. Pero el marco en el que se construirá todo un edificio de intercambio organizado de información está ya servido. Eso sí, si tu máquina Linux tiene un cortafuegos funcionando, has de recordar que tienes que permitir la entrada y salida a la dirección IP de la PDA, o no conseguirás nada. ;-)

¿El siguiente paso?. Pues prescindir de AvantGo y buscar un sistema de navegación Off-line más compatible con Linux. Las respuestas son dos: Plucker e iSilo. Pero eso será otro día. :-)

Prescindir de AvantGo – iSilo

Para PocketPC, el único cliente plucker que existe es Vade-Mecum, pero en el momento de escribir estas lineas sigue siendo software en fase alfa, y no es en absoluto tan fiable como uno desearía. Obviamente, la versión para Palm es otra cosa, como también lo es el programa plucker para Linux, pero el problema se plantea precisamente para usar nuestra PocketPC, donde Vade-Mecum se cuelga a menudo y se corrompe con excesiva facilidad. Esto ha sido lo que me ha decidido a pasarme a iSilo.

Sin embargo iSilo es un programa comercial. Eso significa que NO es código libre y NO es gratuito. Existe una versión freeware, pero su funcionalidad es tan limitada que no te lo recomiendo en absoluto. Hazme caso y comprate una licencia: cuesta menos de 20 euros para un programa que es magnífico, así que no tienes excusa.

iSilo viene con un lector (iSilo, propiamente dicho), que está diseñado para leer libros digitales (es un formato bastante común, por cierto). Pero también puede leer páginas Web reconvertidas a formato iSilo, puesto que una de sus virtudes es el amplio uso que hace de los hiperenlaces (ésta es una de las cosas que se pierden con la versión freeware, así que ya me dirás de qué te vale…).

Y naturalmente también viene con un par de «parser», un programa que toma páginas Web y las transforma en libros digitales que iSilo puede leer. Aquí hay que aplaudir sinceramente a los desarrolladores, porque uno de los «parser» que vienen incluidos es «iSiloXC», una versión linux que nos permite hacer todo lo necesario en nuestro ordenador, de forma desatendida y automática, justo lo que necesitamos. No, iSiloXC tampoco es un programa de código abierto, pero cumple su función y se distribuye (éste sí), gratuitamente y sin restricciones.

En la página Web de iSilo tienes un manual completo del funcionamiento de iSiloXC, aunque es un poco confuso porque parte del intríngulis del asunto es crear un fichero de configuración en código XML. Parece complicado según lo lees, pero en el fondo es una verdadera chorrada. Verás, para descargar y convertir la página Web de Libertad Digital, tienes que crear un fichero /etc/isilo_LibertadDigital.ixs tal que así:

------------ Comienza /etc/isilo_LibertadDigital.ixs ------------
<?xml version="1.0"?>
<iSiloXDocumentList>

  <iSiloXDocument>
  <Source>
    <Sources>
    <Path>http://movil.libertaddigital.com/pda<Path>
    </Sources>
  </Source>
  <Destination>
    <Title>LibertadDigital</Title>
    <Files>
    <Path>/home/lacofi/.plucker/isilo/LibertadDigital.pdb</Path>
    </Files>
  </Destination>
  <TextOptions>
    <PreUseMonospaceFont value="yes"/>
    <ProcessLineBreaks value="yes"/>
    <UseMonospaceFont value="yes"/>
    <MonospaceFontSize value="8"/>
    <TabStopWidth value="4"/>
  </TextOptions>
  <ImageOptions>
    <ResizeLargeImages value="no"/>
  </ImageOptions>
  <LinkOptions>
    <MaximumDepth value="3"/>
    <FollowOffsite value="yes"/>
    <MaximumOffsiteDepth value="1"/>
  </LinkOptions>
  <ImageOptions>
    <AltText value="exclude"/>
    <Images value="include"/>
    <MaximumWidth value="144"/>
    <MaximumHeight value="144"/>
    <Compress value="yes"/>
    <LossyQuality value="75"/>
    <BitDepth16 value="include"/>
  </ImageOptions>
  <TableOptions>
    <IgnoreTables value="no"/>
  </TableOptions>
  <TableOptions>
    <TextColors value="keep"/>
  </TableOptions>
  <MarginOptions>
    <LeftRightMargins value="keep"/>
  </MarginOptions>
  <DocumentOptions>
    <HomePageNumber value="1"/>
    <CharSet>Windows-1252</Charset>
  </DocumentOptions>
 <Messages>
    <Title>LibertadDigital</Title>
    <Version>v. 1.0</Version>
    <AuthorName>lacofi</AuthorName>
    <AuthorContact>micorreo@lacofi.net</AuthorContact>
    <AuthorNotes>Estamos en obras</AuthorNotes>
  </Messages>
  </iSiloXDocument>

</iSiloXDocumentList>
------------ Termina /etc/isilo_LibertadDigital.ixs ------------

Puede parecer complicado, pero fijaros bien. El fichero es casi siempre igual con muy pocas variaciones. De hecho, las líneas marcadas en cian son las únicas que habrá que cambiar para crear una configuración nueva. En resumen, se trata tan solo de especificar la dirección Web, el fichero de destino, el título, la profundidad, y si queremos o no que el robot de iSiloXC salga fuera del servidor buscando enlaces. A veces puede interesarnos algo más sofisticado, pero para eso tendreis que leer el manual de iSiloXC, que para eso está.

La gracia del asunto es que si ahora ejecutamos «isiloxc -x /etc/isilo_LibertadDigital.ixs», nuestro ordenador buscará en la Web la página especificada y la convertirá a formato iSilo. Nada más facil que meter este comando en nuestro crontab para que lo haga automáticamente a la hora que queramos. Y quien pone una página web, pone también un fichero HTML local, como por ejemplo uno creado mediante hyperfeeder, lo que significa acceder también a RSS.

O también podemos ir un poquito más lejos y crear una batería de ficheros /etc/isilo_????.ixs cada uno con la configuración para una página web. Y así, podemos meter en nuestro crontab un programa actualiza_isilo para que se ejecute a las 4 de la mañana todos los días, y que sería más o menos así:

------------ Comienza actualiza_isilo------------------------
#!/bin/bash
log=/var/log/syncipaq.log
html=/home/lacofi/ipaq/sd/personal/documentos
fecha=`date`

echo " " >> $log
echo "--- $fecha ----" >> $log
echo "Se esta ejecutando actualiza_isilo" >> $log

for archivo in `find /etc/isilo_*.ixs`
do
  nombre=`basename $archivo`
  titulo=`echo $nombre | awk -F _ '{ print $2 }' | awk -F . '{ print $1 }'`
  isiloxc -x $archivo
  error=$?
  echo "--> $titulo salio con codigo $error" >> $log
done

cd /home/lacofi/.plucker/paquete
rm -Rf *

for archivo in `find /etc/isilo_*.ixs`
do
  nombre=`basename $archivo`
  titulo=`echo $nombre | awk -F _ '{ print $2 }' | awk -F . '{ print $1 }'`
  ln -s ../isilo/$titulo.pdb $titulo
done
----------- Termina actualiza_isilo-------------------------

Y naturalmente, sigue haciendo falta un script «subelo» que se ejecute, pongamos, a las 7 de la mañana, y que se encargue de subir los ficheros iSilo a la PDA.

Y ya está. Con iSilo ahora podremos leer en nuestra PDA la prensa diaria actualizada (o las páginas Web que queramos), solo con sacarla de la base USB y llevárnosla donde queramos. Chulo, ¿no?.

Pero aún quedan muchas cosas por hacer. Sería muy práctico, por ejemplo, conseguir que determinados directorios de la PDA se sincronizasen con determinados directorios del ordenador, de tal forma que pudiesemos ver las fotos hechas con nuestra PDA en Linux, simplemente enchufando la PDA a la base USB. O también que baste con poner un fichero OpenOffice en un directorio concreto y que cuando enchufemos la PDA aparezca también ahí. O quien dice eso, dice una colección entera de ficheros mp3 para llevárnosla con nosotros. ¿No estaría bien algo así?. ;-)

Pues mañana os cuento cómo se hace, ¿vale?. :-P