ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

Перепрошивка MegaD-2561

ВНИМАНИЕ! Прежде чем прошивать устройство, тщательно ознакомьтесь с инструкцией. Если вы не уверены, ВСЕГДА используйте ключ --ee (стирание EEPROM), что приведет к сбросу всех настроек на заводские с изменением IP-адреса на 192.168.0.14. Если этого не сделать, то при обновлении на версию, в которой были изменения в работе с энергонезависимой памятью, устройство перестанет нормально функционировать, что потребует перепрошивку в "режиме восстановления".

Для перепрошивки контроллера MegaD-2561 не нужен программатор. В контроллер записан загрузчик, позволяющий обновлять программное обеспечение по сети Ethernet.
Повредить или случайно удалить загрузчик невозможно! Это означает, что даже при неудачной попытке перепрошивки, всегда можно собственными силами восстановить работу контроллера.

Для обновления прошивки в устройстве MegaD-2561 существует 3 варианта:

  1. Кросс-платформенный консольный PHP-скрипта megad-cfg-2561.
    Работает в любой операционной системе (Windows, Linux, MacOS, FreeBSD).
    Работает только в консольном режиме (командная строка) и требует вручную вводить ключи (описание ниже).
    Требует установки интерпретатора PHP.
    Скрипт не кодирован, исходный код открыт под лицензией GPL 2.
     
  2. Скомпилированный для Windows консольный скрипт megad-cfg-251
    Работает только в ОС Windows в режиме командной строки (cmd.exe) и требует вручную вводить ключи (описание ниже).
    Не требует установки дополнительного ПО
    В скрипт встроен так называемый "визард", который в простых случаях позволяет не вводить ключи вручную. Не подходит для режима восстановления.
     
  3. Скомпилированный для Windows скрипт megad-cfg-251 с графическим интерфейсом MegaD-UP.
    Работает только в ОС Windows
    Не требует установки дополнительного ПО и ручного ввода ключей.
    Только для полностью автоматического режима перепрошивки (программа сама скачивает HEX-файл)
    Нет режима восстановления. Отсутствует возможность указать параметры работы вручную

 

Перепрошивка с помощью megad-cfg-2561

Текущая версия 2.30 от 25.03.2024

Кроссплатформенный PHP-скрипт: https://ab-log.ru/files/File/megad-cfg/megad-cfg-2561.zip

Скомпилированный для Windows 10/11 скрипт: https://ab-log.ru/files/File/megad-cfg/megad-cfg-2561-wiz.zip
Подробнее о работе "визарда".

Требование: наличие установленного интерпретатора PHP

  • MacOS: интерпретатор PHP как правило уже установлен.
  • Linux: apt-get install php php-cli php-xml (из командной строки или из любого менеджера пакетов, название пакетов могут отличаться в зависимости от версии PHP)
  • Windows: необходимо скачать с официального сайта любую из последних версий и распаковать содержимое архива на диск. Например C:PHP
    Переименовать файл php.ini-production в php.ini.
    В файле php.ini (настройки PHP) необходимо найти и раскомментировать строчки:
    extension=sockets
    extension=openssl

Далее в статье приведены примеры запуска PHP-скрипта в Linux/MacOS/FreeBSD.
При запуске PHP-скрипта в Windows необходимо изменить php на php.exe

php.exe megad-cfg-2561.php --scan

Если использовать скомпилированную (EXE) версию для Windows необходимо изменить php megad-cfg-2561.php на megad-cfg-2561.exe

megad-cfg-2561.exe --scan

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

Сканирование всех устройств типа MegaD-2561 в сети
 

php megad-cfg-2561.php --scan

Скрипт отобразит IP-адреса всех подключенных в сеть Ethernet-устройств, даже если они находятся в другой IP-сети. Это важная функция, так как адрес устройства по умолчанию 192.168.0.14, а у пользователя может использоваться другая сеть, например 192.168.1 или 10.0.0. В этом случае данная команда позволяет произвести поиск доступных устройств.


Изменение IP-адреса устройства
 

php megad-cfg-2561.php --ip 192.168.0.14 --new-ip 10.0.0.14 -p sec

--ip - Текущий IP-адрес устройства
--new-ip - Новый IP-адрес устройства
-p - Текущий пароль (по умолчанию пароль "sec")


Перепрошивка устройства
 

php megad-cfg-2561.php --ip 192.168.0.14 --fw megad-2561.hex -p sec

--ip - Текущий IP-адрес устройства
--fw - Путь к скомпилированной прошивке в формате HEX
-p - Текущий пароль

ВНИМАНИЕ! Если в новой прошивке были изменения в работе с EEPROM (например, добавлены новые опции в конфигурацию) ОБЯЗАТЕЛЬНО необходимо обновлять прошивку с очисткой EEPROM с применением ключа --ee (два тире!). Это актуально для всех примеров, которые приведены ниже. Если вы не уверены или не знаете - были ли изменения в работе с EEPROM лучше прошивать устройство с этим ключом. Очистка EEPROM приведет к сбросу всех настроек, в том числе IP-адреса на заводской: 192.168.0.14.

Пример:

php megad-cfg-2561.php --ip 192.168.0.14 --fw megad-2561.hex -p sec --ee

Не обязательно скачивать прошивку вручную. Скрипт megad-cfg-2561.php может загрузить прошивку с сайта самостоятельно!

php megad-cfg-2561.php --ip 192.168.0.14 -p sec -w

-w - Скачать последний релиз прошивки с сайта ab-log.ru

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

php megad-cfg-2561.php --ip 192.168.0.14 -p sec -w -b

При использовании указанных выше ключей, обновление прошивки происходит без сброса настроек устройства. Однако иногда в прошивке происходят кардинальные изменения в работе с энергонезависимой памятью (EEPROM), в которой хранятся настройки. В этом случае необходимо сбросить все настройки и сконфигурировать устройство заново. Для стирания EEPROM необходимо использовать ключ "--ee"

php megad-cfg-2561.php --ip 192.168.0.14 --fw megad-2561.hex -p sec --ee


В процессе загрузки новой прошивки произошел сбой. Устройство не отвечает. Все пропало?

Режим восстановления

Нет, ничего не пропало! При сбое в перепрошивке устройство переходит в специальный режим загрузчика. В этом режиме светодиод Act/MCU (для моноблока) на лицевой панели контроллера будет непрерывно моргать. У загрузчика нет IP-адреса, поэтому искать устройство с помощью опции --scan не имеет смысла. Программа перепрошивки ничего не найдет. Также нет никакого смысла стирать настройки в EEPROM. Необходимо восстановить прошивку с помощью режима восстановления, который встроен во все доступные программы для перепрошивки, в том числе MegaD-UP (опция Recovery Mode).

1. Запускаем megad-cfg-2561 с ключами "-f -e --ee"

megad-cfg-2561.php --fw megad-2561.hex -f -e --ee
или (если хотим загрузить прошивку с сайта)
megad-cfg-2561.php -w -f -e --ee

Скрипт отобразит на экране "Connecting..." и начнет постоянно слать в сеть специальные пакеты.

2. Выключаем "сломанное" устройство и включаем его снова.
Скрипт автоматически соединится с программой загрузчика и попытается перепрошить устройство заново.

В случае применения MegaD-UP, необходимо установить флажок Recovery Mode (выбор IP-адреса устройства в поле Device в этом случае станет недостыпным), выключить контроллер, нажать кнопку Upgrade, включить контроллер. Если в сети несколько контроллеров, начнется перепрошивка того, который находится в режиме загрузчика (моргает Act/MCU на лицевой панели).

 

Работа с настройками

При использовании ключа --ee (стирание EEPROM) из памяти устройства удаляется вся текущая настройка портов. Это очень неудобно после перепрошивки восстанавливать настройки устройства и портов. Поэтому была предусмотрена функция считывания и записи текущих настроек.

Считывание конфигурации устройства и запись в файл megad.cfg
php megad-cfg-2561.php --ip 192.168.0.14 --read-conf megad.cfg -p sec
Считывание конфигурации из файла и запись в устройство
php megad-cfg-2561.php --ip 192.168.0.14 --write-conf megad.cfg -p sec

Но совсем не обязательно при обновлении прошивки выполнять эти команды последовательно. Можно указать опции вместе, тогда скрипт сначала считает конфигурацию, потом обновит прошивку, а затем снова загрузит прежнюю конфигурацию.

php megad-cfg-2561.php --ip 192.168.0.14 -p sec -w --ee --read-conf megad.cfg --write-conf megad.cfg

В результате мы получим на экране примерно следующий лог работы программы.

Reading configuration... OK
Downloading firmware... OK
Connecting... OK
Erasing firmware... OK
Writing firmware... OK
Erasing EEPROM... OK
Restarting device... OK
Writing configuration... OK

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


Несколько сетевых интерфейсов и другие проблемы

Иногда в компьютере присутствует не один, а несколько сетевых интерфейсов. Например, Ethernet, Wi-Fi, VPN и т.д.
В этой ситуации скрипт перепрошивки не всегда может определить, в какой именно сетевой интерфейс отправлять пакеты, а потому ничего не работает. Для того, чтобы явно указать интерфейс, в который отправлять данные, необходимо использовать опцию --local-ip.

php megad-cfg-2561.php --scan --local-ip 192.168.0.1

В опции --local-ip указывается локальный IP-адрес компьютера (не контроллера!). Локальный IP-адрес компьютера можно посмотреть с помощью программ ifconfig (Linux) или ipconfig (Windows).

Иногда широковещательные пакеты блокируются различными программами: антивирусы, файрволы.
Если прошить устройство не получается, попробуйте временно отключить антивирус и/или файрвол.
Если устройство и ПК подключены к роутеру или управляемому коммутатору, то широковещательные пакеты могут блокироваться им. В этом случае необходимо проверить настройки роутера/коммутатора или временно подключить устройство напрямую к ПК.
Для корректной прошивки устройства маска подсети должна быть /24 (255.255.255.0).

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

Отображается ошибка "PHP Fatal error: Uncaught Error: Class 'DOMDocument' not found". Не установлен пакет php-xml (php8.2-xml).

 

Перепрошивка с помощью приложения MegaD-UP

Текущая версия 2.30 build1 от 25.03.2024 (Windows 10/11)

В виде эксперимента была предпринята попытка разработать графическую оболочку для скрипта megad-cfg-2561 для того, чтобы облегчить процесс перепрошивке для неискушенных пользователей.
Приложение максимально упрощено и имеет всего несколько кнопок: Rescan, Upgrade и Change IP. Интерфейс интуитивно понятен.

https://ab-log.ru/files/File/megad-cfg/MegaD-Up.zip

При первом запуске необходимо разрешить приложению доступ в сеть и вручную нажать кнопку "Rescan".
В дальнейшем поиск устройств в сети производится автоматически при запуске приложения.

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

В силу особенности "архитектуры" GUI-оболочки, теоретически могут вылетать ошибки. Но на процесс перепрошивки это влиять не должно.

Важно! Если в локальной сети несколько контроллеров, избегайте использование IP-адреса по умолчанию 192.168.0.14
Это связано с тем, что после сброса настроек IP-адрес устройства временно сбрасывается на адрес по умолчанию, а значит в сети могут находиться одновременно 2 контроллера с одним адресом, что может нарушить корректный процесс перепрошивки.

Все HEX-файлы прошивок для MegaD-2561 с кратким описанием изменений