トラブル解決公開日: 約 4 分で読めます

adb devices でデバイスが offline になる原因と対処法

adb devices でスマホが offline と表示される原因を、USB 接続と Wi-Fi 接続の両方について解説します。adb サーバーの再起動から platform-tools の更新まで、効果のある対処法をまとめました。

adb devices にスマホは表示されるものの、device ではなく offline となっている状態です。

List of devices attached
R58M123ABC	offline

offline は、adb サーバーからスマホは見えているものの、両者の ADB ハンドシェイクが完了しなかったか、接続が切れたことを意味します。adb shell や adb install などのコマンドは error: device offline で失敗します。以下、よくある原因から順に紹介します。

1. adb サーバーを再起動する

最も多い原因は、古い状態のまま残った adb サーバーです。スマホがスリープした後、再起動した後、USB モードを切り替えた後などに起こりやすくなります。

adb kill-server
adb start-server
adb devices

サーバーを再起動したら、ケーブルを一度抜いて挿し直してください。

2. スマホのロックを解除して確認ダイアログを見る

パソコンに初めて接続すると、スマホに USB デバッグを許可しますか? と表示されます。この応答待ちの間、adb のバージョンによっては unauthorized ではなく offline と表示されます。画面のロックを解除して 許可 をタップしてください。ダイアログが出ない場合は、開発者向けオプションで USB デバッグ承認の取り消し をタップし、USB デバッグをオフにしてからオンに戻し、接続し直します。

3. platform-tools を更新する

古い adb クライアントは、新しい Android とのハンドシェイクに失敗して offline になることがあります。バージョンを確認します。

adb version

数年前のものなら、Google から最新の Android SDK Platform-Tools をダウンロードしてください。PATH が古い adb を指したままになっていないかも確認しましょう(Android Studio、Genymotion、一部のスマホ管理ソフトは独自の adb を同梱しています)。

4. 2 つのプログラムがスマホを取り合っている

Android Studio、scrcpy、スマホ管理アプリ、エミュレーター、メーカーの PC 用ソフトは、それぞれ独自の adb サーバーを起動することがあります。バージョンの違うサーバー同士が互いを再起動し続け、スマホが offline に切り替わってしまいます。ほかのツールを閉じてから、手順 1 のとおりサーバーを再起動してください。詳しくは デバイスが busy / unauthorized になるときの対処法 をご覧ください。

5. ケーブル、ポート、USB モード

  • データ通信に対応していることが分かっている別のケーブルを試し、ハブではなくパソコン本体の USB ポートに挿してください。
  • 機種によっては、USB の通知から USB モードを 充電のみ から ファイル転送 に切り替えると、接続が安定します。

6. Wi-Fi の場合: 接続が切れた

adb connect で接続したスマホは、Wi-Fi がスリープしたとき、IP が変わったとき、ワイヤレス デバッグがオフになったときに offline になります。

adb disconnect 192.168.1.20:5555
adb connect 192.168.1.20:5555

これが Connection refused で失敗する場合は、ネットワークモードがオフになっています。Connection refused の直し方 を参照してください。

7. スマホを再起動する

どれもうまくいかない場合は、スマホとパソコンを再起動します。スマホ側で固まった adbd や、パソコン側の古い USB ドライバーの状態がリセットされます。

ADBKit の場合

ADBKit はパソコン上の adb サーバーを使いません。Chrome や Edge が WebUSB でスマホと直接通信するため、ADBKit ではサーバーのバージョン違いでデバイスが offline になることはありません。ただし USB 接続を ADBKit だけで使う必要があります。ほかのプログラムの adb サーバーがスマホをつかんでいる場合、ADBKit はデバイスが busy であることと、何を閉じればよいかを表示します。Wi-Fi 接続では、「接続が切れた」状態をはっきり表示し、再接続を提案します。

adb devices に何も表示されない場合は、adb devices にデバイスが表示されないときの対処法 をご覧ください。