Teknik^tDR
Versió 3.x!

Posts de Abril, 2010

Autoconnexió de dispositius USB a VMware

 
per teknik el 8 Abril 2010 | Programació, Sistemes, Virtualització

A la feina fem servir VMware per muntar entorns de desenvolupament per tasques puntuals (algunes no tant puntuals!). Últimament n’he hagut de muntar dos per desenvolupament amb terminals mòbils, i m’he trobat que cada cop que connectava el dispositiu al port USB de la màquina host, després havia de dir-li a VMware que el connectés a la màquina virtual. Buscant a Google vaig trobar un document sobre com automatitzar-ho (PDF en anglès).

Bàsicament hem de modificar el fitxer VMX que descriu la nostra màquina virtual per indicar-li el ID de fabricant i de producte que volem que s’autoconnecti a la màquina virtual que descriu aquest fitxer VMX. Per fer-ho hem d’afegir línies d’aquest tipus, una per cada dispositiu (posant device0, device1, etc.):

usb.autoConnect.device0 = "0x0fca:0x8004"

Aquest ID de fabricant i de dispositiu el podem obtenir molt facilment a Linux amb un lsusb. Això ens mostrarà una línia per cada dispositiu, incloent-hi hubs USB. Per exemple, si connecto una BlackBerry em puc trobar el següent:

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 028: ID 0fca:8004 Research In Motion, Ltd.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Fixeu-vos que el que ens interessa és l’ID, en aquest cas “0fca:8004“. Això és el que posarem entre cometes, afegint-li “0x” davant de cada un dels nombres, que són hexadecimals. En aquest cas obtenim “0x0fca:0x8004″.

Per buscar-lo a Windows, haurem d’anar a l’administrador de dispositius i obrir les propietats del dispositiu en qüestió. Un cop allà anirem a Detalles i buscarem la propietat Id. de hardware. Això ho podem veure a la següent figura:

A la segona línia hi trobem “HID\VID_0458&PID_0003“. Aquests números són els que corresponen a l’ID de fabricant (0458) i de dispositiu (0003). Per tant, a partir d’aquesta línia obtenim “0x0458:0x0003”. Fixeu-vos que cal eliminar la part de HID, VID, PID i tots els signes de puntuació, i quedar-nos amb els números, afegint-hi el 0x i els dos punts.

Al PDF mencionat hi trobarem més casos en que podem fer servir la funcionalitat d’autoconnexió (com per exemple, buscar els dispositius per nom i no per ID).

Cal anar en compte amb el detall que hem de deixar que el dispositiu estigui completament encès per assegurar-nos que el sistema el detecta correctament i que els IDs són correctes. Això ho he vist especialment amb els dispositius BlackBerry.

legacydiary.com/pdf/vmware_usb.pdflegacydiary.com/pdf/vmware_usb.pdf

Patchstick per Apple TV “Take Three” (3.0.2)

 
per teknik el 8 Abril 2010 | Hacking, Mac

Recentment vaig actualitzar el software del meu Apple TV, amb el que em vaig quedar amb un 3.0.2. Fins aleshores havia tingut un “1.0+“, que és com al seu moment se li va dir a la versió 1.0 amb les millores de la 1.1 (p.ex. YouTube) aplicades de manera manual. Per que es feia això? Doncs perquè la versió 1.0 era un Mac OS X bastant poc “retallat”, la 1.1 eliminava moltes coses (p.ex. suport al kernel per muntar volums SMB), i tornar-les a tenir implicava prou més feina que el obtenir les millores de la 1.1 de manera manual.

Be, aleshores tornem a la nova versió. Per crear el nou patchstick cal anar a la pàgina de l’atvusb-creator. Des d’allà es pot descarregar la versió de Mac OS X (atvusb-creator) i la de Windows (atv-win). En principi em vaig trobar amb alguns problemes amb la versió d’OS X (crec que finalment era únicament el problema amb els discs USB, ho veiem més endevant), per això al final vaig fer el patchstick amb la versió de Windows.

Un cop instal·lat permet sel·leccionar la versió del firmware instal·lat a l’Apple TV, de forma que es baixa els fitxers necessaris per crear el patchstick. Amb la versió actual només apareix la versió 3.0.1 de firmware. Per poder-ho fer servir amb la 3.0.2 cal baixar el fitxer DMG, o be donar-li la URL. Aquesta la podem trobar a Featured downloads, al link Show All. A dins trobarem un fitxer anomenat latest_ATV_dmg.xml i dins aquest la URL per descarregar l’últim firmware (en forma de DMG). Per la 3.0.2 la URL és http://mesu.apple.com/data/OS/061-7495.20100210.TAVfr/2Z694-6013-013.dmg .

Per crear el patchstick activarem les opcions de SSH i de Launcher. Per últim clickarem a Create Patchstick. Ens demanarà a on guardar la imatge, que després farem servir amb la utilitat USBIt per, definitivament, crear el patchsitck. Detalls importants: cal fer servir el mode de dispositiu (Device), no el de volum. I haurem de fer servir el botó de Restore i proporcionar-li la imatge que hem creat a l’anterior pas.

Per aplicar el patchstick cal connectar-lo a la part del darrera de l’Apple TV i reiniciar-lo mantenint pulsats els botons Menu i fins que es reinicii.

Important: A mi em va caldre provar-ho amb tres discs USB fins que un d’ells em va funcionar: un Kinston de 16 GB (en teoria el límit màxim de capacitat acceptable), un EMC de 8 GB, i finalment un SanDisk de 2 GB amb funcionament dual com a lector de tarjes MicroSD. Amb aquest últim no hi tenia moltes esperances, però resulta que és el que va funcionar!

La guia completa la tenim aquí (en anglès).

Altres trucs:

Si ens apareix un error 3 a la utilitat USBIt, o si volem reformatejar el disc USB de nou per fer-lo servir a Windows, haurem de fer servir la utilitat diskpart. Per fer-ho cal que obrim una línia de comandes fent Menú de Inicio > Ejecutar… > cmd i, des d’allà, cridant a diskpart. Si estem a Windows Vista i tenim UAC ens demanarà permís per elevar privilegis. Un cop a dins, haurem de buscar el pendrive fent un “list disk” i després haurem de sel·leccionar-lo fent un “select disk=X“, a on X és el número del disc que hem vist al pas anterior. Per últim fem un “clean disk” i un “exit” per sortir. Un cop fet tot això, expulsem el disc USB de manera segura, el tornarem a connectar i el formatarem de manera normal.

Si ens apareix un error 32 a la utilitat USBIt. (disc ocupat) el més fàcil és que l’expulsem i el tornem a connectar. Ens assegurem que no hi ha cap finestra de l’Explorador de Windows oberta al disc USB i que tampoc tenim la finestreta de l’AutoPlay oberta, fem un “Refresh” a USBIt i ho tornem a intentar.

Per finalitzar, dir que en un altre article explicaré com instal·lar XBMC, Boxee i NitoTV. És prou senzill, però no està de més posar-ho tot en un article! :D

Veure pel·lícules en xarxa amb l’Apple TV

 
per teknik el 7 Abril 2010 | Hacking, Mac

Aquest article ha estat com a esborrany al blog durant força temps (crec que uns 6 mesos!). Crec recordar que no l’havia publicat perquè abans volia publicar un sobre com aplicar un patchstick per poder obtenir accés al dispositiu (per exemple amb SSH!), o per poder muntar unitats de xarxa amb AFP o SMB. També faltaria explicar com muntar les unitats de xarxa…

Com que ara tinc l’Apple TV actualitzat a “Take Three” (concretament 3.0.2) i en breu vull publicar un article sobre com aplicar el patchstick, el publicaré tal qual. Comencem!


Un cop fet això ens podem topar amb un problema, i és que si fem servir la Wi-Fi per accedir a les carpetes compartides ens trobem que en escenes amb una mica de moviment el vídeo es quedi “clavat”. Això és degut a dos factors:

  • quan hi ha molt moviment, o molt detall a l’escena, el codificador necessita utilitzar més ample de banda per codificar les imatges, o sigui, més bytes,
  • la configuració de xarxa no és precisament òptima, i per tant no es pot transmetre el màxim d’informació esperat.

Al combinar-los tenim que quan hi ha molt moviment augmenta l’ample de banda a transmetre, i com la xarxa no rendeix prou be es col·lapsa, deixant al reproductor sense informació que reproduir. Això es podria solucionar de tres formes:

  • fent que el reproductor fos conscient que està fent servir la xarxa per passar les dades, o sigui, fent streaming,
  • reduint el tamany de les dades (idealment recodificant al vol, possiblement a bitrate constant),
  • o be, senzillament millorant l’eficiència de la xarxa, cosa que vaig trobar com fer-ho a l’Apple TV al següent enllaç: Optimize network throughput on your Apple TV.

Bàsicament, el que veiem a l’últim punt és que hem de crear un fitxer sysctl.conf amb el següent contingut:

kern.ipc.somaxconn=512
net.inet.tcp.mssdflt=1460
net.inet.tcp.sendspace=98304
net.inet.tcp.recvspace=98304
kern.ipc.maxsockbuf=1048576
net.inet.udp.maxdgram=57344
net.inet.udp.recvspace=42080
net.local.stream.sendspace=98304
net.local.stream.recvspace=98304
net.inet.tcp.delayed_ack=0
net.inet.tcp.rfc1323=1
net.inet.tcp.rfc1644=1
net.inet.tcp.newreno=1

i aleshores el pujem amb scp a l’Apple TV (lògicament hem d’haver habilitat SSH a l’Apple TV!). L’hem de posar a /etc/sysctl.conf. Per finalitzar, reiniciem l’Apple TV, o be apagant-lo o be des de la pròpia consola amb SSH amb sudo reboot.