【Windows】リナックス環境に外部のUSB機器を直接認識させて使用する手順

【Windows】リナックス環境に外部のUSB機器を直接認識させて使用する手順
🛡️ 超解決

ビジネスでWindowsとリナックス環境を併用していると、USBデバイスをリナックス側で直接使いたい場面に直面するでしょう。開発用ボードの接続や特定の測定機器の利用で、USBデバイスが認識されずに困ることは少なくありません。Windows Subsystem for Linux WSL2のUSBリダイレクト機能を使えば、このような問題を解決できます。この記事では、Windows 11またはWindows 10のWSL2リナックス環境で、外部USB機器を直接認識させて使用する詳細な手順を解説します。

【要点】WSL2リナックス環境へのUSBデバイス接続は「usbipd-win」の導入から始まります。

  • usbipd-winのインストール: WindowsにUSBデバイスリダイレクト用のツールを導入し、WSL2でUSBデバイスを使えるようにします。
  • USBデバイスの特定とアタッチ: 接続したいUSBデバイスをWindows上で識別し、そのデバイスをWSL2リナックス環境へ接続します。
  • リナックス環境でのデバイス確認: リナックス側でUSBデバイスが正しく認識されているかを確認し、使用を開始します。

ADVERTISEMENT

WSL2とUSBデバイスリダイレクトの仕組み

Windows Subsystem for Linux WSL2は、Windows上でネイティブに近い速度でリナックス環境を動作させる仮想化技術です。WSL2は従来のWSL1とは異なり、軽量な仮想マシンVM上でリナックスカーネルを完全に動作させます。これにより、ファイルシステムやネットワーク互換性が向上しましたが、物理的なUSBデバイスは直接リナックス環境からアクセスできません。

なぜUSBデバイスの直接認識が難しいのか

これはWSL2が仮想マシン上で動作しているためです。USBデバイスはWindowsホストPCに直接接続されており、仮想マシンであるWSL2からは見えません。この問題を解決するために、USBリダイレクトと呼ばれる転送の仕組みが必要になります。

usbipd-winの役割

usbipd-winは、Windows上で動作するUSBリダイレクトのオープンソースプロジェクトです。このツールを導入することで、Windowsに接続されたUSBデバイスをWSL2の仮想マシンへ転送し、リナックス環境から直接利用できるようになります。具体的には、Windows上のUSBデバイスをネットワーク経由でWSL2に「アタッチ」すなわち接続し、リナックス側ではあたかも直接接続されているかのように扱います。

操作の前提条件

本記事の手順を進めるには、事前に以下の準備が必要です。

・Windows 11またはWindows 10にWSL2がインストールされ、正常に動作していること。

・使用したいリナックスディストリビューションがWSL2として設定されていること。

・WindowsのPowerShellまたはコマンドプロンプトを管理者として実行できる権限があること。

お探しの解決策が見つからない場合は、こちらの「Windowsトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

WSL2リナックス環境にUSB機器を接続する具体的な手順

  1. WSL2バージョンの確認
    WSLがWSL2モードで動作しているかを確認します。PowerShellを管理者として実行し、次のコマンドを入力してください。
    wsl --list --verbose
    結果のVERSION列が「2」と表示されていれば問題ありません。「1」の場合は、該当するディストリビューションをWSL2に変換する必要があります。変換コマンドはwsl --set-version <ディストリビューション名> 2です。
  2. usbipd-winのインストール
    USBデバイスリダイレクト機能を提供する「usbipd-win」をインストールします。PowerShellを管理者として実行し、次のコマンドを実行してください。
    winget install --id Microsoft.Usbipd
    wingetが利用できない場合やエラーが発生した場合は、GitHubのusbipd-winリポジトリから最新のインストーラー(.msiファイル)をダウンロードして手動でインストールできます。
  3. 接続したいUSBデバイスの確認とBUSIDの取得
    WSL2に接続したいUSBデバイスをPCに物理的に接続します。次にPowerShellを管理者として実行し、次のコマンドを入力してください。
    usbipd wsl list
    これにより、現在Windowsに接続されているUSBデバイスの一覧が表示されます。この一覧から目的のUSBデバイスを見つけ、対応するBUSID(バスID)をメモしておきましょう。BUSIDは「1-1」「1-2」のような形式です。
  4. USBデバイスのリナックス環境へのアタッチ
    メモしたBUSIDを使用して、USBデバイスをWSL2リナックス環境へ接続します。PowerShellを管理者として実行し、次のコマンドを入力してください。
    usbipd wsl attach --busid <BUSID>
    <BUSID>の部分は、前のステップで確認した実際のバスIDに置き換えてください。例えば、バスIDが1-2であれば、usbipd wsl attach --busid 1-2と入力します。成功すると、Windows側でUSBデバイスが一時的に無効化され、WSL2リナックス環境に転送されます。
  5. リナックス環境でのデバイス確認
    WSL2リナックス環境を起動し、USBデバイスが正しく認識されているかを確認します。リナックスのターミナルで、次のコマンドを入力してください。
    lsusb
    または
    dmesg | grep usb
    アタッチしたUSBデバイスの名前や情報が表示されれば、正常に接続されています。これでリナックス環境からUSBデバイスを利用できるようになります。
  6. USBデバイスのデタッチ
    USBデバイスの利用が終わったら、WSL2リナックス環境からデバイスをデタッチつまり切断することを忘れないでください。PowerShellを管理者として実行し、次のコマンドを入力してください。
    usbipd wsl detach --busid <BUSID>
    これにより、USBデバイスはWindowsホストPCに戻り、再びWindows側で利用可能になります。

WSL2でのUSBデバイス接続に関するよくある問題と対処法

WSL2が有効化されていない、またはWSL1の場合

WSL2のUSBリダイレクト機能はWSL2専用です。WSL1では利用できません。

  1. 原因: WSLのバージョンがWSL1であるか、WSL自体がインストールされていないことが考えられます。
  2. 対処法: PowerShellを管理者として実行し、wsl --set-default-version 2でデフォルトバージョンをWSL2に設定します。その後、既存のディストリビューションをwsl --set-version <ディストリビューション名> 2でWSL2に変換してください。WSLが未インストールの場合、wsl --installを実行して導入します。

usbipd-winのインストールが失敗する場合

wingetコマンドでのインストールに失敗することがあります。

  1. 原因: wingetが最新でない、またはPowerShellの実行ポリシーに制限がある可能性があります。
  2. 対処法: 最新のwingetがインストールされているか確認し、必要であればWindows Storeから更新します。PowerShellの実行ポリシーを一時的に変更するには、Set-ExecutionPolicy RemoteSignedコマンドを管理者権限で実行します。または、GitHubから最新のusbipd-winインストーラーをダウンロードして手動でインストールしてください。

USBデバイスがアタッチできない場合

usbipd wsl attachコマンドを実行しても、エラーが発生して接続できないことがあります。

  1. 原因: BUSIDの入力間違い、デバイスドライバの問題、または特定のデバイスがWSL2でサポートされていないことが考えられます。
  2. 対処法: usbipd wsl listコマンドを再度実行し、正しいBUSIDを入力しているか確認します。USBデバイスのWindows側のドライバが正しくインストールされているかデバイスマネージャーで確認してください。一部の複雑なUSBデバイス(例: 多機能プリンターの複合機部分)は、完全なリダイレクトが難しい場合があります。

USBデバイスをデタッチし忘れた場合

作業完了後にUSBデバイスをデタッチせず、そのままPCをシャットダウンしてしまうことがあります。

  1. 原因: デタッチ忘れにより、USBデバイスが仮想マシンにロックされた状態が継続します。
  2. 対処法: デバイスがWindowsから認識されなくなったり、WSL2が起動しなくなったりする場合があります。PCを再起動するか、WSL2を再起動し、再度usbipd wsl detachコマンドを試してみてください。常に作業終了時にはデタッチ操作を行う習慣をつけましょう。

ADVERTISEMENT

WSL1とWSL2におけるUSBデバイス接続の比較

項目 WSL1 WSL2
仮想化モデル Windowsカーネル変換層 軽量仮想マシン(VM)
USBデバイスの直接アクセス 不可(ファイルシステム上のマウントは可能) 可能(usbipd-winによるリダイレクト経由)
リナックスカーネルの互換性 限定的 ほぼ完全
用途例 シンプルなシェルスクリプト、簡単な開発 Docker、開発ボード、複雑なアプリケーション

この記事では、Windows 11およびWindows 10環境のWSL2リナックス環境で、外部USB機器を直接認識させて使用する手順を解説しました。usbipd-winを導入し、BUSIDを用いてUSBデバイスをアタッチとデタッチすることで、様々なUSBデバイスをリナックス側で利用できます。この操作により、開発ボードの書き込みや特定の計測機器の操作など、業務で必要となる幅広いタスクに対応できるようになります。今後は、永続的なアタッチ設定の検討や、複数のUSBデバイスを使った応用的な作業にも挑戦してみてください。

💻
Windowsトラブル完全解決データベース 起動不能、更新の不具合、動作が重い、設定の消失など、Windows 10/11のあらゆるトラブル解決手順を網羅しています。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。