10月23日、Phoronixが「Linux 7.4 Introduces New Driver For The Nintendo Switch 2」と題した記事を公開した。Linux 7.4のHIDサブシステム更新に、Nintendo Switch 2コントローラ向けの新ドライバが取り込まれたことを詳しく紹介している。
このドライバを書いたのはVicki Pfau氏——Valve Softwareに所属するエンジニアだ。ValveはSteam DeckというLinuxベースのゲーミングPCを開発・販売する企業であり、Pfau氏はLinuxカーネルへのゲーミングデバイス対応を継続的に進めてきた立場にある。任天堂とValveはゲームプラットフォームとしては競合関係にあるが、Valveが任天堂のコントローラ向けドライバを書いた背景には明確な実用的動機がある。Steam DeckはデスクトップモードでLinux(SteamOS)を直接操作できる設計になっており、USB接続したコントローラをそのまま利用できることが重要なユースケースだ。Nintendo Switch 2のコントローラがLinuxで動作するようになれば、Switch持ちのSteam DeckユーザーがコントローラをそのままPCゲームで流用できる。
技術的な肝は、Switch 2コントローラが採用する分割インターフェース設計にある。HID(Human Interface Device)とは、キーボードやマウス、ゲームコントローラなどの入力デバイスをOSが統一的に扱うための規格・サブシステムだ。一般的なHIDデバイスは単一のインターフェースで入力から設定まで完結するが、Switch 2は構造が異なる。Pfau氏はパッチのコメントでこう説明している。
「Switch 2は珍しい分割インターフェース設計を採用している。入力とバイブレーション(rumble)はメインのHIDインターフェース上で行われるが、その他すべての通信は『設定(configuration)』インターフェース経由で行われる。USBとBluetoothの両方でこの構造が適用されているため、今回の新ドライバも分割ドライバ設計を採用した。HIDインターフェース側が『メイン』ドライバとなり、設定インターフェース側はセカンダリドライバとして共通のstructでリソースを共有しながらメインドライバを参照する。」
入力系と設定系を意図的に分離したハードウェア設計に合わせ、ドライバ側でも2コンポーネントが連携する構造を採用した点が、今回の実装の技術的な読みどころだ。このパッチはLinux kernel MLで複数回のリビジョンを経てLinux 7.4にマージされており、開発の丁寧さが伺える。
今回のドライバが対応するのはJoy-Con 2・Pro Controller 2・GameCube NSO コントローラの3種で、いずれもUSB接続での動作が対象となる。Bluetooth接続については現時点で未対応だ。Pfau氏はその理由を「非標準のペアリングインターフェースを使用していること、およびカーネル内でのBluetooth通信が極めて限定的であるため、ユーザー空間とカーネル間のカスタムインターフェースの設計とBlueZでの対応が必要になる。それらは今回の初期パッチのスコープ外」と説明しており、Bluetooth対応は将来の課題として残っている。
Linux 7.4は執筆時点でまだ正式リリース前であり、各ディストリビューションに降りてくるまでにはさらに時間がかかる見込みだ。今すぐ試したいユーザーはmainlineカーネルを自前でビルドするか、対応済みカーネルを提供するディストリビューションを待つ必要がある。
なお、Linux 7.4のHIDプルリクエストにはSwitch 2ドライバ以外にも複数の更新が含まれる。Pulsarゲーミングマウス向けの新ドライバ「hid-pulsar」(X2 V2やXlite V3など複数モデルに対応)、AMD Zen 6 Ryzen SoC向けSensor Fusion Hubドライバの拡張、Apple Touch BarやASUS ROG Allyハンドヘルドの電源管理修正なども盛り込まれており、ゲーミングデバイスとLinuxの親和性を高める方向での継続的な取り組みが続いている。
詳細はLinux 7.4 Introduces New Driver For The Nintendo Switch 2を参照していただきたい。