LoginSignup
5
2
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

ArduinoIDEをWSL上で動かしてESP32のコンパイルを高速化

Last updated at Posted at 2024-01-28

1.はじめに

日頃Windows版Arduino IDEを使っているのですが、ESP32のコンパイルの遅さにうんざりしていたところ、Windows上でLinux版Arduino IDEを使えば超高速になるという記事を見て私もやってみたところ、本当に高速でした。

YouTubeで手順を解説されている方の動画やその他色々なサイトを参考にインストールしたのですが、現時点(2024年1月)で変わっているところが多くあり、動くようになるまで色々つまづいたので手順を記録しておきます。

CUIには慣れていないので極力GUIを使っています。

2. 前準備(Windowsの機能の有効化)

  1. Windowsの「スタートボタン」→「Windowsシステムツール」→「コントロールパネル」→「プログラム」→「Windowsの機能の有効化または無効化」と進む。
  2. 「Windowsの機能の有効化または無効化」(以下)が表示される。「Linux用Windowsサブシステム(WSL)」と「仮想マシン プラットフォーム」にチェックを入れ「OK」をクリックする。
    article01-01.PNG
  3. 画面の指示に従って再起動する。

3. WSL(Windows Subsystem for Linux)のインストール

  1. WindowsスタートメニューからMicrosoft Storeを起動
    article01-02.PNG
  2. 検索窓にwslと入力して検索し、入手をクリックしてインストールする。
    article01-03.PNG

4. Ubuntuのインストール

  1. Microsoft Storeの検索窓にubuntuと入力して検索し、入手をクリックしてインストールする
    article01-04.png
  2. windowsスタートメニューからUbuntuを起動
    article01-05.PNG
  3. 初回はユーザー名、パスワードを設定します
    任意のユーザー名を入力してENTER
    ※ユーザー名には、小文字(a-z)、数字(0-9)、ダッシュ(-)、アンダースコア(_)が使用でき、予約名は使用できず、最大長32文字に制限されます。
    article01-06.PNG
  4. 続いてパスワードを入力
    ※パスワードには、小文字(a-z)、数字(0-9)と記号が使用できます
    ※パスワードは入力しても画面には何も表示されません
    確認の為もう一度パスワードを入力
    article01-07.PNG
  5. インストールが完了
    article01-08.PNG
  6. パッケージ情報を更新しておきます
    Ubuntu
    sudo apt update
    sudo apt upgrade
    

5. ファイルマネージャーのインストール

Ubuntu
sudo apt install nautilus -y

インストールが完了したらUbuntuのターミナルから

Ubuntu
nautilus

又はWindowsスタートメニューからFiles(Ubuntu)をクリック
article01-09.png
ファイルマネージャーが開きます
article01-10.png
※私のPCの場合初めてファイルマネージャーを開いた時に画面がひどく乱れて表示されました。
PCを再起動してもう一度開くと次からは上のように正常に表示されました。

6. Arduino IDEのインストール

  1. Windowsのブラウザで https://www.arduino.cc/en/software を開く

  2. Linux appImage 64bitをクリック
    article01-11.png

  3. JUST DOWNLOADをクリック(寄付するときはCONTRIBUTE & DOWNLOADをクリック)
    article01-12.png

  4. Newsletter不要の場合はJUST DOWNLOADをクリック
    (Newsletter購読の場合はメールアドレスを入力してSUBSCRIBE & DOWNLOADをクリック)
    article01-13.png

  5. ダウンロード完了
    article01-14.png

  6. WindowsのエクスプローラーからペンギンアイコンのLinuxを開き、Ubuntu→home→自分が設定したユーザー名フォルダの中に先程ダウンロードした arduino-ide_2.2.1_Linux_64bit.AppImage をコピーします。
    コピーすると arduino-ide_2.2.1_Linux_64bit.AppImage・Zone.Identifier というファイルが自動的に作られるのですが、不要なので削除します。
    article01-15.png

  7. Ubuntuのファイルマネージャーを開き、arduino-ide_2.2.1_Linux_64bit.AppImageを右クリックしPropertiesをクリック
    article01-16.PNG

  8. Permissionsタブをクリックし
    OwnerのAccessを「Read and Write」
    自分のGroupを「Read and Write」
    Allow executing file as programにチェックを入れてPropertiesを閉じます。
    article01-17.png

  9. Ubuntuのターミナルで以下を順にインストール

    Ubuntu
    sudo add-apt-repository universe
    sudo apt install libfuse2
    sudo apt install libgbm-dev
    sudo apt install libasound2
    sudo apt install nodejs
    sudo apt install npm
    

    ここで私は色々つまづきました。(つまづきポイントその1)
    https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing/ のページを見ると

    sudo add-apt-repository universe
    sudo apt install libfuse2

    これだけで良いようでしたが、それだけだとまず

    /tmp/.mount_arduinlyVvC1/arduino-ide: error while loading shared libraries: libgbm.so.1: cannot open shared object file: No such file or directory

    とエラーが出て、次にlibgbm-devをインストールすると

    file: Error opening file /home/user001/.gtk-bookmarks: No such file or directory
    /tmp/.mount_arduinZTK2CY/arduino-ide: error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory

    とエラーが出て、次にlibasound2をインストールすると

    Checking for frontend application configuration customizations. Module path: /tmp/.mount_arduinKBQZr7/resources/app/lib/backend/electron-main.js, destination 'package.json': /tmp/.mount_arduinKBQZr7/resources/app/package.json

    とエラーが出て、次にnodejsとnpmをインストールしてようやく起動できるようになりました。

  10. Ubuntuのファイルマネージャー画面で arduino-ide_2.2.1_Linux_64bit.AppImage をダブルクリック
    article01-18.png

    またはUbuntuのターミナルで

    Ubuntu
    ./arduino-ide_2.2.1_Linux_64bit.AppImage
    

    Arduino IDEが起動します
    article01-19.PNG

  11. 一旦Arduino IDEを閉じます

7. USBのインストール

  1. USBIPD-WINをインストール
    下記よりMSI形式のインストーラーをダウンロードしてインストール
    https://github.com/dorssel/usbipd-win/releases
    インストールが完了したら、一度Windowsを再起動。

  2. UbuntuにUSBIP ツールとハードウェア データベースをインストール

    Ubuntu
    sudo apt install linux-tools-generic hwdata
    sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
    
  3. arduinoをUSB接続
    Windowsスタートアイコンを右クリック→デバイスマネージャーをクリック
    ポートにデバイスが表れているか確認
    article01-20.PNG

  4. Windows PowerShellを管理者として実行
    arduinoボードの接続先BUSIDを確認し、その接続先をwindows以外のクライアントとシェアできるようにします。
    ("1-3" 部分は自分のBUSIDに置き換えてください)

    PowerShell
    usbipd list
    usbipd bind --busid 1-3
    

    もう一度 usbipd list で確認すると状態が"Not shared"から"Shared"に変わっていることが分かります。
    article01-21.png
    5. UbuntuにUSBデバイスを接続
    ※ Ubuntuのターミナルが開いた状態で行ってください
    ("1-3" 部分は自分のBUSIDに置き換えてください)

PowerShell
usbipd attach --busid 1-3 --wsl --auto-attach

上手くいった場合はWSL Attachedと表示されます。
article01-22.PNG
このようなメッセージが出る場合はセキュリティソフトのFirewall設定を見直す必要があります。(つまづきポイントその2)

usbipd: warning: A third-party firewall may be blocking the connection; ensure TCP port 3240 is allowed.

article01-23.PNG
6. Ubuntu側で接続を確認

Ubuntu
lsusb

article01-24.PNG
7. Arduino IDEを起動しボードを選択します
article01-25.PNG
8. サンプルプログラムBlinkを開く
article01-26.PNG
9. ボードにアップロードする
article01-27.PNG
10. 無事にアップロードできれば、まずはArduinoボードが使える状態です
この時点で速さ実感できますよ!

8. 終了の手順

  1. Arduino IDEウィンドウを閉じる
  2. ファイルマネージャーから起動していた場合はファイルマネージャーウィンドウを閉じる
  3. PowerShellウィンドウでCtrl+cでusbipdを終了する
  4. Ubuntuウィンドウをexit(またはlogout)で終了
  5. PowerShellウィンドウをexitで終了

9. インストール後の起動手順

  1. AruduinoボードをUSB接続
  2. Ubuntuを起動
  3. PowerShellを起動しUbuntuにUSBデバイスを接続
    ("1-3" 部分は自分のBUSIDに置き換えてください)
    usbipd attach --busid 1-3 --wsl --auto-attach
  4. Ubuntuのファイルマネージャーを起動
  5. Arduino IDEを起動

10. ESP32のインストール

  1. ESPボードをUSB接続

  2. PowerShellを管理者として実行

  3. ESP32ボードの接続先BUSIDを確認し、その接続先をbind
    ("1-3" 部分は自分のBUSIDに置き換えてください)
    ※先のArduinoボードと同じUSBポートを使用する場合でももう一度bindしてください

    PowerShell
    usbipd list
    usbipd bind --busid 1-3
    
  4. Ubuntuを起動

  5. UbuntuにESP32を接続
    ("1-3" 部分は自分のBUSIDに置き換えてください)

    PowerShell
    usbipd attach --busid 1-3 --wsl --auto-attach
    
  6. Ubuntu側で接続を確認

    Ubuntu
    lsusb
    

    article01-28.PNG

  7. Arduino IDEを起動

  8. BOARDS MANAGERアイコンをクリックし、検索窓にesp32と入力し、esp32 by Espressif Systemsをインストール
    article01-29.PNG

  9. ESP32ボードとポートの選択
    ボードの検索窓から"Select other board and port"をクリックし、詳細設定画面に移り
    article01-30.PNG
    検索窓にESP32と入力し、ボードの種類を選択
    ポートも選択し、OKをクリック
    article01-31.PNG

  10. これでOKと思いきや、試しにアップロードしてみると

    ModuleNotFoundError: No module named 'serial'

    というエラーが出ました。ESP32は何やらpythonを利用しているらしく、"pyserial"が無いと言っているようです。(つまづきポイントその3)
    article01-32.PNG
    ここから先はエラーが出なければ関係ないですが...

  11. ArduinoIDEを一旦閉じて、Ubuntuターミナルで"pyserial"をインストールするのですが、その前にpythonパッケージ管理ツール"pip"をインストール

Ubuntu
sudo apt install python3-pip

次に"pyserial"をインストール

Ubuntu
python3 -m pip install pyserial

article01-33.PNG
インストールはできたのですがパスが通ってないと言われます

WARNING: The scripts pyserial-miniterm and pyserial-ports are installed in '/home/user001/.local/bin' which is not on PATH.

パスを通します

Ubuntu
nano ~/.bashrc

.bashrcの最終行に下記を追記
(user001になっているところは自分のユーザー名に変更してください)
export PATH=$PATH:/home/user001/.local/bin
article01-35.png
Ctrl+X を押し、その後 Y を押す
File Name to Write: /home/user001/.bashrc
と聞いてくるのでenterで終了
以下のコマンドを実行して、変更を反映

Ubuntu
source ~/.bashrc

もう一度ArduinoIDEを起動してESP32に何かプログラムをアップロード
article01-34.PNG
Windows版ArduinoIDEと比べ格段の速さで無事アップロードできました。

11. 最後に

Linuxに疎くおかしなことを書いているかもしれませんので、ご指摘いただけると幸いです。
まだ日本語が扱えないので、次は日本語が使える状態にしたいと思っています。
長文にお付き合いいただきありがとうございました。

参考にしたサイト

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2