HTC Kaiser i Artermis en WinXP virtualizat (VMWare Workstation 6)

Reading time: 3 – 5 minutes

El sistema operatiu de treball o sistema operatiu de l’equip host que uso habitualment com ja sabeu és un Linux, concretament una Gentoo. Doncs bé, al instal·lar un WinXP com a sistema guest en una màquina virtual d’VMWare malgrat molts dels dispositius USB del meu portàtil es reconeixen directament. Per exemple, la webcam, lector d’empremta digital o modem 3G intern. Això no passa al connectar algún dels dos smartphones que tinc el HTC Kaiser o l’Artemis el VMWare em donava l’error: VMWare Workstation was unable to claim the device (No such file or directory).

error.png

Després de molt buscar per forums i d’altres similars vaig trobar un simple hack que em soluciona el problema (perdoneu però no recordo l’enllaç perquè era un comentari d’un forum). El motiu exacte de perquè això passa no l’acabo de tenir clar però l’enginy funciona. De forma que l’activesync o el pocket controller pro reconeixen perfectament el telèfon i em permeten controlar-lo i sincronitzar-lo des del WinXP virtual. Que per altre banda, tal com vaig comentar en l’article sobre com arrancar el WinXP de l’altre partició mentre estem en Linux em permet no haver de mantenir dos instal·lacions de WinXP en parl·lel sinó que la versió virtual i la que corre sobre el host son la mateixa.

Bé doncs, anem al gra el que heu de fer és localitzar on teniu connectat el vostre dispositiu. Fent un lsusb podeu veure algo semblant a:

# lsusb
...
Bus 005 Device 004: ID 0bb4:0b0b High Tech Computer Corp.
...

Ara ja sabem que es troba en el Bus 5 però encara no sabem en quin port ni a quina PCI esta connectat aquest bus. Desocbrim ID de la PCI on és el Busc 5:

# find /sys/devices/ -name "usb5"
/sys/devices/pci0000:00/0000:00:1d.0/usb5

Ja sabem la PCI i bus USB on és connectat el dispositiu, ara només cal saber en quin port usa. Per fer això el que farem és buscar el idProduct i l’idVendor del HTC Kaiser, això ho obtenim del lsusb són els números en hexadecimal separats per uns dos punts. Així doncs, el meu idProduct: 0b0b i el idVendor: 0bb4. Amb aquestes dades el que faig és posar-nos en el directori del bus que hem localitzat i llenço una búsqueda sobre els fitxers que contenen aquestes dades per localitzar en quin port del bus tenim connectat el dispositiu:

# cd /sys/devices/pci0000:00/0000:00:1d.0/usb5
# grep -ri 0b0b $(find . -name "idProduct")
./5-1/idProduct:0b0b
# grep -ri 0bb4 $(find . -name "idVendor")
./5-1/idVendor:0bb4

Com podem veure en els dos casos els fitxers que contenen aquesta informació són al directori 5-1, o sigui, que tenim connectat el nostre telèfon a /sys/devices/pci0000:00/0000:00:1d.0/usb5/5-1/. Directori on hi trobarem el fitxer bConfigurationValue que és completament buit. Doncs bé, l’únic que hem de fer és posar-hi un 1, per exemple així:

# echo 1 > /sys/devices/pci0000:00/0000:00:1d.0/usb5/5-1/bConfigurationValue

Després ens assegurem que tenim associat el dispositiu a la màquina virtual i veurem que el missatge d’error desapareix i el WinXP detecta el nou hardware connectat.

active-usb.png

Finalment aquí tenim l’enllaç funcionant:

connected.png