Правильный драйвер есть snd_cmipci
. Если вы посмотрите на документацию Documentation/sound/alsa/CMIPCI.txt
в исходниках ядра, там написано:
Джойстик и модем
Устаревший джойстик поддерживается. Чтобы включить поддержку джойстика, передайте
joystick_port=1
опцию модуля. Значение 1 означает автоопределение. Если автоопределение не удается, попробуйте передать точный адрес ввода-вывода.Модем включается динамически через плату управления коммутатором «Модем»
Также проверьте с помощью dmesg
этого snd_cmipci
modprobes правильно, и отредактируйте свой вопрос с любыми сообщениями об ошибках, если вы не можете выяснить причину.
Редактировать :
Хорошо, карта правильно обнаружена. Я посмотрел на исходный код ( sound/pci/cmipci.c
) и таблицу данных . Единственное, что упомянуто, это один бит для включения джойстика, и он не дает никакого базового адреса. Базовый адрес также не является частью регионов PCI, по-видимому, старые карты PCI делали это таким образом (это то же самое для устаревших баз MPU401 / FM / SB16, хотя вы можете выбрать те, что означает, что мы могли бы их знать).
Традиционно игровой порт был на 0x200
- 0x207
, 0x201
как обычно используемый. Таким образом, код драйвера просто пытается зарезервировать 0x201
и 0x200
, в этом порядке, для joystick_port=1
и данного порта в противном случае, а затем включает джойстик в карте. Там нет надлежащего обнаружения, и нет сообщений.
Итак, сначала проверьте, что ресурс свободен: без загруженного драйвера (проверьте с lsmod
помощью, rmmod
при необходимости используйте), отредактируйте вопрос с выводом от имени cat /proc/ioports
root (как обычный пользователь, вы не видите диапазоны). Если 0x200
диапазон взят, мы должны найти способ освободить его.
Для проверки снова убедитесь, что драйвер еще не загружен, когда вы modprobe snd_cmipci joystick_port=0x201
(или опция не будет обработана).
Я точно не помню, где отображается игровой порт, но если все работает (диапазон свободен), вы должны увидеть gameport
и некоторые другие модули lsmod
, и я думаю, что у вас должно быть устройство /dev/js*
или подобное, которое вы можете протестировать с помощью jscal
или jstest
. Если это произойдет, но вы не получите никакой реакции, попробуйте 0x200
следующее.
редактировать
Как я уже сказал, я не помню, какой именно стек модулей вам нужен, и у меня больше нет игрового оборудования. Но я вытащил свой старый джойстик (который также является Logitech WingMan Extreme, без понятия «цифровой» или нет), посмотрел на старые файлы и немного погуглил. Вот мое текущее понимание стека модулей:
gameport
сделать регистр игрового порта доступнымns558
измерять аналоговые сигналы на игровом портуanalog
в качестве драйвера для простых аналоговых джойстиков (если ваш Wingman работает в этом режиме)adi
для джойстиков Logitech, использующих протокол ADI (для дополнительных кнопок и т. д.) над игровым портом (вероятный выбор для вашего Wingman)joydev
для устройства ввода
Поэтому после получения игрового порта попробуйте следующее в таком порядке:
modprobe adi modprobe joydev
и смотреть dmesg
или sudo tail -f /var/log/syslog
посмотреть, что происходит. Вы должны получить /dev/input/js0
устройство, которое вы можете проверить jstest /dev/input/js0
. Если это не сработает, попробуйте вместо
modprobe ns558 modprobe analog map=auto modprobe joydev
Кстати, мой Wingman является многопротокольным (USB + ADI, возможно, также аналоговым) и поставляется с переходным кабелем игрового порта к USB, который позволяет мне подключить его к USB-порту. Проще, чем использовать старую звуковую карту. :-)