
目次
はじめに
WSL(Windows Subsystem for Linux)の使いやすさが向上しており、Ubuntu環境を構築してESP-IDF(Espressif IoT Development Framework)をインストールし、ESP32の開発に利用できます。この記事では、WindowsのVS Codeから拡張機能を使ってWSLに接続し、ESP-IDFをインストールしてESP32-C6の開発を行う方法を解説します。
WSLのアップデート
現状のWSLのバージョンを確認します。
wsl --version
WSL バージョン: 2.0.14.0
カーネル バージョン: 5.15.133.1-1
WSLg バージョン: 1.0.59
MSRDC バージョン: 1.2.4677
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.26100.2894
WSL 2.4.8以降では、TARベースのシンプルなWSLフォーマットが利用可能になるなどの機能向上がされています。最新版にアップデートするには、以下のコマンドを実行します。
wsl --update
WSL バージョン: 2.4.10.0
カーネル バージョン: 5.15.167.4-1
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5716
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26100.2894
WSLへのディストリビューションインストール
新フォーマット(TAR)でのインストール
WSLをアップデートしたため、tar形式のディストリビューションをインストール可能になりました。まだ、すべてのディストリビューションがtar形式に対応しているわけではありません。
今回は利用しませんが、tar形式に対応したUbuntu 24.04のディストリビューションを、UbuntuTestというディストリビューション名でインストールしてみます。
イメージの保存先は C:\project\wsl\ubuntutest とします。
wsl --install Ubuntu-24.04 --location "C:\project\wsl\ubuntutest" --name UbuntuTest
tar形式の場合には、–name オプションを利用することで、同じディストリビューションでも異なる環境としてインストールできます。旧形式の場合は –name オプションは使えません。
インストール後、以下のコマンドで確認できます。
wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
rancher-desktop Stopped 2
rancher-desktop-data Stopped 2
docker-desktop Stopped 2
Ubuntu-24.04 Stopped 2
docker-desktop-data Stopped 2
UbuntuTest Stopped 2
テスト環境を削除する場合は、次のコマンドを実行します。
wsl --unregister UbuntuTest
インストール可能なディストリビューションは次のコマンドで確認できます。
wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。
NAME FRIENDLY NAME
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
Ubuntu Ubuntu
Ubuntu-24.04 Ubuntu 24.04 LTS
kali-linux Kali Linux Rolling
openSUSE-Tumbleweed openSUSE Tumbleweed
openSUSE-Leap-15.6 openSUSE Leap 15.6
Debian Debian GNU/Linux
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
旧フォーマットでのインストール
今回利用するUbuntu-22.04をインストールします。こちらは旧形式フォーマットのみのため、–name オプションが使えません。
よって、次の手順でインストールします。
- 通常通りUbuntu-22.04をインストール
- インストールしたUbuntu-22.04をtar形式でエクスポート
- エクスポートしたイメージを「esp-idf」というディストリビューション名でインポート
Ubuntu-22.04をインストール
wsl --install Ubuntu-22.04
wsl: レガシの配布登録を使用しています。代わりに tar ベースの配布を使用することを検討してください。
インストール中: Ubuntu 22.04 LTS
Ubuntu 22.04 LTS がインストールされました。
Ubuntu 22.04 LTS を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: wohl
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Mon Feb 10 15:26:27 JST 2025
System load: 0.23 Processes: 66
Usage of /: 0.1% of 1006.85GB Users logged in: 0
Memory usage: 6% IPv4 address for eth0: 172.21.255.238
Swap usage: 0%
エクスポート
wsl --shutdown
wsl --export Ubuntu-22.04 "C:\project\wsl\image\Ubuntu-2204.tar"
esp-idfというディストリビューション名でインポート
wsl --import esp-idf "C:\project\wsl\espide" "C:\project\wsl\export\Ubuntu-2204.tar"
この操作を正しく終了しました。
wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
rancher-desktop Stopped 2
rancher-desktop-data Stopped 2
esp-idf Stopped 2
docker-desktop Stopped 2
Ubuntu-24.04 Stopped 2
docker-desktop-data Stopped 2
ディストリビューションの起動
指定したディストリビューションを、指定したユーザーがログインした状態で起動します。
wsl -d ディストリビューション名 -u ユーザー名
デフォルトユーザー設定
起動時にユーザー設定を省略するとrootで起動してしまいます。
毎回、ユーザーを指定するのが面倒なため、デフォルトのユーザーを設定します。
sudo nano /etc/wsl.conf
[user]
default=ユーザー名
一旦、WSLを終了します。
wsl --shutdown
ディストリビューションを起動します。
wsl -d ディストリビューション名
先ほど設定したユーザーでログインできているはずです。
WSLのディストリビューションに外部からアクセス可能にする
wslのデフォルトの設定では、外部からwslのディストリビューションにはアクセスできません。
ディストリビューションに割り振られるIPアドレスを確認してみます。
wsl hostname -I
172.21.255.238
以前はブリッジモードが使えていましたが、現在はブリッジネットワークモードは非推奨になったため、ミラーモードを利用します。
Windowsのカレントユーザーフォルダに.wslconfigファイルを作成し、次の内容を記述します。
[wsl2]
networkingMode=mirrored
ディストリビューションに割り振られるIPアドレスを確認します。
wsl hostname -I
169.254.83.107 192.168.1.29
ホストOS(Windows)と同じIPアドレスが割り振られており、外部からWindowsと同じIPでアクセスが可能になります。
ただし、ディストリビューションごとに設定を変えることはできず、すべてのディストリビューションで共通の設定になります。
WindowsのVS Codeに拡張機能をインストールする
WindowsのVS Codeを起動し、次の拡張機能をインストールします。

「Connect to WSL using Distro」でWSLの「esp-idf」に接続します。
その後、ターミナルを開き次のコマンドを実行します。
sudo apt update
sudo apt upgrade
依存関係をインストールします。
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
VS Codeの機能拡張「ESP-IDF」をインストールします。

ESP-IDFをインストールする
VS Codeのコマンドパレットに「ESP-IDF: Configure ESP-IDF Extension 」と入力します。
「Express」を選択し、下図のように設定し、します。(パスは変更してください)

source $HOME/esp/v5.4/esp-idf/export.sh
動作するか確認する。
idf.py --version
USBをWSLに接続する
usbipd-winをWindowsにインストールします。
Windowsに接続されているUSBデバイスの一覧を取得します。
usbipd list
Connected:
BUSID VID:PID DEVICE STATE
2-1 303a:1001 USB シリアル デバイス (COM3), USB JTAG/serial debug unit Not shared
2-3 04f3:0c55 ELAN WBF Fingerprint Sensor Not shared
2-6 5986:211c HD Webcam Not shared
2-10 8087:0026 インテル(R) ワイヤレス Bluetooth(R) Not shared
2-14 0411:0333 USB 接続 SCSI (UAS) マス ストレージ デバイス Not shared
4-4 05e3:0749 USB 大容量記憶装置 Not shared
5-2 046d:c52b Logitech USB Input Device, USB 入力デバイス Not shared
5-3 046d:c545 LIGHTSPEED Receiver, USB 入力デバイス Not shared
6-1 056e:701e ELECOM 2MP Webcam, ELECOM Face Authentication Cam Not shared
6-2 056e:701f Webcam Internal Mic Not shared
ここで、開発ターゲットのESPはBUSID 2-1 に接続されていることがわかります。
BUSID 2-1をWSLに接続します。
usbipd bind --busid 2-1
usbipd attach --wsl --busid 2-1
切断する場合には次のコマンドを実行します。
usbipd detach --busid 2-1
ESP-IDFでのビルド・フラッシュ・シリアルモニター
LED点滅のサンプルプログラムをビルドしてデバイスに書き込みます。
今回使用するデバイスは「esp32c6」です。
ビルド
cd ~/esp/v5.4/esp-idf/examples/get-started/blink
idf.py set-target esp32c6
idf.py menuconfig
idf.py build
フラッシュ
usbipdで接続したUSBがどのポートに割り当てられているか確認します。
dmesg | tail
[ 617.652120] vhci_hcd: vhci_device speed not set
[ 617.723767] usb 1-1: new full-speed USB device number 2 using vhci_hcd
[ 617.805638] vhci_hcd: vhci_device speed not set
[ 617.877535] usb 1-1: SetAddress Request (2) to port 0
[ 617.916227] usb 1-1: New USB device found, idVendor=303a, idProduct=1001, bcdDevice= 1.02
[ 617.916232] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 617.916235] usb 1-1: Product: USB JTAG/serial debug unit
[ 617.916238] usb 1-1: Manufacturer: Espressif
[ 617.916240] usb 1-1: SerialNumber: 9C:9E:6E:77:9E:DC
[ 617.918945] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
「ttyACM0」ポートに割り当てられていることが確認できます。
実際に書き込みます。
idf.py -p /dev/ttyACM0 flash
シリアルモニター
idf.py -p /dev/ttyACM0 monitor
シリアルモニターの終了:Ctrl + ]
まとめ
この記事では、WSLのUbuntu環境にESP-IDFをインストールし、WindowsのVS Code拡張機能を使ってESP32-C6の開発を行う方法を解説しました。この方法を利用することで、Windows環境でもESP32-C6の開発を進めることができます。
FAQ
-
WSLのバージョンを確認する方法は?
-
wsl --version
コマンドを使用して確認できます。
-
WSLを最新バージョンにアップデートするには?
-
wsl --update
コマンドを実行してください。
-
WSLのTAR形式のディストリビューションとは何ですか?
-
TAR形式は、WSL 2.4.8以降で対応した新しいフォーマットで、簡単なカスタマイズやスケーラブルな展開が可能です。
-
WSLのインストール可能なディストリビューションの一覧を確認するには?
-
wsl --list --online
コマンドで確認できます。
-
WSLのディストリビューションにデフォルトユーザーを設定するには?
-
/etc/wsl.conf
ファイルに[user] default=ユーザー名
を記述し、wsl --shutdown
後に再起動します。
-
USBデバイスをWSLに接続するには?
-
usbipd bind --busid <BUSID>
を実行し、その後usbipd attach --wsl --busid <BUSID>
を使用します。
-
USBデバイスをWSLにアタッチできません。
-
アタッチコマンドを実行する際、WSL側が起動している必要があります。
-
WindowsからUSBデバイスが接続できなくなりました。
-
USBデバイスがWSLにアタッチされている間は、Windows側からそのデバイスにアクセスできません。デタッチしてください。
-
ESP-IDFプロジェクトをビルドする方法は?
-
ターゲットデバイスを設定し、ビルドします。
idf.py set-target esp32c6
idf.py build
-
ESP-IDFからデバイスへのフラッシュ手順は?
-
USBポート情報を確認後、以下のコマンドでフラッシュします。
idf.py -p /dev/ttyACM0 flash
-
ESP-IDFにてシリアルモニターでログを見るには?
-
USBポート情報を確認後、次のコマンドを実行します。
idf.py -p /dev/ttyACM0 monitor
-
ESP-IDFにてシリアルモニターを終了する方法は?
-
次のキーを同時に押します。
Ctrl + ]
-
ESP-IDFにてidf.pyが実行できません。
-
次のコマンドで環境変数の設定を行ってから実行してください。
source $HOME/esp/v5.4/esp-idf/export.sh