Nintendo Switchに付属してきたACアダプターでPixel 3を充電してみたところ充電できなかったので、その原因を探ってみました。
どんな現象が起きたのか
私の手持ちのPixel 3 (Android 10 / QQ2A.200405.005) をNintendo Switch (2019) 付属のACアダプターで試しに充電してみたところ、充電 → 切断を繰り返す現象が発生しました。
この記事では、その時、内部的には何が起きていたのかについて説明します。
Switch純正ACアダプターの仕様
使ったのはこのACアダプターです。
Nintendo Switch (2019) に付属してきた型番「HAC-002(JPN)」で、定格出力は「5.0V/1.5A」と「15.0V/2.6A」の2系統です。
上記はNintendo HAC-002(JPN)が実際にしゃべるSource_Capabilitiesメッセージです。外装に印字されている定格出力と同じ「5.0V/1.5A」「15.0V/2.6A」のFixed Supply PDOを通知します。
なぜPixel 3の充電が失敗するのか
上記はHAC-002(JPN)とPixel 3を接続した際のUSB PDのパケットのログです。
- Nintendo HAC-002(JPN)が「5.0V/1.5A」「15.0V/2.6A」の出力をPixel 3に対して通知 (Source_Capabilitiesメッセージ)
- Pixel 3が「5.0V/1.5A (Max Currentは3.0A)」を要求 (Requestメッセージ)
- HAC-002(JPN)はそのリクエストを拒否 (Rejectメッセージ)
- Hard Reset
- 1〜4が無限に繰り返される
という現象が起きています。Pixel 3を接続すると充電 → 切断を繰り返すのは、Hard Resetが無限に繰り返されているのが原因と思われます。
そしてその無限Hard Resetですが、恐らくPixel 3がMaximum Operating Currentを3.0Aでリクエストしていることが原因です。こういう風に書くとPixel 3が悪いように聞こえるかもしれませんが、USB PDの仕様ではCapability Mismatchのフラグを立てていればSource_Capabilitiesメッセージ以上の値をMaximum Operation Currentでリクエストしても良いことになっているため、Pixel 3のRequestメッセージに問題はありません。あくまでHAC-002(JPN)の問題です。
他のデバイスを充電した場合
Pixel 3だけではデータが足らないので、他の機種についても調べてみます。
まずはOnePlus 7T。
HAC-002(JPN)からのSource_Capabilitiesメッセージに対して、5V/1.5Aをリクエストします。Pixel 3と違ってMaximum Operating Currentも1.5Aでリクエストしているため、正常に充電できます。これは特に珍しい話ではなく、大体の機種はMaximum Operating Current = Operating Currentでリクエストします。Pixel 3みたいなパターンのほうがレアだと思います。
次はiPad Pro 11 (2018) 。
iPad Pro 11はPixel 3と同じく、Maximum Operating Current = 3.0Aでリクエストします。しかしPixel 3とは異なり 、 HAC-002(JPN)でも充電することができます。
なぜiPad Pro 11は充電できるのかというと、USB PDのネゴシエーションが以下のような流れで行われるからです。
- HAC-002(JPN)が「5.0V/1.5A」「15.0V/2.6A」の出力を通知 (Source_Capabilitiesメッセージ)
- iPad Pro 11が「5.0V/1.5A (Max Currentは3.0A)」を要求 (Requestメッセージ)
- HAC-002(JPN)はそのリクエストを拒否 (Rejectメッセージ)
- Hard Reset
ここまではPixel 3と同じです。しかし、これ以降の挙動がPixel 3と異なるため、無限Hard Resetが起きません。
- Hard Reset後、HAC-002(JPN)が「5.0V/1.5A」「15.0V/2.6A」のSource_Capabilitiesメッセージを送信 (2回目)
- iPad Pro 11が「5.0V/1.5A」をリクエスト (今度はMax Currentも1.5A)
- HAC-002(JPN)はiPad Pro 11からのリクエストを了承 (Acceptメッセージ)
- 電力供給開始 (PS_Readyメッセージ)
iPad Pro 11はHard Resetが起きるとそのことを覚えていて、2回目のリクエストではMaximum Operating Current = Operating Currentでリクエストするようです。そのためHard Resetが起こらず、正常に充電できます。
まとめ
- Nintendo SwitchのACアダプターでPixel 3を充電できない事象はあくまでプロトコルレベルの問題
- Pixel 3はUSB PDの仕様の範囲内で動作している
- Nintendo SwitchのACアダプターが原因っぽい (Source_Capabilitiesメッセージ以上の電流をリクエストされると問答無用でHard Resetを実行する?)
↓続き↓