Питание USB и ethernet портов

я думаю, что лучше всего отключать порты программно. Это можно сделать, например, через devicetree и механизм изменения его в рантайме, который есть в Wiren Board.
Работает это так:

  1. Создаёте файл devicetree-оверлея
root@wirenboard-AMZF3H42:~# cat usb-disable.dtso 
/ {
	fragment_usb1_off {
		target = <&usbotg1>;
		__overlay__ {
			status = "disabled";
		};
	};
};
  1. Применяете оверлей, чтобы отключить порт
wb-hwconf-helper load-overlay usb-disable.dtso
  1. Отменяете оверлей, чтобы включить порт обратно
wb-hwconf-helper unload-overlay usb-disable.dtso

Метки устройств (как usbotg1) брать отсюда: https://github.com/contactless/linux/blob/dev/v4.9.x/arch/arm/boot/dts/imx6ul-wirenboard61.dts и далее отсюда https://github.com/contactless/linux/blob/dev/v4.9.x/arch/arm/boot/dts/imx6ull.dtsi

также их можно найти в sysfs и в /proc/device-tree на запущенной системе

1 лайк