ビジネスで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またはコマンドプロンプトを管理者として実行できる権限があること。
WSL2リナックス環境にUSB機器を接続する具体的な手順
- WSL2バージョンの確認
WSLがWSL2モードで動作しているかを確認します。PowerShellを管理者として実行し、次のコマンドを入力してください。wsl --list --verbose
結果のVERSION列が「2」と表示されていれば問題ありません。「1」の場合は、該当するディストリビューションをWSL2に変換する必要があります。変換コマンドはwsl --set-version <ディストリビューション名> 2です。 - usbipd-winのインストール
USBデバイスリダイレクト機能を提供する「usbipd-win」をインストールします。PowerShellを管理者として実行し、次のコマンドを実行してください。winget install --id Microsoft.Usbipd
wingetが利用できない場合やエラーが発生した場合は、GitHubのusbipd-winリポジトリから最新のインストーラー(.msiファイル)をダウンロードして手動でインストールできます。 - 接続したいUSBデバイスの確認とBUSIDの取得
WSL2に接続したいUSBデバイスをPCに物理的に接続します。次にPowerShellを管理者として実行し、次のコマンドを入力してください。usbipd wsl list
これにより、現在Windowsに接続されているUSBデバイスの一覧が表示されます。この一覧から目的のUSBデバイスを見つけ、対応するBUSID(バスID)をメモしておきましょう。BUSIDは「1-1」「1-2」のような形式です。 - USBデバイスのリナックス環境へのアタッチ
メモしたBUSIDを使用して、USBデバイスをWSL2リナックス環境へ接続します。PowerShellを管理者として実行し、次のコマンドを入力してください。usbipd wsl attach --busid <BUSID><BUSID>の部分は、前のステップで確認した実際のバスIDに置き換えてください。例えば、バスIDが1-2であれば、usbipd wsl attach --busid 1-2と入力します。成功すると、Windows側でUSBデバイスが一時的に無効化され、WSL2リナックス環境に転送されます。 - リナックス環境でのデバイス確認
WSL2リナックス環境を起動し、USBデバイスが正しく認識されているかを確認します。リナックスのターミナルで、次のコマンドを入力してください。lsusb
またはdmesg | grep usb
アタッチしたUSBデバイスの名前や情報が表示されれば、正常に接続されています。これでリナックス環境からUSBデバイスを利用できるようになります。 - USBデバイスのデタッチ
USBデバイスの利用が終わったら、WSL2リナックス環境からデバイスをデタッチつまり切断することを忘れないでください。PowerShellを管理者として実行し、次のコマンドを入力してください。usbipd wsl detach --busid <BUSID>
これにより、USBデバイスはWindowsホストPCに戻り、再びWindows側で利用可能になります。
WSL2でのUSBデバイス接続に関するよくある問題と対処法
WSL2が有効化されていない、またはWSL1の場合
WSL2のUSBリダイレクト機能はWSL2専用です。WSL1では利用できません。
- 原因: WSLのバージョンがWSL1であるか、WSL自体がインストールされていないことが考えられます。
- 対処法: PowerShellを管理者として実行し、
wsl --set-default-version 2でデフォルトバージョンをWSL2に設定します。その後、既存のディストリビューションをwsl --set-version <ディストリビューション名> 2でWSL2に変換してください。WSLが未インストールの場合、wsl --installを実行して導入します。
usbipd-winのインストールが失敗する場合
wingetコマンドでのインストールに失敗することがあります。
- 原因: wingetが最新でない、またはPowerShellの実行ポリシーに制限がある可能性があります。
- 対処法: 最新のwingetがインストールされているか確認し、必要であればWindows Storeから更新します。PowerShellの実行ポリシーを一時的に変更するには、
Set-ExecutionPolicy RemoteSignedコマンドを管理者権限で実行します。または、GitHubから最新のusbipd-winインストーラーをダウンロードして手動でインストールしてください。
USBデバイスがアタッチできない場合
usbipd wsl attachコマンドを実行しても、エラーが発生して接続できないことがあります。
- 原因: BUSIDの入力間違い、デバイスドライバの問題、または特定のデバイスがWSL2でサポートされていないことが考えられます。
- 対処法:
usbipd wsl listコマンドを再度実行し、正しいBUSIDを入力しているか確認します。USBデバイスのWindows側のドライバが正しくインストールされているかデバイスマネージャーで確認してください。一部の複雑なUSBデバイス(例: 多機能プリンターの複合機部分)は、完全なリダイレクトが難しい場合があります。
USBデバイスをデタッチし忘れた場合
作業完了後にUSBデバイスをデタッチせず、そのままPCをシャットダウンしてしまうことがあります。
- 原因: デタッチ忘れにより、USBデバイスが仮想マシンにロックされた状態が継続します。
- 対処法: デバイスが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デバイスを使った応用的な作業にも挑戦してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Windows・PCの人気記事ランキング
- 【Edge】起動時や新しいタブを「Google」にする設定!ニュースを消してシンプルにする方法
- 【直し方】F7でカタカナにならない!ファンクションキーが効かず音量などが変わる時のFnロック解除法
- 【Windows】サブモニターが映らない!HDMIを挿しても「信号なし」になる時の認識・設定手順
- 【Windows】画面がチカチカ・点滅する!グラフィックドライバの更新と設定の見直し
- 【Windows】パスワードなしで起動!PIN入力を省略して自動ログイン(サインイン)させる設定手順
- 【Windows】デスクトップのアイコンが「白い紙」になった!アイコンキャッシュを削除して元に戻すコマンド
- 【PC周辺】2台のモニターで壁紙を「別々」にする方法!Windows11での配置と調整
- 【Windows】デスクトップアイコンの「緑のチェック」は何?OneDriveの同期マークを非表示にする方法
- Windows 11を極限まで軽量化する「不要な標準サービス」停止リスト|PCの動作を爆速化する設定手順とリスク管理の全貌
- 【Windows】Cドライブが赤い!空き容量不足を解消して数GBを一瞬で空ける4つの最強クリーンアップ術
