un blog de Radu Dumitru

►► canalele mele de YouTube: youtube.com/RaduDumitru (personal) și youtube.com/NwraduBlog (tech) ◄◄

Despre minunea numita USB

24 Feb 2010  ·

TEHNOLOGIE  ·

21 comentarii

Fake Ajay Bhatt

El e Ajay Bhatt, co-inventatorul USB-ului, lucrează la Intel şi apare într-o reclamă în care aceştia se mândresc cu el.

De fapt e doar un actor. Cel de mai jos e adevăratul Ajay Bhatt și vorbeşte într-un clip pe net.
Adevaratul Ajay Bhatt

De ce a folosit Intel un actor când adevăratul Ajay Bhatt nu e nici mort, nici prea ciudat, nici prea urât pentru reclamă, vorbim altădată. Dacă arăta ca vreunul din cei 50 Epic Super Nerds, mai înţelegeam, dar pare om normal, chiar dacă nu atât de cool ca în reclama Intel. Dar în fine, azi ne concentrăm pe USB în sine.

Universal Serial Bus

Cum era viața înainte de invenția USB-ului? Cam nașpa. PC-urile nu aveau un port care să răspundă la două cerințe simple: să alimenteze dispozitivul conectat și să aibă o viteză decentă de transfer. Portul serial nu era alimentat și era prea lent, portul paralel era ceva mai rapid dar nealimentat, PS/2 era alimentat dar prea lent și LAN-ul destul de rapid dar nealimentat. Deja piața oferea periferice care depășeau capabilitățile porturilor existente, cum ar fi camera asta care se conecta pe PS/2 și pe paralel,  așa că niște oameni mai inteligenți ca noi (sau cel puțin mai bine plătiți, ei dând “a fuck”) au purces la inventarea unui port universal care să rezolve toate problemele.

Așa s-a născut în 1996 USB 1.0 . Scotea 5 volți, îndeajuns pentru cam orice periferic și avea viteze de 1.5 Mbit/s și 12 Mbit/s care păreau a fi îndeajuns pentru majoritatea aplicațiilor. Din nefericire suspectez că aveau la ei în laborator un concurs de măsurat … inteligența și au făcut ca USB-ul să aibă un protocol logic și electric infect foarte complicat. Revenind la viteză, 12 Mbit/s (practic cam 1.4 MByte/s) erau de ajuns (în 1996) să îți încarci cardul de 32 Mbyte în 20 de secunde, să scanezi o poză de 300 dpi în 16 secunde sau să filmezi cu cameră web la 320×240/15 FPS (cam 9 Mbit/s deci la limită).

Din nefericire, legea lui Moore (Gordon Moore fiind unul din fondatorii Intel, adică probabil vreo 3 birouri mai încolo după aștia cu USB-ul, dar cititorii corporatişti ştiu că e mai uşor să invadezi Normandia decât să comunici cu alte departamente într-o firmă mare) zice că circuitele își dublează performanța cam la 2 ani, deci ce era acceptabil în 1996 devenea agasant în 1998 și chiar enervant în 2000. Oricum trebuie să fii lipsit complet de viziune ca să lansezi în acest domeniu ceva care răspunde doar cerințelor actuale.

usb3Totuși, fiind niște super oameni, în mod evident s-or fi gândit și la problema asta și au prevăzut un mecanism software de creştere a vitezei în funcție de nevoie, nu? Ei bine, nu (selecția între 1.5 Mbps și 12 Mbps se face trăgând la conectare una dintre liniile DP sau DM la plus, adică e treabă hardware). Pentru comparație, protocolul de infraroşu IRDA care a fost dezvoltat cam în același timp cu USB-ul are o căruță de viteze care se negociază civilizat în software după capabilități, la conectare (după umila mea părere era mult mai simplu și mai practic să dezvolte un protocol similar IRDA, care oricum e derivat din vechiul port serial). Bun, au greșit, dar, fiind oameni inteligenți, în anul 2000, ca să-și spele imaginea lansează USB 2.0. Woohooo, super viteză mânca-ți-aș, 480 Mbps (cam 57 Mbyte/s), suck on that Firewire (un protocol concurent care mergea la maxim 400 Mbps). Și care e problema? Păi între 12 Mbps și 480 Mbps nu au mai prevăzut altă viteză și în anul 2000 nu făcea nici dracu’ semiconductori capabili de 480Mbps (mă rog, nu la prețuri de consum de masă) și problema a durat muuuulți ani (în 2008 smartphone-urile încă nu aveau toate port USB de 480Mbit/s).

Dar să nu fim cârcotași, măcar din punct de vedere software este cât de cât mai bine făcut, nu? Ei bine nu. Aparate cu USB erau acum gramadă, dar geniile nu au gândit că poate vrei să conectezi două aparate împreună gen telefon-telefon, PC-PC, vibrator tastatură-telefon, cameră web-telefon, etc, nu totul la un calculator. Atâta timp cât au ambele aparate port USB, trebuie să le poți conecta împreună că așa vrei tu, doar de aia îi zice universal. Ei bine nu, protocolul e așa alambicat și rigid încât cu greu au lansat în 2006 USB OnTheGo care permite așa ceva. 4 ani mai târziu și eu nu am întâlnit aparate care să suporte USB OnTheGo, ceea ce zice multe despre el.

Deci dacă îl vedeți pe stradă pe co-inventatorul USB, dați-i un co-șut în co…fund din partea mea. Asta apropo de un interviu luat de Conan O’Brien lui Ajay Bhatt, în care îl lăuda de zici că inventase roata, interviu care din păcate a fost șters de NBC de pe site-ul lor și nu vi-l pot arăta.

    21 comentarii

  1. Cred ca se numeste USB Host ceea ce zici tu, si stiu ca erau PDA-uri compatibile (Fujitsu-Siemens N520/N560), la care puteai sa conectezi stick-uri de memorie sau diverse alte periferice pe USB. In rest felicitari pentru articol, a fost o lectura placuta :) daca e inceputul unei serii de astfel de articole, eu te incurajez sa continui ;)

      (Citează)

    • USB Host e dispozitivul la care conectezi ceva prin USB. De exemplu un stick sau o camera foto este USB Slave si calculatorul e Host. Camera nu poate fi host niciodata (si nici nu conteaza de care mufa are). USB On-The-Go asta permite ca un Slave sa fie si Host (il face bisexual, ca sa zic asa).

      Avantaje ar fi multe: ai putea sa conectezi o tastatura USB la un smartphone, ca sa scrii ceva rapid pe ea. Poate un stick USB la un smartphone, sau un stick USB la o imprimanta (unele accepta asta) sau doua telefoane intre ele, pentru transfer de date sau sincronizare de contacte (ca tot venea vorba azi). Dar nu a avut succes ideea.

      Culmea e ca si pe WiFi e cam aceeasi problema. Eu n-am reusit niciodata sa fac o retea WiFi Ad-Hoc intre doua smartphoneuri si sa transfer si fisiere.

      Din cate tin minte nici USB 3.0 nu aduce nimic nou pe fronturile astea. Creste viteza cu un ordin de marime, schimba mufele, da mai mult curent, dar tot pe Host/Device se bazeaza. Am sperante mai mari de la Bluetooth 3.0, care va folosi Bluetooth pt stabilirea legaturii intre doua dispozitive si apoi WiFi pentru transfer rapid de date, daca e disponibil.

      O alta chestie misto ar fi cu IPv6, unde fiecare dispozitiv ar putea avea un IP si l-ai conecta la calculator ca in retea. Doar ca de obicei calculatoarele au un singur port de retea…

        (Citează)

  2. Kudos pentru articol. Foarte bine realizat si documentat.

      (Citează)

  3. Ce mai aduce USB-ul in plus fata de paralel? Pai, in primul rand, poti sa deconectezi perifericele in timpul functiunii si sa nu se foo.. duca portul.

      (Citează)

  4. Cred ca la WiFi/smartphone e o problema de software si de securitate.

    USB master/slave imi pare ca e si o problema de hardware. De exemplu, cine face alimentarea? Daca pui doua surse de tensiune in paralel, ce se intampla?

      (Citează)

  5. Inainte de USB deja aparuse FireWire care la vremea lui oferea viteza mai mare, si in plus era multihost. Echipamente cu FireWire deja existau pe piata, dar Intel nu a vrut sub nici o foma sa introduca suport pe placile lor de baza. Vreo 2 ani a tras de timp pana a scos USB-ul.

    Deci indianul a “inventat” un sistem mai slab si foarte asemanator cu ceva care exista deja. Si apropo … FireWire a fost coinventat de un roman: Florin Oprescu (Apple).

      (Citează)

  6. uite si aici ceva la subiect: http://wmpoweruser.com/?p=13700

      (Citează)

  7. Exact cum zice seba18.

    Ca să faci ceea ce vrei tu, ai nevoie de un port USB host, nu slave.
    Și da, poți conecta la un PDA un mouse, o tastatură, un stick USB, un HDD format cu FAT32, etc. Singura pretenție este să nu consume prea mult, sau să aibă alimentare proprie.

    Majoritatea smartphoanelor nu știu ce e ăla USB Host, știu doar de slave, adică ele se conectează la calculator pentru sincronizare și încarcarea bateriei și atât.

    Puține device-uri însă știu și de USB Host, un exemplu ar fi PDA-urile de la Fujitsu Siemens, Loox 720 sau N560 sunt astfel de exemple.
    Au o mufă custom, dar asta nu m-a împiedicat să îmi realizez un cablu micuț, pentru a putea conecta stickuri, tastaturi sau mouși. :)
    Uite-l. :D
    http://images.programaresociala.ro/random/cablu_usb_host.jpg

    Nu există cabluri normale USB tată-tată tocmai pentru preveni dezastre de genul în care conectezi 5V de la un calculator cu 5V de la altul. Există cabluri speciale pentru așa ceva însă au un dongle ceva la mijloc.

      (Citează)

  8. @nashu_mare: Eu nu m-aș hazarda să conectez cu acel cablu două calculatoare. Dacă te uiți cu atenție o să ai și o notă acolo la sfârșit menționată.
    NOTE: Most Devices connect with a standard. USB A-B Cable.

    Nota aia nu este pusă degeabă. :)

    Oricum, și dacă ai conecta un PC la alt PC printr-un cablu USB, ce ai spera să obții? De exemplu dacă conectezi 2 calculatoare printr-un port Firewire, pe versiunile de Windows pre Vista poți configura firewire sa se comporte ca o placa de rețea. Dar asta pentru că avut suport scris special pentru așa ceva.

      (Citează)

  9. Stiu asta. Am scris si mai sus. Ti-am dat link doar sa iti arat ca exista.

    Eu folosesc asa ceva ca sa leg doua computere de debit redundante.

      (Citează)

    • Nu vad de ce ar fi asa mare problema cine pe cine alimenteaza. Doua dispozitive stand alone cu baterie ar putea stabili singure ce fac: se interogheaza bateriile si aparatul cu bateria mai plina il sustine si pe celalalt, dar cred ca e si mai simplu sa mearga fiecare pe bateria lui si doar sa transfere date.

      Problema asta e oricum rezolvata in USB On-The-Go, unde se decide prin cablu cine ce face. Dispozitivul de la un anumit capat al cablului va fi mereu Host, celalalt Device (Slave, adica). Poti sa bagi chiar si un incarcator in circuit. Doar ca nu se fac prea multe aparate pt USB OTG.

        (Citează)

  10. Sincer nu știu cu ce se mănâncă USB On-The-Go ăsta că nu am avut așa ceva și nu m-am jucat cu el, dar dacă admitem că vei conecta cu un astfel de cablu USB două computere, ce vei obține? După ce le conectezi ce faci cu ele?

    Vrei LAN over USB? Sau ce anume?

    Știu de exemplu că sunt anumite notebookuri/subnotebookuri care au docking station. Le pui în docking station, comuți switch-ul pe HDD și în acel moment poți accesa prin USB de pe un alt calculator HDD-ul din subnotebookul introdus în cradle/docking station. Da’ nu e mare sfârâială…

    Acu, hai să o luăm altfel. USB-ul a fost conceput ca să conectezi diverse chestii la calculator, adică stickuri, HDD-uri, imprimante, scannere, camere foto, etc.
    Poți conecta fără probleme toate astea pe un singur port USB dacă folosești un USB Hub. :)

    Acum, dacă ne gândim puțin ce înseamna Ethernet, fie el 10/100/1000 Mbps, ne dăm seama că nu poți conecta nici măcar două computere (deja vorbim de computere, sau mai bine ar fi să vorbim de interfețe?) fără să apelezi la un switch. Crossover nu se pune. Deja e mânăreală. :)

    Deci pe USB poți conecta jdemii de periferice la calculator simplu și rapid, pe principiul plug & play. Dar perifericele sunt independente, nu știu unul de celălalt, nu au treabă unul cu altul. Doar calculatorul la care le-ai conectat știe de ele.

    Pe Ethernet conectezi mai multe calculatoare, dar cu ce preț? Îți trebuie un switch, eventual reguli de rutare, ești obligat să le setezi adrese IP, masca de rețea, etc. Deci nu este ceva plug & play.

    USB nu a fost gândit ca alternativă la Ethernet, a fost gândit mai degrabă ca un atac la Firewire. Să fie ieftin și ușor de implementat, fără costuri de licențiere și care să nu necesite un controller dedicat cum era la firewire.

    Deci în concluzie, dacă vrei să dai în cap cuiva, păi poți să te iei de Ethernet că ăsta este alambicat și rigid. USB e doar o copie/alternativă ieftină la Firewire.

      (Citează)

  11. “Știu de exemplu că sunt anumite notebookuri/subnotebookuri care au docking station. Le pui în docking station, comuți switch-ul pe HDD și în acel moment poți accesa prin USB de pe un alt calculator HDD-ul din subnotebookul introdus în cradle/docking station”

    Comparativ cu a le lega printr-un cablu. Care varianta pare mai simpla?

    Ethernetul o fi alambicat si rigid, dar isi face treaba. Iata ca dupa multi ani e nevoie de IPv6 pentru ca IPv4 nu mai e suficient, iar protocolul asta tine tot Internetul in spate.

    USB-ul n-a fost gandit ca sa conectezi o camera foto la un calculator. Sau nu asa trebuia gandit, daca stii ca va fi ulterior implementat in toate calculatoarele. Trebuia facut de la inceput bine, ca sa poti conecta ORICARE doua dispozitive intre ele. Despre asta e postul.

    In anul 2010 singurul protocol cu care poti conecta doua aparate intre ele, daca il au, este bluetooth, si e si ala cam incet si retardat. Nu e bine.

      (Citează)

  12. Socialule nu prea le ai dar îți dai cu părerea. Un cablu crossover nu e mânăreală, e pur și simplu o rețea alcătuită din doar două aparate. Hub/switch/router nu e decât o metodă de a conecta mai mult de 2 aparate care sunt concepute ca rețea punct la punct (spre deosebire de RS485, CAN care nu au nevoie de hub și poți să legi pe aceleași fire câte vrei) Fiecare Host din PC (de ex.) are și un hub încorporat (root hub îi zice în device manager) ceea ce e și mai stupid pentru că banda efectivă se împarte între device-urile conectate. În loc să facă un Host mai simplu și să pună mai multe, au pus unul complicat cu hub propriu. Ca protocol, ethernet-ul nu e mai complicat ca USB-ul, ba chiar mai simplu (depinde aici dacă incluzi și TCP, ICMP, UDP, etc).
    Uite o comparație între numărul de porți ocupate pe siliciu de Eth și USBotg. De remarcat și frecvența maximă, cu cât e mai complex un periferic cu atât e mai mică frecvența maximă. Cu cât sunt mai multe porți cu atât ocupă mai mult siliciu deci și preț mai mare.
    http://www.cast-inc.com/cores/mac-l/mac-l-altera.htm
    http://www.cast-inc.com/cores/usbhs-otg-sd/usbhs_otg_sd-altera.htm

    Mă rog, sunt multe nuanțe aici și cam comparăm mere cu pere dar ideea de bază e că au reinventat roata și le-a ieșit pătrată.

    Și nu e nici ușor nici ieftin de implementat. Pe lângă taxa de acces în consorțiul USB de ~2000$, taxa anuală de ~2000$ (care mă rog, există și la Ethernet nu stiu exact cât) mai trebuie să bagi bani și în dezvoltarea stivei USB care e complet diferită de restul protocoalelor existente, în drivere de PC (la Eth ai standardul TCP/IP și nu îți mai bați capul) plus certificare Micro$$oft WHQL (care de la Windows Vista/7 x64 este obligatorie). În ultima vreme s-a mai civilizat și USB-ul și e cât de cât documentat și testat. Totuși au trecut cel puțin 10 ani de haos degeaba. Nu trebuiau decât să facă un port ethernet fără transformatoare și cu alimentare de 5V. Simplu … zic eu, chiar și pentru 1996.

    Eu am prins USB-ul de la începuturi și era un coșmar, acum da, pare mai ușor decât ethernetul că și ăștia au mintea la etnobotanice și îți trebuie o facultate să conectezi un PC la net. Dacă investiția ar fi fost redirecționată spre un protocol existent, oricare din ele, azi ar fi fost un pic mai bine.

      (Citează)

  13. @nea_caisa, pai nu asta era ideea? Sa imi dau cu parerea? Ca de aia sunt comentariile deschise.
    Apoi am scris “manareala” pentru ca nu am vrut sa dau exemplul cu mai mult de 3 calculatoare. Poti conecta 2 calculatoare, dar atunci ai nevoie de crossover, adica ne abatem de la cablul standard. Am scris “manareala” tocmai pentru ca stiam ca o sa apara un gica contra sa imi spuna ca se pot conecta 2 calculatoare prin cablu utp crossover. Tot asa poate mi se va raspunde ca se pot conecta 2 calculatoare si prin cablu utp standard, daca placa de retea e desteapta si face singura crossover.

    Nu am sustinut niciodata ca usb ar fi vre-un maret fas, din punctul meu de vedere puteam trai bine mersi doar cu firewire si un eth.

    Am dat un search pe google, si am gasit linkul asta.
    http://www.hardwaresecrets.com/article/248/1
    Rezulta imediat ca pentru a conecta doua fisiere trebuie un cablu custom (cu un chip integrat) si trebuie folosit un program special ce va rula pe ambele calculatoare sau trebuie realizata o conexiune LAN over USB. Deci în principiu, ma refer doar ca ideologie, este o soluție de-a dreptul stupida.

    Adica eu înțeleg rantu’ lui nwradu si ce ar fi vrut el, dar in linii mari eu sunt destul de multumit cu protocolul USB actual. As vrea totusi o viteza mai mare. :D
    Apoi nu m-am lovit niciodata de problema conectarii printr-un protocol USB On the Go.

    Acum, dacă stau și mă gândesc, ce spunem noi aici e cam apa de ploaie, pentru ca în esență USB-ul ăsta este un realmente succes. Pentru că deși nu excelează la nici una dintre toate problemele pe care ar trebui să le repare, în average este un produs excepțional, și acoperă cam orice fel de problemă.

    La urma urmei cum ar trebui să se comporte două device-uri legate între ele printr-un cablu USB tata tata?
    Cine se bagă la niște teste să conecteze 2 computere așa?
    Sau cine face un loopback cu USB-urile de pe același calculator? :)

      (Citează)

  14. Bluetoothu este un protocol mai special. Cel puțin la nivel de layer, mie așa mi se pare. Dar și asta cred că a dus la suficiente probleme.

    Conectarea pe Bluetooth, dar care de fapt emulează portul serial este o chestie de bun simț?
    Dacă faci pairing între un PDA și un GPS prin bluetooth, crezi că mai vii cu un PDA și îl conectezi la același GPS?

    Poți transmite mp3-uri cu manele și poze cu Jenna Jameson de pe un Windows Mobile la un Iphone sau un Blackberry? Nu, pentru că ultimele două nu implementează profilele necesare pentru file transfer din păcate.

    Deci nici prin bluetooth nu conectezi orice și oricum.

      (Citează)

  15. P.S. Ajax editu îmi pierde câmpul de Twitter?

      (Citează)

  16. Poți transmite mp3-uri cu manele și poze cu Jenna Jameson de pe un Windows Mobile la un Iphone sau un Blackberry?

    Da, spre blackberry merge fara probleme, trebuie doar sa stii sa gasesti optiunea.

      (Citează)

    • De pe WIndows Mobile poti face orice prin Bluetooth (chiar si Internet Sharing parca mergea), celelalte sisteme numite de tine au probleme. Si Androidul fara root permite doar putine din optiunile obisnuite de la bluetooth.

      @Programare: asta sustin si eu, ca USB-ul in medie este un succes. E mult mai bine cu el decat fara. Dar nu e nici a doua venire sau ceva, se putea face si mai bun fara mare efort sau cost suplimentar.

        (Citează)

  17. Cablul UTP normal nu a fost primit de Moise odată cu cele 10 porunci cu mențiunea de a omorî cu pietre infidelii care îndrăznesc să facă unul inversat. E doar una din metodele de conectare. Toate sistemele de transmisie duplex au problema asta a polarității și au nevoie câteodată de cabluri inversate. USB e half-duplex și de aia nu e nevoie.
    USB e un succes în sensul că au învins ăia cu mintea mai odihnită. Sau mai degrabă mafia Wintel. Se putea mult, mult mai bine dacă ar fi fost mai deschiși la minte.
    USB și Bluetooth suferă în principal de aceeși boală: lipsa de transparență. Din cauza asta implementările sunt stângace sau incomplete.

      (Citează)

    Alătură-te discuției, lasă un mesaj

    E-mail-ul nu va fi publicat. Fără înjurături și cuvinte grele, că vorbim prietenește aici. Gândiți-vă de două ori înainte de a publica. Nu o luați pe arătură doar pentru că aveți un monitor în față și nu o persoană reală.

    Apăsați pe Citează pentru a cita întreg comentariul cuiva sau selectați întâi anumite cuvinte și apăsați apoi pe Citează pentru a le prelua doar pe acelea. Link-urile către alte site-uri, dar care au legătură cu subiectul discuției, sunt ok.


    Prin trimiterea comentariului acceptați politica de confidențialitate a site-ului.



    Vreți un avatar în comentarii? Mergeți pe gravatar.com (un serviciu Wordpress) și asociați o imagine cu adresa de email cu care comentați.

    Dacă ați bifat să fiți anunțați prin email de noi comentarii sau posturi, veți primi inițial un email de confirmare. Dacă nu validați acolo alegerea, nu se va activa sistemul și după un timp nu veți mai primi nici alte emailuri

    Comentariile nu se pot edita ulterior, așa că verificați ce ați scris. Dacă vreți să mai adăugați ceva, lăsați un nou comentariu.

sus