Управление электропитанием с помощью USB-реле
После некоторых поисков остались такие варианты:
- JTAG-кабель (например JTAG Olimex) имеет возможность послать сигнал перезагрузки. Из минусов: кабель может быть дорогой и не все устройства имеют JTAG разъем. Больше информации.
- “Пилот” с управлением по USB (Defender DFS-701), похоже что не продается
- EG-PMS2-LAN, управление питанием по сети, не продается (купить)
- реле для управления питанием, я нашёл такие варианты:
USBготовое реле: RODOS-3b, MP709 - USB РЕЛЕ, USB - РЕЛЕ 1.0, MP515, USB-релеUSBfirmware, купить релеUSBсобрать самому на базе ATTiny схемаEthernetEthernet-релеEthernetDIN Relay IV
- управление питанием маломощных устройств, которые могут получать питание по USB, с помощью uhubctl. Минусы: USB максимум 5V может отдать, у нас в устройствах бывает больше 5V и хотелось всё-таки иметь возможность управлять питанием обычных настольных компьютеров.
- серия устройств NetPing. Минусы: дорого и наличие сети усложняет инфраструктуру.
Инструкция
Я остановился на RODOS-3b. Для сборки купил
корпус, вилку и
розетку 2П+З 16А 250В на кабель,
кусок провода ШВВП 2.0 x 5. После
сборки получился удлинитель с реле. Провод к реле подключал в разъёмы N.O и
COM (см. инструкцию),
чтобы большую часть времени реле было разомкнуто. В идеале хотелось бы встроить
реле в розетку, наподобие
такой, но нет гарантии, что
места внутри под реле хватит, поэтому нашел коробку в форме параллелипипеда и
упаковал реле в него.

Подключаем устройство по USB и проверяем, что оно появилось в системе:
$ lsusb
...
Bus 001 Device 017: ID 20a0:4173 Clay Logic
...
$
Выполняем поиск устройства с помощью управляющей программы:
$ sudo ./RODOS3
Поиск устройств...
RODOS-3 ID: 7621
Найдено RODOS-3: 1
$
По умолчанию, для доступа к USB устройству нужны права суперпользователя. Чтобы
избежать этого нужно создать файл с правилом для udev:
$ cat /etc/udev/rules.d/60-rodos3.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="4173", MODE="0666"
Перезагрузить правила:
$ udevadm control --reload-rules
И физически переподключить устройство. После этого можно управлять устройством под обычным пользователем.
По умолчанию программа от производителя может делать только ON и OFF для
устройства. Поэтому в моей версии есть небольшой патч, который добавляет опцию
--reset.
На плате iMX.6 при перезагрузке с помощью кабеля питания не происходит правильной
реинициализации сетевой карты, U-boot пишет: No ethernet found..
Чтобы этого избежать можно добавить в bootcmd команду reset:
=> printenv
...
bootcmd=tftp Komset/kos-image; bootelf 0x12000000; reset
...
=> setenv bootcmd 'tftp Komset/kos-image; bootelf 0x12000000; reset'
=> saveenv
На тему управления питанием есть два интересных доклада: