USB-руль Thrustmaster NASCAR ProDigital 2 в GNU/Linux

Впервые опубликовано: 2009-10-14.

Главная проблема с этим рулём - совмещённый (по умолчанию) режим педалей, и отсутствие стандартной возможности включить раздельный режим.

Удалось это решить следующим образом.

Сначала, с помощью программы SniffUSB 2.0 (инструкция по применению) записал протокол USB-трафика (UsbSnoop.log) во время подключения руля и последующего включения режима раздельных педалей в панели Thrustmapper.

Затем, в GNU/Linux, с помощью usbsnoop2libusb.pl сконвертировал этот протокол в C-программу:

usbsnoop2libusb.pl  < UsbSnoop.log > tm-split-axis.c

На выходе получился вот этот файл, который осталось только скомпилировать:

gcc tm-split-axis.c -o tm-split-axis -lusb

Запустил программу tm-split-axis с правами root, указав ей в качестве параметров USB vendor ID и device ID руля (посмотреть можно в lsusb):

sudo ./tm-split-axis 0x044f 0xb202

После этой операции, руль пропал из системы (т.к. перед отправкой устройству управляющих кодов программа отключила от него драйвер usbhid). Для исправления, нужно перезагрузить модуль usbhid. Если вы как и я, пользуетесь USB-мышкой и USB-клавиатурой, выгружать и загружать модуль лучше одной командной строкой, как показано ниже. :)

sudo rmmod usbhid ; sleep 2 ; sudo modprobe usbhid

Из-за перезагрузки модуля, сбрасывается на какое-то странное (слишком высокое) умолчательное значение скорость мыши. Чтобы это исправить, мне пришлось выполнить:

xset m 1 1

Всё, теперь (до перезагрузки или отключения устройства) руль работает в режиме раздельных осей педалей. Для автоматизации перехода в этот режим, можно сохранить три последние операции в виде скрипта.

Фронт работ

Описанная в начале статьи проблема с педалями поджидает владельцев руля и в операционных системах Vista и Windows 7. В принципе, libusb существует и в версии под Windows, так что вполне вероятно, удастся портировать GNU/Linux-версию использованной в статье программы и под эти ОС.

Ссылки

Есть вопросы?


thrustmaster-usb-wheel.txt · Last modified: 2010-08-31 09:03 UTC by rm