Quick Charge 4+スマートフォンをQC4+充電器で充電したら、むしろ充電が遅くなったりそもそも充電できなかった話

Redmi K20 ProというQuick Charge 4+ certifiedなスマートフォンをQC4+ certifiedなACアダプターで充電したら、QC4+ certifiedではないACアダプターで充電した時よりも充電が遅かったり、そもそも充電すらできないという意味不明な現象が発生しました。

広告

使用したスマートフォン・ACアダプター

Redmi K20 Pro

意味不明な現象が起きたスマートフォンはXiaomiのRedmi K20 Proです。

Redmi K20 ProはXiaomiの製品ページでQC4+対応と紹介されており、Qualcommが公開しているQuick Charge認定製品リストにもQC4+ certifiedとして掲載されています。

Anker PowerPort III 45W Pod

使用したACアダプターの1つ目はAnker PowerPort III 45W Pod [A2711121] です。Quick Charge認定は取得していない、ただのUSB PD PPS対応ACアダプターです。

Anker PowerPort III 45W Pod レビュー:持ち運びしやすいオールラウンダー
AnkerのUSB PD 45W充電器「PowerPort III 45W Pod」 (型番: A2711121) を購入したのでレビューします。

Belkin F7U073dq

使用したACアダプターの2つ目はBelkin F7U073dqです。QC4+ certifiedです。

Razer RC30-021501

使用したACアダプターの3つ目は、Razer Phoneシリーズに付属している24W USB-C ACアダプター RC30-021501です。QC4+ certifiedです。

Redmi K20 Proを充電してみる

まずはAnker A2711121でRedmi K20 Proで充電してみます。

約24Wで充電されました。


続いて、QC4+ certifiedなBelkin F7U073dqで充電してみました。

Anker A2711121で充電した時の半分、約12Wで充電されました。なんでやねん。

(当然ですが、バッテリーは十分に減らしています)


続いて、QC4+ certifiedなRazer RC30-021501で充電してみました。

Hard Resetが発生し続け、そもそもマトモに充電できませんでした。金返してくれ。

過去バージョンのMIUIに戻して検証

ということで、Quick Charge認定のないAnkerのACアダプターが1番充電が早く、逆にQC4+ certifiedなACアダプターの方がむしろ充電が遅かったりそもそも充電できなかったりする現象が起きることを紹介しました。

まがりなりにもRedmi K20 ProはQC4+ certifiedなので、少なくとも発売前にULかAllionかGRLで行われたであろう認定試験の時点では問題なく充電できていたはずです。何が言いたいのかと言うと「発売時点では問題なかったが、その後Xiaomiが実施したアップデートで充電がぶっ壊れたのではないか」ということです。

幸いなことにXiaomiのスマートフォンはBootloader Unlockableなので、ファームウェアやAndroid OSをダウングレードすることができます。さすがにマイナーアップデートも含めた全バージョンで検証するのは無理なので、大きな変更がありそうないくつかのバージョンをピックアップし、それらで検証してみました。それぞれのバージョンの概要は以下の通りです。

  • MIUI 10.3.6.0: Redmi K20 Pro向けMIUI Stable ROMで最も古いバージョン。Android 9ベース。2019年5月リリース。
  • MIUI 10.3.17.0: Android 9ベースの中で最後のバージョン。2019年8月リリース。
  • MIUI 11.0.2.0: Android 10ベースの中で最初のバージョン。2019年10月リリース。
  • MIUI 11.0.8.0: 最後のMIUI 11 Stable ROM。Android 10ベース。2020年3月リリース。
  • MIUI 12.5.6.0: 記事作成時点での最新バージョン。Android 11ベース。2021年10月リリース。

で、それぞれのMIUIバージョンで充電した結果が以下の表です。

MIUIバージョンACアダプター充電結果リクエストされていたPDO
MIUI 10.3.6.0Anker A2711121約17W3.3-16.0V⎓2.0A
Belkin F7U073dq約17W3.3-11.0V⎓2.0A
Razer RC30-021501約24W3.0-11.0V⎓2.65A
MIUI 10.3.17.0Anker A2711121約17W3.3-16.0V⎓2.0A
Belkin F7U073dq約17W3.3-11.0V⎓2.0A
Razer RC30-021501約24W3.0-11.0V⎓2.65A
MIUI 11.0.2.0Anker A2711121約27W3.3-16.0V⎓3.0A
Belkin F7U073dq約25W3.3-11.0V⎓3.0A
Razer RC30-021501約24W3.0-11.0V⎓2.65A
MIUI 11.0.8.0Anker A2711121約27W3.3-16.0V⎓3.0A
Belkin F7U073dq約12W3.3-11.0V⎓1.5A
Razer RC30-021501充電不可
MIUI 12.5.6.0Anker A2711121約27W3.3-16.0V⎓3.0A
Belkin F7U073dq約12W3.3-11.0V⎓1.5A
Razer RC30-021501充電不可

どうやら充電がぶっ壊れたのはMIUI 11.0.2.0から11.0.8.0の間のようです。

MIUI 11.0.2.0〜11.0.8.0の間に何が起きたのか

複数のMIUIバージョンで検証した結果、QC4+ certifiedなACアダプターで充電が遅かったり、そもそも充電できない現象が起きるようになったのはMIUI 11.0.2.0から11.0.8.0の間だということが分かりました。

さらに追加で色々調べたところ、Xiaomiの独自充電規格である「Mi Turbo Charge」が今回の件の原因だという結論に至りました。


Mi Turbo Chargeには27W, 40W, 33W, 67W, 120Wなどいくつもの種類があり、すべてのワット数のMi Turbo Chargeで同じような動作が行われているかは不明ですが、少なくともいくつかのMi Turbo Chargeでは以下のような動作をします。これから説明するのはMi Turbo Charge 33Wについてです。

Mi Turbo Charge 33Wは名前こそ独自規格っぽい「Mi Turbo Charge」ですが、内部的には電力のハンドシェイクにUSB PD PPSを使用しています。USB PDはオープンな仕様なので、普通に実装すれば純正品だろうがサードパーティだろうが同じ速度で充電できるようになるはずですが、Xiaomiがそんな行儀の良いことをするわけがありません。具体的には、両方がXiaomi純正品でない場合はMi Turbo Charge 33Wが有効にならないようになっています。

Mi Turbo Charge 33W対応のACアダプターは、スマートフォンがXiaomi製だと確認できない場合はPPS PDOを通知しなくなります。

Mi Turbo Charge 33W対応のACアダプター。接続されているのがXiaomi純正品でない場合はこの4つのPDOを通知する。
上記と同じ33W ACアダプターだが、USBパワーメーターがXiaomi製品だと偽ってレスポンスしているため、PPS PDOも通知されている。

同様に、スマートフォン側も、ACアダプターがXiaomi製 (またはZMI製) ではない場合はMi Turbo Charge 33Wが有効にならないようになっています。

Mi Turbo Charge 33W対応のPOCO F3を付属の33W ACアダプターで充電した場合。内部的にはUSB PD PPSのネゴシエーションが行われ、約27Wで充電される。
POCO F3を付属ACアダプターと同等のUSB PD PPSに対応しているサードパーティACアダプターで充電した場合。PPSのネゴシエーションは正常に行われるが、電力が最大でも約20Wまでしか達しない。

このように、少なくとも33WのMi Turbo ChargeにはスマートフォンとACアダプターの両方に、相手がXiaomi純正品でないと機能をフルに発揮しないDRM的な仕組みが組み込まれています。


そして、そのDRM的な仕組みが組み込まれているのは小米9 Pro 5GのMi Turbo Charge 40Wも同様です。詳しくはGTrustedの記事に書かれていますが、小米9 Pro 5Gと付属ACアダプターを接続すると、充電を始める前にまず小米9 Pro 5GとACアダプターの間でUSB PDのパケットがやり取りされ、お互いがXiaomi製品だと確認できるとACアダプターがPPS PDOを追加で通知するようになることが報告されています。

Mi Turbo Charge 40WはMi Turbo Chargeシリーズの中で2番目に古い規格です。1番最初の27Wは内部的にQuick Charge 3.0 Class Bを使用しているため、電力のハンドシェイクにUSB PD PPSを使用するようになったのはMi Turbo Charge 40Wが最初です。

そしてそのMi Turbo Charge 40Wに初めて対応したのは、2019年9月末に発表された小米9 Pro 5Gです。Redmi K20 Proの充電がぶっ壊れたのは2019年10月から2020年3月の間のアップデートなので、時期的には一致します。

つまり、私の推測はこうです。

  • Redmi K20 ProはQC4+対応
  • QC4/4+は電力のハンドシェイクにUSB PD PPSを利用している
  • 2019年9月末にMi Turbo Charge 40W対応の小米9 Pro 5Gが発表された
  • Mi Turbo Charge 40Wは電力のハンドシェイクにUSB PD PPSを利用している
  • 小米9 Pro 5G付属のACアダプターは、スマートフォンがXiaomi製だと確認できない場合はPPS PDOを通知してくれない → Redmi K20 Proを充電した場合はQC4+ではなくQC3.0での充電になってしまう
  • どうすれば良いか → 「Xiaomi製であることをACアダプターに示すUSB PDのレスポンス」をRedmi K20 Proも返すようにアップデートで修正する
  • そのアップデートによって小米9 Pro 5G付属のACアダプターがPPS PDOも通知してくれるようになり、Redmi K20 ProをQC4+充電できるようになる
  • 一方で、そのアップデートでMi Turbo Chargeの「ACアダプターがXiaomi製だと確認できない場合は充電のワット数をセーブする」という仕様も取り込まれた
  • これが原因で、QC4+ certifiedなACアダプターでの充電が遅くなった

充電時のUSB PDのパケットを確認してみても、MIUI 11.0.2.0以前では送信されていなかったACアダプターのベンダーを確認するためと思われるパケットが、MIUI 11.0.8.0以降では送信されるようになっていました。

そのため、MIUI 11.0.8.0以降でQC4+ certifiedなACアダプターでの充電が遅くなったり充電できなくなったのは、小米9 Pro 5Gの発売に伴ってMi Turbo Chargeの仕様がRedmi K20 Proに取り込まれたからである可能性が高いと考えられます。

 
広告

Anker A2711121では正常に充電できた理由

この記事をめちゃめちゃじっくり読んでいる人の中には「QC4+ certifiedなBelkinやRazerでは充電が遅くなったり充電できなくなってるのに、なんでAnkerだけ普通に充電できているんだろう」と疑問に思う人もいるかもしれないのでその辺りを説明します。

Redmi K20 Proでは、以下の流れでスマートフォンとACアダプターが相互にXiaomi製か確認する動作が行われます。

  1. Data Role Swapを実行
  2. Discover Identify/SVIDsコマンドを使って相手がXiaomi製か相互に確認
  3. USB PD PPSでの充電が開始される

これらのうち、BelkinやRazerのACアダプターでは1は正常に行われています。しかし2でXiaomi製だと確認できないため、充電が遅くなったり充電できなくなっています。

Belkinで充電した場合のUSB PDのパケット (MIUI 12.5.6.0)

一方、AnkerのACアダプターではそもそも1が完了しておらず (Redmi K20 ProがData Role SwapをリクエストするがAnkerがNot_Supportedをレスポンス) 、2の動作も行われていません。2を飛ばしてそのままPPSでの充電が行われています。

Ankerで充電した場合のUSB PDのパケット (MIUI 12.5.6.0)

MIUI 11.0.8.0以降がインストールされているRedmi K20 Proでは、1が完了しない場合はQC4+モードになるようです。一方で、1が完了してしまうとMi Turbo Chargeモードになるようで、ACアダプターがXiaomi製だと確認できない場合はRedmi K20 Pro側が充電速度を制限します。

今回の場合では、Ankerはそもそも1が完了しないためQC4+モードとなり、約27Wで充電が行われたということのようです。私は以前から「ACアダプターでDual Role Dataのフラグが立っているのはおかしい」ということを度々言ってきていますが、図らずもそれが証明された形となりました。BelkinやRazerのACアダプターはDual Role Dataのフラグが立っていてData Role Swapが実行されてしまったため、それが原因でRedmi K20 Proの充電が遅くなったり充電できなくなっています。

Razer RC30-021501で充電できなかった理由

「BelkinとRazerはどっちもQC4+ certifiedなのに、なんでRazerの方は充電すらできないんだろう」と思う人もいるかも知れないので、一応説明しておきます。

上にも書きましたが、スマートフォンとACアダプターが相互にXiaomi製か確認する動作は以下の流れで行われます。

  1. Data Role Swapを実行
  2. Discover Identify/SVIDsコマンドを使って相手がXiaomi製か相互に確認
  3. USB PD PPSでの充電が開始される

RazerのACアダプターを使用した場合、2でRedmi K20 ProがDiscover Identifyコマンドを送信し、RazerはNot_Supportedをレスポンスしています。しかしながらRedmi K20 Proは懲りずにまたDiscovery Identifyコマンドを送信し、Razerは再度Not_Supportedをレスポンスします。

私が検証した時には、このやり取りが3回繰り返された後、最終的にHard Resetが実行されていました。恐らくですが、Razer側がリセットを実行したのだと思われます。

Razerで充電した場合のUSB PDのパケット (MIUI 12.5.6.0)

リセット後は、Data Role Swap → Discover Identify → Not_Supported → Hard Resetという一連の流れが再び行われていました。これが永遠に続くせいで、RazerのACアダプターではRedmi K20 Proを充電することができていませんでした。

MIUI 11.0.2.0以前であればDiscover Identify/SVIDsコマンドを使って相手がXiaomi製か確認する動作が行われないため、RazerのACアダプターでも正常に充電することができます。

所感

QC4+ certifiedスマートフォンはRedmi K20 ProだけでなくRazer Phoneも持っていますが、Razer PhoneはどのAndroidバージョン (Android 7〜9) でも、どのACアダプターでも正常に充電できていました。このような意味不明な現象が起きたのはRedmi K20 Proだけです。

他にも、XiaomiはUSB-A ACアダプター・ケーブルを魔改造してUSB PDに対応させるなど、仕様を自分の都合の良いように “つまみ食い” 的に利用することが多く、仕様に準拠させるという意識が低いため、Xiaomiの実装は信用しないほうがいいです。

関連記事

Quick Charge 4/4+の実態を探る
ACアダプターやモバイルバッテリーのレビューなどで「この充電器 or バッテリーはUSB PD PPSに対応しているのでQuick Charge 4/4+対応スマートフォンを急速充電できますね」といった説明を読んだことがある人は割といるの
POCO F3の充電仕様や付属のACアダプター・ケーブルについて調べた
POCO F3を買ったので、対応している急速充電規格や、付属のACアダプター・ケーブルの仕様について調べてみました。※ POCO F3 M2012K12AG (Android 11 / MIUI 12.0.5 / V12.0.5.
タイトルとURLをコピーしました