Bom, eu uso Windows apenas para jogar, mas não creio que seja necessário esse S.O. para fazer o que deseja, no artigo acima, o autor desenvolve o driver por tentativa e erro, ou seja… É possível que o dispositivo fique enviando sinais para o host, esses sinais só não são tratados porque não há um driver/software fazendo o tratamento desses dados.
O primeiro código desse artigo, o que o autor faz é justamento conectar na porta e ficar escutando, uma espécie de sniffer bem remoto:
#!/usr/bin/env python
import sys
pipe = open('/dev/input/by-id/usb-Logitech_Logitech_Dual_Action-event-joystick', 'r')
action = []
while 1:
for character in pipe.read(1):
action += ['%02X' % ord(character)]
if len(action) == 8:
print action
action = []
O que ele faz é gerar uma lista com os comandos que são gerados a cada iteração com o joypad. Se ele aperta um botão, os comandos gerados são arquivados na lista “action” no formato de até 2 números hexadecimais considerando 0 e divide os blocos de comandos em lista de até 8 elementos, por isso a saída fica:
['B2', 'DD', 'E0', '4E', 'CF', 'DF', '0B', '00']
['04', '00', '04', '00', '01', '00', '09', '00']
['B2', 'DD', 'E0', '4E', 'D2', 'DF', '0B', '00']
['01', '00', '20', '01', '01', '00', '00', '00']
['B2', 'DD', 'E0', '4E', 'B4', 'E0', '0B', '00']
['00', '00', '00', '00', '00', '00', '00', '00']
Depois disso, ele apenas troca os dados de comandos por informação:
# ./game.py
Pressed Button 01
Released Button 01
Pressed Button 02
Released Button 02
Pressed Button 01
Pressed Button 02
Released Button 01
Released Button 02
Pressed Button 08
Released Button 08
Pressed Button 07
Released Button 07
Pressed Button 06
Released Button 06
Pressed Button 05
Released Button 05
A conclusão que chego é que é possível fazer a captação de dados sem a necessidade do software oficial, se assim fosse, era melhor desmontar o software e ver logo o que ocorre nele diretamente.
Por exemplo, deixe o No-break ligado na tomada e deixe um script escutando na porta USB, então retire o No-break da tomada e veja se algum comando foi enviado para a porta, esse comando seria, o “Battery Mode”, por exemplo… Ao reconectar na tomada, um outro comando é enviado? Há botões que podem ser pressionados para configuração? quais os comandos são enviados quando eles são pressionados? Quando ele está na bateria, fica enviando dados periodicamente? O que se pode interpretar desses dados? Percentual, nível ou algo assim? Esse seria um método bem bruto de fazer o detalhamento do comportamento do dispositivo.
Dei uma pesquisada também se alguém já não havia resolvido o problema com o Kernel do Linux e achei uma solução com FreeNAS: http://forums.freenas.org/index.php?threads/nobreak-bz1200-br-back-ups-rs-1200va-600w-bivolt-115-nt.20247/
Os dados que o cara encontrou na reversão dele, podem acabar sendo úteis para o MAC.