首页 > 解决方案 > 使用 GPIO3_13 (GPIO109) 禁用 USB VBUS

问题描述

我找到了dev-USB-PWR-CTL-00A1.dtbo文件。(我认为这是它的源代码)。

使用此文件,我尝试使用以下命令将 USB1_DRVVBUS 引脚公开为 GPIO (GPIO3_13):

echo dev-USB-PWR-CTL > /sys/devices/platform/bone_capemgr/slots
echo 109 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio109/direction

我看到新的 Cape 条目slots和新的gpio文件树。

但是当我用命令改变值时

echo 0 > /sys/class/gpio/gpio109/value

我在此文件中看到了新值,但 USB VBUS 没有任何反应。

我错过了什么?

(在你问我真的需要这个之前:让我们暂时把后果放在一边。)

标签: beagleboneblack

解决方案


如果您使用的是最近的 elinux.org Debian 映像(必要的设备树覆盖已于 2015 年 6 月合并),它包含一个设备树覆盖(带有注释“除非您知道自己在做什么,否则不要加载此披风!! !”)。这使用 hack 将usb1_drvvbus信号公开为虚构的 LED,然后可以使用/sys.

首先,加载 dev-USB-PWR-CTL-00A1.dtbo 设备树覆盖。对于最近的设置(所有 dtbo 都由 uboot 加载,然后在引导时传递给内核),这可以通过添加和重新启动dtb_overlay=/lib/firmware/dev-USB-PWR-CTL-00A1.dtbo来完成/boot/uEnv.txt(旧的内核/uboot 将需要使用旧的配置机制,如 中所述/boot/uEnv.txt)。

然后你可以这样做:

echo 'usb1' > /sys/bus/usb/drivers/usb/unbind
echo 0 > /sys/devices/platform/leds/leds/usb_hub_power/brightness
sleep 1
echo 255 > /sys/devices/platform/leds/leds/usb_hub_power/brightness
echo 'usb1' > /sys/bus/usb/drivers/usb/bind

... 重启连接到 USB1 的设备。


推荐阅读