【小ネタ】WSL利用時のRaspberry Pi Picoへの書き込みをコマンドラインから行う


Raspberry Pi PicoをWSL(Windows Subsystem for Linux)で使う で紹介した手順で、WSL上のビルドでできた*.uf2ファイルをコマンドラインからRaspberry Pi Picoに書き込めるようにします。

pico-installスクリプト

BOOTSELボタンを押しながら起動すると現れるマスストレージデバイスはWSLからは見えないためWindowsのエクスプローラからドラッグ&ドロップする必要があったのですが、WSLからPowerShell1を呼び出して代わりにコピーしてもらうことで、WSLでもコマンドラインからの書き込みができるようにしました。

以下のシェルスクリプトをpico-installという名前で保存して実行属性を付けます。

pico-install
#!/bin/sh
if [ $# -ne 1 ]; then
        echo "Usage: $0 <file>"
        exit 1
fi

DRIVE=`powershell.exe get-volume|grep RPI-RP2|awk '{print $1}'`

if [ "${DRIVE}" = "" ]; then
        echo "$0: Raspberry Pi Pico is not mounted"
        exit 1
fi

powershell.exe copy $1 ${DRIVE}:

WSLでアプリケーションをビルド後、pico-install blink.uf2 のようにuf2ファイルを指定して実行すると、ボリューム名が RPI-RP2 であるドライブ(BOOTSELを押しながらRaspberry Pi Picoを起動すると現れるドライブ) にそのファイルをコピーしてくれます。該当ドライブがなければエラーで終了します。


  1. コマンドプロンプトからでも見えるのですが、こちらは逆にWSL側のファイルシステム(\\wsl$\)を見ることができないため、使えるのはPowerShell一択です。