ESP32に関するよくある質問

Linux と Mac で ESP32 に書き込む

// Linux + Mac · 書き込み FAQ

カテゴリ: ESP32 · Linux · macOS · 書き込み · 更新: 2026年8月

Linux や Mac での ESP32 書き込みは、実は Windows よりずっと簡単です。ほとんどの基板でドライバー探しの旅は不要で、必要なのは見た目が少し違うシリアルポート名だけ。コマンド、権限エラー、そして 1 晩を無駄にする macOS 固有の落とし穴を解説します。

Linux でドライバーは必要?

たいてい不要です。カーネルが CH340、CP2102、ネイティブの USB-Serial-JTAG ドライバーを同梱しています。Linux での esptool.py は、一般的な基板なら追加のドライバー手順なしで動きます。必要なのは権限の方です。dialout グループに入っていないと、esptool は「could not open port」と怒って死にます。sudo usermod -aG dialout $USER を実行して、ログアウト → ログインすれば完了です。

macOS でドライバーは必要?

クラシックな USB チップは必要です。CP2102 基板は Silicon Labs の VCP ドライバー、CH340 基板は WCH ドライバーが必要で、どちらも macOS がますます嫌がる kext インストールです。新しい ESP32-S3、C3、C6 基板は USB-Serial-JTAG を備えていて何も不要なので、Mac での esptool.py はそのまま動きます。モダンなハードウェアなら、ドライバーの話自体が消えます。

Linux で ESP32 に書き込むには?

挿す前と挿した後で ls /dev/tty* を実行してポートを特定してから書き込みます。esptool.py --port /dev/ttyUSB0 write_flash 0x0 firmware.bin。ネイティブ USB 基板ならポートは /dev/ttyACM0 です。あとのオフセット、ブートモード、ボーレートはどの OS も同じなので、書き込み一般の FAQ がそのまま当てはまります。

Mac で ESP32 に書き込むには?

サプライズはポート名だけです。CH340/CP2102 基板は /dev/cu.usbserial-XXXX、ネイティブ USB は /dev/cu.usbmodem です。あとは同じ esptool の 1 行です。esptool.py --port /dev/cu.usbserial-XXXX write_flash 0x0 firmware.bin。ポートが出てこないなら、答えは基板ではなく上のドライバーの節にあります。

Arduino IDE はどちらも同じ?

はい、同じです。ボードパッケージもポートの選択も同じ挙動なので、覚え直すことが 1 つ減ります。Arduino IDE FAQ でボードマネージャーのセットアップを解説していますが、こちらでも全く同じです。Linux での Arduino で OS 固有なのは dialout 権限だけ、macOS では kext だけです。どちらも一度きりの対処で済みます。

ポートが一覧に出ないときは?

基板を外した状態と挿した状態で ls /dev/tty*(Mac なら ls /dev/cu.*)を実行してください。増えたポートがあなたのポートです。何も現れないなら、まずケーブル(充電専用ケーブルが第 1 容疑者)、次にドライバー、最後に基板本体を疑います。2 ドルのケーブルが原因で 2 枚目の基板を買った人を、私は何人も見てきました。

Linux・Mac で PlatformIO を使って書き込める?

できます。両 OS でいちばんスムーズな選択肢です。platformio run --target upload がポートを検出して書き込みます。使うのは esptool と同じツールチェーンです。PlatformIO FAQ でセットアップを解説しています。アップロード手順は、ポート名以外は Windows と変わりません。

BOOT ボタンは押す必要がある?

ほとんどの開発キットでは不要です。自動リセット回路(DTR/RTS 配線)が Windows と同じようにやってくれます。自動リセットがない基板や、裸のモジュールを配線した場合だけ、手動でやる必要があります。BOOT を押しながら EN をタップして離す。このロジックは OS ではなく基板次第です。

Linux で書き込みが遅いのはなぜ?

esptool のデフォルトのボーレートが控えめだからです。--baud 460800 を write_flash に追加すれば、同じファームウェアが数分の 1 の時間で入ります。ただしブリッジチップがその速度でつまずく場合があります。一部の CH340 基板はそうで、そんなときは 230400 に落としてください。大体は動きますが、基板ごとの差があります。うちの古い CH340 開発キットは 115200 以上を拒否します。

Docker コンテナから書き込める?

できます。シリアルポートを渡せば OK です。docker run --device /dev/ttyUSB0 と、コンテナのユーザーへの dialout グループ付与が必要です。ツールチェーンを固定しておくのにきれいな方法で、私も夜間の書き込みはこの方法で回しています。ハードウェアなしで書き込みの流れを試したいなら、ブラウザのシミュレーターが練習側面をカバーしています。

この記事のテーマのプロジェクトは、sensbench の無料シミュレーターでそのまま実行できます。回路は配線済み、ファームウェア同梱、アカウントもインストールも不要です。

Leave a Reply

Your email address will not be published. Required fields are marked *