я думаю, что лучше всего отключать порты программно. Это можно сделать, например, через devicetree и механизм изменения его в рантайме, который есть в Wiren Board.
Работает это так:
- Создаёте файл devicetree-оверлея
root@wirenboard-AMZF3H42:~# cat usb-disable.dtso
/ {
fragment_usb1_off {
target = <&usbotg1>;
__overlay__ {
status = "disabled";
};
};
};
- Применяете оверлей, чтобы отключить порт
wb-hwconf-helper load-overlay usb-disable.dtso
- Отменяете оверлей, чтобы включить порт обратно
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 на запущенной системе