2026年2月11日水曜日

マウスのUSB中の信号って規格化されていますか?

 はい、かなり規格化されています。ざっくり言うと「USBという土管の規格」+「その中を流す“マウス”の話し方(クラス)の規格」の二段構えです。

  • USB自体の信号
    物理層(電圧レベル、差動信号、速度:Low/Full/High-Speed など)、パケット形式、エラー検出、ホスト主導の通信(ポーリング)などは USB規格で標準化されています。

  • “マウスとして”のデータ形式
    ふつうのUSBマウスは USB HID(Human Interface Device)クラスとして動きます。
    ここで「ボタン何個」「X/Y移動量」「ホイール」などをどういうビット列で送るかは、基本的に **HIDの仕組み(レポート)**で表現され、ホスト(PC)がそれを解釈します。

  • 完全に固定の1形式か?
    「一般的なマウス」は共通に見えるように作られていますが、実は

    • ボタン数が多い

    • 高解像度ホイール

    • 独自機能(DPI切替、マクロ、RGB制御)
      みたいな部分は **HIDの“ベンダー独自レポート”**として追加されることがあり、そこはメーカー次第で統一されていないことがあります(ただし基本の移動/クリック部分は標準に寄せるのが普通です)。

  • オシロで見えるもの(USB2.0の典型的な有線マウス)

    1) 配線と信号

    • D+ / D- の2本で差動通信(ねじれ対推奨)

    • VBUS 5VGND

    • 信号は基本 差動なので、理想は

      • 差動プローブで D+−D- を見る

      • ない場合は D+ と D- をそれぞれ見て「逆相だな」を確認(ただし歪みの評価は難しくなります)

    2) 速度(マウスはだいたいこれ)

    多くのUSBマウスは Full-Speed(12Mbps)Low-Speed(1.5Mbps) です。
    (High-Speed 480Mbps のマウスも理屈上ありえますが、一般的には少ないです)

    オシロでの見分けの目安:

    • Low-Speed:ビット時間が長くてゆっくり(約 666ns/bit)

    • Full-Speed:その8倍速い(約 83ns/bit)

    3) 電気的な「レベル」

    USB2.0のLow/Full-Speedはいわゆる “3.3Vロジックそのまま”ではなく、終端・プルアップ・受け側終端を含む規格の振る舞いがあります。

    • デバイス側は D+ または D- に プルアップ抵抗を付けて速度を宣言

      • Full-Speed:D+ にプルアップ

      • Low-Speed:D- にプルアップ

    • これにより、アイドル時に片側が少し高くなり **“J状態”**になります(ここがオシロでまず見える特徴)

    4) 波形の符号化(ここが「USBっぽさ」)

    Low/Full-Speedのデータは NRZI で送られます。

    • “0” を送ると 反転

    • “1” を送ると 維持
      さらに ビットスタッフィングが入り、同じ状態が続きすぎないようにします。

    なので、オシロで見ると

    • 規則的に反転が入る

    • 完全なクロック線は無い(クロックは埋め込み)

    5) まず見えるイベント(通信の塊)

    USBはホスト主導なので、マウスが勝手に喋り続けるのではなく

    • ホストが定期的に INトークンで「変化ある?」と取りに来る

    • 変化があればマウスがデータを返す

    マウスだと「割り込み転送(interrupt IN)」で、だいたい 1ms〜10ms間隔でポーリングされます。
    オシロでは「一定周期でバーストが出る」ように見えがちです。

    実務的な測り方(壊さない・見やすい)

    • できれば USBブレークアウト基板テスト用延長ケーブルを使って、プローブの負荷で波形を潰さない

    • 受動プローブを直刺しすると容量で波形が丸まることがあります(特にFull-Speed以上で顕著)

    どのUSB世代のマウスを想定?

    • USB2.0(LS/FS) なら、普通のオシロでも見分けやすいです

    • USB3.x だと物理層が全く別(高速差動ペア追加、符号化も別)で、普通のオシロだけで“中身”まで追うのは難易度が上がります