Um novo patch submetido para a lista de discussão do Kernel Linux propõe a adição de suporte para o controle de iluminação RGB em cases externos para SSDs NVMe da linha Republic of Gamers (ROG), da Asus. O código, enviado pelo desenvolvedor Liang Haowen na forma de um Request for Comments (RFC), tem como alvo principal o modelo ROG STRIX Arion.
O que torna o driver particularmente interessante do ponto de vista da engenharia é o método utilizado pela fabricante para gerenciar os LEDs: em vez de adotar uma interface USB tradicional para periféricos, a iluminação é controlada por meio de comandos de armazenamento SCSI enviados diretamente ao controlador do disco.
Como o RGB funciona dentro de um protocolo de armazenamento
Geralmente, dispositivos com iluminação RGB conectados via USB utilizam a classe HID (Human Interface Device) para receber instruções do sistema operacional sobre quais cores e efeitos exibir. No entanto, o ROG STRIX Arion se apresenta ao sistema puramente como um dispositivo de armazenamento em massa (BOT e UAS), sem nenhuma interface HID exposta.

Para contornar essa arquitetura, os comandos da iluminação Aura RGB precisam ser empacotados como operações de disco. Os LEDs são gerenciados por um controlador da ENE Technology, que é acessado através de comandos SCSI proprietários enviados para a mesma unidade lógica (LUN) onde os dados do SSD trafegam.
Na prática, o driver desenvolvido por Haowen registra um manipulador de dispositivo SCSI que identifica o hardware pelas strings de fábrica (fabricante “ROG”, modelo “ESD-S1C”). Após o reconhecimento, o sistema expõe os quatro LEDs independentes do case no diretório /sys/class/leds, permitindo o controle individual de cada zona de iluminação.
O desafio técnico e as limitações do kernel
Durante o desenvolvimento, o autor do patch encontrou uma limitação na forma como o subsistema SCSI do Kernel Linux lida com comandos proprietários. O protocolo da ENE exige um bloco descritor de comando (CDB) de 16 bytes. No entanto, a função padrão do kernel usada para executar esses comandos (scsi_execute_cmd()) mapeia o código de operação da Asus para apenas 10 bytes, descartando silenciosamente o restante da instrução e resultando em falha na mudança de cor.
A solução encontrada foi contornar a função padrão e construir a requisição de bloco manualmente, forçando o tamanho correto de 16 bytes. Essa descoberta técnica foi documentada no patch para alertar outros desenvolvedores que tentarem implementar instruções SCSI proprietárias semelhantes no futuro.
Alerta de integridade: risco de desgaste na memória flash
Embora o código já seja funcional em hardware real, a submissão traz um alerta crítico sobre o comportamento do controlador.
Atualmente, para que uma nova configuração de cor seja aplicada com sucesso, o driver precisa emitir um comando de “Salvar” (código 0xaa). O problema é que esse comando grava a configuração diretamente na memória flash interna do próprio case (não no SSD NVMe armazenado nele).
Como memórias flash possuem um limite físico de ciclos de gravação, o autor adverte que o desgaste ainda não foi devidamente caracterizado. Em termos práticos, isso significa que usar softwares para sincronizar efeitos dinâmicos rápidos — como ondas de arco-íris ou reatividade a áudio, que alteram as cores dezenas de vezes por segundo — pode esgotar a vida útil da memória do case e danificar permanentemente seu controlador de iluminação.
Próximos passos e integração
Por se tratar de um RFC, o código ainda não está pronto para ser integrado à ramificação principal (mainline) do Kernel Linux. A proposta atual faz parte de um esforço maior, coordenado com outros desenvolvedores como Denis Benato e Armin Wolf, para unificar a interface do ecossistema Asus Aura no Linux.
A arquitetura final planejada dividirá as responsabilidades: o transporte SCSI ficará no diretório de drivers apropriado (drivers/scsi), enquanto o controle visual ficará com o subsistema de LEDs (drivers/leds). Até que essas discussões e revisões de código sejam concluídas e o problema de desgaste da flash seja mitigado, o suporte nativo e estável aos cases RGB da Asus ainda levará algum tempo para chegar aos usuários finais.
