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-версию использованной в статье программы и под эти ОС.
Ссылки
Есть вопросы?
Задайте их в ветке об этом руле на форуме UnixForum.