Detecta o estado da conexão do host USB para o dispositivo periférico

0

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:

  • se o host é connected and active
  • ou 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?

    
por radix 09.12.2016 / 17:15

0 respostas

Tags