Visite também: Currículo ·  Efetividade BR-Mac

O que é LinuxDownload LinuxApostila LinuxEnviar notícia


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

Comentários dos leitores

Os comentários são responsabilidade de seus autores, e não são analisados ou aprovados pelo BR-Linux. Leia os Termos de uso do BR-Linux.

    Allan Taborda dos Santos (usuário não registrado) em 28/06/2011 às 1:06 pm

    O recurso de vibração não é patenteado pela Sony?

    agx (usuário não registrado) em 28/06/2011 às 1:09 pm

    Show de bola! Bom trabalho!!

    Turambar (usuário não registrado) em 28/06/2011 às 1:10 pm

    Gostei do “o qual eu já testei exaustivamente” ! hahah !

    Maior esforço CHATO ! =)

    benjamim gois (usuário não registrado) em 28/06/2011 às 1:11 pm

    Show, parabéns pelo trabalho de alto nível.

    Tiago (usuário não registrado) em 28/06/2011 às 1:27 pm

    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!!!! :)

    Igor Cavalcante (usuário não registrado) em 28/06/2011 às 1:28 pm

    Parabéns, lhe invejo :)

    Turambar (usuário não registrado) em 28/06/2011 às 1:50 pm

    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 +

    arthas_dk (usuário não registrado) em 28/06/2011 às 2:12 pm

    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.

    lezado (usuário não registrado) em 28/06/2011 às 2:17 pm

    @Tiago os módulos fazem parte do kernel.

    Eden (usuário não registrado) em 28/06/2011 às 2:33 pm

    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.

    Dell_Ete (usuário não registrado) em 28/06/2011 às 3:44 pm

    Parabéns pela contribuição. É isso que é ser hacker de verdade, não aqueles marginaizinhos que invadem sites, como a imprensa adora citar.

    vinipsmaker (usuário não registrado) em 28/06/2011 às 4:18 pm

    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?

    Cleber (usuário não registrado) em 28/06/2011 às 5:22 pm

    @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.

    anderson freitas (usuário não registrado) em 28/06/2011 às 6:16 pm

    @Cleber como dizem no jargão popular como dizem ”você mandou bem” excelente.

    neribh (usuário não registrado) em 28/06/2011 às 6:41 pm

    @Cleber, parabéns pelo trabalho, muito legal mesmo!

    Clésio Luiz (usuário não registrado) em 28/06/2011 às 7:22 pm

    @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.

    danilo (usuário não registrado) em 28/06/2011 às 8:24 pm

    @cleber
    Parabéns e obrigado, também tenho um joystick parecido com esse, logo mais vou fazer uns testes!

    Celio Alves (usuário não registrado) em 28/06/2011 às 8:26 pm

    @Cleber,

    O @Dell_Ete postou a mesma coisa que eu iria postar. Mesmo assim, parabéns pelo trabalho.

    Cleber (usuário não registrado) em 28/06/2011 às 8:57 pm

    >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.

    vinipsmaker (usuário não registrado) em 28/06/2011 às 11:10 pm

    @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

    Joao Emanuel (usuário não registrado) em 29/06/2011 às 6:50 am

    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).

    Cleber (usuário não registrado) em 29/06/2011 às 7:55 am

    @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.

    Cleber (usuário não registrado) em 29/06/2011 às 8:17 am

    @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.

    vinipsmaker (usuário não registrado) em 29/06/2011 às 11:17 am

    @Cleber

    vlw pela ajuda.
    Parece que no Archlinux não vem por padrão, vou recompilar o kernel então.
    :P

Este post é antigo (2011-06-28) e foi arquivado. O envio de novos comentários a este post já expirou.