oriolrius.cat

Des del 2000 compartiendo sobre…

Tag: usb

USB 2.0 VGA from DealExtreme

Reading time: 1 – 2 minutes

Several months ago I bought a video graphics adapter for USB 2.0 port. It’s compatible with Linux, Mac and Windows but for a while I’ve only used it with Windows where it works as a extended screen for my HDMI main display. It works very good with 1920×1080 pixels resolution and it can play videos fast enough using a standalone video player or HTML5 video streaming from the internet.

The chipset used by this product is DISPLAYLINK DL-165 with DVI, HDMI and VGA adapters. It is powered by USB port with 5V DC and 450mA about 2,25W of consumption; but after installing the display driver I lost 2GB of RAM, which in my case it isn’t a problem but sometimes it could be a handicap.

USB 2.0 VGA

USB 2.0 VGA

If you are interested in this product I bought it in DealExtreme webpage, the product page is here and costs 34,28€ with free shipping.

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

Unbuntu liveCD en mode persistent

Reading time: 2 – 3 minutes

En l’article d’unionFS ja parlava dels liveCD en mode persistent. La idea és ben senzilla i potent a la vegada, es tracata d’inicar el linux a partir del liveCD en aquest cas, la Ubuntu. Però a direferència d’un procés d’inici normal indicarem al menú inicial que volem fer-ho en mode persistent i guardarem tots els canvis que fem durant la sessió: nous paquets instal·lats, dades d’aplicacions, personalitzacions del sistema, configuracions diverses, etc.

Com fer-ho és ben senzill i només cal disposar d’un pendrive, disc dur o qualsevol altre dispositiu d’enmagatzematge amb suport d’escriptura. Ara només cal:

  • Canviar l’etiqueta el nom del volum per casper-rw:
    e2label /dev/hda1 casper-rw
  • Si la partició té format ext3 s’usarà la partició arrel per enmagatzemar-hi els fitxers persistents.
  • Si tenim un disc dur amb format FAT32, per exemple, podem crear un fitxer a l’arrel amb el nom casper-rw i dins del fitxer hi creem un sistema de fitxers ext3, així:
    • Suposem que tenim la partició FAT32 montada a /media/hda1 i hi creem un sistema de fitxers ext3 de 128M. Cal que ens fixem en que el fitxer que conté el sistema de fitxers s’ha de dir casper-rw:
      dd if=/dev/zero of=/media/hda1/casper-rw bs=1M count=128
  • Quan iniciem el sistema amb el CD o DVD i ens trobem al menú inicial cal premer F6 i als paràmetres del kernel que ens apareixen a la part inferior de la pantalla afegim la paraula persistent al final.
  • Si ens hi fixem quan s’inicia la distribució ja no només llegeix del CD sinó també del pendrive o disc dur.

Com que aquesta guia no és gaire exaustiva, ja que només volia exposar la idea i explicar la funcionalitat, per més informació es pot consultar: LiveCDPersistence del wiki d’ubuntu.

NOTA: és vital que recordeu que al disc dur també li heu de canviar l’etiqueta perquè es monti com a part d’enmagatzematge del mode persistent del liveCD sinó no es montarà. Jo vaig perdré més de 2h mirant codi font per culpa d’un error ortogràfic i de no tenir clar el que posava el manual d’ubuntu.

Substituts wireless dels cables USB

Reading time: 2 – 4 minutes

Actualment s’esta treballant en tres línies a l’hora d’elminar els cables del PC, normalment USB, el típic cable de ratolí, telcat, impresora, escaner, camara de fotos, etc. Totes les solucions són usant com a tecnologia de radio el UWB (wikipedia: UWB). De fet, durant aquest gener la IEEE va decidir desistir en l’estandarització d’aquesta tecnologia que havia de ser l’estàndard 802.15.3a. Però múltiples desacrods en el grup de treball van acabar en la conclusió de que no s’entandaritzaria.

freescale-fig1.gif

Doncs bé les tendències en les que s’estan treballant per tal de substituir els cables del PC als periferics són:

  • 1. Convertir directament les dades serie de l’USB en senyals de radio d’Ultra-Wideband(UWB). Ni els dispositius USB ni els host USB necessiten cap canvi ja que tot és completament transparent a nivel d’USB.
  • freescale-fig2.gif
  • 2. Usar només els connectors USB, però re-empaquetar totes les dades amb un altre protocol, per exemple TCP/IP. Així doncs la comunicació per aire es fa sobre aquest nou protocol, quan arriba al destí es re-converteix a USB. Així es manté compatibilitat amb els dispostius. Excepte les que usen el mode isochronous.
  • 3. Consisteix en redissenyar l’USB internament fins hi tot els sistemes electrònics. Només mantenint compatibilitat en les aplicacions però re-fent tots els drivers de host i de dispositius.

Si voleu aprofundir més en la discusió podeu llegir l’article Making USB without wires work for consumers (local).

Hardware

Alguns dispositius que ja implementen alguna de les tècniques explicades anteriorment:

Hack: convertir el port USB-device del n770 en un port USB-host

Reading time: 2 – 2 minutes

El port USB del nokia 770 només serveix per veure el dispositiu com una unitat d’enmagatzematge massiu (usb mass-storage) des d’un PC. O sigui, és el que s’en diu un port USB en mode slave o usb-device. Obviament fer això no és trivial cal pensar només per començar que ens poden fer falta alguns elements de hardware no integrats al propi dispositiu.

De moment no he tingut el plaer i els collons de provar-ho. Però no us dic que aquest estiu m’animi. Si algú s’ho vol mirar: USB Host Mode and USB Devices on the Nokia 770.

A continuació podem veure el petit circuit que ens hem de muntar perquè funcioni l’invent:

La següent fotografia podem veure com un cable USB que surt del n770 connecta directament al circuit anterior, després a un HUB-USB (això només ho poden fer com a master els USB-Host) i després un adaptador serie cap al portàtil per tant, podem veure com funciona perfectament l’invent que ens ocupa:

Realment s’ha de felicitar als invetors del tema. Potser el que fa més por és el tema d’haver de flashejar el n770. Però si ho fas en compte no té més el tema.

digi AnywhereUSB (USB over IP)

Reading time: 1 – 2 minutes

Fa un temps vaig publicar un article que parlava justament d’un producte igual que el que us parlaré en aquest article. En l’article en qüestió em queixava que només suportava dispositius 1.1 el producte de digi suporta també USB 2.0 tot i que com que la conversió a IP la fa sobre una xarxa a 100Mbps també limita la seva velocitat a 12Mbps (velocitat màxima del USB 1.1), però malgrat tenir el mateix problema que el producte que us comentava aquest dispositiu és molt més professional, tan en l’acabat com en les altres prestacions així que jo diria és el millor servidor IP USB que he trobat fins ara.

anywhereusb.jpg

Un parell de documents (.pdf) per completar l’article, si us interessa el tema us aniran bé:

Servidor USB 1.1

Reading time: 2 – 3 minutes

Potser el concepte us sona una mica extrany, una altre forma de definir-ho seria: bridge USB RJ45/Ethernet. La idea és ben senzilla, vull poder connectar un cable de xarxa convencional amb un petit dispositiu que tingui 4 sortides USB. Després des del windows hi ha d’haver un driver virtual de HUB USB, perquè virtual? doncs perquè el HUB USB no esta físicament connectat al sistema ROOT USB del PC. Així doncs, el driver ha de simular que el realment hi esta connectat, fent de bridge a través de la xarxa ethernet. Doncs això tan extrany que demano existeix, com sempre als EUA i el seu preu és d’uns ~100€. L’única nota negativa que li he troba a part de que només esta disponible a l’altre punta del món és que només és compatible amb USB v1.1, o sigui, 12Mbps com a màxim. Obviament si fos compatible USB v2.0 no podria desenvolupar la potència de 480Mbps que és el que pot donar la v2 de USB, però almenys donaria molt més que els 12Mbps.

Què guanyem amb aquest invent:

  • connectar dispositius USB a més de 100m del PC
  • connectar un dispositiu USB a més d’un PC a la vegada
  • la resta de funcions ja són massa friquis per explicar aquí

Si ens posem a pensar en com funciona el ‘catxarrillo’ no és tan difícil d’implementar. Dins de la caixeta negra hi podriem fer correr un linux embedded i no seria excessivament difícil configurar-lo perquè envies tots els paquets de capa 2 USB per sobre d’IP a través de la xarxa ethernet. La part més pesada de programar seria la del driver windows, osx i/o linux fent la simulació de que el HUB USB esta connectat al ROOT USB com us comentava abans. Però si implementés això de ben segur que hi posaria una giga-ethernet per poder enviar els 480Mbps per sobre dels 1Gbps de la ethernet i així poder connectar-hi qualsevol dispositiu. Malgrat la teoria sempre és molt maca estic segur que alguna cosa faria que hi haguéssin mil problemes, però això fins que no s’intenta mai se sap.

kit de cables i ratolí amb cable retràctils

Reading time: < 1 minute

Estant a Panamà em vaig comprar un parell de ‘pijadetes’ una d’elles és aquest kit de cables USB, RJ45, mans lliures, ratolí òptic i HUB USB amb cables retràctils per portar-los sempre ben ordenats a la maleta del portàtil. Ja que com sempre que tens pressa els cables acaben convertits en un munt de nusus que donen voltes per dintre de la maleta. El kit és força lleuger i de moment m’esta sent molt útil, em va costar uns ~30$ esta prou bé, si tenim en compte que per aquí no l’havia vist més varat que ~45€. A més si no et gastes els calers durant les vacances quan ho has de fer?

kit.jpg

Automontem el pendrive o les flash cards

Reading time: 4 – 6 minutes

pendrive.jpg

Si treballeu amb udev i us instal�leu el paquet autofs, amb quatre retocs al kernel i quatre l�nies de configuraci� podeu fer que quan us enxufeu un pendrive amb linux aquest es monti i desmonti autom�ticament. De fet, aquesta soluci� esta explicada de mil formes diferents en un munt de howtos i d’altres similars. Hi ha gent que arriba nivells de sofisticaci� brutals. Per� despr�s d’estar mirant ‘largo y tendido’ tota aquesta informaci� he decidit no complicar la cosa i montar algo ben senzill que em permeti anar per feina amb els pendrives i les flash cards; que �s el que m�s uso al port�til.

Doncs b� per comen�ar el que farem �s que quan es detecti que s’ha connectat un dispositiu de tipus /dev/sdX1 (sent la X=a,b,c,d,etc) que es monti autom�ticament. Com sabeu el sistema de fitxers virtual udev genera autom�ticament els fitxers que representen els dispositius i a m�s tamb� genera uns events que es poden capturar. Si voleu monitoritzar aquests events podeu executar la comanda udevmonitor i podeu provar d’enxufar i desenxufar, per exemple, un pendrive i veureu com es generen els events que comento.

Doncs b� el primer que he fet �s que es generi un symlink autom�tic al detectar-se una partici� en un d’aquests dispositius que comentava, per tal de que aix� passi nom�s hem de modificar el fitxer: /etc/udev/rules.d/00.rules per aconseguir la funcionalitat que comentava nom�s cal afegir-hi aix�:

BUS="usb", KERNEL="sd?1", NAME="%k", SYMLINK="pendrive"

Tal com comentava si busqueu una mica podeu millorar molt�ssim fent per exemple, que nom�s es generi el enlla� din�mic (symlink) si el dispositiu �s de la marca tal o qual, model no s� quin, o que sigui de tipus usb mass-storage, etc. B� doncs, un cop ja tenim l’enlla� din�mic ara el que farem �s que quan intentem accedir a aquest dispositiu es monti autom�ticament el dispositiu i que si passats X’s segons no s’ha usat el dispositiu que es desmonti solet.

Aix� que comento ho farem amb el autofs, per configurar el dimoni ho podem fer al fitxer /etc/conf.d/autofs jo l’�nic que he tocat del fitxer de configuraci� del dimoni �s el timeout per tal de que es desmonti als 2s de no usar-lo:

...
# additional options for automount, ie. timeout
daemonoptions = '--timeout 2'
...

Abans de llen�ar el dimoni, he modificat el seg�ent dels fitxers de configuraci� que es troben a /etc/autofs al fitxer auto.master he afegit aix�:

/var/autofs/removable   /etc/autofs/auto.removable

Despr�s he creat el fitxer auto.removable:

pendrive        -sync,dirsync,fstype=vfat,uid=1000,gid=100,umask=002            :/dev/pendrive

Amb aix� aconseguim que quan s’intenti accedir al recurs /dev/pendrive es monti a /var/autofs/removable/pendrive i despr�s per tal de mantenir l’estructura de directoris de tota la vida el que faig es crear un link a /mnt/pendrive que apunta a /var/autofs/removable/pendrive:

ln -s /var/autofs/removable/pendrive /mnt/pendrive

Ara si anem a /mnt/pendrive (cd /mnt/pendrive) i fem un ls veurem el contigut del dispositiu, potser el primer ls que feu no funciona doneu-li uns segons perqu� pugui reaccionar tot plegat, a mi em triga uns 3 o 4s entre punxar el dispositiu i poder-hi accedir. Si quan acabeu d’usar el pendrive sortiu del directori veureu que al fer un df -a ja no esta montat.

Com comentava hi ha milers de howtos molt millors que el que acabo de fer, per� jo amb aix� ja he sortit del pas. Alguns howto’s que podeu mirar:

Carregador universal per USB

Reading time: < 1 minute

Avui en Jordi m’ha regalat un carregador universal per USB, no saps quin mega-favor m’has fet nano amb el regalet, perquè sovint estic fart d’oblidar-me algún dels carregadors que necessito just quan no l’he agafat, qui no coneix la llei de Murphy.

carregador.jpg

GRÀCIES NANO!