Renovando... iPhone 3G usable en Linux (con iTunes + VBox)

Después de casi 2 años de inactividad, renovo el blog con la experiencia de las navidades... Conseguir que el iPhone 3G sea "usable" en Linux.
Primero de todo: Jailbreak del teléfono. Pistas aquí: www.quickpwn.com
No es extrictamente necesario pero sí muy útil. Esto te permite entre otras cosas que tu móvil sea accesible por SSH/SFTP, y el fantástico Cydia (un synaptic + apt-get para iPhone).
Segundo de todo: iPhone 3G sólo sincroniza con iTunes. NO HAGAS CASO A LO QUE LEAS POR AHÍ SÓLO SINCRONIZA CON ITUNES. En el momento de escribir, a pesar de la información confusa al respecto, ni Amarok, ni GTKPod, ni Banshee, ni Songbird, NADA. De hecho, aquellos que sigáis ciertas recetas para sincronizarlo por SSH con Amarok os encontraréis con la desagradable sorpresa de que se corrompe el iTunes.db por soportar una versión anterior. Esto implica que se jodan las apps instaladas y que te toque reflashear. ¡¡¡NO LO HAGAS!!!
Una opción: Usar pwnplayer (disponible en Cydia) que es capaz de acceder a los archivos directamente que hayas dejado en el movil por SSH. El player es un poco malo y menos vistoso que el iPod.app que trae el iPhone de serie. Y además no permite ver películas :-(
Opción interesante pero de momento no realizable: Usar directamente iTunes (con wine) para acceder al cacharro y sincronizar. iTunes 7.x funciona pero no sabe hablarse con un iPhone 3G. Y por el momento los esfuerzos para utilizar iTunes 8 desde Wine no son fructíferos aunque se está avanzando como se puede leer aquí.
La única opción: Usar iTunes en VirtualBox conectado direcamente por USB 2.0 a nuestro iPhone. Es un poco incómodo pero funciona. Los detalles están aquí, pero se resumen en:
- Añade al sources.list la línea:
deb http://download.virtualbox.org/virtualbox/debian hardy non-free
- sudo apt-get upgrade && sudo apt-get install virtualbox-2.1 # esto eliminará virtualbox-ose
- Prepara tu Windows XP original e instálalo sobre una nueva VM
- Añade al /etc/fstab la línea:
none /proc/bus/usb usbfs devgid=46,devmode=664 0 0
- Prepara este script (iphone-kernel.sh) y ponlo en /usr/local/bin (por ejemplo):
#! /bin/bash
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root, try: sudo iphone_usb.sh" 1>&2
exit 1
fi
KERNEL=`uname -r | awk '{ split($0, values, "-"); printf("%s", values[1]); }'`
sudo apt-get -y build-dep linux-source-$KERNEL
sudo apt-get -y install linux-source-$KERNEL build-essential
tar -jxvf /usr/src/linux-source-$KERNEL.tar.bz2
cd linux-source-$KERNEL/drivers/usb/core
perl -pi.bak -e 's/16384/131072/' devio.c
make -C /lib/modules/`uname -r`/build/ M=`pwd` modules
strip --strip-debug usbcore.ko
sudo install -m644 -b usbcore.ko /lib/modules/`uname -r`/kernel/drivers/usb/core
sudo depmod -ae
sudo update-initramfs -u
- Ejecútalo (esta primera vez y cada vez que te venga una actualización del kernel!!):
sudo chmod a+x /usr/local/bin/iphone-kernel.sh ; /usr/local/bin/iphone-kernel.sh
- Reinicia...
Una vez realizados los pasos anteriores, nos encontraremos con que el iPhone será primero detectado por el Linux como cámara fotográfica. Habrá que desmontarlo. Luego decirle a la máquina virtual que desmonte/monte el dispositivo por USB 2.0 (icono de USB's). Y con el iTunes arrancado, pasado un minuto aproximadamente veremos el dispositivo y podremos sincronizar.
Pero este artículo va un poco más allá. El problema de esta configuración es que iTunes (si se marca la opción de reorganizar la colección y mover archivos, algo útil cuando eres un desastre como yo) va a "secuestrar" tu música. Y además, que es un coñazo abrir el vbox para reproducirla (vamos a intentar que esto sólo sea necesario para sincronizar).
Para solventarlo, la opción va a ser llevarse todos los ficheros de datos a una carpeta en el Linux compartida a través de VBox. Si esta carpeta fuese o apuntase de alguna manera a "$HOME/Música" podríamos aprovechar para usar Rhythmbox para la reproducción de esa colección (este programa tiene la característica de poder "vigilar" un directorio... si se añaden archivos nuevos, cosa que pretendemos que haga iTunes, los autoincorporará al catálogo ;-) ).
Es decir, el esquema final que pretendemos es:
- iTunes (VBox) para organizar la colección, importar carpetas y sincronizar con el iPhone.
- Rhythmox para reproducir la colección sin alterarla.
Los pasos necesarios son:
- Compartir en VirtualBox una carpeta donde almacenaremos la colección (e iTunesDB, ficheros XML, etc...). Esta carpeta será $HOME/Documentos (que ya debería existir) y la compartiremos como "documentos".
- Acceder a esta carpeta a través de \\vboxsvr\documentos desde el Windows. Si no se encuentra vboxsvr, no te preocupes, está ahí. Sólo hay que buscarlo en el Entorno de Red -> Toda la red -> VirtualBox. Montamos esta carpeta en la unidad M:.
- Problema: podríamos darle esta ruta (previamente montada como letra de unidad) al iTunes para que almacene ahí su colección (Edicion -> Preferencias -> Avanzado). PEEERO no lo vamos a hacer. Si lo hicieramos así, al añadir una nueva carpeta a la biblioteca el iTunes se va a encontrar con "ocasionales" problemas de velocidad de la carpeta. Al más mínimo fallo (aunque sea una inapreciable pérdida de velocidad), decidirá llevarse las canciones importadas a la carpeta por defecto, que es: Mis documentos\Mi música\iTunes-\iTunes Music.
Así que siguiente reto: conseguir que "Mis documentos" (local), y por extensión, la carpeta "iTunes Music" se corresponda con la carpeta remota de nuestra elección, concretamente "\\vboxsvr\documentos\Mi música" que hemos compartido previamente.
Todo esto se podría hacer muuy fácil si:
- Windows permitiese montar unidades de red en cualquier punto de montaje
- Windows permitiese enlaces simbólicos entre volúmenes
Pero desgraciadamente no es capaz de nada de esto... Tras mucho investigar) resulta que el cachondo del Windows TIENE enlaces, pero sólo dentro del mismo volúmen (NTFS) o bien si estos enlaces son de una unidad a una carpeta remota (Z: => \\vboxsvr\blabla). Ninguna de las dos soluciones nos vale...
No obstante, resulta que "Mis documentos" es un tipo especial de enlace simbólico cuya ubicación física se almacena en el registro de Windows. Concretamente en: "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal". Esta clave apunta por defecto a "%USERPROFILE%\Mis documentos"
Abrimos el editor de registro (regedit.exe), buscamos esta clave y cambiamos el valor por: M: (conviene sacar una copia previa del valor anterior, como "Personal.orig" o algo así).
- Cortamos y pegamos todo el contenido actual de "Mis documentos" en la unidad M:. Esto incluye la carpeta "Mi música/iTunes" entre otros...
- Cerramos la sesión y volvemos a entrar. Comprobamos que "Mis documentos" no se ha perdido y se corresponde con la unidad remota...
- Y por último (paso sólo es necesario si queremos reproducir con Rhythmbox) : alteramos en el Linux la ubicación de la carpeta $HOME/Música (ruta por defecto de Rhythmbox) como un enlace simbólico a Documentos/Mi música (creado en el paso anterior).
- Ahora abrimos en el VirtualBox el iTunes y comenzamos a importar tranquilamente nuestras carpetas con MP3...
En próximos artículos: qué hacer si quieres mover toda la colección iTunes de una ruta a otra (por si la cagaste en pasos anteriores...) ;-)






