Joypad Clone Power Fire: suporte a Force Feedback já no kernel
Enviado por Cleber M. Casali (cleberdemattoscasali-1Θyahoo·com·br):
“Ajudei a desenvolver um driver para este dispositivo, com suporte a Force Feedback (Rumble ou vibração). O driver foi desenvolvido por engenharia reversa. Coletei vários logs de atividade do dispositivo em ação no windows, com a ferramenta SniffUSB.
Com a ajuda dos programadores Hendrik Iben e Anssi Hannula, desvendamos o protocolo, que é relativamente simples. A partir daí, Anssi Hannula escreveu um patch para o Kernel, o qual eu já testei exaustivamente, e está funcionando perfeitamente. Para quem possui este joypad, o recurso Rumble já estará disponível a partir da próxima versão do Kernel.” [referência: permalink.gmane.org]
• Publicado por Augusto Campos em
2011-06-28
O recurso de vibração não é patenteado pela Sony?
Show de bola! Bom trabalho!!
Gostei do “o qual eu já testei exaustivamente” ! hahah !
Maior esforço CHATO ! =)
Show, parabéns pelo trabalho de alto nível.
Olha, esse recurso apareceu no mundo, quem eu lembre, pela primeira vez pelas mãos da Nintendo, no Nintendo64, não foi num aparelho da Sony.
Mas, esse tipo de coisa é importante ao ponto ser ser um patch no kernel? Não bastaria um módulo?
Bom, em fim, que belo trabalho!!!! :)
Parabéns, lhe invejo :)
Tiago, os patches foram aplicados nos módulos, obviamente.
Olha o diff que tem no link de referência:
drivers/hid/Kconfig | 14 +++
drivers/hid/Makefile | 1 +
drivers/hid/hid-core.c | 1 +
drivers/hid/hid-holtekff.c | 240 +++++++++++++++++++++++
drivers/hid/hid-ids.h | 3 +
Ainda que através de engenharia reversa, é um trabalho inovador em linux, posto que jamais vi uma implementação como esta.
Acredito que, de alguma forma, seja isto que é esperado da comunidade: maior envolvimento real nos projetos ao invés de simplesmente utilizar e, em caso de algum problema, sair chorando aos quatro ventos.
Claro juntamente a outras contribuições, como divulgação, suporte e treinamento, etc.
@Tiago os módulos fazem parte do kernel.
Perai. O Joypad já funcionava. Então o recurso de vibração que foi implementado no kernel por vocês? É isso mesmo?
Tenho um joypad que está assim também. Funciona tudo menos a vibração.
Parabéns pela contribuição. É isso que é ser hacker de verdade, não aqueles marginaizinhos que invadem sites, como a imprensa adora citar.
Interessante, parabéns pelo trabalho!
Tenho um joypad e se parece bastante com o da foto.
Acho que até que só mudaram a carcaça por marketing.
Que programa/jogo você usou para testar a vibração?
@vinipsmaker:
O layout dos botões é o mesmo? Vc pode fazer um “cat /sys/class/input/js0/device/name” e um “lsusb” e postar o resultado?
>Que programa/jogo você usou para testar a vibração?
Desenvolvi uma pequena biblioteca para isto : http://libjoyrumble.sourceforge.net/
Existe também um aplicativo modo texto chamado “fftest”, que está no pacote “joystick”.
Além disto, a vibração também funciona em alguns jogos do windows com o wine (Trackmania por exemplo).
A próxima versão do SDL (1.3) também vai ter este recurso.
Obrigado pelo apoio, pessoal.
@Cleber como dizem no jargão popular como dizem ”você mandou bem” excelente.
@Cleber, parabéns pelo trabalho, muito legal mesmo!
@Allan Taborda dos Santos
na verade é uma patente da Immertion. Foi ela que fez a Sony se curvar e pagar royalites depois que os controles de Playstation tiveram a venda proibida nos EUA. Nintendo, Microsoft e Sony, todos pagam a Immertion pelo rumble nos controles.
@cleber
Parabéns e obrigado, também tenho um joystick parecido com esse, logo mais vou fazer uns testes!
@Cleber,
O @Dell_Ete postou a mesma coisa que eu iria postar. Mesmo assim, parabéns pelo trabalho.
>Perai. O Joypad já funcionava. Então o recurso de vibração que foi >implementado no kernel por vocês? É isso mesmo?
Isto aí, o joypad já funcionava com o driver genérico. O que foi implementado agora foi o Force Feedback.
@Cleber
sim, o layout de botões é quase idêntico. a saída dos comandos que você falou:
[root@vinipsmaker-desktop vinicius]# cat /sys/class/input/js0/device/name
DragonRise Inc. Generic USB Joystick
[root@vinipsmaker-desktop vinicius]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 005: ID 04e8:1f02 Samsung Electronics Co., Ltd
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 04d9:1603 Holtek Semiconductor, Inc.
Bus 004 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 005 Device 003: ID 0079:0006 DragonRise Inc. Generic USB Joystick
E a questão da patente da Immertion, como fica? Isso pode gerar prejuízos ao Linux no futuro se não for bem analisada (ou analizada, como queiram).
@Joao Emanuel
Teoricamente o fabricante do dispositivo é quem paga os royalties para comercializá-lo. Teoricamente, pois eu duvido muito, heheheh.
Acredito que o software não tenha nada com isto. Afinal, já existe uma infinidade de módulos como este no kernel.
@vinipsmaker:
Seu joypad já é suportado pelo módulo hid-drff
http://cateee.net/lkddb/web-lkddb/HID_DRAGONRISE.html
http://projects.qi-hardware.com/index.php/p/qi-kernel/source/file/master/drivers/hid/hid-drff.c
Teste com um kernel recente. Você precisa do módulo “hid-drff.ko” e da opção “CONFIG_HID_DRAGONRISE” habilitada no seu kernel.
Certifique-se que você tem o módulo “hid-drff.ko” (use o comando “locate hid-drff.ko”). Se tiver, dê um “modprobe hid-drff” e insira o dispositivo.
Se você não possui este módulo, certifique-se também que o item “CONFIG_HID_DRAGONRISE” está configurado no kernel.
Para isto baixe e extraia o source do seu kernel. Use o comando “sudo make menuconfig” no mesmo diretório onde está o source do kernel.
Entre em Device Drivers – HID Devices – Force Feedback support e veja se os itens Force Feedback (geral) e DragonRise estão habilitados.
Se não estiverem, vc vai ter que habilitar e recompilar o kernel.
@Cleber
vlw pela ajuda.
Parece que no Archlinux não vem por padrão, vou recompilar o kernel então.
:P