Arduinoの「ポートが見つからない」原因と解決策まとめ。9割はケーブルとドライバで解決する。
Arduino IDEでボードを選んでも、ポート(パソコンとArduinoをつなぐ通信の窓口)が見つからない――そんな時に確認すべき順番を、原因の出現頻度順に整理しました。専門知識がなくても、上から順に試せば大抵は解決します。
🔌この記事を3分でざっくり理解する(かんたん版)
- 1パソコンにArduino(電子工作の小さなコンピューター)をつないでも「ポート」というつなぎ先の名前がでてこない時、いちばん多い原因は「充電専用のケーブルを使っている」こと。見た目はふつうのケーブルでも、中の線が「電気を送るだけ」で「データを送る線」が入っていないものがある。
- 22番目に多いのは「ドライバ」という案内係のソフトが入っていないこと。特に安いArduinoの仲間(互換ボード)は、パソコンに「これはArduinoですよ」と教える係のソフトを自分でインストールする必要がある。
- 33番目は「ほかのソフトがすでにそのポートを使っている」こと。1つのポートは1つのソフトしか使えないので、開いたままの画面を閉じるだけで直ることが多い。
- 4それでも直らない時は、パソコンを再起動するか、別のUSB差し込み口に挿し直すとうまくいくことがある。
※ここから先は、なぜそうなるのかという仕組みや、パソコンの種類(Windows・Mac・Linux)ごとの違い、さらに詳しく調べたい人向けのコマンドの使い方まで、順を追って詳しく説明していきます。
01なぜ「ポートが見つからない」が起こるのか
結論から言うと、Arduino IDEで「ポートが見つからない」トラブルの原因は、頻度順に「①充電専用USBケーブルを使っている」「②USBシリアル変換チップのドライバが未インストール」「③他のアプリがポートを使用中」の3つでほぼ説明がつきます。つまり、特別な故障や難しい設定ミスよりも、この3つのどれかであることが圧倒的に多いのです。

新品のArduinoを購入したQさんは、USBケーブルを挿すと本体のLEDは点灯するのに、Arduino IDEの「ツール」→「ポート」を開いても何も表示されず困っていた。調べてみると、使っていたケーブルはスマートフォンの充電専用として同梱されていたもので、データ通信用の信号線が入っていない製品だった。そこでデータ転送対応のケーブルに交換したところ、一瞬でポートが表示された。これは非常によくあるつまずきパターンです。
「ポートが見つからない」というエラーは、Arduino本体の故障を疑う前に確認すべきことがたくさんあります。特にケーブルとドライバの2点は、Arduinoを使う人なら誰もが一度は通る道であり、慌てずに順番通り確認すれば大抵は数分で解決します。
本記事では、シリアルポートの基礎知識、認識される仕組みという技術的背景、OS別の違い、そして実際に原因を切り分けて解決するまでの手順を解説します。さらに後半では、ケーブルの内部構造やコマンドラインを使った上級者向けの切り分け方法、意外と見落とされがちなLinux環境での対処法まで、一歩踏み込んで解説していきます。
02シリアルポート・USBシリアル変換チップの基礎知識
シリアルポートとは何か
シリアルポートとは、パソコンとArduinoがUSB経由でデータをやり取りするための仮想的な通信窓口です。たとえるなら、荷物(データ)を送るための「郵便受け」のようなものだと考えるとイメージしやすいでしょう。WindowsではCOM3やCOM4のような番号で、MacやLinuxでは/dev/tty.usbmodemXXXXのような名前で表示されます。つまり、Arduino IDEでスケッチ(プログラム)を書き込む際は、この番号・名前を正しく選択する必要があるということです。
USBシリアル変換チップの役割
多くのArduino(特に純正品以外の互換ボード)は、内部にUSBシリアル変換チップと呼ばれる部品を搭載しており、USB信号とマイコンが使うシリアル信号を相互に変換しています。代表的なものが「CH340」や「CH341」というチップです。このチップはPCとArduino互換機との通信を仲介するもので、中国製の互換機でよく使われていることが技術ブログで紹介されています。
ドライバが未インストールだとどうなるか
WindowsやMacには、このCH340用ドライバが標準搭載されていないことが多い点に注意が必要です。ドライバが入っていない場合、パソコンがArduinoを正しく認識できず書き込みできないという状態になると解説されています。一方、純正のArduino(Uno R3など)はATmega16U2という別チップを使っており、多くの場合OS標準のドライバで動作します。しかし、安価な互換ボードではこの一手間が必要になるケースが多い点を押さえておきましょう。
03認識される仕組みという技術的背景
Arduinoがパソコンに正しく認識されるまでには、次の3段階があります。それぞれの段階でつまずくポイントが異なります。

- ①USBによる給電・通電:ケーブルを挿すとArduino本体のLEDが点灯する段階。ここまでは充電専用ケーブルでも到達できてしまいます。
- ②USBデバイスとしての認識:OSがUSB機器としてArduinoを検出する段階。ここでUSBシリアル変換チップのドライバが必要になります。
- ③シリアルポートとしての割り当て:OSがCOM番号やデバイス名を割り当て、Arduino IDEの一覧に表示される段階。
給電できていても通信できるとは限らない
多くの初心者がつまずくのは「①はできているのに②③に進めない」というケースです。充電専用のマイクロUSBケーブルはMacに挿して通電はするものの、IDEとの接続に必要なUSBシリアルポートは認識されないという事例が技術記事で報告されており、給電できているからといって通信できているとは限らないことがよく分かります。
技術ブログの検証記録では、USB Type-Bケーブルが奥までしっかり差し込まれていなかったことが原因で、給電はされるもののデータ通信ができずポートが認識されなかった事例が紹介されており、ケーブルの種類だけでなく「挿し込みの甘さ」も見落としやすい原因であることが分かります。ケーブルを一度抜き差しし直すだけで解決することも珍しくありません。
04比較:Windows/Mac/互換ボードでの違い
| 項目 | Windows(純正Arduino) | Windows(互換ボード) | Mac(共通) |
|---|---|---|---|
| 基本的なドライバ | OS標準で対応することが多い | CH340等のドライバが別途必要な場合が多い | CH340系は署名許可が必要な場合あり |
| 確認する画面 | デバイスマネージャー | デバイスマネージャー | システム情報/システムレポート |
| 典型的な症状 | 比較的少ない | 「ほかのデバイス」に警告アイコン付きで表示 | USB機器として認識されない |
| 参考 | 編集部見解 | CH340ドライバ導入記事 | Mac向けドライバ更新記事 |
※「基本的なドライバ」「典型的な症状」の一部は編集部見解によるものです。実際の挙動はOSのバージョンや搭載チップによって異なります。
結論として、純正Arduinoではドライバ関連のトラブルは比較的少ない一方、価格の安い互換ボードを使う場合はCH340系ドライバのインストールをほぼ前提として考えておくとスムーズです。Macユーザーは、ドライバインストール後にセキュリティ設定での許可が必要になる場合がある点も覚えておきましょう。Linux環境については、後述する第9章で個別に取り上げます。
05実践:原因を切り分ける5ステップ

USBケーブルを疑う
まず、使用しているUSBケーブルをスマートフォンのデータ転送などで動作確認済みの別のケーブルに交換してみます。特に付属品として同梱されていたケーブルや、100円ショップなどの充電専用ケーブルは要注意です。あわせて、ケーブルの両端がしっかり奥まで差し込まれているかも確認しましょう。
OS側でデバイスが認識されているか確認する
Windowsでは「デバイスマネージャー」を開き、「ポート(COMとLPT)」の欄に何か表示されているか確認します。Macでは「システム情報」(Appleメニュー→このMacについて→システムレポート)でUSBデバイスの一覧にArduinoらしき機器が表示されているか確認します。
Rさんがデバイスマネージャーを確認したところ、「ポート(COMとLPT)」ではなく「ほかのデバイス」の欄に黄色い警告アイコン付きでArduinoらしきデバイスが表示されていた。これはドライバが未インストールであることを示すサインで、CH340用のドライバをインストールし再起動したところ、正常に「ポート」欄へ移動して認識されるようになった、という典型的な解決パターンです。
USBシリアル変換チップのドライバをインストールする
基板上のチップの型番(CH340、CH341、FTDIなど)を確認し、メーカー公式サイトから対応するドライバをダウンロード・インストールします。インストール後は必ずパソコンを再起動し、再度デバイスマネージャーやシステムレポートで認識状況を確認してください。
ポートを使用中の他のアプリを閉じる
シリアルポートは一度に1つのアプリケーションしか使用できません。Arduino IDEのシリアルモニタを開いたままPythonなど別のプログラムからも同じポートを開こうとするとエラーになります。他にシリアル通信を行うアプリが起動していないか確認し、不要なものは閉じてください。
編集部の見解として、「さっきまで書き込めていたのに急にポートがエラーになった」という場合、真っ先に疑うべきはシリアルモニタの開きっぱなしです。書き込み前には一度シリアルモニタを閉じる習慣をつけると、このタイプのエラーの多くを未然に防げます。
それでも解決しない場合はOSの再起動・別ポートを試す
ここまでの対策で解決しない場合、パソコン自体の再起動、別のUSBポート(特にUSBハブを経由している場合は直接パソコン本体のポートに挿し直す)への差し替えを試してください。USBハブや不安定な電源経由での接続は、認識トラブルの原因になることがあります。
06注意点・よくある誤解
誤解1:LEDが点灯していれば通信もできている
電源LEDの点灯は「給電されている」ことを示すだけで、「データ通信ができる」こととは別問題です。充電専用ケーブルでもLEDは点灯するため、この誤解が多くのつまずきの原因になっています。
誤解2:ポートが認識されない=本体が壊れている
実際には、本体の故障よりもケーブルやドライバが原因であるケースが圧倒的に多いです。すぐに買い替えを検討する前に、本記事のステップを一通り試すことをおすすめします。
誤解3:一度ドライバを入れれば二度とトラブルは起きない
OSの自動アップデートによってドライバの挙動が変わり、それまで使えていたボードが突然認識されなくなる事例が報告されています。急に認識しなくなった場合は、OSやドライバが最近更新されていないか確認してみましょう。
07なぜ「見た目は同じケーブル」で挙動が違うのか(深掘り)
ここからは、他の解説記事ではあまり踏み込まれない「そもそもなぜ充電専用ケーブルだと通信できないのか」という構造の話をします。仕組みを理解しておくと、初見のトラブルにも自分で対応できるようになります。
USBケーブルの中には4本(またはそれ以上)の線が入っている
標準的なUSBケーブルの内部には、大きく分けて次の線が通っています。
- VBUS(赤線):電源(+5V)を送るための線
- GND(黒線):電気の帰り道(グラウンド)
- D+/D-(緑・白線):データを送受信するための信号線
スマートフォンの急速充電などに付属する「充電専用ケーブル」は、コストダウンや発熱対策のために、このD+/D-の信号線をあえて省略している、あるいは細い線しか通していない製品が存在します。そのため、VBUSとGNDだけは生きているのでArduinoへの給電(LED点灯)は成立しますが、D+/D-が無い・細すぎることでデータ通信が成立せず、OSからはUSB機器として認識すらされないという状態になります。これが「LEDは点くのにポートが出てこない」という現象の正体です。
ケーブルの長さ・太さも通信品質に影響する
見落とされがちですが、ケーブルが長すぎたり、線が細く電気抵抗が大きいものだと、信号が減衰してUSB機器としての列挙(enumeration、パソコンが機器の種類を問い合わせるプロセス)に失敗することがあります。特に3m近い延長ケーブルや、100均のケーブルを複数連結して使っているようなケースでは、給電はできても通信が不安定になりやすい点に注意してください。可能であれば、1m前後の信頼できるメーカー製ケーブルを使うのが最も確実な対策です。
USBハブを経由すると起きやすい「電流不足」という別の問題
もう一つ見落とされがちなのが、セルフパワーではないバスパワー型のUSBハブを経由した場合の電流不足です。Arduino本体に加えてモーターやLEDテープなど電流を多く消費する部品を接続していると、USBポートやハブから供給できる電流の上限(多くの場合500mA前後)を超えてしまい、ボードが再起動を繰り返したり、認識が不安定になることがあります。この場合はケーブルやドライバの問題ではないため、セルフパワー式のUSBハブに切り替える、あるいは外部電源をArduインに供給するといった対策が有効です。
08上級者向け:コマンドラインで原因をピンポイント特定する
GUI(画面操作)だけでは切り分けが難しい場合、コマンドラインを使うと「OSはUSB機器として認識しているのか」「シリアルポートとして割り当てられていないだけなのか」を厳密に切り分けられます。ここではArduino公式が提供するarduino-cliと、各OS標準のコマンドを紹介します。
arduino-cliでポート一覧とボード候補を確認する
arduino-cliをインストール済みであれば、次のコマンドで接続中のシリアルポートと、可能であればボードの型番候補までまとめて表示できます。
arduino-cli board list
このコマンドの結果に何も表示されない場合、OSがそもそもArduinoをUSB機器として認識できていない可能性が高く、ケーブルまたはドライバの問題である可能性がさらに強まります。逆に、ポート自体は表示されるのにボード名が「不明」と出る場合は、認識自体はできているので、次に述べるVID/PID(ベンダーIDとプロダクトID)の確認に進みます。
VID/PIDでチップの正体を特定する
USB機器は、接続時に自分の製造元とチップの種類を示す「VID(ベンダーID)」「PID(プロダクトID)」という4桁の識別番号を名乗ります。これを確認すると、搭載されているUSBシリアル変換チップの正体をピンポイントで特定できます。
| チップ | 代表的なVID:PID | 備考 |
|---|---|---|
| CH340/CH341 | 1a86:7523 | 安価な互換ボードで最も多く使われる |
| FTDI FT232R | 0403:6001 | やや高価だが安定性に定評がある |
| CP2102(Silicon Labs) | 10c4:ea60 | ESP32系の開発ボードでもよく使われる |
| ATmega16U2(Arduino純正) | 2341:0043 など | Arduino公式ボードに多い、型番により変動 |
※VID/PIDは製品ロットやリビジョンによって変動することがあります。あくまで目安としてご利用ください。
Windowsでは、デバイスマネージャーで対象デバイスを右クリック→「プロパティ」→「詳細」タブ→「プロパティ」欄で「ハードウェアID」を選択すると確認できます。Macではsystem_profiler SPUSBDataTypeをターミナルで実行し、接続機器の一覧からVendor ID/Product IDを探します。Linuxでは後述するlsusbコマンドで一発表示できます。
avrdudeのエラーメッセージから原因を読み解く
書き込み時に表示されるavrdude: stk500_recv(): programmer is not respondingのようなエラーは、多くの場合「ポート自体は開けたが、ボードからの応答がない」状態を示しています。これは、①選択しているポートが実際のArduinoとは別の機器のものである、②ボードのブートローダーが破損している、③書き込み中にリセットタイミングがずれている、のいずれかが典型的な原因です。特に①は非常に多く、Bluetoothモジュールなど別の仮想シリアルポートを誤って選択しているケースが少なくないため、まずは「ツール」→「ポート」で候補が複数ある場合、Arduinoを抜き差しして増減するポートがどれかを見比べるのが確実な特定方法です。
09Linux(Raspberry Pi OS/Ubuntuなど)での対処法
Windows・Macに関する情報は多く出回っていますが、Raspberry Pi OSやUbuntuなどLinux環境でArduinoを扱う際の注意点は意外と見落とされがちです。Linuxではドライバの有無よりも「権限(パーミッション)」が原因になるケースが独特で、ここを知らないと延々と原因不明のまま時間を浪費してしまいます。
lsusbコマンドでUSB機器としての認識を確認する
lsusb
ここにCH340やFTDIなど、それらしきデバイスが表示されていれば、USB機器としての認識(前述の②の段階)はできています。表示されない場合は、Windows・Macと同様にケーブルを疑ってください。
デバイスファイルの存在とdmesgでの確認
ls /dev/ttyUSB* /dev/ttyACM*
dmesg | tail -n 20
/dev/ttyUSB0や/dev/ttyACM0のようなデバイスファイルが存在するかを確認します。dmesgコマンドは直近のカーネルログを表示するもので、USBを挿した直後に実行すると「ch341-uart converter now attached to ttyUSB0」のようなメッセージが確認でき、OS側がどのデバイス名で認識したかがわかります。
Linux特有の落とし穴:dialoutグループの権限不足
Linuxでは、シリアルポートのデバイスファイルはroot権限またはdialoutグループに属するユーザーしかアクセスできないよう権限設定されているのが一般的です。デバイスファイル自体は存在するのに、Arduino IDEのポート一覧に出てこない、あるいは書き込み時に「Permission denied」というエラーが出る場合は、これが原因である可能性が非常に高いです。次のコマンドでユーザーをdialoutグループに追加し、一度ログアウト・再ログイン(またはOS自体を再起動)することで解決します。
sudo usermod -a -G dialout $USER
この対処法はWindowsやMacの解説では出てこない、Linux環境ならではの重要なポイントです。教育現場でRaspberry PiとArduinoを組み合わせて授業を行う場合など、Linux環境での運用を前提とするケースでは特に押さえておきたい知識です。
10よくある質問
/dev/ttyUSB0のように存在していてもArduino IDEの一覧に出てこない、または書き込み時に権限エラーになるケースが典型的です。sudo usermod -a -G dialout $USERを実行し、一度ログアウト・再ログイン(またはOS再起動)することで解決することが多いです。arduino-cli board listコマンドを使うと、OSが認識しているシリアルポートと、可能であればボードの型番候補まで一覧表示できます。Windowsではデバイスマネージャーのプロパティからハードウェアの詳細でVID(ベンダーID)とPID(プロダクトID)を確認でき、MacやLinuxではsystem_profiler SPUSBDataType(Mac)やlsusb(Linux)で同様の情報を確認できます。これによりOSがUSBデバイスとしては認識しているのか、それともシリアルポートとして割り当てられていないだけなのかを切り分けられます。参考文献
- Adireeek「USB typeCのArduinoに書き込めない!CH340 チップのドライバーのインストール方法」2025年, https://blog.adireeek.com/ch340c_driver/
- Qiita「ArduinoやESP32でUSBのシリアルポートがMacで認識されない場合(初歩)」2021年, https://qiita.com/Asuka_Saito/items/5e019d3d7acd2632a2b1
- openillumi「Arduino IDE ポート表示されないMacの解決策」2025年, https://openillumi.com/mac-arduino-ide-port-fix/
- ekit-tech「Arduino IDEで『シリアルポートが選択できない』『USBを認識しないとき』はドライバをインストールしよう」2021年, https://www.ekit-tech.com/?p=1506
- Qiita「Arduino互換機でシリアルポートを認識しなくなった場合の対処」2018年, https://qiita.com/snumano/items/e268ed48b34eba6b6af0
※出典の明記がない数値・シナリオ・コマンド例は「編集部見解」または「編集部想定シナリオ」として本文中に明示しています。第7〜9章の技術的な深掘り部分(ケーブルの内部構造、VID/PID表、avrdudeのエラー解釈、Linuxのdialout権限など)は編集部による技術的知見のまとめであり、実際の動作はハードウェアやOSのバージョンにより異なる場合があります。実機での作業前には、ご自身の環境で必ず確認・自己責任のうえ実施してください。※本文中の内部リンクはyofukasi-lab-wp.com内の関連記事です。
コメント