Пошаговая инструкция
Как установить, запустить и настроить USB WatchDog Pro2 и
USB WatchDog Lite, выпускаемых после 2018 года.
Пополняемая инструкция.
Мы сделали всё, чтобы USB WatchDog был одновременно гибким в работе и при этом простым в установке.

Данная инструкция ориентирована на пользователей
USB WatchDog Pro2 и Lite версий с 2018 года.

Большинство примеров будет показано на базе версии Pro2, так как Lite отличается только количеством каналов и упрощённым функционалом.
Содержание
Подробная инструкция с картинками
Установка USB WatchDog
1. Перед установкой необходимо выключить ПК.
2. Так как устройство бескорпусное, будьте с ним предельно острожны - не допускайте касания металлических поверхностей. Это может привести к порче устройства (пример)!
3. Провода Reset и Power необходимо подключить вместо кнопок от системного блока.
4. Как подключать PBD10

Для при установке устройства в материнскую плату убедитесь, что вы подключаете именно к разъему USB. Некоторые интерфейсы (например ieee1394 или COM-порт) имеют на плате такие же 10-выводные разъемы.

Подключение к интерфейсу, отличному от USB, приведет к порче устройства
(возможно, с дымом и запахом)!


  • На Pro2 c PBD10 разъемом на плате имеется точка. При подключении к материнской плате ПК она должна быть совмещена со стороной разъема где отсутствует 1 металлический контакт.
  • На Lite c PBD10 разъемом на плате имеется стрелка. При подключении к материнской плате ПК она должна быть совмещена со стороной разъема где отсутствует 1 металлический контакт.
5. Сами кнопки можно подключить к сторожевому таймеру, чтобы ими тоже можно было пользоваться.
WatchDog Pro2 PBD10
Осн.1 и Доп.1. - параллельно соединённые контакты канала 1. По-умолчанию, подключаются к контактам Reset: например, Осн.1 - на reset мат.платы и Доп.1 - на кнопку reset.
Осн.2 и Доп.2. - параллельно соединённые контакты канала 2. По-умолчанию, подключаются к контактам Power: например, Осн.2 - на power мат.платы и Доп.2-
на кнопку power.
WatchDog Lite
Для USB WatchDog Lite:
Кан. 1 - канал для подключения управляемого устройства. Например, RESET сигнал на материнской плате ПК или модема.
Кан. 2 - параллельный канал для подключения ручного управления. Например, кнопки RESET системного блока.
Пример подключения к материнской плате
USB WatchDog
6. При первом включении устройство находится в режиме ожидания, что сигнализируется поочерёдным миганием светодиодов.
Первая команда от управляющей команды или скрипта переведёт устройство в рабочий режим.
HiveOS, RaveOS, NiceHash
Eсли вы используете HiveOS, то устанавливать ПО не требуется.
Поддержка USB WatchDog уже реализована разработчиками Hive OS.
Более подробно с возможностями можно ознакомиться на сайте ОС.

RaveOS, NiceHash по нашим сведениям также имеют встроенное ПО для работы, но у нас нет подробной информации об этом. За подробностями, лучше обращаться в ТП данных дистрибутивов.
Установка ПО
WatchDog имеет сразу два USB интерфейса:
USB HID - для тех, кто хочет простой установки (драйвер не требуется, минималистичная программа).
USB CDC - для тех, кто хочет иметь больший контроль и гибкость работы или использовать скрипты.

Программа wdtmon3-mini работает с интерфейсом USB HID.
Программа wdtmon3 работает с интерфейсом USB CDC.
Программа wdtmon4 работает с интерфейсом USB CDC.

Устанавливать нужно только одну из этих программ.
wdtmon3-mini
Простая программа с широкими возможностями.
Работает с интерфейсом USB-HID.
Почитать подробнее
Скачать Win/Linux/macOS
wdtmon3
Программа, которая работает с USB WatchDog и позволяет:
1. Изменять настройки USB WatchDog;
2. Управлять каналами вручную;
3. Смотреть информацию об устройстве;
4. Следить за доступностью интернета;
5. Следить за процессом.

Скачать Win/Linux/macOS
Страница подробной инструкции по программе доступна по ссылке.
Перед работой с wdtmon3, возможно, понадобится установить драйвер.
Драйвер
Работа в ОС ниже Windows7 не поддерживается.
В Windows7 понадобится установить драйвер CDC.
В Windows 8, Windows 10, Linux, macOS установка драйвера не требуется.
Если в Windows8 не заработал системный драйвер CDC, воспользуйтесь инструкцией.

Драйвер установлен, можно работать с программой
Основные элементы главного окна
1. Выбор порта.
2. Галочка для включения режима "контроль узла": программа будет "пинговать" адрес и, если, ответа нет - производить перезагрузку.
3. Галочка для включения режима контроля за процессом: если данный процесс в системе пропал или завис - перезагрузка. Процесс можно вписать вручную или выбрать из списка.
4. Ручной режим управления: для тех, кто знает, что делает - ручное изменение состояний USB WatchDog.
Страница изменения настроек нажатий и пауз - для экзотических мат. плат, у которых настройки по-умолчанию не срабатывают.
Тут же можно отключить один из каналов или перевести его в ручной режим.
Можно установить порог температуры (нужен доп. термодатчик), при котором сторожевой таймер будет выключать ПК.

Изменение настроек работы самой программы. Можно отсюда добавить программу в автозагрузку, перейти в режим программной отрисовки (если есть проблемы с видеодрайверами), включить ведение логов и включить режим совместимости с устройствами 2016 года выпуска.

wdtmon4
Новая программа, сочетающая в себе функционал программ wdtmon3,
wdtmon3-mini и UnitX Gateway
Версия экспериментальная!
Работает с интерфейсом USB-CDC.
Почитать подробнее
Автозапуск материнской платы после подачи питания

После настройки сторожевого таймера необходимо зайти в настройки БИОСа материнской платы и включить там две опции:
1. "Включение компьютера после подачи питания" (доступна ли эта опция и как она называется зависит от конкретной модели мат. платы - эта информация должна быть в инструкции к мат. плате).

2. Подача питания на порты USB при выключенном компьютере (опять же - обратитесь к инструкции к мат. плате). Например, для мат. платы Asus Z370-P необходимо включить в BIOS опцию "USB Charger in state S5". Возможно питание будет подаваться не на все USB порты - необходимо подключить WatchDog к тому порту, на который подается питание. Проверить это можно подключив вачдог (или например мышь со световой индикацией питания) к порту на выключенном компьютере. WatchDog Pro2 должен через какое-то время замигать красным.

Тогда после потери электропитания компьютер включится сам (если настроена опция 1.). Если опция 1 по какой-то причине не сработала, вачдог через определенное время (два раза по T1 - см. инструкцию к устройству) запустит систему (при условии что настроена опция 2).

Обратите внимание, что WatchDog Pro2 запустит систему не сразу, а через время 2*T1.

Если на вашей материнской плате питание на USB не включается, то вам поможет "источник бесперебойного питания для WatchDog Pro2" USB PS.

Скрипты и примеры
Можно не устанавливать каких-либо программ, а просто добавить в автозагрузку BAT или BASH файл
Минимальный скрипт (bat) для Windows
Скрипт подает раз в секунду команду на порт COM12 - сообщает устройству, что пк не завис.
@echo off
SET portname=COM12
:loop
set /p x="~U" <nul >\\.\%portname%
ping -n 2 127.0.0.1 > nul
goto loop
Минимальный скрипт (bash) для Linux
Скрипт подает раз в секунду команду на порт /dev/ttyACM0- сообщает устройству, что пк не завис.
#!/bin/bash
PORT=/dev/ttyACM0
while true
do
 echo -n "~U" > $PORT
 sleep 1
done
Скрипт (bat) для проверки сети в Windows
Проверяет доступность узла, заданного параметром hostname.
Переменная portname задает порт устройства.
Командой ping -n 2 127.0.0.1 создается пауза, равная n-1 секунд.
@echo off
SET hostname=ya.ru
SET portname=COM12
:loop
  ping -n 1 -l 4 -w 1000 %hostname% >nul
  if %errorlevel%==0 set /p x="~U" <nul >\\.\%portname%
  ping -n 2 127.0.0.1 > nul
goto loop
Скрипт (bash) для проверки сети в Linux
Проверяет доступность узла, заданного параметром hostname.
Переменная portname задает порт устройства.
Командой ping -n 2 127.0.0.1 создается пауза, равная n-1 секунд.
#!/usr/bin/env bash
HOST="ya.ru"
PORT=/dev/ttyACM0
while true
do
    if ping -c 1 $HOST; then
    echo -n "~U" > $PORT
    fi
sleep 3
done
Скрипт (bash) для отслеживания процесса в Linux
По-умолчанию мониторит процесс, заданный переменной PROCESS,
можно запустить с параметром "имя процесса".
#!/usr/bin/env bash

PORT=/dev/ttyACM0
PROCESS=crond

if [ ! -z "$1" ];then
	PROCESS="$1"
	echo "Monitor $PROCESS"
fi

while true; do
	if pgrep "$PROCESS" > /dev/null; then
		echo -n "~U" > $PORT
	fi
	sleep 3
done
Скрипт (bash) для отслеживания процесса и сетевого соединения в Linux
По-умолчанию мониторит процесс, заданный переменной PROCESS и сетевой адрес, заданный параметром HOST.
Можно запустить с параметрами: -a <url> для смены ya.ru на <url>, -p <proc> для смены crond на <proc>
#!/usr/bin/env bash

PORT=/dev/ttyACM0
URL=ya.ru
PROCESS=crond

while getopts ":ha:p:" opt; do
	case ${opt} in
		a)
			URL=$OPTARG
			;;
		p)
			PROCESS=$OPTARG
			;;
		h)
			echo "Usage: $0 -a <url> -p <process>" 1>&2
			exit 1
			;;
		\?)
			echo "Invalid option: -$OPTARG" 1>&2
			exit 1
			;;
	esac
done

echo "Ping $URL"
echo "Monitor $PROCESS"

while true; do
	ping -n -c 1 -w 1 "$URL" 2>/dev/null 1>&2 && pgrep "$PROCESS" 2>/dev/null 1>&2 && echo -n "~U" > $PORT
	sleep 3
done
Скрипт-шаблон (bash) для реализации своего функционала отправки команд и анализа ответа в Linux
В примере можно легко поменять время ожидания, выполняемое действие и т.п.
#!/bin/bash

# Путь к последовательному порту (измените при необходимости)
SERIAL_PORT="/dev/ttyACM0"

BAUD_RATE="9600"

# Время ожидания ответа в секундах, после которого будет выполнено "действие"
N=30

# Команды для отправки и ожидаемого ответа
COMMAND="~U"
EXPECTED_RESPONSE="~A"

# ----------------------------
# Обработка сигналов для корректного завершения
# ----------------------------
cleanup() {
    echo "$(date +"%Y-%m-%d %H:%M:%S") - Завершение работы скрипта."
    exec 3<&-
    exit 0
}

# Установка ловушек на сигналы
trap cleanup SIGINT SIGTERM EXIT

# ----------------------------
# Функция инициализации последовательного порта
# ----------------------------
init_serial_port() {
    echo "$(date +"%Y-%m-%d %H:%M:%S") - Настройка последовательного порта $SERIAL_PORT с скоростью $BAUD_RATE."
    stty -F "$SERIAL_PORT" "$BAUD_RATE" cs8 -cstopb -parenb -ixon -ixoff -icanon -echo
    if [[ $? -ne 0 ]]; then
        echo "$(date +"%Y-%m-%d %H:%M:%S") - Не удалось настроить последовательный порт $SERIAL_PORT."
        exit 1
    fi
    # Открытие последовательного порта на FD 3
    exec 3< "$SERIAL_PORT"
}

# ----------------------------
# Функция действия при отсутствии ответа
# ----------------------------
action() {
    echo "$(date +"%Y-%m-%d %H:%M:%S") - Ответ не получен в течение $N секунд. Выполнение действия."
    # Здесь можно определить необходимое действие.
    # sudo shutdown -h now
}


# ----------------------------
# Функция основной логики
# ----------------------------
main() {
    # Инициализация времени последнего успешного ответа
    last_response_time=$(date +%s)

    while true; do
        # Отправка команды в последовательный порт
        echo -ne "$COMMAND" > "$SERIAL_PORT"
        echo "$(date +"%Y-%m-%d %H:%M:%S") - Отправлена команда: $COMMAND"

        # Переменная для хранения полученного ответа
        RESPONSE=""

        # Запуск таймера для ожидания ответа до 1 секунды
        RESPONSE_START_TIME=$(date +%s%N) # Текущее время в наносекундах

        while true; do
            # Текущее время
            CURRENT_TIME_NS=$(date +%s%N)
            ELAPSED_NS=$(( CURRENT_TIME_NS - RESPONSE_START_TIME ))

            # Проверка, прошло ли 1 секунда (1,000,000,000 наносекунд)
            if (( ELAPSED_NS >= 1000000000 )); then
                break
            fi

            # Чтение одного символа из последовательного порта с небольшим таймаутом через FD 3
            if read -r -n1 -t 0.1 CHAR <&3; then
                RESPONSE+="$CHAR"                
                # Проверка, содержит ли накопленный буфер ожидаемый ответ
                if [[ "$RESPONSE" == *"$EXPECTED_RESPONSE"* ]]; then
                    echo "$(date +"%Y-%m-%d %H:%M:%S") - Получен ожидаемый ответ: $EXPECTED_RESPONSE"
                    last_response_time=$(date +%s)
                    break
                fi

                # Ограничение размера буфера для предотвращения переполнения
                if (( ${#RESPONSE} > 10 )); then
                    RESPONSE="${RESPONSE: -10}"
                fi
            fi
        done

        # Проверка, прошло ли N секунд с последнего успешного ответа
        CURRENT_TIME=$(date +%s)
        ELAPSED=$(( CURRENT_TIME - last_response_time ))

        if (( ELAPSED >= N )); then
            action
            # После выполнения действия (например, выключение), скрипт завершится
            # Если действие не завершает скрипт, можно сбросить last_response_time здесь
            last_response_time=$(date +%s)
        else
            echo "$(date +"%Y-%m-%d %H:%M:%S") - Последний успешный ответ был $ELAPSED секунд назад."
        fi

        # Ожидание 1 секунды перед следующей отправкой команды
        sleep 1
    done
}

# ----------------------------
# Главная логика скрипта
# ----------------------------

# Проверка наличия прав на доступ к последовательному порту
if [[ ! -r "$SERIAL_PORT" || ! -w "$SERIAL_PORT" ]]; then
    echo "$(date +"%Y-%m-%d %H:%M:%S") - Нет прав на доступ к последовательному порту $SERIAL_PORT."
    exit 1
fi

# Инициализация последовательного порта
init_serial_port

echo "$(date +"%Y-%m-%d %H:%M:%S") - Скрипт запущен. Отправка команды '$COMMAND' каждые 1 секунду с ожиданием ответа '$EXPECTED_RESPONSE' в течение $N секунд."

# Запуск основной функции
main
Пример считывания температуры на Python3
Пример получения данных с термодатчика. Данный код демонстрационный и не предусматривает нештатных режимов работы.
from time import sleep
import serial

port = '/dev/tty.usbmodem14201'
ser = serial.Serial(port)
while True:
    ser.write(b'~G')
    ser_data = ser.readline()
    if ser_data:
        data = ser_data.decode("utf-8")
        if data.startswith('~G'):
            try:
                print('Temperature is {0}'.format(int(data[2:])/10))
            except ValueError: 
                print("Error")
    sleep(1)
После установки ПО
Как проверить, что всё работает как положено
1. После установки и настройки программного обеспечения на устройстве должен начать мигать зелёный светодиод - это означает, что устройство видит свою управляющую программу и находится в штатном режиме. Если устройство мигает красным - программа не запущена или не настроена.

2. В wdtmon3-mini и wdtmon3 есть кнопки для тестовой проверки работы перезагрузки пк.
Необходимо в ручном режиме убедиться, что провода reset и power подключены правильно. Для этого можно нажать кнопку "Reset"/"Перезагрузка" для тестирования канала "Reset" и (в серии Pro) "Power"/"Жёсткая перезагрузка" для тестирования канала "Power". Если после нажатия перезагрузки не произошло, нужно проверить, что подключение сделано верно или поменять полярность подключения проводов на каналах "Reset" и "Power" .
Подключение термодатчика
Контроль над температурой с помощью
USB WatchDog Pro2
Ко входу Вх/In USB WatchDog Pro2 можно подключить внешний термодатчик на базе DS18B20. Для этого к «-» входа подключаются объединённые контакты GND и VDD датчика DS18B20, а к «+» DQ датчика.

Входу в программе wdtmon3 (параметр IN channel) необходимо установить значение «Temperature».

При подключенном термодатчике можно периодически считывать данные о температуре командой ~G (см. таблицу 1 раздела «Продвинутое управление устройством»). Данные о температуре следует считывать не чаще, чем 1 раз в 3 секунды.

Автоматическая перезагрузка при превышении температуры

Если значение Temperature treshold (критический порог температуры) установить больше 0, то включается режим автоматического контроля за температурой.
В этом режиме USB WatchDog анализирует значение температуры каждые 3 секунды.

При превышении температуры выполняются те же действия, что и при переполнении таймера, которые определяются конфигурацией каналов. Например, возможна настройка автоматического перезапуска или выключения устройства при перегреве.
Подключение входного дискретного сигнала
Контроль открытия двери
К сторожевому таймеру можно подключить какой-либо дискретный сигнал: кнопку, геркон и т.п.

Для активации режима следует настроить вход на режим работы с внешним сигналом в программе wdtmon3.
Ко входу Вх/In USB WatchDog возможно подключение нормальнозамкнутого/нормальноразомкнутого концевого датчика согласно рисунку.
Значение данного входа можно программно считывать с помощью текстового протокола.

Следует помнить, что вход идет напрямую на процессор. Подача на этот вход сигналов напряжением выше 3.6В и ниже -0.6В приведет к порче процессора.

Контроль через Internet
Подключение к облачному сервису
Connect.UnitX - облачный минималистичный сервис для удалённого контроля сенсорных устройств.

Облачный сервис не является частью данного продукта, но может пригодиться, если нет другой возможности узнать о состоянии устройства через интернет.

Функционал, который возможно реализовать через облако:
  • История работы устройства.
  • Контроль температуры (для USB Watchdog Pro2 с термодатчиком).
  • Автоматические оповещения при перезагрузке или превышении температуры.

Подробная инструкция, как подключить USB WatchDog к Connect.UnitX всегда доступна по ссылке.

На графике мы видим сигналы "столбцы" от сторожевого таймера: это значит, что сторожевой таймер online и исправно отсылает свой статус.
Если произошла включение/перезагрузка - "столбец" будет вдвое выше.
Если компьютер выключен или нет сети - появится промежуток между столбцами, по которому можно будет понять, сколько не было работы.

Самые частые вопросы по использованию
USB WatchDog Pro2 и USB WatchDog Lite
У нашей техподдержки накопилась статистика по частым вопросам
Частые поломки и как проверить
Устройство подключено правильно, питание на USB есть, но устройство не работает.
  • 1
    Причина
    Наиболее частая причина - касание задней части устройства металлическим предметом, либо поверхностью. В результате происходит замыкание и порча устройства.
  • 2
    Как проверить
    Все самостоятельные измерения Вы проводите на свой страх и риск: если у вас нет подходящих навыков или инструментов - обратитесь в наш СЦ.

    Подключите устройство к USB-разъему и измерьте мультиметром напряжение - на прикладываемых рисунках показано правильное расположение положительного (красный) и отрицательного (черный) щупов мультиметра. Также под увеличением показано, куда прислонять положительный щуп (контакт обозначенный знаком "+").
    В процессе измерения будьте аккуратны, чтобы не замкнуть щупом какие-либо контакты, поскольку это также может привети к замыканию и порче устройства.

    Если мультиметр покажет меньше 4 вольт, значит произошло замыкание и устройство испорчено. Если около 5 вольт, питание устройства исправно и проблема может быть в другом.
  • 3
    Что делать
    Эта поломка исправляется в сервисном центре.
Устройство греется, светодиоды горят всё время.
  • 1
    Причина
    Наиболее частая причина - подключение устройства к интерфейсу, отличному от USB, например, к ieee1394 или COM-порту. В результате происходит подача напряжения выше допустимого и разрушение контроллера.
  • 2
    Как проверить
    Все самостоятельные измерения Вы проводите на свой страх и риск: если у вас нет подходящих навыков или инструментов - обратитесь в наш СЦ.

    Подключенное к USB-разъему устройство греется, возможно, постоянно горят светодиоды.
    На контроллере визуально определяются следы термического повреждения кристалла.
  • 3
    Что делать
    Это негарантийная поломка в результате неправильного использования (подключения) - исправляется в сервисном центре.
Дополнительные ресурсы