なぜUSB規格は難しい?歴史から読み解く種類やコネクタの違い
........
PCやスマートフォンをはじめ、外部ストレージや各種周辺機器まで——USBは、現代のデジタル機器をつなぐ最も身近で汎用性の高いインターフェースです。その利便性は組み込み分野でも変わらず、データロガーや産業用コントローラーとの通信、医療機器やIoTデバイスのファームウェア更新、さらに組み込みLinuxシステムでの周辺機器接続など、多岐にわたる用途を支えています。いまやUSBの知識は、組み込みシステムを設計するうえで欠かせない基礎技術となっています。本記事ではそんなUSBの歴史から組み込み開発の基礎までは解説します。
1. USB登場背景
USB(Universal Serial Bus)は現在PCからいろいろな電子機器の充電、データ通信、映像伝送などに広く使われています。1996年以前はPCに周辺機器をつなぐには、いろいろな専用通信インターフェース(例えばPS/2、RS-232C、IEEE1284、SCSI、IEEE1394/FireWireなど)を使用する必要がありました。接続機器ごとにその専用ケーブルが必要で、かつ設定も手間がかかりました。そのような状況のためPCと周辺機器の接続をシンプルにする機運は高く、IntelとMicrosoftらが中心に規格団体(USB-IF:USB Implementers Forum, Inc.)を立ち上げ、1996年にUSB 1.0を規格しました。USB当初の理念は統一規格よりいろんな機器が共通のインターフェースにつながること、電源入れたまま抜き差しでき、つなげばすぐ使えること(プラグアンドプレイ機能)とPC側から電力を供給する機能(バスパワー)でありました。その後改善されたUSB 1.1仕様とWindowsのUSB対応より利便性が向上し、瞬く間に普及し始めました。USB普及のもうひとつ重要な要素はラインセスフリーであることと、通信品質を保つための試験・認証制度と言えます。その後ニーズの高かった高速通信対応のUSB 2.0(USB High-Speed)が誕生し、Windows 2000やWindows XPのサポートによりUSBの普及を更に加速させました。
2. USB規格の変遷
前述のようにUSB規格は、より高速なデータ転送と高い電力供給のニーズに応えるため、登場以来継続的に進化を遂げてきました。最初期のUSB規格のデータ転送速度は1.5Mbps(LS: Low-Speed)と12Mbps(FS: Full-Speed)でしたが、その後USB 2.0の480Mbps(HS: High-Speed)、そしてUSB 3.0、3.1、および3.2の5~20Gbps(SS: SuperSpeed)に進化しました。最新のUSB4はGen 3x2レーンより40Gbpsを実現しています。そして2022年、転送速度が2倍となる80Gbps実現に向けてUSB推進団体「USB Promoter Group※」は次世代USB規格「USB4 Version 2.0」を発表しました。
そのいっぽう、スマートフォンへの高速充電、周辺機器間のハイパワー給電のニーズが高まり、USB Type-Cのコネクタを使用した給電規格USB PD(Power Delivery)が規格されました。その後、EUでE-waste削減を目的としてUSB Type-C充電端子義務化となりました。
また、FireWireの後継としてIntelとAppleが共同開発したThunderbolt 3以降の規格もUSB Type-Cを採用することになりました。
- USB規格団体(USB-IF)とは別のIntel、Appleらが中心となるUSB推進団体です。
- USB PD対応を除く、接続する機器はUSB PDのSPR(Standard Power Range)をサポートしている場合は最大で100W(20V/5A)、USB PDのEPR(Extended Power Range)をサポートしている場合は最大で240W(48V/5A)の電力供給が可能です。また、USB PD以前2010年にUSB Battery Charging Specification 1.2も規定され、最大供給電流は1.5Aでした。
3. USBケーブル&コネクタの種類と使い分け
USBコネクタの形状はUSB規格で規定されており、USBポート1つで周辺機器とのデータ転送と電源供給が可能です。USBは下位互換性に対応するため、コネクタ形状が合えば接続が可能です。また、データ転送は下位規格に速度を合わせて行います。コネクタ形状としてはSeries “A”、 Series “B”、Type-Cで定義され、 Series “B”のサイズとしてStandard以外にMini、Microサイズがあります( Series “A”もMiniとMicroやOTG※対応するためのMini-ABとMicro-ABも規格されていましたが、Type-Cの登場より現在置き換えられつつあるため省略します)。
- OTG:On-The-GoとはPCを介せず電子機器同士接続するためにUSB 2.0以降に追加された仕様です。主にスマートフォン、タブレットやデジカメに使われていますが、組み込み機器への利用のニーズが高まっています。
USB Series “A”
Series “A”(Standard-A)はUSBが規格された当初から使用されているパソコン側(ホスト側)のコネクタです。マウスやキーボード、オーディオ、ストレージ、プリンタなどの周辺機器を接続するのに用いられることが多いコネクタです。コネクタ内部の樹脂部分は白色、または黒色に色分けされることが多いです。USB 3.0に規格化されたときにSS(SuperSpeed)対応するため、SS信号線が追加されました。主にUSBメモリやSSD、HDDなど高速通信を求めるストレージのデータ転送に利用されています。コネクタの機構が変更されていますが、下位互換対応するため形状は同じようになっています。旧来と区別するため、コネクタ内部の樹脂部分は青色になっています。USB 3.0はUSB 3.1 Gen1やUSB 3.2 Gen1と表記されることもあります。
USB Series “B”
Series “B”はPCの周辺機器側(ペリフェラル・デバイス側)のコネクタです。オーディオやストレージ、プリンタに用いられることが多いコネクタです。 Series “B”はStandard-B(主にプリンターや据え置きHDDなどに利用)、Mini-B(主にゲームコントローラや小型周辺機器などに利用)、さらにMicro-B(主にスマートフォンやタブレットなどに利用)として存在しています。Standard-BはUSB 3.0に対応するため端子上部のコネクタ機構・形状が変更されています。Micro-BはUSB 3.0に対応するためコネクタ横を延長したような形状になっています(延長部との間に窪みがあります)。 ちなみにMini-BはUSB 3.0対応されませんでした。
USB Type-C
Type-Cは最新規格で、上下対称でどちら向きでも挿せるようになっています。ホスト側もペリフェラル・デバイス側も利用できるようになっており、最新のスマートフォン(iPhone 15以降、Android 12以降)、タブレット、ノートPC、モニターなど、多様な製品で採用が進んでいます。コンパクトでケーブルの向きや方向を考えることなく接続できることからユーザビリティが向上しました。ただし、コネクタの形状が同じでも用途に応じてUSB 2.0 HS対応からUSB 3.2/4対応高速データ転送タイプ、USB PD非対応からUSB PD SPR(60W/100W)/EPR対応、DisplayPort Alternate Modeによる映像出力対応タイプのケーブルやThunderbolt 対応ケーブルがあります。ちなみにUSB Type-Cケーブルはケーブルの両端のプラグがType-Cもあれば、片方がStandard-Aも存在しています。片方がStandard-Aの場合、通信規格はUSB 3.2 Gen 2x1(10Gbps)までに留まり、USB PDは使用できません。
両端Type-CでSS信号対応したUSB Type-Cケーブルは“Full Featured”といい、いろいろな規格対応ケーブルが存在しています。使用目的に応じて適正なケーブルの選定が必要になります。なおUSB Type-CはUSB 3.1と同時期に発表されたため、厳密にはUSB 3.0 USB Type-Cケーブルは規定されていません。またUSB 3.2より「2レーン」が追加され、20Gbpsの「Gen 2x2」として規格されました。それによってUSB 3.1規格時の呼び名が変更されました。Thunderbolt 3以降もUSB Type-Cを使うようになり、アクティブ(信号の増幅・補正機能内蔵)対応の場合0.8m以上対応可能で、Thunderbolt 4は最長2mまでです。
一方、USB PDを利用する場合USB PD規格準拠ケーブルとして3A対応(SPRで最大3A×20V=60W)と5A対応(SPRで最大5A×20V=100W 、EPRで最大5A×48V=240W)の3種類があります。信頼性と安全性を保つため5A対応ケーブルはeMarkerと呼ばれる認証が必須となっています。Full Featured USB Type-Cケーブルはすべて5A対応と限らないことやUSB信号線ない(CC信号線あり)充電専用のケーブル、USB 2.0通信対応充電専用のケーブルも存在しています。また、USB PD対応してないUSB Type-Cケーブルは一般的に最大3Aまでの電流しか流せません。
-
USB PD対応ケーブル、ACアダプタに関してご興味のある方は、こちらの記事もご参照ください。
-

本当にそれで大丈夫?PDアダプタ選定の意外な落とし穴
4. 組み込み向けUSBの基礎知識
組み込み開発者向けにUSB開発のための基礎知識をまとめています。少々長いですが、USBの中身はこんなものだと感じる程度の気持ちでお気軽にお読みください。
USBのシステム構成
USBはバス・システム全体をひとつのホストで管理します。ホストの下に複数のペリフェラル・デバイスが接続されます。ホストはシステム内でユニークなアドレスをペリフェラル・デバイスに割り当て、通信全体を管理し、ペリフェラル・デバイスに対して指令を出します。ポート拡張はハブを介して行い、多数のペリフェラル・デバイスを接続することができます。ハブはカスケード接続が可能で、最大5段まで接続できます。接続可能なターゲットの台数はハブを含めて最大127台までとなっています。組み込み機器では、PCがホスト、組み込み機器がペリフェラル・デバイスとして動作することが一般的です。組み込み機器はホストからの指令に従い、データ送信や受信などの処理を実行します。デバイスは複雑なバス管理を行う必要がないため、回路が簡易でコストを抑えられます。USBの通信は常にホスト側から開始される「マスタ・スレーブ方式」であり、ペリフェラル・デバイス同士が直接通信することはできません(OTG:USB On-The-Goを除く)。ちなみに、最新のUSB4では従来のUSBのティアード・スター型トポロジーに基づきつつ、デイジーチェーン接続もサポートする柔軟な構造になっています。
USBの転送方式
USBはシリアル通信です。データはビット列の塊を最小単位としたパケットでやり取りします。また、複数のパケットからなるデータのやり取りをトランザクションと呼びます。すべてのUSBデバイスは制御用にコントロール転送を持ち、必要に応じてインタラプト転送、バルク転送およびアイソクロナス転送のエンドポイントを持つことができます。
- コントロール転送(Control Transfer):
デバイスの設定や制御情報のやり取りに使われます。すべてのUSBデバイスに必須の転送モードです。デバイスの初期設定(USBエニュメレーション)や、ベンダID、プロダクトIDなどのデバイス情報をホストが取得する際に使用されます。転送プロトコルのオーバーヘッドは大きいですが、高い信頼性が必要です。 - インタラプト転送(Interrupt Transfer):
周期的に少量のデータを即時転送するために使用されます。キーボードやマウスなどのヒューマンインターフェースデバイス(HID)で主に用いられます。ホストからの定期的なポーリング(問い合わせ)に対してデバイスが応答する形でデータが転送されます。 - バルク転送(Bulk Transfer):
大容量のデータを信頼性高く転送するために使用されます。データ欠損が許されない用途に適しています。プリンタ、スキャナ、USBメモリなどのストレージデバイスで主に用いられます。他の転送方式の空き時間をすべて使用するため、遅延が発生する可能性がありますが、確実にデータを転送できます。組み込み分野では、時間制約が厳しくないデータ転送によく使われます。 - アイソクロナス転送(Isochronous Transfer):
リアルタイム性が必要なストリーミングデータ(音声、映像など)を連続的に転送するために使用されます。データ欠損が発生しても再送は行われませんが、一定時間内に一定量のデータを転送することが保証されます。ビデオカメラやオーディオ機器などで用いられます。なお、Low-Speedモードではアイソクロナス転送はサポートされていません。
USBのエンドポイントとは
(Universal Serial Bus Specification Revision 2.0 を元に作成)
エンドポイント(EP:endpoint)はUSBデバイス内に置かれたバッファ・レジスタです。ホストとUSBデバイスの間は2線式の撚り対線(よりついせん)ケーブルが1対しかありません。ホスト側は、論理的にはデバイスに対して“パイプ(pipe)”と呼ばれる複数の通信経路を経て、エンドポイントとデータの送受信を行います。
エンドポイントには、用途によってコントロール・エンドポイント、デバイス・エンドポイントなどのいくつかの名称があります。ホストからデバイス方向(デバイス受信)をOUTエンドポイント、デバイスからホスト方向(デバイス送信)をINエンドポイントと呼びます。特に、初期設定や制御に使われるエンドポイント0(デフォルトパイプ)は双方向で、その他のデータ転送用エンドポイントは片方向(インタラプト、バルク、アイソクロナス)があり、それぞれFIFO(先入れ先出し)やRAMのような構造を持ち、用途に応じて使い分けられます。
USBデバイスクラス
USB通信を実現するためには、ホストソフトウェア(ドライバ)とデバイスソフトウェア(ファームウェア)が必要です。周辺機器の機能によってグループ分けされたデバイスクラスと呼ばれる仕様群が定義され、クラスの仕様に準拠した機器類は、クラスドライバと呼ばれる共通のドライバによって動作させることができます。デバイス側のファームウェアがそれらのクラスに対応していると、ホストにインストールされている標準クラスドライバが呼び出され、動作できる仕組みになっています。例えばUSB Audio Classデバイスクラスに対応するUSBスピーカをホストに挿すと、ドライバのインストール不要でUSBスピーカが使用できます。USB規格による代表的なクラスを下記に示します。なお、Vendor Specificで定義されているベンダー定義独自機能を持つUSBデバイスを制御するためには、ホスト用のUSBドライバも開発する必要があります。
USBエニュメレーション
USBはホットプラグによるプラグ・アンド・プレイに対応しています。USBデバイスをホストに接続した際、ホストがそのデバイスが「何者か」を認識し、通信できる状態にするまでの一連の自動的なやり取りや手続きがUSBエニュメレーション(Enumeration)です。自動認識するために、すべてのUSBデバイスにはデバイス・ディスクリプタのテーブルがあります。ディスクリプタには、デバイスの属性やドライバをインストールする際に必要となる情報のすべてが記述されています。USBプラグを接続すると、ホストは以下の手順でデバイスを認識し最適なドライバをロードし、USBデバイスを使用できるようになります。
- ホストはゲット・ディスクリプタデバイス(Get Descriptor-Device)をアドレス0に送出します。すべてのUSBデバイスの接続直後のアドレスは“0”です。
USBデバイスからの応答によって、デバイスが送信可能なパケット・サイズとサポートしているエンドポイント番号をホストが知ります。 - ホストはセット・アドレス(Set Address)リクエストを送って、デバイスにアドレスを割り付けます。
- ホストはゲット・ディスクリプタ(Get Descriptor)リクエストを送って、デバイスの追加情報を要求します。これにより、ホストはデバイスとの通信に必要なすべての情報を入手します。
- ホストはディスクリプタの情報を解析し、デバイスに合ったドライバ(デバイスドライバ)を選んでロードします。
上記のすべての手続きが完了すると、デバイスは「Configured(設定済み)」状態になり、使えるようになります。
USBの状態遷移
(Universal Serial Bus Specification Revision 2.0 を元に作成)
USBの状態は、接続直後のAttachedから始まり、エニュメレーションの間、Powered、Default、Address、Configuredの4つの状態を遷移します。各状態で状態変化が発生しなかった場合、Suspended状態に遷移します。各状態での動作は前述の説明のとおりです。
- Attached : USBデバイスがホストに接続された状態
- Powered : USBデバイスがホストに接続され、デバイスにVbus電力を供給開始した状態
- Default : バスリセットが行われ、通信ができるようになった状態
- Address : USBデバイスにアドレスを割り当てた状態
- Configured : USBデバイスのConfiguration(設定)が終了し、利用可能な状態
- Suspended : バス上に3ms以上の状態変化がなかった場合に、電力を制限するモード
USB OTG(USB On-The-Go)
スマートフォンやタブレット、カメラなどの機器へのUSB普及に伴い、PCを介さず機器から直接印刷するニーズが高まってきました※。そのニーズに応えるため、USB 2.0に追加する仕様(On-The-Go Supplement to the USB 2.0 Specification)としてUSB OTGが規格されました。USB機器同士の相互接続を実現するには、デバイス機能だけでなくホスト機能も必要になります。このホスト/デバイス両方の役割を持ったUSB OTG対応デバイスをデュアルロール・デバイス(DRD:Dual-role Device)と呼びます。
USB OTGの特徴のひとつは、機器が必要に応じてホスト/デバイスの役割(ロール)を交換できることにあります。そのためホスト/デバイスを決定するID信号端子が追加され、現在ホストなのかデバイスなのかの判別して動作を切り替えられるようになりました。ID信号端子がLow状態だとホストとして動作し、未接続(High-impedance)またはHigh状態だとデバイスとして動作します。このID信号端子はもともとMini-ABレセクタプルとMini-AプラグとMini-Bプラグの両方を挿入可能なA,B兼用のレセクタプルで実現されていました。現在はUSB Type-Cに置き換えられ、CC(Configuration Channel)端子がID信号端子の代わりとなり、USB Type-CのDRP(Dual Role Port)機能を利用することで実現しています。DRPはCC端子のプルアップ抵抗(Rp)とプルダウン抵抗(Rd)を動的に切り替えられる必要があり、接続相手がUFP(Upstream Facing Port = デバイス)であれば自身はCC端子をRpでプルアップしてDFP(Downstream Facing Port = ホスト)に、接続相手がDFPであれば自身はCC端子をRdでプルダウンしてUFPとなることで接続が確立します。DFP/UFPの状態が確立すると、DFPからUFPに電力が供給されます。
USB OTGは、HNP(Host Negotiation Protocol)により、接続後に動的にホスト/デバイス役割切り替えができるようになっています。例えば、スマートフォンとUSBメモリを繋いだ場合、スマートフォンがホストとしてメモリに電力(VBUS)を供給し、読み書きします。バッテリー内蔵機器は、必要に応じて電力供給を停止または要求できるようにSRP(Session Request Protocol)が定義されています。デュアルロール・デバイスはこの二つのプロトコルをサポートする必要があります。
- OTG規格される前(2002年頃)にPCを介さずカメラから直接プリンタに接続して印刷できるようにPictBridgeが規格されています。USB以外に赤外線通信を使うことも許されている規格です。現在はWi-Fi経由での印刷やクラウド印刷などの新しい技術が主流となっているため、一般的な利用シーンは減少しています。
下図はUSB Type-Cスペックから抜粋したDRPの機能モデルの図です。CC1/CC2を、RpでプルアップもしくはRdでプルダウン、を切り替えるスイッチを内蔵していることがわかります。
(出典:Universal Serial Bus Type-C Cable and Connector Specification Release 2.4)
5. まとめ
USBは歴史も長く新旧規格が混在しています。また、コネクタ形状や給電能力による規格も存在しているため、どの規格を使用するのが良いか悩むことも多いと思います。ケーブルなどを選択する際は、対応しているUSBの規格と用途をよく考えて選択する必要があります。組み込み機器にUSBを搭載する際も、USBの用途やケーブルの入手性などを考えて採用規格やデバイスクラス、コネクタを選ぶ必要があります。
色々と混乱する要素の多いUSBではありますが、ユーザーとしてはケーブルを挿せば簡単に使える利便性により様々な機器に搭載されており、今やなくてはならない規格となっています。リョーサンではUSBに関連する商品・サービスを幅広く取り扱っていますので、USBの使用・開発にお困りの際は、お気軽にご相談ください。
(執筆者:唐松 明 / 編集者:木庭 正博)




