fix.org.ua

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА: ПО для Watchdog

ПО для Watchdog 7 мес. 3 нед. назад #133

  • fix
  • fix аватар
  • Не в сети
  • Администратор
  • Сообщений: 36
  • Репутация: 1
Для тех, кто хочет использовать свои механизмы сброса вотчдога:
Настройки порта: 9600/8-N-1
Посылка: 2 байта
Мгновенный "Reset": 0x33 0x33
Сброс вотчдога (отправлять чаще таймаута): 0x31 0x41
Установка теймаута (по умолчанию 10 минут, второй байт - это время таймаута от 0 до 255 минут, после сброса питания этот байт сохраняется): 0x32 0x0A
Администратор запретил публиковать записи гостям.

ПО для Watchdog 7 мес. 3 нед. назад #134

  • webgkv
  • webgkv аватар
  • Не в сети
  • Новый участник
  • Сообщений: 2
  • Репутация: 0
Есть вопрос связанный с работой данного вотчдогоа под Linux.

Итак, согласно ТТХ данное устройство выполнено на основе чипа CH341SER, здесь же на форуме в представленном наборе дарайверов есть папка и под linux, в тоже время там представлены давно устаревшая версия, которая поддерживает максимум версию ядра 3.9 потому проштудировав сеть был найден пропатченый вариант который поддерживает версии ядра 4.x + , скачать можно тут drive.google.com/file/d/1VtY-Bue4cR6HXjd...iH0/view?usp=sharing

Если говорить о предметном вопросе исследования и попыток, то эксперименты проводились под hiveos, построенной на основе Ubuntu 16.04 и имеющей в своем составе уже предустановленный драйвер под указанный чип, при этом в системе наше устройство определяется как QinHeng Electronics HL-340 Watchdogs, а собственно стандартные средства системы заточены вот под такой китайский аналог



Еще ниже привожу лог общения системы уже с нашим вотчдогом:

root@nvGKrig3:~# printf '\x1E\x00'>/dev/china_dog0
root@nvGKrig3:~# ps -ef | grep hl34
root 1430 1 0 21:26 ? 00:00:00 bash /hive/opt/qinheng/hl340 ping /dev/china_dog0
root 4416 3737 0 21:28 pts/7 00:00:00 grep --color=auto hl34
root@nvGKrig3:~# strace -p 1430 -e write
strace: Process 1430 attached
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=4838, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
write(1, "Pinging watchdog\n", 17) = 17
write(1, "x1Ex00", 6) = 6
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5006, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
write(1, "Pinging watchdog\n", 17) = 17
write(1, "x1Ex00", 6) = 6

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

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

if ! -e /hive-config/watchdog/wd-nano.on; then
ping="echo -ne "\x1E\x00""
reset="echo -ne "\xFF\x55""

В тоже время, в этой же теме представлены батники под виндовый повершел, и за оповещение вотчдога о рабочем виде отвечает батник с таким содержанием:

@echo off
set PORT=COM7
powershell "[Byte[]] $command=0x31,0x41; [String] $result="""ERROR"""; $port=new-Object System.IO.Ports.SerialPort %PORT%,9600,None,8,One; for ($i=0; $i -lt 3; $i++) {try {$port.Open(); $port.Write($command,0,$command.Count); $port.Close(); $result="""OK"""; break} catch {Start-Sleep -m 1000}}; $result"


Как видно здесь используется HEX 0x31,0x41 , в тоже время никакие подобные вариации под linux c подменой данных как представлено ниже к успеху не привели:

ping="echo -ne "\0x31\0x41""
reset="echo -ne "\0x31\0x31""

ping="echo -ne "\x31\x41""
reset="echo -ne "\x31\x31""

В связи с этим к разработчикам есть вопрос какие конкретно байты требуются вотчдог?
Последнее редактирование: 7 мес. 3 нед. назад от webgkv.
Администратор запретил публиковать записи гостям.

ПО для Watchdog 7 мес. 3 нед. назад #135

  • webgkv
  • webgkv аватар
  • Не в сети
  • Новый участник
  • Сообщений: 2
  • Репутация: 0
Отвечаю сам себе :) и благодаря помощи и представленной информации от разработчика.

В общем, в прочем как и всегда, решение под linux оказалось не тривиальным. Подавляющая масса примеров на огромном количестве ресурсов сводится к тому, что на последовательный порт последовательность байтов надо отправлять как:

echo -ne "\x31\x41" но вотчдог упорно продолжал перезагружать риг как упомянул ранее, при этом компанда

echo -ne "\x31\x31 " отлично отрабатывала мгновенную принудительную перезагрузку.

Но длительные двухсуточные поиски таки дали результат. И выглядит он следующим образом:

echo -ne ""\x31""\x41"" - все дело было в дополнительных кавычках дабы отправка шла последовательно но побайтно


Таким образом на любом linux дистрибутиве надо использовать пакет драйверов представленный в посте выше, потом выполнить make и sudo make load, далее прописать в крон:

*/1 * * * * root printf ''''\x31''''\x41'''' >/dev/ttyUSB0

Для пользователей же хайва надеюсь решение пойдет в стандартный набор, если же что, то в файле:

/hive/opt/qinheng/hl340

заменить строки:

ping="echo -ne "\x1E\x00""
reset="echo -ne "\xFF\x55""

на:

ping="echo -ne ""\x31""\x41"""
reset="echo -ne "\x33\x33""

Надеюсь кому-то это поможет существенно сэкономить время и не тратить его на длительные и мучительные поиске как мне!
Последнее редактирование: 7 мес. 3 нед. назад от webgkv.
Администратор запретил публиковать записи гостям.
  • Страница:
  • 1
  • 2
Время создания страницы: 0.136 секунд
Работает на Kunena форум

Language