WSL上でPlatformIOを動かそうと思ったときに、沼ったので備忘録としてまとめます
WSL上にplatformIO CLIをインストール
まずは、WSL上にplatformIOのCLIをインストールする
インストールコマンド
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
python3 get-platformio.py
動作確認
# 以下でバージョンが表示されれば成功
pio --version
PlatformIOプロジェクトを作成
ボード識別子の確認
マイコンボードごとの識別子を確認する
↓ ESPの場合
pio boards esp
-------------出力-------------------
Platform: atmelavr
================================================================================
ID MCU Frequency Flash RAM Name
------- ---------- ----------- ------- ------ ---------------
esplora ATMEGA32U4 16MHz 28KB 2.50KB Arduino Esplora
Platform: espressif32
================================================================================
ID MCU Frequency Flash RAM Name
IDを確認する
プロジェクトの作成
- プロジェクト用ディレクトリを作成して移動
- 確認したボード識別子を利用してプロジェクトを作成
pio project init --board <ID>
以降はVSCodeのPlatformIO IDE上で操作する
備考
ネット上の記事ではPlatformIO IDE上からプロジェクトしているものがあったが、自分はうまくできなかった(権限関係?)ので上記の方法を利用
WSL上からUSBを認識
そのままではホストOSで認識しているUSBをWSL上で認識することが出来ないため、usbipdというツールを使用する
Microsoft公式のドキュメントも存在する
ここからのコマンド操作はホストOS(管理者権限で起動したpowershell)で操作
-
https://github.com/dorssel/usbipd-win/releases
で最新のusbipd-winをダウンロード - インストールする
- PCに接続されているデバイスを確認
usbipd list
出力
- デバイスを共有してWSLに接続できるようにする
下記コマンドでSTATEがSharedになる
usbipd bind --busid <busid>
- デバイスをWSLにアタッチする
usbipd attach --wsl --busid <busid>
実行後はStatusがAttachedになる
終了
上記を行うことで、WSL上でPlatformIOのプロジェクト作成とUSBデバイスの認識を行うことが出来る。
ここからは基本的にWSLに接続しているVSCode上のPlatformIO IDEで操作することになる。
この記事を参考にしたことによる障害などについては一切責任はおいませんので、適宜自分で調べながらおこなっていただければ幸いです。

