В статье я хочу рассказать о способе программного ремонта или восстановления прошивки IP-видеокамеры Dahua DH-IPC-HDW4421E (Рисунок 1). В общем случае эта инструкция подходит для всех IP-видеокамер Dahua серии IPC-HX4X2X и используется в том случае, если камера не запускается, у нее недоступен веб-интерфейс и не запускается процесс обновления прошивки в автоматическом режиме через TFTP сервер. В статье мы рассмотрим именно программный сбой и способ его устранения, ведь причина, по которой камера не работает, может быть и аппаратная, например, неисправность встроенного модуля PoE или цепей питания процессора и периферии.
Рисунок 1. | IP-видеокамера Dahua серии DH-IPC-HDW4421E. |
Проверить, что у IP-камеры Dahua программный сбой, можно с помощью отладочного UART-интерфейса (его же будем использовать для устранения неполадок в прошивке), сигналы которого доступны на контактных площадках процессорной платы. Кроме того, неисправная IP-видеокамера Dahua не определяется в программе ConfigTool (программное обеспечение от производителя), и веб-интерфейс камеры по установленному ранее IP-адресу недоступен. Для доступа к отладочному интерфейсу IP-камеру требуется разобрать, извлечь процессорную плату и снять радиаторы охлаждения (Рисунки 2, 3).
Рисунок 2. | IP-видеокамера Dahua DH-IPC-HDW4421E со снятой крышкой корпуса. |
Рисунок 3. | Вид процессорной платы IP-видеокамеры Dahua DH-IPC-HDW4421E со стороны объектива. |
На Рисунке 2 корпус IP-камеры вскрыт, на переднем плане виден модуль PoE (Power over Ethernet, питание камеры по сетевому интерфейсу). Под радиатором видна часть процессорной платы и микросхема Flash-памяти в корпусе SO-8. Демонтируем модуль PoE (я не отключал его от процессорной платы), откручиваем винты крепления процессорной платы к корпусу камеры и затем снимаем радиатор охлаждения.
Сняв радиатор, мы получаем доступ к контактам отладочного интерфейса, а также к контактам кнопки сброса (Рисунок 4). На этой стороне процессорной платы также имеется наклейка с серийным номером (ID, идентификатором) камеры, этот номер также прописан в прошивке.
Рисунок 4. | Расположение контактных площадок на процессорной плате IP-видеокамеры Dahua DH-IPC-HDW4421E: 1 - отладочный UART интерфейс, 2 - кнопка сброса. |
Расположение сигналов отладочного UART-интерфейса +3.3 В, GND, Rx, Tx изображено на Рисунке 4. Для подключения отладочного интерфейса к терминальной программе на ПК я использовал адаптер USB-UART на микросхеме PL2303. В других IP-камерах этой серии расположение контактных площадок и сигналов может отличаться, поэтому если вы не увидите вывод отладочной информации в терминальной программе при подаче питания на IP-камеру, то просто поменяйте сигналы Rx и Tx местами (Рисунок 5).
Рисунок 5. | Подключение адаптера USB-UART к контактам отладочного интерфейса IP-видеокамеры. |
Подключаем USB-UART адаптер к компьютеру. Далее скачиваем и устанавливаем терминальную программу; я использую PuTTY. В настройках программы выбираем последовательный порт (Serial), указываем номер порта (Serial Line), соответствующий адаптеру USB-UART, указываем скорость обмена (Speed) 115200 и нажимаем кнопку «Открыть» (Open).
После открытия окна терминальной программы подаем питание на камеру (внешний блок питания 12 В или через PoE, при наличии PoE инжектора) и, если все сделано правильно и процессор исправен, то в окне мы увидим вывод отладочной информации о ходе загрузки (Рисунок 6). В противном случае необходимо проверить параметры порта и подключение сигнальных линий Rx/Tx адаптера USB-UART к отладочному интерфейсу (поменять их местами).
Рисунок 6. | Процесс загрузки операционной системы IP-видеокамеры Dahua DH-IPC-HDW4421E. |
Отладочная информация выводится до запуска ядра (после зауска ядра могут выводиться сообщения только о критических ошибках). Тем не менее, даже этой информации было достаточно, чтобы увидеть программные неполадки. Кроме того, IP-камера через несколько минут после старта перезагружается, повторяется процесс загрузки (снова отрабатывает загрузчик U-Boot).
На скриншоте лога загрузки операционной системы можно выделить несколько основных моментов:
- сообщение «* * * Warning - bad CRC, using default environment» говорит о ошибке контрольной суммы (CRC);
- при инициализации сетевого интерфейса IP-камеры сообщается MAC-адрес Ethernet: Net: Detected MACID:00:12:34:56:78:9a. Такое значение MAC-адреса (последовательность 0-А) является некорректным, не говоря о соответствии данной IP-камере;
- сообщение «unknown core, use back» после запуска ядра свидетельствует о программной проблеме.
Чтобы проверить остальные параметры камеры (правильнее будет – параметры среды загрузчика), требуется остановить выполнение загрузчика U-Boot и проверить параметры и их текущие значения.
Для остановки загрузки U-Boot необходимо сразу после подачи питания на IP-камеру в терминальной программе отправить символ «*» (или их последовательность), пока не появится надпись «Hit any key to stop autoboot», после этого нажимаем любую кнопку на клавиатуре – появится приглашение к работе «>».
В командной строке вводим команду printenv, наблюдаем список параметров и значений (Рисунок 7). В списке параметров отображаются параметры сетевого интерфейса (MAC, текущий IP камеры, адрес TFTP сервера для обновления прошивки, адрес основного шлюза, маска подсети), команды обновления разделов прошивки с адресами областей Flash-памяти, параметры отладочного UART-интерфейса, уровень отладки и др. Снова в списке видим некорректное значение MAC адреса сетевого интерфейса (параметр ethaddr), некорректный идентификатор (серийный номер) ID, в занчении которого все 0 (данный идентификатор используется при работе IP-камеры с облачными сервисами).
Также в этом списке по какой-то причине отсутствует один важный параметр с именем HWID, который определяет аппаратную платформу IP-видеокамеры. Другими словами – явно программный сбой, причина которого неизвестна (возможно, после неудачного обновления).
Кроме того, отсутствует параметр BSN, который, судя по всему, является идентификатором (серийным номером) процессорной платы IP-камеры, и параметр devalias. Этикетка с идентификатором BSN наклеена на процессорную плату. Как я убедился, наличие или отсутствие параметров BSN и devalias на работу камеры не влияет.
Рисунок 7. | Результат выполнения команды "printenv": список параметров среды в загрузчике U-Boot. |
В общем случае, список параметров у исправной IP-камеры данной серии должен быть вида, как указан на Рисунке 8.
Рисунок 8. | Список параметров среды (printenv) у исправной IP-камеры серии DH-IPC-HDW4421E. |
Серийный номер (ID) IP-камеры обычно находится на наклейке на корпусе камеры (длина 15 символов), возможно, он также будет на упаковке или в гарантийном талоне. Идентификатор аппаратной платформы (HWID) можно взять от идентичной камеры (для этого тоже потребуется подключение к отладочному интерфейсу) или найти по модели камеры в файле check.img, который входит в состав программного пакета для обновления прошивки данной серии IP-видеокамер. Для этого необходимо скачать официальную прошивку для данной модели, распаковать ее и найти файл check.img; файл открыть в режиме текстового просмотра и по модели камеры найти значение параметра HWID, которое должно иметь вид: IPC-HDW4421E-AS:01:02:05:23:19:00:01:0E:01:00:04:258:00:00:00:00:00:00:00:00:100
С MAC-адресом сложнее, предположительно, он тоже может быть указан на упаковке или гарантийном талоне; обычно на корпусе IP-камеры имется наклейка с указанием MAC и ID. В моем случае я не смог найти MAC-адрес этой камеры, поэтому пришлось подобрать по аналогии с другой камерой идентичной модели. Здесь следует обратить внимание, что в случае сложных систем видеонаблюдения администраторы сетей требуют уникальность MAC-адресов сетевых устройств.
Забегая вперед, скажу, что подключившись к отладочному интерфейсу, можно на этом этапе обновить прошивку IP-камеры из командной строки, однако из-за некорректных значений указанных выше идентификаторов камера не запустится. В частности, из-за отсутствия идентификатора HWID после перепрошивки мы снова получим сообщение об ошибке «unknown core, use back». Поэтому сначала восстановим значения этих параметров.
Для установки MAC адреса сетевого интерфейса IP-камеры необходимо в командной строке выполнить команду вида:
setenv ethaddr XX:XX:XX:XX:XX
где XX:XX:XX:XX:XX – MAC-адрес IP-камеры (сетевого интерфейса).
Далее, пропишем идентификатор ID с помощью команды:
setenv ID XXXXXXXXXXXXXXX
где XXXXXXXXXXXXXXX – серийный номер IP-камеры.
Теперь укажем идентификатор аппаратной платформы IP-камеры (для данной модели):
setenv HWID IPC-HDW4421E-AS:01:02:05:23:19:00:01:0E:01:00:04:258:00:00:00:00:00:00:00:00:100
Для сохранения введенных параметров в Flash-памяти в командной строке вводим команду:
saveenv
Для того чтобы убедиться, что данные введены правильно, можно выполнить команду printenv. Параметры и значения, которые мы изменили и сохранили, будут в конце списка (Рисунок 9).
Рисунок 9. | Изменение идентификаторов (MAC, ID, HWID) IP-камеры Dahua DH-IPC-HDW4421E в отладочном интерфейсе. |
Теперь можно перезапустить камеру командой reset или boot, или аппаратно – отключить и снова включить питание. Практически во всех случаях после корректировки MAC, ID и HWID IP-камеры запускаются с прежними пользовательскими настройками, определяются в программе ConfigTool и стабильно работают. В некоторых случаях было замечено, что пользовательские настройки были сброшены, и необходимо было пройти инициализацию IP-камеры (указать новый пароль администратора, e-mail для восстановления пароля).
Пока подключен отладочный UART-интерфейс, можно обновить прошивку камеры посредством TFTP (конечно, если доступна обновленная официальная версия прошивки). Для этого снова останавливаем загрузчик и смотрим настройки сетевого интерфейса:
- текущий IP адрес камеры (ipaddr=192.168.1.108);
- адрес TFTP сервера (serverip=192.168.1.1)
- адрес шлюза (gatewayip=192.168.1.1)
Если камера подключена в локальную сеть через маршрутизатор, то необходимо выполнить соответствующую настройку IP адреса камеры, сервера, шлюза. Я подключаю камеру непосредственно к ПК по Ethernet, поэтому меняю настройки сетевой карты (Рисунок 10), присваивая ПК IP адрес 192.168.1.1 (на этом же ПК будет поднят TFTP сервер с этим же адресом).
Рисунок 10. | Настройка сетевой карты при непосредственном подключении IP-камеры к ПК для обновления прошивки по TFTP. |
На ПК запускаем программу TFTPD, выбираем адрес сервера (192.168.1.1) и указываем папку, в которую распакованы файлы прошивки для IP-камеры.
Теперь в командной строке отладочного интерфейса запускаем обновление прошивки командой run up и ждем окончания загрузки файлов и записи Flash-памяти. Можно обновлять в ручном режиме по разделам соответствующими командами. Список команд/скриптов приводится в списке параметров среды загрузчика (Рисунок 11). Например, для обновления раздела веб-интерфейса камеры необходимо выполнить команду run dw.
Рисунок 11. | Список скриптов для обновления прошивки IP-камеры в параметрах среды загрузчика U-Boot. |
Командой run up мы обновляем все разделы прошивки в автоматическом режиме (Рисунок 12).
Рисунок 12. | С помощью команды "run up" запускаем обновление прошивки IP-камеры через TFTP. |
После обновления перезапускаем IP-камеру и проверяем работоспособность.