Android StudioやターミナルでADBを使用した際に、「failed to start daemon」と表示され、実機やAndroid Emulatorへ接続できなくなることがあります。
* daemon not running; starting now at tcp:5037 adb: failed to start daemon
このエラーは、主にPC上で動作するADBサーバーを正常に起動できなかった場合に発生します。
ADBでは、コマンドを実行するADBクライアント、PC上でバックグラウンド動作するADBサーバー、Android端末側のadbdが連携して動作します。Android公式ドキュメントでは、PC側のADBサーバーはローカルTCPポート5037を使用すると説明されています。 :contentReference[oaicite:0]{index=0}
古いadbプロセスが残っている、5037番ポートを別プロセスが使っている、複数バージョンのADBが競合している、Platform-Toolsが破損している、といった問題が代表的な原因です。
この記事では、ADB「failed to start daemon」が発生する原因と、ADBサーバーの再起動、5037番ポートの確認、複数ADBの整理、Platform-Toolsの更新・再インストールなどの解決方法を解説します。
- ADB「failed to start daemon」とは
- 主な原因
- 確認手順1:adb versionを確認する
- 確認手順2:ADBサーバーを手動起動する
- 解決方法1:ADBサーバーを再起動する
- 解決方法2:残っているADBプロセスを確認する
- 解決方法3:5037番ポートを確認する
- 解決方法4:どのadbを実行しているか確認する
- 解決方法5:ADBのバージョンを比較する
- 解決方法6:フルパスでADBを起動する
- 解決方法7:Android SDK Platform-Toolsを更新する
- 解決方法8:Platform-Toolsを再インストールする
- 解決方法9:Android Studioを終了してADBを再起動する
- 解決方法10:他のAndroid Emulatorを終了する
- 解決方法11:PATHから古いADBを除外する
- 解決方法12:PCを再起動する
- 解決方法13:セキュリティソフトを確認する
- 解決方法14:管理者権限の混在を避ける
- 「failed to start daemon」と「cannot connect to daemon」の違い
- 「failed to start daemon」と「ADB server didn’t ACK」の違い
- USBケーブルや実機設定は原因?
- Emulatorが原因の場合は?
- Windowsでおすすめの確認順序
- macOSでおすすめの確認順序
- Linuxでおすすめの確認順序
- 正常に直ったか確認する方法
- 何度も再発する場合
- それでも解決しない場合
- まとめ
ADB「failed to start daemon」とは
ADBコマンドを実行すると、ADBクライアントはまずPC上にADBサーバーが動作しているか確認します。
ADBサーバーが存在しない場合は、自動的に起動します。
adb devices
正常なら、次のように表示されます。
* daemon not running; starting now at tcp:5037 * daemon started successfully * List of devices attached
しかし、サーバープロセスを正常に起動できない場合は、環境によって次のようなエラーが表示されます。
* daemon not running; starting now at tcp:5037 adb: failed to start daemon
ADB公式ドキュメントによると、ADBサーバーは起動するとローカルTCPポート5037へバインドし、ADBクライアントからのコマンドを受け付けます。 :contentReference[oaicite:1]{index=1}
ポイント:実機を1台も接続していなくてもADBサーバー自体は起動できます。そのため、adb start-serverの段階で失敗する場合は、最初にUSBケーブルではなくPC側のADB環境を確認します。
主な原因
1.古いADBプロセスが残っている
以前起動したADBサーバーが正常に終了せず、バックグラウンドに残っている場合があります。
新しいADBサーバーが起動しようとしても、古いプロセスやポート使用状態と競合して起動できないことがあります。
2.5037番ポートが使用されている
ADBサーバーは通常、PC上のTCPポート5037を使用します。 :contentReference[oaicite:2]{index=2}
別のadbプロセスやAndroid系ソフトウェア、その他のアプリケーションがこのポートを使用していると、ADBサーバーを起動できない可能性があります。
3.複数のADBがインストールされている
Android StudioのSDK以外にも、古いAndroid SDKや第三者製Android Emulatorなどにadbが含まれている場合があります。
異なるバージョンのADBが同時に動作すると、ADBクライアントとADBサーバーの組み合わせが食い違い、起動に失敗することがあります。
4.Android SDK Platform-Toolsが古い
ADBはAndroid SDK Platform-Toolsに含まれています。Android公式ドキュメントでもADBはPlatform-Toolsパッケージから提供されると説明されています。 :contentReference[oaicite:3]{index=3}
長期間更新していない場合は、新しいAndroid StudioやEmulatorとの組み合わせで問題が起こる可能性があります。
5.Platform-Toolsが破損している
SDK更新中の失敗やファイル破損によって、ADB実行ファイルや関連ファイルが正常でなくなることがあります。
6.PATHが別のadbを参照している
Android Studioでは正常でも、ターミナルから実行するとエラーになる場合は、ターミナルのPATHが古いADBを指している可能性があります。
7.別のAndroid Emulatorが独自ADBを使用している
Android Studio以外のゲーム用Android Emulatorなどが独自のadb.exeを起動している場合があります。
それが5037番ポートを使用すると、Android Studio側のADBサーバーと競合する可能性があります。
8.セキュリティソフトがADBをブロックしている
ファイアウォールやウイルス対策ソフトがADBの実行やローカル通信を制限している場合、ADBサーバーを正常に起動できないことがあります。
9.権限の異なるADBプロセスが混在している
特にWindowsで、管理者権限のADBと通常権限のADBが混在すると、プロセスやポートの扱いが不安定になる場合があります。
確認手順1:adb versionを確認する
まずADB本体を実行できるか確認します。
adb version
正常ならADBのバージョン情報が表示されます。
ここで、
adb: command not found
などになる場合は、「failed to start daemon」とは別に、PATHやPlatform-Toolsのインストール状態を確認する必要があります。
確認手順2:ADBサーバーを手動起動する
次のコマンドを実行します。
adb start-server
正常なら、
* daemon not running; starting now at tcp:5037 * daemon started successfully *
と表示されます。
ここで起動に失敗するなら、PC側のADBプロセス、5037番ポート、ADBの重複を優先して確認します。
解決方法1:ADBサーバーを再起動する
まず次のコマンドを実行してください。
adb kill-server adb start-server
続けて、
adb devices
を実行します。
実機やEmulatorが接続されていなくても、ADBサーバーが正常なら次のように表示されます。
List of devices attached
最初に試す方法:突然「failed to start daemon」が発生した場合は、まずadb kill-serverとadb start-serverでADBサーバーを再起動してください。
解決方法2:残っているADBプロセスを確認する
adb kill-serverだけでは終了できないADBプロセスが残っていないか確認します。
Windows:
tasklist | findstr adb
macOS・Linux:
ps aux | grep adb
Windowsで不要なadb.exeが残っている場合は、必要に応じて次のように終了できます。
taskkill /F /IM adb.exe
その後、再びADBを起動します。
adb start-server
注意:taskkill /Fによる強制終了は、通常のadb kill-serverで終了できない場合に使用してください。
解決方法3:5037番ポートを確認する
ADBサーバーが使用する5037番ポートを確認します。
Windows:
netstat -ano | findstr 5037
たとえば次のように表示された場合、最後の数字がPIDです。
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 1234
そのPIDのプロセスを確認します。
tasklist /FI "PID eq 1234"
macOS:
lsof -iTCP:5037
Linux:
ss -ltnp | grep 5037
ADB以外の不要なプロセスが5037番ポートを使用している場合は、そのソフトウェアを終了してからADBを起動します。
解決方法4:どのadbを実行しているか確認する
複数のAndroid SDKがある場合は、現在使用しているADBの場所を確認します。
macOS・Linux:
which adb
Windows:
where adb
Windowsで次のように複数表示される場合があります。
C:\Android\old-sdk\platform-tools\adb.exe C:\Users\User\AppData\Local\Android\Sdk\platform-tools\adb.exe
この場合は古いSDKのADBが先に実行されていないか確認してください。
解決方法5:ADBのバージョンを比較する
現在使用しているADBは次のコマンドで確認できます。
adb version
複数ADBがある場合は、それぞれをフルパスで実行して確認します。
Windowsの例:
"C:\Users\User\AppData\Local\Android\Sdk\platform-tools\adb.exe" version
macOSの例:
~/Library/Android/sdk/platform-tools/adb version
Android Studioで設定されているSDKのADBへ統一すると、バージョン競合を避けやすくなります。
解決方法6:フルパスでADBを起動する
PATHが原因かどうか切り分けるため、Android Studioが使用するPlatform-Tools内のADBを直接実行します。
macOSの例:
~/Library/Android/sdk/platform-tools/adb kill-server ~/Library/Android/sdk/platform-tools/adb start-server ~/Library/Android/sdk/platform-tools/adb devices
Windowsの例:
"C:\Users\User\AppData\Local\Android\Sdk\platform-tools\adb.exe" kill-server "C:\Users\User\AppData\Local\Android\Sdk\platform-tools\adb.exe" start-server
フルパスでは成功し、通常のadbでは失敗する場合はPATH上のADB競合が疑われます。
解決方法7:Android SDK Platform-Toolsを更新する
Android StudioのSDK Managerを開き、Android SDK Platform-Toolsを更新します。
ADBはPlatform-Toolsに含まれているため、ADB関連トラブルでは更新状況を確認することが重要です。 :contentReference[oaicite:4]{index=4}
更新後に次を実行します。
adb kill-server adb start-server adb devices
解決方法8:Platform-Toolsを再インストールする
更新してもADBサーバーが起動しない場合は、Platform-Toolsの破損を疑います。
Android StudioのSDK ManagerからAndroid SDK Platform-Toolsを一度削除し、再インストールしてください。
再インストール後に、
adb version adb start-server adb devices
を実行します。
解決方法9:Android Studioを終了してADBを再起動する
Android Studio自身もADBを利用しているため、一度IDEを終了するとADB環境を整理しやすくなります。
次の順番を試してください。
- Android Studioを終了する
adb kill-serverを実行する- 残存ADBプロセスを確認する
adb start-serverを実行するadb devicesを確認する- Android Studioを起動する
解決方法10:他のAndroid Emulatorを終了する
Android Studio以外のAndroid Emulatorや端末管理ツールを使用している場合は、一度終了します。
それらが独自のADBを使用している可能性があります。
終了後に、
adb kill-server adb start-server
を実行します。
これで正常になる場合は、他ソフトのADBとの競合が原因だった可能性があります。
解決方法11:PATHから古いADBを除外する
where adbやwhich adbで複数のADBが確認された場合は、古いPlatform-ToolsをPATHから除外します。
Android Studioが使用しているSDKのPlatform-Toolsを優先してください。
macOSで一般的な場所:
~/Library/Android/sdk/platform-tools
Windowsで一般的な場所:
%LOCALAPPDATA%\Android\Sdk\platform-tools
実際のSDK保存場所はAndroid Studioの設定で確認してください。
解決方法12:PCを再起動する
ADBプロセスが終了しない、5037番ポートが解放されない、原因となるプロセスが分からない場合はPCを再起動します。
再起動後は、他のAndroid Emulatorなどを起動する前に次を試してください。
adb start-server adb devices
解決方法13:セキュリティソフトを確認する
セキュリティソフトやファイアウォールがADBの起動やローカルポートへの通信を妨げていないか確認します。
ただし、セキュリティ機能を恒久的に無効化するのではなく、使用中のADBが公式Android SDK Platform-Tools内の実行ファイルであることを確認したうえで設定を見直してください。
注意:出所が分からないadb.exeをファイアウォールやセキュリティソフトの例外に登録しないでください。
解決方法14:管理者権限の混在を避ける
Windowsでは、Android Studioを通常権限で起動しながらADBだけを管理者権限で動かすなど、異なる権限レベルを混在させないようにします。
一度ADB関連プロセスを終了し、同じユーザー・同じ権限レベルからADBを起動し直してください。
「failed to start daemon」と「cannot connect to daemon」の違い
次のように両方のエラーが関連して表示されることがあります。
* daemon not running; starting now at tcp:5037 adb: failed to start daemon adb: cannot connect to daemon at tcp:5037
「failed to start daemon」は、ADBサーバーを起動する処理そのものが成功しなかったことを示します。
「cannot connect to daemon」は、その結果としてADBクライアントが使用可能なADBサーバーへ接続できていない状態を示します。
どちらの場合も、まずPC側ADBサーバー、5037番ポート、複数ADBを確認します。
「failed to start daemon」と「ADB server didn’t ACK」の違い
「ADB server didn’t ACK」は、ADBクライアントとサーバーの初期通信が正常に成立しなかった場合に表示されることがあります。
「failed to start daemon」は、さらに直接的にADBサーバーを起動できなかったことを示します。
対処方法は共通する部分が多く、まず次を試します。
adb kill-server adb start-server
改善しなければ5037番ポートとADBの重複を確認します。
USBケーブルや実機設定は原因?
adb start-server自体が失敗している場合、USBケーブルやUSBデバッグが直接の原因である可能性は低いです。
実機が接続されていなくてもPC側ADBサーバーは起動できるためです。
adb start-server adb devices
まずこの2つがエラーなく実行できる状態にします。
その後、端末が一覧へ表示されない場合にUSB接続やUSBデバッグを確認してください。
切り分け:
ADBサーバーが起動しない → PC側ADB環境を修正
ADBサーバーは起動するが実機が出ない → USB・ドライバ・USBデバッグを確認
Emulatorが原因の場合は?
Android Emulator自体が起動していなくても、ADBサーバーは正常に起動できます。
そのため「failed to start daemon」が出る場合は、まずADBサーバーを正常化します。
ADBが正常になったあとでEmulatorが認識されない場合は、Device ManagerからAVDを起動します。Android公式ドキュメントでは、AVDはAndroid StudioのDevice Managerから作成・管理できます。 :contentReference[oaicite:5]{index=5}
Windowsでおすすめの確認順序
where adb adb version tasklist | findstr adb netstat -ano | findstr 5037 adb kill-server adb start-server adb devices
この順番で確認すると、ADBの場所、バージョン、残存プロセス、ポート競合をまとめて切り分けられます。
macOSでおすすめの確認順序
which adb adb version ps aux | grep adb lsof -iTCP:5037 adb kill-server adb start-server adb devices
Linuxでおすすめの確認順序
which adb adb version ps aux | grep adb ss -ltnp | grep 5037 adb kill-server adb start-server adb devices
正常に直ったか確認する方法
最終的に次のコマンドを実行します。
adb kill-server adb start-server adb devices
正常なら、次のように表示されます。
* daemon not running; starting now at tcp:5037 * daemon started successfully * List of devices attached
実機が正常接続されていれば、さらに端末が表示されます。
ABC123456789 device
何度も再発する場合
ADBサーバーを再起動すると一時的に直るものの、すぐ再発する場合は環境競合を重点的に確認します。
where adbまたはwhich adbで複数ADBが見つからないか- 古いPlatform-ToolsがPATHに残っていないか
- 第三者製Android EmulatorがADBを起動していないか
- 5037番ポートが別プロセスに使用されていないか
- Platform-Toolsが古くないか
- ADBを異なる権限レベルで実行していないか
再発する場合は毎回ADBを再起動するより、複数ADBやポート競合を取り除くほうが根本的な解決になります。
それでも解決しない場合
ADB「failed to start daemon」が続く場合は、次の項目を確認してください。
adb kill-serverとadb start-serverを実行したか- 古いADBプロセスが残っていないか
- 5037番ポートを別プロセスが使用していないか
which adbまたはwhere adbで複数ADBが見つからないか- Android Studioとターミナルで同じADBを使用しているか
- Platform-Toolsを更新したか
- Platform-Toolsを再インストールしたか
- 他のAndroid Emulatorや管理ソフトを終了したか
- Android Studioを再起動したか
- PCを再起動したか
- セキュリティソフトがADBをブロックしていないか
まとめ
ADB「failed to start daemon」は、主にPC上のADBサーバーを正常に起動できない場合に発生します。
ADBサーバーは通常、ローカルTCPポート5037を使用します。 :contentReference[oaicite:6]{index=6}
まず次のコマンドを実行してください。
adb kill-server adb start-server adb devices
改善しない場合は、5037番ポートとADBの重複を確認します。
Windows:
where adb netstat -ano | findstr 5037
macOS:
which adb lsof -iTCP:5037
基本的な解決順序は次のとおりです。
- ADBサーバーを再起動する
- 残存ADBプロセスを終了する
- 5037番ポートの使用プロセスを確認する
- 複数のADBを整理する
- Android SDK Platform-Toolsを更新する
- 必要ならPlatform-Toolsを再インストールする
- 他のAndroid Emulatorを終了する
- Android StudioやPCを再起動する
ADB公式ドキュメントでは、ADBはクライアント・サーバー・端末側daemonの構成で動作し、PC側サーバーは5037番ポートを使用すると説明されています。 :contentReference[oaicite:7]{index=7}
特に、where adbやwhich adbで複数ADBが表示される環境や、5037番ポートを他のAndroid関連ソフトが使用している環境では、ADBサーバー再起動だけでは再発することがあります。使用するPlatform-Toolsを1つに統一することが根本的な対策になります。
