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