USBデバイス状態遷移図

USBデバイスは、次に示す6つの状態を遷移します。

  • Attached : USBデバイスがホストまたはハブへ接続された状態
  • Powered : ホストまたはハブからUSBデバイスへの電源供給が開始された状態
  • Default : バスリセットが行われ、USBデバイスとの通信が可能となった状態
  • Address : USBデバイスのアドレスが設定された状態
  • Configured : USBデバイスのConfigurationが設定され、デバイスが使用可能となった状態
  • Suspended : ホストがUSBデバイスとの通信を休止し、USBバスサスペンドとなった状態

各状態間の遷移を正しく実装することは、USBデバイスが正しく動作するために特に重要なことの1つです。

各状態間を遷移する条件はUSB2.0仕様書に既定されていますが、例としてUSBデバイスをパソコンに接続した際は、次のように状態遷移します。

  1. ホストまたはハブにUSBデバイスが接続され、電源が供給されます。(Attached→Powered)
  2. ホストからバスリセットが行われ、USBデバイスとの通信が可能な状態となります。(Powered→Default)
  3. ホストはSet AddressリクエストによりUSBデバイスのアドレスを設定します。(Default→Address)
  4. ホストはGet Descriptorリクエストによりデバイスのディスクリプターを取得し、デバイスに関する情報を得ます。
  5. ホストはSet Configurationリクエストを行い、USBデバイスが使用可能な状態となります。(Address→Configured)

次の図はUSB2.0仕様書から抜粋したものです。

USBデバイスの状態遷移図

USB開発の効率アップはこちら