USBでは、周辺機器の機能によってグループ分けされたUSBクラスと呼ばれる仕様群が定義されており、それぞれのクラス仕様(クラス仕様によってはサブクラスの仕様)に従って作成されたデバイスには統一した制御インターフェイスを用いることができる。そのため、クラス仕様準拠のデバイスは、クラスドライバと呼ばれる共通のドライバソフトウェアによって動作させることができることになる。例えば、多くのUSBメモリはマスストレージクラスというクラスに準拠し、OSがマスストレージクラス対応のクラスドライバを用意していれば、ドライバをインストールする必要がなく、初めて接続してもすぐに動作する。
ただし実際にはデバイス側の仕様違反、特定ホストの動作に依存したデバイスの実装、仕様上の曖昧さによるぶれなどにより、共通のクラスドライバでは動作しない、ドライバ内に不具合回避処理が盛り込まれる、専用ドライバが提供される、という場合もある。
パソコンでは、次の環境でサポートされている。
Windows 95 OSR2.1以降ただし、暫定的対応であることから多くの制限や不備が存在する。事実上はWindows 98とWindows 2000以降の対応とみなすのが妥当である。
Mac OS 8.1以降同様に数多くの不備・不具合を抱えるため、事実上はMac OS 8.6以降とみなすのが妥当。
各種LinuxディストリビューションUSBクラス仕様でない独自プロトコルのデバイスは、ドライバが提供されていないことが多い。またHigh Speedサポート(いわゆるUSB 2.0)は実質的にkernel 2.4.22以降の対応と見なすのが妥当。
各種BSD系OS
USBクラス仕様の周辺機器の場合は、USBクラスデバイスをサポートするOS環境下であれば利用が可能である。組み込み系やゲーム機、デジタル家電等の場合は、ホスト側のUSBクラスデバイスのサポートが無かったり、不完全だったりする場合もある。またクラスデバイスでない周辺機器の場合も、各環境(OS)向けに周辺機器を認識するドライバソフトウェアさえ用意されれば、同じ機器が利用できる。
USB規格ではホストコントローラの規格を定義しておらず、以下のホストコントローラ規格はUSBの仕様外である。複数のホストコントローラ規格がある。これらは制御方法が異なるため、それぞれ別のドライバーが必要である。ただし同一ホストコントローラ規格内では共通のものが通常使える。
UHCI(Universal Host Contoroller Interface)
インテルの開発。インテルおよびVIAのx86用チップセットで採用されている。USB1.x時代に開発され、Full/LowSpeed対応。
OHCI(Open Host Controller Interface)
マイクロソフト・ナショナル セミコンダクター・コンパックが開発。インテル・VIA以外のチップセットで良く使われている。USB1.x時代に開発され、Full/LowSpeed対応。
EHCI(Enhanced Host Controller Interace)
インテルの開発。ただしContributerとしてコンパック・ルーセントテクノロジ・マイクロソフト・NECが挙げられている。USB2.0規格で新設されたHighSpeedをサポートする。通常Full/LowSpeedデバイスとの通信を行うためのCompanion HostController(UHCI、OHCIが普通)が同一チップ内に実装され、Full/LowSpeedデバイスがハブを通さず直接接続されたときに通信を担当する。EHCIはFull/LowSpeedデバイスとの通信も行うことができるが、その場合にはデバイスとの間にあるUSB2.0規格ハブによりHighSpeedへの通信速度変換が行われた上で実行される。
xHCI(eXtended Host Controller Interace)
インテルの開発。USB3.0規格で新設されたSuperSpeedをサポートする。すでにIntelより提供が開始され、周辺機器の開発が始められている。
WHCI(Wireless Host Controller Interface)
インテルの開発。Wireless USBのホスト規格。UWB一般の制御とWireless USBのホスト部と複数の機能を同時に定義している。Wireless USB部分の制御方法はEHCIと似ている。
ScanLogic SL811HST, NXP Semiconductors ISP1160 等
組み込み用途向けのマイコンバス直結型USBホストコントローラ。規格化はされていないのでメーカーが異なると全く互換性は無い。
端子形状はUSB規格で定められている。ミニ A端子B端子、ABソケットについては拡張規格であるOn the GO規格内で定められている。
USB B端子
USB ミニABソケット
現在定義されている端子形状には以下のものがある。
USB A端子
USB B端子
ミニUSB端子
ミニA端子
ミニB端子
ミニABソケット
マイクロUSB端子
マイクロA端子
マイクロB端子
マイクロABソケット
A端子はパソコン本体の差込口や、ハブのクライアント側などのホスト側、B端子はパソコンから接続されるプリンタなどの周辺機器の差込口や、ハブのホスト側などのデバイス側として使われている。Mini-B端子は、デジタルカメラなどの小型デバイス器に使用される。端子形状を変えることにより接続方法を制限し、バストポロジーの木構造が保たれるように配慮されている。なお、ミニABソケットは、ミニAとミニBのどちらでも接続できるものである。マイクロABソケットについても同様である。(USB_On-The-Go参照)
標準USBコネクタのピン配置PinFunction(ホスト側)Function(機器側)
1VBUS (4.75?5.25 V)VBUS (4.4?5.25 V)
2D?D?
3D+D+
4GNDGND
mini A, Bのピン番号
ミニ・マイクロUSBコネクタのピン配置PinFunction(ホスト側)Function(機器側)
1VBUS (4.75?5.25 V)VBUS (4.4?5.25 V)
2D?D?
3D+D+
4IDID
5GNDGND
規格ではケーブルはHigh/Full Speed用とLow Speed用の2つが定められている。安価に製造できるようLow Speed用は電気的特性が緩い。Low Speedデバイスではケーブルが分離できるように設計することが明示的に禁止されているため、単独のケーブルはすべてHigh/Full Speed用となる。
ケーブルの両端はA端子とB端子でなければならないと明示的に規定されている。このため、A端子とAソケットが付いたUSB延長ケーブルは規格違反品である。なおそのケーブルにUSBロゴがついていた場合は、ロゴの無断使用となる。
USB2.0規格はUSB1.1規格と互換性を保つように設計されたため、USB2.0規格のUSBポートに1.1規格で設計された機器をつないでも使える。また、USB2.0規格で新設されたHighSpeed機器をUSB1.1規格で設計されたポート、ハブにつないだ場合でも、FullSpeedの転送速度で使用できる。