Turning USB power on and off
On some routers, it is possible to turn USB power on and off using GPIO, like this:
On:
echo 1 > /sys/class/gpio/gpioN/value
Off:
echo 0 > /sys/class/gpio/gpioN/value
Get current state:
cat /sys/class/gpio/gpioN/value
Here, N
should be replaced with pin number, which depends on router model. Here are some known pin numbers:
Model | Pin number(s) |
---|---|
TP-Link TL-WR703N | 8 |
TP-Link TL-WR842ND | 6 (v1), 4 (v2) |
TP-Link TL-WDR3600 | 21, 22 |
TP-Link TL-WDR4300 | 21, 22 |
TP-Link TL-WR1043ND | 21 (v2), 8 (v3, v4) |
TP-Link Archer C2600 V1.1 | 23, 25 |
Astoria networks ARV7510PW22 | 8 |
If your model is not listed, you may try to find N
by trial and error. For some N
, the directory /sys/class/gpio/gpioN
might not exist, in this case it can be created like this:
echo N > /sys/class/gpio/export
You may also look at this forum thread.
Some routers might have difficulties providing full USB power output.
On a TP-Link Archer A7 v5 running OpenWRT 19.07, the USB power can be switched by echoing 1 or 0 to /sys/class/gpio/tp-link:power:usb/value
. This may be true of other models as well. Run ls -al /sys/class/gpio/
to check for the existence of a similar predefined symbolic link on your router.
On D-Link DIR-645 running OpenWrt 21.2.1 the USB power can be switched off using echo 0 > /sys/class/gpio/usb/value