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

pzn*_*pzn 10 usb gpio beagleboneblack

我需要:

  • 关闭 - >睡几秒钟 - >打开beaglebone black的USB电源

能够硬件重置连接USB的设备(华为E220调制解调器)

已尝试软复位(使用unbind/bind和授权0/1),但软件复位不足以使设备再次正常工作; 该设备有一些奇怪的错误,这是由长时间使用(连接几天后)触发的.

使用/ sys/debug/omap_mux找到了很多答案,但是这个设备在新内核中不再存在.

由于这个问题花了两天时间才得到可行的答案,所以我决定在这里发布答案,这对其他人来说可能有用.

pzn*_*pzn 13

感谢我的朋友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
Run Code Online (Sandbox Code Playgroud)

"devmem2"命令负责直接访问beaglebone的GPIO3_13,它控制打开/关闭USB端口的IC.

"unbind/bind"命令负责告诉usb驱动程序在电源后"重新扫描"端口.

  • 这非常有用,感谢您解决这个问题.操作顺序似乎很关键,序列不是100%可靠.我有更好的运气,顺序是'unbind','bind',断电,开机.在我的例子中,它专门用于重置USB集线器和所有下游设备.可靠性可能与集线器本身有关,而不是您的序列. (3认同)
  • 那个地址(0x47401c60)来自哪里?我想明白 (3认同)
  • 这正是我所需要的!但是,`devmem2`不在apt中,因此install命令失败.我找到了这篇博文来获取已编译的二进制文件:https://scivision.co/devmem2-on-the-beaglebone-black/ (3认同)