まだびみょ~に諦めてません。びみょ~だけど。
さて、世界中の人が気づいているかもしれませんが、WSL2 から Windows ホストの USB デバイスへのアクセスには制限があります。というか、一部を除いてできません。USB Audio やキーボードやマウスなどの USB HID デバイスは使えますが、それ以外の USB UART や 今回使おうとしているデバッガ/プログラマなどは使えません。Ubuntu から lsusb しても表示されません。
nRF52840 DK には同じ Nordic のチップ nRF5340 を使用した J-Link デバッガが載っていますので、ドライバをインストールする必要があります。…この時点で、WSL2 の上で全部やろうという計画は崩壊している気もしますが。
幸いというか、WSL の中の人がブログでやり方を示してくれています。Connecting USB devices to WSL。この記事は2021年11月のものなので、バージョンや機能など変わっているかもしれません。当時の usbipd-win のバージョンは 1.1.1 で、現在は 5.0.0 です。
大まかな流れは以下のような感じです。
- Windows 側に usbipd-win をインストールします。
- WSL の Linux 上にユーザスペースの USB/IP ツールと USB ハードウェア ID のデータベースをインストールします。
sudo apt install linux-tools-5.4.0-77-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
- コマンドプロンプトを管理者モードで開き、usbipd list を実行します。上記のページでは usbipd wsl list となっていますが、wsl は不要(というか削除された?)ようです。# usbipd list
Connected:
BUSID VID:PID DEVICE STATE
1-10 1b1c:0c21 USB 入力デバイス Not shared
1-13 26ce:01a2 USB 入力デバイス Not shared
1-14 8087:0033 インテル(R) ワイヤレス Bluetooth(R) Not shared
6-2 001f:0b21 USB Audio, USB 入力デバイス Not shared
8-1 0853:0104 USB 入力デバイス Not shared
8-2 046d:c548 Logitech USB Input Device, USB 入力デバイス Not shared
8-3 1a86:e010 USB 入力デバイス Not shared
9-4 08bb:27c4 USB AUDIO DAC, USB 入力デバイス Not shared
Persisted:
GUID DEVICE - usbipd で busid を指定して USB デバイスを WSL にアタッチします。
usbipd detach --busid <busid>
- 作業が終わったら、同様にデタッチします。
usbipd wsl detach --busid <busid>
ところで usbipd-win には、bind/unbind というコマンドや、server というコマンドがあるようです。bind/unbind は持続的な接続を行う場合に使用するようです。また、usbip は、bind したデバイスに USB/IP を使用してネットワーク越しのアクセスもできるようです。
sudo usbip attach --remote=<HOST> --busid=<BUSID>
上記の3で J-Link が表示されていないのは、まだドライバをインストールしてないから、だと思います。ドライバのインストールはどうしようか迷い中。というのもドライバをインストールしたくないから、WSL2でサンドボックス作ってそこでやりたい、というのがそもそもなので。でも結局インストールしちゃうんだろうなぁ…。
Windows側に J-Link ドライバをインストールしたら、そもそもWSL環境でやる意味も少なくなってくるので、この記事も単なる実験記録になりそうです。
それはさておき。
なぜアクティベートできないのかという件ですが、もう少し突っ込んでみます。あまり突っ込んで回避方法とかやっちゃうとメーカーさんに目をつけられるのも怖いので程々に。
Segger のサイトに、ライセンスタイプに関する記述がありました。
- J-Link-locked license
アクティベーションは J-Link に保管され、持ち運びできるUSBドングルのように使える。 - PC-locked license
アクティベーションは PC に保管され、固定される。 - Multi-user license
マルチユーザライセンスはロックされる、どのコンピュータでもアクティベートできる。
MACアドレスで怒られるということは、今回のライセンスは PC-locked タイプだと思うのですが、試してみるには J-Link ドライバをインストールして、どうなるか見てみる必要があります。うーん、にわたま。でも、すでに usbipd-win はインストールしちゃいましたから、やってしまいましょう。
と、その前に、昨日 STM32 の評価ボード Nucleo-L476RG を買ってきましたので、それを繋いでみます。
ドライバが入っていないため⚠がついてますが、表示されます。なぜ J-Link はでないのでしょうか。もうこうなったら仕方ないのでドライバをインストールしてみます。ダウンロードページから使用条件許諾してダウンロードします。
ちなみに Segger のダウンロードページには、ST-Link を J-Link にするファームウェアがあります。ここを見ると、今回購入した Nucleo-L476RG は対象になっているようですね。SEGGER RTT Viewer とか結構ありがたいので、書き換えちゃおうかしら。
さて J-Link Software and Documentation Pack をインストールしてみます。
Install legacy USB Driver for J-Link という項目がありますが、これは Segger のナレッジベースによれば、すでにサポートされなくなった古いプローブを使用する場合にはインストールするというもので、最近のプローブは WinUSB ドライバを使用するのでインストールする必要はないようです。
このなかの BULK interface が Nordic のボードを繋いだときに出る表示です。なぜかCOMポートがたくさんありますが。
ここからは SES へ、となっていくわけですが、STmicro も Nordic も VSCode を利用した開発環境の構築ができるようです。
実はここだけの話、SES も Keil μVision も IDE が使いづらいんですよね。どちらかというと、重たいけれど Eclipse ベースの STM32CubeIDE のほうがこなれてるというか。特に μVision5 はシンボルの一括リネームができないとか、ソースのインデントを好みにするとか、いろいろと不満があります。それなら VSCode でやっちゃうのもありかな、という感じ。
MACアドレスの件ですが、WSL2ネットワークを新機能でブリッジモードに変更する(IPv6も利用可)[ただし暫定]という記事を見つけました。Windows 11 Pro 以上であることが必要なようですが、これでブリッジすればいいのかもしれません。が、そろそろ VSCode でいいかな、と思い始めてしまったので、とりあえず一旦はここまでとします。
0 件のコメント:
コメントを投稿