Sexta revisão do patch hid-ayaneo amplia a integração do console portátil ao sistema, permitindo identificar módulos, configurar vibração e controlar LEDs.
O suporte a consoles portáteis no ecossistema de código aberto continua avançando com o desenvolvimento de ferramentas mais precisas para hardwares específicos. Em 13 de novembro de 2026, o desenvolvedor Matías Martínez apresentou a sexta revisão de um patch (v6) que propõe a adição do driver hid-ayaneo ao kernel Linux. A novidade foca exclusivamente nos controles destacáveis do AYANEO 3.
A proposta fornece interfaces padronizadas para que aplicações em espaço de usuário consigam identificar os módulos instalados e controlar funções que vão além dos comandos tradicionais de um joystick, englobando desde a iluminação até a liberação física das peças.
O que são os Magic Modules do AYANEO 3?
O AYANEO 3 utiliza um sistema modular chamado comercialmente de Magic Modules. Esse design permite que o usuário remova, troque e reposicione os componentes dos controles de acordo com o jogo ou a preferência ergonômica.

Para o sistema operacional, lidar com peças que podem ser trocadas a qualquer momento exige uma comunicação constante com o hardware. O controlador do console apresenta três interfaces USB HID associadas ao identificador genérico 1c4f:0002, pertencente à SigmaMicro. Como esse identificador também é encontrado em outros equipamentos, o driver hid-ayaneo faz uma verificação das informações DMI do aparelho para garantir que o tratamento específico seja ativado apenas na plataforma correta.
As interfaces são divididas entre comandos tradicionais de gamepad, eventos de teclado (para botões adicionais) e uma interface proprietária, que utiliza relatórios de 65 bytes para conversar diretamente com o firmware dos controles. É nessa terceira via que o novo driver opera as funções avançadas, enquanto preserva o funcionamento básico do dispositivo de forma muito semelhante ao hid-generic.
Novo driver permite identificar e ejetar controles
Um dos principais recursos da implementação é a introdução de atributos sysfs específicos para monitorar as laterais do console. Os atributos module_left e module_right permitem que o sistema consulte quais módulos estão instalados em cada lado no momento. Os valores devolvidos pelo firmware indicam o tipo da peça e a sua orientação física.
O driver também introduz o atributo eject, criado para solicitar ao firmware a liberação das travas dos controles por software. No entanto, o hid-ayaneo não realiza esse trabalho sozinho. A solicitação enviada por esse novo driver negocia a liberação com o firmware, mas a ejeção física e segura exige que a alimentação elétrica dos controles seja cortada.
Esse desligamento elétrico é responsabilidade de outro componente: o atributo controller_power do driver ayaneo-ec. Portanto, o processo de ejeção completa não ocorre por um único “botão mágico” no nível do kernel. Caberá aos aplicativos em espaço de usuário coordenar as duas pontas, avisando o firmware e cortando a energia logo em seguida.
Vibração configurável e integração RGB
Além da mecânica de encaixe, o patch adiciona suporte para a personalização de respostas táteis e visuais. O atributo rumble_intensity permite selecionar a força da vibração em quatro níveis: desligado, baixo, médio (o padrão do firmware) e alto.
Na parte visual, o driver registra os anéis luminosos dos joysticks como um dispositivo na infraestrutura multicolor LED do kernel, sob o identificador rgb:joystick_rings. Os efeitos suportados pelo hardware incluem o modo monocromático, o efeito de pulsação (breathe) e o modo arco-íris, além do controle de brilho. A alternância de cores do modo arco-íris segue um ritmo determinado pelo próprio firmware do console, o que limita a personalização detalhada de transições individuais.
Ao utilizar a infraestrutura padrão de LEDs do Linux, o recurso fica visível para gerenciadores de dispositivos. O autor do patch mencionou a estrutura de nomenclatura com foco na compatibilidade com serviços como o InputPlumber, um daemon focado em mapeamento de controles para o sistema operacional.
Correção de falha no tempo de espera da ejeção
A publicação da sexta revisão do patch (v6) incorporou correções importantes apontadas durante a revisão de código conduzida por Ilpo Järvinen. A mudança mais sensível ocorreu na rotina eject_store().
Na implementação anterior, o driver realizava duas leituras separadas do contador de tempo do kernel, conhecido como jiffies, para calcular o intervalo necessário para a operação de ejeção. Se o tempo limite expirasse entre essas duas leituras, a subtração dos valores poderia causar um sobrefunxo (underflow), resultando em um cálculo distorcido que faria o sistema aguardar de forma incorreta por um período massivo de tempo. A nova versão corrige a matemática utilizando uma única leitura de verificação.
Qual a diferença entre os drivers hid-ayaneo e ayaneo-ec?
A cobertura das atualizações do kernel pode gerar dúvidas sobre a redundância de componentes para a mesma fabricante. Em dezembro de 2025, a versão 6.19 do kernel introduziu o suporte ao driver ayaneo-ec
.
Os dois trabalhos possuem funções diferentes e complementares. O ayaneo-ec lida com o controlador embarcado (Embedded Controller) da placa-mãe, gerenciando informações gerais sobre os módulos e o fornecimento de energia (incluindo o já citado desligamento elétrico dos controles). Já o novo hid-ayaneo foca na comunicação de dados USB da interface HID proprietária, traduzindo comandos de iluminação, vibração e atuadores de ejeção.
Testes em hardware real e próximos passos
Matías Martínez relatou ter recompilado e executado testes do novo driver no Linux 7.3.3 utilizando um AYANEO 3 físico. Os testes abrangeram a identificação dos módulos, modificações de efeitos de luz, seleção de vibração, funcionamento regular dos botões, ejeção e reconexão dos controles.
Apesar dos resultados positivos descritos, uma questão menor de usabilidade técnica ainda está em aberto. A rotina final de desligamento ou desconexão do dispositivo pode gerar mensagens de erro benignas (-ENODEV) no log do sistema ao tentar apagar os LEDs de um controle recém-removido. O desenvolvedor sinalizou que essa condição poderá ser tratada em refinamentos futuros utilizando a flag LED_HW_PLUGGABLE.
O envio da versão v6 reforça o amadurecimento do código, mas o driver permanece em processo de revisão técnica na lista de discussão linux-input. Até o momento, o patch ainda não foi oficialmente incorporado (mergeado) em uma árvore estável do kernel Linux.
Entenda sem termos técnicos: por que um console precisa de drivers específicos?
Quando você conecta um controle genérico no computador, o Linux geralmente utiliza um padrão universal para entender comandos básicos de botões e direcionais. É por isso que muitos consoles portáteis conseguem rodar jogos logo que saem da caixa, mesmo sem drivers avançados instalados.
No entanto, consoles modernos como o AYANEO 3 possuem hardwares muito mais complexos que um joystick comum. Funções como alterar as cores dos anéis de luz, ajustar o motor de vibração ou enviar um sinal elétrico para soltar um módulo destacável não fazem parte do padrão universal.
Para que o Linux entenda como acionar essas “peças extras”, desenvolvedores precisam criar pequenos programas tradutores (os drivers específicos). Assim, quando você abrir um aplicativo no sistema para mudar a luz do seu portátil para vermelho, o driver saberá exatamente qual código enviar para a placa eletrônica do console executar a sua ordem.