O driver correto é snd_cmipci
. Se você olhar a documentação em Documentation/sound/alsa/CMIPCI.txt
nos fontes do kernel, ele diz:
Joystick and Modem
The legacy joystick is supported. To enable the joystick support, pass
joystick_port=1
module option. The value 1 means the auto-detection. If the auto-detection fails, try to pass the exact I/O address.The modem is enabled dynamically via a card control switch "Modem"
Verifique também por meio de dmesg
que snd_cmipci
modprobes corretamente e edite sua pergunta com mensagens de erro se não conseguir descobrir o motivo.
Editar :
Ok, o cartão foi detectado corretamente. Eu olhei para o código-fonte ( sound/pci/cmipci.c
) e o folha de dados . A única coisa que é mencionada é um único bit para ativar o joystick, e ele não fornece nenhum endereço base. O endereço base também não faz parte das regiões PCI, placas PCI aparentemente mais antigas fizeram isso (é o mesmo para as bases MPU401 / FM / SB16 legadas, embora você possa selecioná-las, o que significa que podemos conhecê-las).
Tradicionalmente, a porta do jogo estava em 0x200
- 0x207
, com 0x201
como a normalmente usada. Portanto, o código do driver tenta reservar 0x201
e 0x200
, nessa ordem, por joystick_port=1
, e a porta especificada, e depois ativa o joystick no cartão. Não há detecção adequada nem mensagens.
Portanto, primeiro verifique se o recurso é gratuito: sem o driver carregado (verifique com lsmod
, use rmmod
, se necessário), edite a pergunta com a saída de cat /proc/ioports
como raiz (como usuário normal, você não vejo os intervalos). Se o intervalo 0x200
for obtido, precisamos encontrar uma maneira de liberá-lo.
Para sondagem, verifique novamente se o driver ainda não está carregado quando você modprobe snd_cmipci joystick_port=0x201
(ou a opção não será processada).
Não se lembre exatamente onde a porta de jogo aparece, mas se tudo funcionar (o intervalo é gratuito), você deve ver gameport
e alguns outros módulos em lsmod
, e eu acho que você deveria ter um dispositivo /dev/js*
ou similar que você pode testar com jscal
ou jstest
. Se isso acontecer, mas você não receber nenhuma reação, tente 0x200
a seguir.
Editar
Como eu disse, não me lembro exatamente da pilha de módulos que você precisa, e eu não tenho mais o hardware da porta de jogo. Mas eu descobri meu velho joystick (que também é um Logitech WingMan Extreme, não sei se "Digital" ou não), olhei para arquivos antigos e pesquisei um pouco. Aqui está meu entendimento atual da pilha de módulos:
-
gameport
para tornar acessível o registro da porta de jogo -
ns558
para medir sinais analógicos na porta de jogo -
analog
como o driver para joysticks analógicos simples (se o seu Wingman funciona nesse modo) -
adi
para joysticks da Logitech usando o protocolo ADI (para os botões extras etc.) sobre a porta de jogo (a escolha provável para o seu Wingman) -
joydev
para o dispositivo de entrada
Então, depois de obter a porta de jogo, tente o seguinte, nessa ordem:
modprobe adi
modprobe joydev
e assista dmesg
ou sudo tail -f /var/log/syslog
para ver o que acontece. Você deve obter um dispositivo /dev/input/js0
que possa testar com jstest /dev/input/js0
. Se isso não funcionar, tente
modprobe ns558
modprobe analog map=auto
modprobe joydev
BTW, o meu Wingman é multi-protocolo (USB + ADI, possivelmente também analógico), e vem com um cabo adaptador de porta para jogo que me permite conectá-lo a uma porta USB. Mais simples do que usar uma placa de som antiga. : -)