使用BeagleBone Black内核>=3.8关闭/开启USB电源

11
我需要做以下操作才能对连接到 USB(Huawei E220 Modem)的设备进行硬件重置:
  • 关闭USB电源 -> 等待数秒钟 -> 打开 Beaglebone Black 的USB电源
已尝试软件重置(使用unbind/bind和authorize 0/1),但是软件重置并不足以使设备重新正常工作。该设备存在一些奇怪的错误,长时间使用后会触发这些错误(连接几天后)。
许多答案都是在/sys/debug/omap_mux中找到的,但是在新内核中没有这个设备了。
由于这个问题花费了几天时间才得到可行的答案,我决定在这里发布问题和答案,以便其他人可以受益。
1个回答

14

感谢我的朋友Cleiton Bueno http://cleitonbueno.wordpress.com/为我找到了这个解决方案:

先决条件:

  • apt-get install devmem2

解决问题的代码:

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

"devmem2"命令负责直接访问Beaglebone的GPIO3_13引脚,该引脚控制着开关USB端口的IC。

"解绑/绑定"命令负责在电源开启后告诉USB驱动程序重新扫描端口。


3
这非常有用,感谢你找出来。操作顺序似乎很重要,而且顺序并不完全可靠。我尝试了“解绑”、“绑定”、“关机”、“开机”的顺序,这个顺序表现更好。在我的情况下,这是为了重置一个USB集线器和所有下游设备。可靠性可能与集线器本身有关,而不是你在这里提供的顺序。 - giles
3
那个地址(0x47401c60)是从哪里来的?我想要理解。 - Davide Berra
1
@DavideBerra 这不是你问题的完整答案,但我找到了一些关于魔术值0x47401c60的信息。请看我在这个问题的回答中写的内容:https://dev59.com/OJbfa4cB1Zd3GeqPzNTQ - Stéphane
3
这正是我所需要的!但是,apt中没有devmem2,因此安装命令失败了。我找到了这篇博客文章,以获取已编译的二进制文件:https://scivision.co/devmem2-on-the-beaglebone-black/ - BoomShadow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接