Logicool G29 ドライビングフォース ステアリングホイールをWindows XPで使えるようにするツールを作った。
ファイル
→ Unofficial Logi G29 driver for WinXP 32-bit.zip (3.17 MB)
インストール方法
管理者権限を持つユーザーでinstall.batを開くと、ドライバーファイルがシステムにコピーされる。G29を接続すると、ドライバー “Logicool G29 Driving Force Racing Wheel (PS3)"(PS3モードの場合) または “Logicool G29 Driving Force Racing Wheel (PS4)"(PS4モードの場合) がインストールされる。
同じフォルダーのLogiSteerSetPCMode.exeを開くと、G29がPCモードに切り替わると同時に、ドライバー “Logicool G29 Driving Force Racing Wheel USB (HID)” がインストールされる。このアプリケーションは常駐しない。ドライバーのインストールは初回のみだが、PCの電源を切るか、G29のUSBケーブルを外すなど、接続が切れるたびに、LogiSteerSetPCMode.exeを毎回実行する必要がある。G29を繋ぎっぱなしにするなら、スタートアップに登録した方が良い。
dxdiagでフォースフィードバックドライバーがあたっていることを確認できれば、OK。

Flatout 2でフォースフィードバックも機能することを確認した。まだじっくり検証できていない。

アンインストール方法
管理者権限を持つユーザーでuninstall.batを開くと、システムからドライバーがアンインストールされる。
仕組み
ドライバーファイルは Logicool ゲームソフトウェア 8.70 32ビット版 (LGS_8.70.315_x86_Logicool.exe) から抽出している。このソフトウェアは通常の方法でXPへインストールしようとすると弾かれるが、特殊な手順で無理矢理インストールすることはでき、ドライバーまではあたる。しかし、実行ファイル本体 (LCore.exe) はCancelIoExという、Windows Vista以降のシステムにしかないAPIを使用するため、XPでは実行することができない。
ドライバー未インストールの状態でもWindows標準ドライバーで認識され、ステアリングは使用できるが、一部のボタンしか使えない、フォースフィードバックが機能しないという制限がある。ちなみに、Windows 98でもこの状態で同様に使用可能。

ドライバーをインストールするとG29はいったん使用不可になる。これは、PCモードに切り替える前のデバイスをWinUSBドライバー(ユーザーモードのプログラムからデバイスを容易に扱えるようにする仕組み)でアクセスできるようにしているためである。
Logicool ゲームソフトウェア (LCore.exe) を起動すると、WinUSBドライバーを通してG29側へモード切り替えの信号が送られ、PCモードに切り替わるとUSB HIDドライバーで認識される。私がこの信号を調べたところ、6バイトのデータ 30 f8 09 05 01 01(16進数)であることが判明した。今回のLogiSteerSetPCMode.exeはこの処理を単独で行うものだ。
Infファイルに手を加えれば現行製品のG923にも対応できそうだが、ドライバーファイルを改変することはセキュリティ上の懸念がある(署名を無効にしないといけない)ため、今回は対応していない。