Микропроцессоры и электроника для начинающих

Китайский watchdog (сторожевой таймер) для майнинг фермы, настраиваем в Linux на примере HiveOS

Китайский watchdog (сторожевой таймер) для майнинг фермы, настраиваем в Linux на примере HiveOS

25.04.2018 в Майнинг, Софт | 2 коммент.

Для небольшой фермы на windows 10 был куплен китайский watchdog (сторожевой таймер), все хорошо и софт какой-то с ним идет для Windows. Вроде все работает, но захотелось попробывать HiveOS, которая вроде как умеет и с watchdog-ми работать, но к сожалению именно это вариант HiveOS не узнает и не хочет работать с ним.
Интернет по этому поводу тоже молчит :-(. Хотел «смириться и простить», но подлый внутренний голос не давал покоя… Как позже оказалось — не зря.

Первым делом выяснил, как watchdog определяется в системе: система его видит как HID устройство (вообще я ожидал увидеть COM порт). Ну ладно так тоже пойдет.

USB HID (human interface device) class — класс устройств USB для взаимодействия с человеком. Этот класс включает в себя такие устройства как клавиатура, мышь, игровой контроллер.

И программы для Windows стало понятно, что устройство понимает две команды: принудительный Reset и сброс отчета таймера, причем время срабатывания таймера можно указывать от 10 секунд. Забегая вперед скажу, программа для Windows работает некорректно, она прибавляет 2 минуты к указанному в программе значению. То есть вы указываете 10 секунд, а таймер сработает через 130 секунд.

Для того чтобы сбросить таймер нужно на устройство послать два байта: 0xXX 0x00,где XX — количество секунд кратное 10, (0x01 — 10 секунд, 0x10 — 160 секунд).
Для того чтобы сделать принудительный Reset нужно на устройство послать два байта: 0xFF 0x55

Как он работает понятно, будем настраивать HiveOS (всё описанное будет работать в любой версии Linux, возможно с некоторыми изменениями).
Для начало посмотрим список USB устройств:

#lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 5131:2007
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

ID 5131:2007 — это watchdog.

Далее ищем его в устройствах:

#ls /dev/hid*
/dev/hidraw0

У меня оказалось только одно, если у вас их несколько можете выполнить эту команду с отключенным и подключенным watchdog-ом или еще вариант

#journalctl -b | grep 5131:2007
Apr 25 10:32:47 h01 kernel: hid-generic 0003:5131:2007.0001: hiddev0,hidraw0: USB HID v1.00 Device [HID 5131:2007] on usb-0000:00:14.0-8/input0

Для отправки на устройство последовательности байтов будем использовать команду printf:

#Сброс таймера и установка следующего срабатывания через 5 минут или 300 секунд (0x1E=30, 30*10=300)
printf '\x1E\x00'>/dev/hidraw0
#Принудительный Reset
printf '\xFF\x55'>/dev/hidraw0

Осталось совсем чуть-чуть, настроить задачу сброса таймера. Один раз в минут будем отправлять команду сброса таймера. Для этого в папке ‘/etc/cron.d/’ создаем файл ‘watchdog’ с следующим текстом:

#cat /etc/cron.d/watchdog
*/1 * * * * root printf '\x1E\x00' >/dev/hidraw0

Ссылка на watchdog который у меня Купить watchdog (сторожевой таймер), и еще разные варианты сторожевых таймеров

    2 комментария

  1. Подскажите какую команду надо послать на com порт для нажатия кнопки питания?

    Nick

    12.09.2018

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *