Hlavní navigace

Půlampérový mýtus o USB

9. 2. 2013 12:48 (aktualizováno) | Ondřej Caletka

Rozhraní USB nemám osobně příliš v lásce, zvláště pak od doby, co jsem si v jednom předmětu na ČVUT vyzkoušel rozhraní USB implementovat v jednočipovém procesoru. Přesto jde o jedno z nejpopulárnějších počítačových rozhraní současnosti a tak můžeme jen sledovat, jak verze 2.0 postupně vytlačila FireWire a verze 3.0 vytlačuje eSATA. Jednou z výhod USB, která zřejmě zapříčinila jeho masové rozšíření, je přítomnost napájecího napětí 5 V. Je s ním spojena spousta mýtů, polopravd a omylů. Bohužel někteří se podle nich chovají a sice neohrožují naši i svojí bezpečnost, ale pak se zbytečně diví, že něco nefunguje. Dva takové komplementárně spojené mýty bych rád vyvrátil.

Mýtus první: USB port nabídne vždy 500 mA

Nepravda. Hodnota 500 mA představuje maximální proudové zatížení jednoho portu USB 2.0. Třetí verze toto maximum zvýšila na 900 mA. Ovšem zařízení si nemůže jen tak začít odebírat maximální hodnotu proudu. Těsně po připojení, ještě před enumerací, má povoleno odebírat maximálně 100 mA (u USB 3.0 je to 150 mA). Teprve když počítač vyčte z deskriptorů, že zařízení požaduje větší proud a požadavek zařízení splní, má zařízení povoleno odebrat maximální hodnotu proudu.

Jak uvádí například Wikipedie, proudová spotřeba zařízení se vyjadřuje v jedné až pěti jednotkách, přičemž každá jednotka reprezentuje 100 mA pro USB 2.0, 150 mA pro USB 3.0. Připojíme-li do počítače USB hub bez externího napájení (bus-powered), objedná si od počítače všech pět proudových jednotek, ale dále zapojeným zařízením už nabídne maximálně po jedné proudové jednotce. To je také důvod, proč spousta USB zařízení vyžaduje zapojení přímo do počítače, nebo do externě napájeného hubu (self-powered).

Pokud by počítačové porty striktně dodržovaly požadavky specifikace, asi by tak snadno nevznikala zařízení jako USB větráčky, lampičky, ohříváčky čajů, nebo třeba Raspberry Pi. Tato zařízení se totiž vyznačují tím, že nemají vůbec žádný řadič, který by mohl počítač vyčíst, a neměla by tedy odebírat víc než jednu proudovou jednotku. Jenže narážíme na druhý, komplementárně spojený mýtus:

Mýtus druhý: Maximální proud jednoho USB portu je 500 mA

Docházíme do místa, kde se teorie USB specifikace setkává s drsnou realitou praxe. Zejména ve stolních PC, kde je 5 V větev napájecího zdroje dimenzována na víc než 20 A, si implementátoři nemusí lámat hlavu s počítáním miliampér podle USB specifikace a jednoduše port zapojí přímo na zdroj, maximálně přes rezistor či vratnou pojistku. Maximální proud, který takový port dodává, je tedy omezen jen průřezy vodičů, případně malým odporem rezistoru či pojistky. Na jednom starším počítači jsem na konci dva metry dlouhého USB kabelu k myši naměřil zkratový proud až 2,1 A − aniž by počítač utrpěl jakoukoli ujmu.

Jenom díky tomu mohou existovat výše popsaná příslušenství, která jinak vlastně s USB nemají nic společného. Ze stejného důvodu také mohou existovat externí harddisky napájené pouze z USB. Většina z nich totiž požaduje přinejmenším na rozjezd proud kolem 1 A. A protože si lidé zvykli podobná nenažraná zařízení používat, jsou výrobci nuceni k proudovému naddimenzování i na přenosných platformách, kde proudu není až tak nazbyt.

Jak se fenomén kradení proudu z USB rozšířil, došlo i na specifikaci nabíjecího USB portu, který už ani datovou komunikaci nenabízí. A USB konektor se také stal standardem pro nabíjení malých přenosných zařízení.

A tak, až zas někdy uvidíte USB zařízení s kabelem, který má na straně počítače dva konektory, jeden pro napájení a data a druhý jen pro napájení, uvědomte si prosím, že takovým kabelem si u standardy dodržujícího USB hostitele nepomůžete (napájecí konektor dostane jen jednu proudovou jednotku) a u „standardního“ standardy porušujícího USB hostitele ho potřebovat nebudete, protože jeden port poskytne proudu dostatek. Může pomoci jen v několika případech, kdy je proud USB portu omezen, ale bez ohledu na řadičem dohodnutou hodnotu.