Китайский watchdog (сторожевой таймер) для майнинг фермы, настраиваем в Linux на примере HiveOS
Для небольшой фермы на 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 (сторожевой таймер), и еще разные варианты сторожевых таймеров
7 комментариев
Гениально!
04.06.2018
Подскажите какую команду надо послать на com порт для нажатия кнопки питания?
12.09.2018
на этом устройстве нет нажатия кнопки питания. есть два варианта:
1. нажатие кнопки ресет (происходит по истечении таймера времени)
2. нажатие и удержание кнопки питание (принудительный ресет)
22.02.2019
А в какой файл записать установку таймера printf ‘\x1E\x00’>/dev/hidraw0 ? Чтобы при старте системы, он выставлялся автоматически.
По умолчанию там вроде две минуты таймер стоит.
22.10.2018
/etc/cron.d/watchdog
02.07.2020
Здравствуйте!
все сделал как написано но увы в логах такая ошибка
cron[1073]: (*system*watchdog) WRONG FILE OWNER (/etc/cron.d/watchdog)
не могу понять новичок в Ubuntu
19.01.2020
Проверить права на файл. И какому пользователю принадлежит файл.
02.07.2020