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.