Raspberry Pi 4のUSB Type-Cポートが規格通りでない話の詳細

Raspberry Pi 4のUSB Type-Cポートが規格に準拠した設計になっていない件について日本語でも記事が出てきていますが、内容的に物足りなかったり間違っているので掘り下げてみます。

※この問題を最初に報じたscorpiaの記事の5番煎じみたいな記事なので、英語に抵抗ない人はそっちを読むことをオススメします。

要約

一部 (大半?) のUSB Type-C ACアダプタとE-MarkedケーブルをRaspberry Pi 4の電源として使用した場合に、ACアダプタの出力がオンにならず、RP4が駆動しません。

  • USB 2.0で3A対応のC to Cケーブルを使う
  • USB-C ACアダプタを使用せず、3A以上出力できるUSB-A ACアダプタとA to Cケーブルを電源として使う

といった方法でこの事象を回避することができます。

詳細

‎Raspberry Pi Foundationが公開しているRP4の回路図を確認すると、USB Type-CポートのCC1・CC2が1つのR79でGNDへと接続されています。

Raspberry Pi 4 Model B Schematics

しかしながらUSB Type-Cの仕様書によると、Sink (受電側) のCC1・CC2はそれぞれ別々のRd (5.1k ohm) でGNDに接続する (プルダウンする) ように定められています。

USB Type-C Cable and Connector Specification, Release 1.4

Raspberry Pi 4のようにCC1・CC2がショートされて1つのRdでGNDへ接続されている機器をE-Markedケーブルで駆動させようとした場合、ACアダプタ – ケーブル – RP4の回路は以下のような状態となります。

①-GND間の抵抗は図の通りRaとなります。 (Raは800~1200 ohm)

②-GND間の抵抗は1 / (1/Ra + 1/Rd)となり、取り得る値は692~971 ohmとなります。

②の取り得る値の一部がRaの範囲と被っているため、使用するE-Markedケーブルによっては、CC1・CC2の両方がRaでプルダウンされた場合と同じ状況となります。

CC1・CC2の両方がRaでプルダウンされた状態は、USB Type-Cの規格では「Audio Adapter Accessory Mode attached」とされています。

USB Type-C Cable and Connector Specification, Release 1.4

「Audio Adapter Accessory Mode attached」と言われても何のことか分からない方が多いと思いますが、早い話が「アナログ型USB-C – イヤホンジャック変換アダプタが装着された状態」です。

ACアダプタから「アナログ型USB-C – イヤホンジャック変換アダプタが装着された」と認識されるためにACアダプタの出力がオンにならず、結果としてRP4が駆動しません。USB Type-Cの規格的にはACアダプタの出力がオンにならないのが正しい挙動なので、USB Type-CポートコントローラICを搭載しているような「ちゃんとしているACアダプタ」ほど、RP4 + E-Markedケーブルで動作しない可能性が高いです。 (scorpiaの記事によるとMacBookとPixel 3の付属ACアダプタでは動作しなかったとか)

試しにAnker PowerPort Speed PD 60 [A2015113] (レビュー記事) にエレコム AD-C35BKを接続してみましたが、VBUSは0Vのままでした。これではRP4が駆動するわけがないですね。

回避方法

RP4の設計不良による今回の現象は「E-Markedケーブルを使用した場合にのみ」発生します。つまり、E-Markedではないケーブルを使用すれば回避することができます

2019年7月時点でのUSB Type-C to Type-Cケーブルは以下の4種類に大別できます。

  1. USB 2.0 / 3A
  2. USB 2.0 / 5A
  3. USB 3.2 / 3A
  4. USB 3.2 / 5A

この4種類のうち、2~4は100% E-Markedです。規格でそのように定められています。E-Markedでなければそれは規格違反品です。 (cheeroのやつとか)

逆に、1だけはE-MarkedでなくてもOKということになっています。C to Cケーブルとしては最もスペックが低く、必要でもないのにわざわざコストを掛けてE-Markedにする理由がないため、基本的にどのメーカーのケーブルもUSB 2.0 / 3A品は非E-Markedです。100%とは断言できませんが、少なくとも私はUSB 2.0 / 3AでE-Markedなケーブルを見たことがないです。

そのため、USB 2.0 / 3A対応のC to Cケーブルを使用すれば (ほとんどの確率で) 上記の事象を回避できます。

また、それ以外では「USB-AのACアダプタ + A to Cケーブル」を使用することによっても回避できます。こちらの方法は100%の確率で問題を回避できるのがメリットですが、その反面3A出せるUSB-AのACアダプタを探すのが少し大変です。

もういろいろ考慮するのめんどくさいしピンヘッダから電源取ればいいんじゃないですかね。

公式声明

Tech Republicの報じるところによると、Raspberry Pi Foundationの共同設立者Eben Upton氏が「this will be fixed in a future board revision」と言ったらしいので、将来的には修正される模様です。

技適の問題もありますし、RP4を買うのはもうちょっと待ったほうが良さそうですね。