Desligue/ligue o USB com o kernel BeagleBone Black >= 3.8
-
21-12-2019 - |
Pergunta
Preciso:
- desligue -> durma alguns segundos -> ligue a alimentação USB do beaglebone black
para poder redefinir o hardware de um dispositivo conectado ao USB (Modem Huawei E220)
Já tentei reinicialização suave (com desvinculação/ligação e autorização 0/1), mas a reinicialização do software não é suficiente para fazer o dispositivo funcionar bem novamente;o dispositivo tem um bug estranho, que é acionado por um uso prolongado (depois de alguns dias conectado).
Muitas respostas foram encontradas usando /sys/debug/omap_mux, mas este dispositivo não existe mais em novos kernels.
Como esta pergunta demorou alguns dias para obter uma resposta viável, decidi postá-la aqui, com a resposta, para que possa ser útil para outras pessoas.
Solução
Obrigado ao meu amigo Cleiton Bueno http://cleitonbueno.wordpress.com/ que encontrou esta solução para mim:
pré-requisitos:
- apt-get instalar devmem2
Código que resolveu o problema:
devmem2 0x47401c60 b 0x00
sleep 1
echo "usb1" > /sys/bus/usb/drivers/usb/unbind
sleep 20
echo "usb1" > /sys/bus/usb/drivers/usb/bind
sleep 1
devmem2 0x47401c60 b 0x01
O comando "devmem2" é responsável por acessar diretamente o GPIO3_13 do beaglebone, que controla o IC que liga/desliga a porta USB.
Os comandos "unbind/bind" são responsáveis por informar ao driver USB para "rescanear" a porta após a alimentação.