Eu tenho um Linux (kernel 3.2.0) rodando em um pequeno dispositivo ARM (TI am335x) com BusyBox (1.20). O USB neste dispositivo está configurado como um periférico
.Neste dispositivo, quero avaliar o estado de um host USB possivelmente conectado, ou seja, quero detectar:
connected and active
not connected
/ connected and inactive
connected and inactive
significa que existe uma conexão via cabo USB, mas o host (por exemplo, um PC) está desligado.
Alterno entre dois módulos de gadgets USB ( g_ether
e g_mass_storage
) para fornecer um armazenamento em massa ou uma conexão de rede ao host.
Até agora, achei que o arquivo /proc/driver/musb_hdrc.0
mostra um estado adequado da conexão USB, por exemplo, uma linha parece:
OTG state: b_peripheral; active
se um dos gadgets estiver ativo e um host for connected and active
.
Se um dos gadgets USB estiver ativo e o host for not connected
ou connected and inactive
, a linha mostrará:
OTG state: UNDEFINED; inactive
No entanto, percebi que vejo a mesma linha se um host for connected and active
, mas nenhum módulo de gadget USB estiver carregado.
A saída de lsusb
não ajuda:
# lsusb
Bus 001 Device 001: ID 1d6b:0002
Eu tentei encontrar outros arquivos mostrando um "estado de host USB" adequado, mas não consegui até agora.
Eu posso modificar o kernel, e em algum lugar tem que haver um lugar onde o kernel detecta se um host ativo está conectado (porque o sistema detecta um host ativo e o conteúdo de /proc/driver/musb_hdrc.0
é alterado nesse caso). / p>
Eu tenho procurado no kernel, tentando abusar de alguns locais com o sinal USB VBUS, mas não consegui até agora.
Alguma idéia de como posso verificar isso?