chrome.usb

説明

chrome.usb API を使用して、接続された USB デバイスとやり取りします。この API は、アプリのコンテキスト内から USB オペレーションへのアクセスを提供します。この API を使用すると、アプリはハードウェア デバイスのドライバとして機能できます。この API によって生成されたエラーは、runtime.lastError を設定し、関数の通常のコールバックを実行することで報告されます。この場合、コールバックの通常のパラメータは未定義になります。

権限

usb

ConfigDescriptor

プロパティ

  • アクティブ

    ブール値

    Chrome 47 以降

    これはアクティブな構成ですか?

  • configurationValue

    数値

    構成番号。

  • 説明

    文字列 省略可

    構成の説明。

  • extra_data

    ArrayBuffer

    この構成に関連付けられた追加の記述子データ。

  • インターフェース

    使用可能なインターフェース。

  • maxPower

    数値

    このデバイスに必要な最大電力(ミリアンペア(mA)単位)。

  • remoteWakeup

    ブール値

    デバイスがリモート ウェイクアップをサポートしている。

  • selfPowered

    ブール値

    デバイスは自己電源です。

ConnectionHandle

プロパティ

  • ハンドル

    数値

    この USB デバイスへの接続と、関連するすべての要求済みインターフェースと保留中の転送を表す不透明なハンドル。デバイスを開くたびに新しいハンドルが作成されます。接続ハンドルが Device.device と異なる。

  • productId

    数値

    商品 ID。

  • vendorId

    数値

    デバイス ベンダー ID。

ControlTransferInfo

プロパティ

  • データ

    ArrayBuffer 省略可

    送信するデータ(出力転送でのみ必須)。

  • direction

    転送方向("in" または "out")。

  • index

    数値

    wIndex フィールド。Ibid

  • 長さ

    number 省略可

    受信する最大バイト数(入力転送でのみ必須)。

  • 受信者

    転送先。"interface" または "endpoint" の場合、index で指定されたターゲットを要求する必要があります。

  • リクエスト

    数値

    bRequest フィールド。ユニバーサル シリアル バス仕様リビジョン 1.1 § 9.3 を参照してください。

  • requestType

    リクエストのタイプ。

  • timeout

    number 省略可

    Chrome 43 以降

    リクエスト タイムアウト(ミリ秒単位)。デフォルト値の 0 は、タイムアウトがないことを示します。

  • 数値

    wValue フィールド。Ibid

Device

プロパティ

  • デバイス

    数値

    USB デバイスの不透明な ID。デバイスのプラグを抜くまで変更されません。

  • manufacturerName

    文字列

    Chrome 46 以降

    デバイスから読み取られた iManufacturer 文字列(利用可能な場合)。

  • productId

    数値

    商品 ID。

  • productName

    文字列

    Chrome 46 以降

    デバイスから読み取られた iProduct 文字列(利用可能な場合)。

  • serialNumber

    文字列

    Chrome 46 以降

    デバイスから読み取られた iSerialNumber 文字列(利用可能な場合)。

  • vendorId

    数値

    デバイス ベンダー ID。

  • version

    数値

    Chrome 51 以降

    デバイスのバージョン(bcdDevice フィールド)。

DeviceFilter

プロパティ

  • interfaceClass

    number 省略可

    USB インターフェース クラス。デバイス上の任意のインターフェースに一致します。

  • interfaceProtocol

    number 省略可

    USB インターフェース プロトコル。インターフェース サブクラスが一致する場合にのみチェックされます。

  • interfaceSubclass

    number 省略可

    USB インターフェース サブクラス。インターフェース クラスが一致する場合にのみチェックされます。

  • productId

    number 省略可

    デバイスのプロダクト ID。ベンダー ID が一致する場合にのみチェックされます。

  • vendorId

    number 省略可

    デバイス ベンダー ID。

DevicePromptOptions

プロパティ

  • フィルタ

    DeviceFilter[] 省略可

    ユーザーに表示されるデバイスのリストをフィルタします。複数のフィルタが指定されている場合、いずれかのフィルタに一致するデバイスが表示されます。

  • 複数

    ブール値(省略可)

    ユーザーが複数のデバイスを選択できるようにします。

Direction

Direction、Recipient、RequestType、TransferType はすべて、USB 仕様内の同名にマッピングされます。

列挙型

"in"

"out"

EndpointDescriptor

プロパティ

  • 住所

    数値

    エンドポイント アドレス。

  • direction

    転送方向。

  • extra_data

    ArrayBuffer

    このエンドポイントに関連付けられた追加の記述子データ。

  • maximumPacketSize

    数値

    最大パケットサイズ。

  • pollingInterval

    number 省略可

    ポーリング間隔(割り込みとアイソクロナスのみ)。

  • 同期

    転送同期モード(アイソクロナスのみ)。

  • 転送タイプ。

  • 用途

    UsageType 省略可

    エンドポイントの使用状況のヒント。

EnumerateDevicesAndRequestAccessOptions

プロパティ

  • interfaceId

    number 省略可

    アクセスをリクエストするインターフェース ID。Chrome OS でのみご利用いただけます。他のプラットフォームには影響しません。

  • productId

    数値

    商品 ID。

  • vendorId

    数値

    デバイス ベンダー ID。

EnumerateDevicesOptions

プロパティ

  • フィルタ

    DeviceFilter[] 省略可

    指定されたフィルタに一致するデバイスが返されます。フィルタリストが空の場合、アプリが権限を持っているすべてのデバイスが返されます。

  • productId

    number 省略可

    非推奨

    DeviceFilter.productId を設定するのと同じです。

  • vendorId

    number 省略可

    非推奨

    DeviceFilter.vendorId を設定するのと同じです。

GenericTransferInfo

プロパティ

  • データ

    ArrayBuffer 省略可

    送信するデータ(出力転送でのみ必須)。

  • direction

    転送方向("in" または "out")。

  • endpoint

    数値

    ターゲット エンドポイント アドレス。このエンドポイントを含むインターフェースは、要求されている必要があります。

  • 長さ

    number 省略可

    受信する最大バイト数(入力転送でのみ必須)。

  • timeout

    number 省略可

    Chrome 43 以降

    リクエスト タイムアウト(ミリ秒単位)。デフォルト値の 0 は、タイムアウトがないことを示します。

InterfaceDescriptor

プロパティ

  • alternateSetting

    数値

    インターフェースの代替設定番号(デフォルトは 0

  • 説明

    文字列 省略可

    インターフェースの説明。

  • エンドポイント

    使用可能なエンドポイント。

  • extra_data

    ArrayBuffer

    このインターフェースに関連付けられた追加のディスクリプタ データ。

  • interfaceClass

    数値

    USB インターフェース クラス。

  • interfaceNumber

    数値

    インターフェース番号。

  • interfaceProtocol

    数値

    USB インターフェース プロトコル。

  • interfaceSubclass

    数値

    USB インターフェースのサブクラス。

IsochronousTransferInfo

プロパティ

  • packetLength

    数値

    この転送内の各パケットの長さ。

  • packets

    数値

    この転送のパケットの合計数。

  • transferInfo

    転送パラメータ。このパラメータ ブロックで指定された転送長またはデータバッファは、packetLength 境界に沿って分割され、転送の個々のパケットを形成します。

Recipient

列挙型

"device"

"interface"

"endpoint"

"other"

RequestType

列挙型

"standard"

"class"

"vendor"

「reserved」

SynchronizationType

割り込みモードとアイソクロナス モードの場合、SynchronizationType と UsageType は USB 仕様内の同名にマッピングされます。

列挙型

"asynchronous"

"adaptive"

"synchronous"

TransferResultInfo

プロパティ

  • データ

    ArrayBuffer 省略可

    入力転送によって返されるデータ。出力転送用の undefined

  • resultCode

    number 省略可

    0 は、転送が成功したことを示します。その他の値は失敗を示します。

TransferType

列挙型

"control"

"interrupt"

"isochronous"

"bulk"

UsageType

列挙型

"data"

"feedback"

"explicitFeedback"

"periodic"

"notification"

メソッド

bulkTransfer()

Promise
chrome.usb.bulkTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

指定したデバイスで一括転送を実行します。

パラメータ

戻り値

  • Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

claimInterface()

Promise
chrome.usb.claimInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)
: Promise<void>

USB デバイスのインターフェースを要求します。データをインターフェースまたは関連付けられたエンドポイントに転送する前に、インターフェースを要求する必要があります。一度にインターフェースを要求できる接続ハンドルは 1 つだけです。インターフェースがすでに要求されている場合、この呼び出しは失敗します。

インターフェースが不要になったら、releaseInterface を呼び出す必要があります。

パラメータ

  • ハンドル

    デバイスへの接続が開いている。

  • interfaceNumber

    数値

    要求するインターフェース。

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

closeDevice()

Promise
chrome.usb.closeDevice(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<void>

接続ハンドルを閉じます。ハンドルが閉じられた後にハンドルでオペレーションを呼び出すのは安全なオペレーションですが、アクションは実行されません。

パラメータ

戻り値

  • Promise<void>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

controlTransfer()

Promise
chrome.usb.controlTransfer(
  handle: ConnectionHandle,
  transferInfo: ControlTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

指定されたデバイスで制御転送を実行します。

制御転送は、デバイス、インターフェース、エンドポイントのいずれかを参照します。インターフェースまたはエンドポイントへの転送には、インターフェースの要求が必要です。

パラメータ

戻り値

  • Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

findDevices()

Promise
chrome.usb.findDevices(
  options: EnumerateDevicesAndRequestAccessOptions,
  callback?: function,
)
: Promise<ConnectionHandle[]>

ベンダー ID、プロダクト ID、インターフェース ID(省略可)で指定された USB デバイスを検索し、権限で許可されている場合は使用できるように開きます。

アクセス リクエストが拒否された場合や、デバイスを開くことができなかった場合、接続ハンドルは作成されず、返されません。

このメソッドを呼び出すことは、デバイスごとに getDevices の後に openDevice を呼び出すことと同等です。

パラメータ

戻り値

  • Promise<ConnectionHandle[]>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

getConfiguration()

Promise
chrome.usb.getConfiguration(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<ConfigDescriptor>

現在選択されている構成の構成記述子を取得します。

パラメータ

戻り値

  • Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

getConfigurations()

Promise Chrome 47+
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)
: Promise<ConfigDescriptor[]>

デバイス構成記述子の完全なセットを返します。

パラメータ

戻り値

  • Promise<ConfigDescriptor[]>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

getDevices()

Promise
chrome.usb.getDevices(
  options: EnumerateDevicesOptions,
  callback?: function,
)
: Promise<Device[]>

接続された USB デバイスを列挙します。

パラメータ

  • オプション

    ターゲット デバイスで検索するプロパティ。

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    (devices: Device[]) => void

戻り値

  • Promise<Device[]>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

getUserSelectedDevices()

Promise
chrome.usb.getUserSelectedDevices(
  options: DevicePromptOptions,
  callback?: function,
)
: Promise<Device[]>

デバイス選択ツールをユーザーに表示し、選択された Device を返します。ユーザーがキャンセルすると、ピッカー デバイスは空になります。ダイアログを表示するには、ユーザー操作が必要です。ユーザー操作がない場合、コールバックはユーザーがキャンセルしたかのように実行されます。

パラメータ

  • オプション

    デバイス選択ツールのダイアログ ボックスの構成。

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    (devices: Device[]) => void

戻り値

  • Promise<Device[]>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

interruptTransfer()

Promise
chrome.usb.interruptTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

指定されたデバイスで割り込み転送を実行します。

パラメータ

戻り値

  • Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

isochronousTransfer()

Promise
chrome.usb.isochronousTransfer(
  handle: ConnectionHandle,
  transferInfo: IsochronousTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

特定のデバイスでアイソクロナス転送を実行します。

パラメータ

戻り値

  • Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

listInterfaces()

Promise
chrome.usb.listInterfaces(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<InterfaceDescriptor[]>

USB デバイスのすべてのインターフェースをリストします。

パラメータ

戻り値

  • Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

openDevice()

Promise
chrome.usb.openDevice(
  device: Device,
  callback?: function,
)
: Promise<ConnectionHandle>

getDevices から返された USB デバイスを開きます。

パラメータ

戻り値

  • Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

releaseInterface()

Promise
chrome.usb.releaseInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)
: Promise<void>

申し立てられたインターフェースを解放します。

パラメータ

  • ハンドル

    デバイスへの接続が開いている。

  • interfaceNumber

    数値

    リリースするインターフェース。

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

requestAccess()

Promise 非推奨
chrome.usb.requestAccess(
  device: Device,
  interfaceId: number,
  callback?: function,
)
: Promise<boolean>

この関数は Chrome OS 固有のものであり、他のプラットフォームで呼び出すと失敗していました。このオペレーションは openDevice の一部として暗黙的に実行されるようになり、この関数はすべてのプラットフォームで true を返します。

デバイスの指定されたインターフェースが要求されていない場合、パーミッション ブローカーから Chrome OS によって要求されたデバイスへのアクセスをリクエストします。

パラメータ

  • デバイス

    アクセス権をリクエストする Device

  • interfaceId

    数値

    リクエストされた特定のインターフェース。

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    (success: boolean) => void

    • 成功

      ブール値

戻り値

  • Promise<boolean>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

resetDevice()

Promise
chrome.usb.resetDevice(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<boolean>

USB デバイスのリセットを試みます。リセットに失敗すると、指定された接続ハンドルが閉じられ、USB デバイスが切断されてから再接続されたように見えます。この場合、デバイスを取得するために getDevices または findDevices を再度呼び出す必要があります。

パラメータ

  • ハンドル

    リセットする接続ハンドル。

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    (success: boolean) => void

    • 成功

      ブール値

戻り値

  • Promise<boolean>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

setConfiguration()

Promise
chrome.usb.setConfiguration(
  handle: ConnectionHandle,
  configurationValue: number,
  callback?: function,
)
: Promise<void>

デバイス設定を選択します。

この関数は、デバイスの利用可能な構成のいずれかを選択することで、デバイスを効果的にリセットします。0 より大きい構成値のみが有効ですが、バグのあるデバイスの中には 0 の構成が動作するものもあるため、この値は許可されています。

パラメータ

  • ハンドル

    デバイスへの接続が開いている。

  • configurationValue

    数値

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

setInterfaceAlternateSetting()

Promise
chrome.usb.setInterfaceAlternateSetting(
  handle: ConnectionHandle,
  interfaceNumber: number,
  alternateSetting: number,
  callback?: function,
)
: Promise<void>

以前に要求されたインターフェースの代替設定を選択します。

パラメータ

  • ハンドル

    このインターフェースが要求されたデバイスへのオープン接続。

  • interfaceNumber

    数値

    構成するインターフェース。

  • alternateSetting

    数値

    設定する代替設定。

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

イベント

onDeviceAdded

chrome.usb.onDeviceAdded.addListener(
  callback: function,
)

デバイスがシステムに追加されたときに生成されるイベント。イベントは、デバイスにアクセスする権限を持つアプリと拡張機能にのみブロードキャストされます。権限は、インストール時にユーザーがオプションの権限を承認したとき(permissions.request を参照)、または getUserSelectedDevices を介して付与されている可能性があります。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (device: Device) => void

onDeviceRemoved

chrome.usb.onDeviceRemoved.addListener(
  callback: function,
)

デバイスがシステムから削除されたときに生成されるイベント。配信されるイベントについては、onDeviceAdded をご覧ください。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (device: Device) => void