WinDbg のカーネルデバッグで使える USB 3.0 ケーブルを秋葉原で買った部品で作る
WinDbg のカーネルデバッグで使える USB 3.0 ケーブルを買おうと思ったのですが高すぎたので自作した話です。2 台の PC を直接接続する、両端が USB Type-A オス端子のデバッグ用クロスケーブルです。
Web でデバッグケーブルを探したものの
最初に Web で USB 3.0 デバッグケーブルを探したのですが、ニーズが少ないのか、日本のサイトでは売っていないようでした。
仕方がないので、米国 DataPro 社のサイト [1] からの購入を試みます。

「3ft $14.95」ということは「約 90cm で約 2000 円」です。少し高いと思いつつ、[+Add to cart]ボタンを押します。

続いて [Checkout] ボタンを押します。

住所などを入力し、[Proceed to Shipping Options] ボタンを押します。

ここで送料が出てきたのですが、「$41.00」ということは現在の為替レートで「約 5600 円」になります。本体価格と合わせて「約 7600 円」は高すぎです。仕事で使うのであれば出来合いのケーブルを買ったほうが安心ですが、今回は趣味で使うだけなのでそっと閉じ、自作の道を探すことにしました。
デバッグケーブルの結線図
そもそも USB 3.0 デバッグケーブルとはどのようなものなのでしょうか。
マイクロソフトのサイト [2] には、「USB 3.0 回線のみを備え、Vbus がない A-A クロスオーバーケーブル」とありますが、これだけではよくわかりません。
参考文献 [3] の記述をヒントに探したところ、参考文献 [4] に仕様が載っていることがわかりました。以下に引用します。

結線図で書くとこうなります。

端的に書くと、確かに「USB 3.0 回線のみを備え(→ USB 2.0 の信号線である D- と D+ を結線していない)、Vbus がない(→ VBUS を結線していない) A-A(→ 両端が Type-A 端子の)クロスオーバー(→ USB 3.0 の信号線である SSRX-, SSRX+, SSTX-, SSTX+ はクロスさせた)ケーブル」でした。
市販のケーブルの結線を調べる
デバッグケーブルと謳っていない市販のケーブルの結線はどうなっているのでしょうか。両端が Type-A 端子の USB 3.0 ケーブルを秋葉原で 3 種類購入し、テスターを当てて調べてみました。
1 つ目は千石電商で購入した「変換名人, USB 3.0 ケーブル, A to A 20cm, 型番: USB3A-AX / CA20, クロス結線, 680円」です。デバッグケーブルの仕様に近いですが、「VBUS」「D-」「D+」も結線されていました。


2 つ目は、これも千石電商で購入した「変換名人, USB 3.0 ケーブル, A to A 20cm, 型番: USB3A-A / CA20, ストレート結線, 680 円」です。文字通りストーレートで、いわば延長ケーブルでした。


3 つ目は、あきばお~ 2 号店で購入した、「comon, USB ケーブル (3.0), A type(オス)<-> A type(オス), 3AA-20, 2m, 460 円」です。パッケージにはクロスともストレートとも書いてなかったのですが、変換名人のクロス結線と同じでした。


コネクタ変換基板を中継器に利用
市販のクロスケーブル(上記 1 つ目か 3 つ目)の端子から「VBUS」「D-」「D+」の金属ピンをはがすか、ケーブルの被覆を開けて「VBUS」「D-」「D+」の電線をカットすればデバッグケーブルになりそうです(参考文献 [3] では後者の方法を取っている)。しかし、自分ではうまく加工できそうにありません。
そこで今回は、マルツでたまたま見かけた「サンハヤト, USB 3.0 コネクタ変換基板, CK-38, 1001 円(2 個入り)」を利用してみました。USB 3.0 Type-A メスのコネクタと基板の 2 個セットです。

いきなりですが、組み立てた写真が以下になります。
上から見たところ↓。

下から見たところ↓。

写真左側の基板の注意点は次の通りです。
- USB Type-A メス端子のピン 9 個だけでなく、金属のカバー(Shell)の部分もはんだ付けする。
- 付属の 2 x 5 のピンヘッダは、足の長いほうが下になるようにして、はんだ付けする。
- 基板の両側に 1 x 3 のピンヘッダをはんだ付けしておくと、2 つの基板を組み合わせたときにしっかり固定されるのでよい。回路的には意味はない。ピンヘッダは、秋月電子の「ピンヘッダ, 1×40 (40P), 通販コード C-00167, 35 円」を利用。
写真右側の基板の注意点は次の通りです。
- USB Type-A メス端子のピン 9 個だけでなく、金属のカバー(Shell)の部分もはんだ付けする。
- 付属の 2 x 5 のピンヘッダは使わず、基板の上に 1×5 と 1×2 のピンソケットをはんだ付けする。このとき、「1. VBUS」「2. D-」「3. D+」は開放したままにしておく。ピンソケットは、秋月電子の「分割ロングピンソケット(メス), 1×40 (40P), 赤, 通販コード C-10299, 100 円」を利用。
- 基板の両側に 1 x 3 のピンソケットをはんだ付けしておくと、2 つの基板を組み合わせたときにしっかり固定されるのでよい。回路的には意味はない。
- 基板に足を付けてもよい。今回は秋月電子の「3mm プラスチックネジ (7mm) + ナットセット, 通販コード P-01885, 130 円(12 個セット)」を利用。
秋月電子の部品は以下です。

2 つの基板を重ね合わせると次のようになります。

重ね合わせたときの結線図は以下です。「VBUS」「D-」「D+」が断線したストレート接続になります。

サンハヤトの基板以外にも、千石電商で売っている「八ヶ岳クラブ, USB 3.0 メス横型コネクタ基板, USB3.0-FH, 480 円」や、aitendo で売っている「★3.0★ USB コネクタ with 基板, IFB-USB3A-M, 150 円」(激安)も使えそうです。ただし、両側に足が付けられないため、重ね合わせたときにグラグラするかもしれません。
デバッグケーブル完成
作成した基板に「comon のクロスケーブル」と「変換名人のストレートケーブル」を挿せば、デバッグケーブルの完成です(この後、ショート防止のため基板はビニールテープでぐるぐる巻きに)。

トータルな結線は次の通りです。参考文献 [4] のデバッグケーブルの仕様と同じになりました。

実際にこのケーブルを使ってカーネルデバッグできることを確認しました。
一部無駄な買い物もしてしまいましたが、それを除くと 2500 円弱で済みました。
おわりに
USB デバッグケーブルを自作しました。LAN でもカーネルデバッグができますが、セキュリティの関係で LAN 接続できないときや、なぜか LAN 接続のデバッグ設定がうまくいかないときに使えると思います。
参考文献
[1] USB 3.0 Super-Speed A/A Debugging Cable.
https://www.datapro.net/products/usb-3-0-super-speed-a-a-debugging-cable.html
[2] USB 3.0 ケーブル経由のカーネルモード デバッグの手動設定.
https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/setting-up-a-usb-3-0-debug-cable-connection
[3] すらりん日記, USB 3.0 Kernel Debugging のための準備.
https://blog.techlab-xe.net/post-2000/
[4] USB 3.1 Legacy Cable and Connector Revision 1.0.
https://www.usb.org/document-library/usb-31-legacy-cable-and-connector-revision-10