Восстановление камер на процессорах SigmaStar

OpenIPC

Прислали как-то для отвязки от Ростелеком несколько камер DH-IPC-K42LB. Правда одна из них оказалась вовсе даже DH-IPC-K35AP и с ней пришлось разбираться отдельно, но она хотя бы была живой, а все DH-IPC-K42LB оказались “кирпичиками”. При подаче питания индикатор камеры загорается красным цветом и всё. Индикатор PoE порта коммутатора горит, а линка нет. При подключении через UART выдаёт в консоль несколько прямоугольников, что даёт надежду. Короче, пришлось разбираться с восстановлением.

Восстановление камер на процессорах SigmaStar

Парой месяцев ранее сам окирпичил одну камерку – другую, но на том же процессоре и спросил совета в группе OpenIPC users, за что камрадом @FlyRouter был отправлен в Вики проекта, где соответствующая статья имеется. Взглянул – увидел, что там про Linux и немного приуныл, а камерку отложил до лучших времён.

Сейчас же пришлось вернуться к этой теме. Потыкался, потыкался, но зашёл в тупик и опять пошёл за помощью туда же. После нескольких чётких указаний камрада @dimerrr всё завелось и полетело!

Подготовка

Для процедуры восстановления необходим Linux. У меня для таких целей имеется Ubuntu на небольшом SSD. Перезагрузился и ты в никсах… Ещё можно поставить Linux на виртуальную машину, например Oracle VirtualBox. Такое у меня тоже есть и пользуюсь периодически обоими вариантами, смотря что удобнее в конкретной ситуации.

Допустим, с системой разобрались. Теперь надо установить необходимый софт. Делается это в терминале. Нам понадобятся:

  • git
  • make
  • i2c-tools
  • mc

Устанавливаются командой apt install:

sudo apt install git
sudo apt install make
sudo apt install i2c-tools
sudo apt install mc

Отключение загрузки ядерного модуля ch341

В ядре присутствует модуль ch341, который помешает нам использовать самосборный, поэтому его нужно отключить. Делается это внесением модуля в чёрный список. Поскольку я не настоящий сварщик, то хоть и умею пользоваться тру-редактором vi, но предпочитаю встроенный редактор менеджера Midnight Commander.

Запускаем mc с root-правами командой sudo mc и открываем для редактирования файл /etc/modprobe.d/blacklist.conf, добавляем строку blacklist ch341 и сохраняем. После этого нужно обновить initramfs и перезагрузить систему:

sudo update-initramfs -u
reboot

Загрузка драйвера ch341-i2c

git clone https://github.com/frank-zago/ch341-i2c-spi-gpio
make -C ch341-i2c-spi-gpio
sudo insmod ch341-i2c-spi-gpio/ch341-core.ko
sudo insmod ch341-i2c-spi-gpio/i2c-ch341.ko

Загрузка программатора snander-mstar

В качестве программатора будем использовать CH341A, который умеет в I2C.

  • GND -> GND (PIN 1-4)
  • TX -> SDA I2C (PIN 5)
  • RX -> SCL I2C (PIN 6)

Это железка, но нужен ещё соответствующий софт, который тоже надо собрать из исходников. Перед сборкой нужно определить какое устройство будет соответствовать программатору и внести правки в заголовочный файл. Сделать это можно подключив программатор к компьютеру и посмотрев в директории /dev на устройства с именем i2c-0, i2c-1 и т.д. Какое из них пропадает при отключении программатора и вновь появляется при подключении, то нам и нужно. Если это не i2c-0, то после выполнения команды git clone и перед выполнением команды make, нужно в файле spi_controller.h поменять цифру в директиве #define I2C_CONNECTION “/dev/i2c-0”. В моём случае пришлось заменить 0 на 4 и получилось, сооветственно: #define I2C_CONNECTION “/dev/i2c-4”.

Далее нужно скомпилировать исходники.

git clone https://github.com/viktorxda/snander-mstar

make -C snander-mstar
mv snander-mstar/snander .

Проверка подключения с помощью i2cdetect и snander

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

sudo i2cdetect -y 4
  • 0x49 -> isp programming
  • 0x59 -> serial debugging

Если результат выполнения команды выглядит как на скрине, значит всё подключено верно и можно проверить флеш-память средствами snander:

sudo ./snander -i

Если всё так или примерно так, то можно двигаться дальше. Если нет, проверяем проверяем правильность подключения и надёжность соединения.

Восстановление

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

Выгрузка дампа

В случае если камера уже “кирпич”, данное действие большого смысла не имеет, но почему бы и нет? Мало ли – вдруг там есть что-то полезное и это удастся вытащить. Правда долго это всё…

sudo ./snander -a 0x000000 -l 0x1000000 -r dump0.bin
sudo ./snander -a 0x1000000 -l 0x1000000 -r dump1.bin
sudo ./snander -a 0x2000000 -l 0x1000000 -r dump2.bin
sudo ./snander -a 0x3000000 -l 0x1000000 -r dump3.bin
sudo ./snander -a 0x4000000 -l 0x1000000 -r dump4.bin
sudo ./snander -a 0x5000000 -l 0x1000000 -r dump5.bin
sudo ./snander -a 0x6000000 -l 0x1000000 -r dump6.bin
sudo ./snander -a 0x7000000 -l 0x1000000 -r dump7.bin

Запись нового загрузчика

Как известно, у Дахи загрузчик состоит из двух частей, поэтому записываем их обе по соответствующим адресам, которые берём из заголовков файлов. Для разных моделей адреса, само собой, будут отличаться. Подробнее об этом можно прочитать в статье Восстановление камер Dahua.

sudo ./snander -a 0x000000 -l 0x200000 -e
sudo ./snander -a 0x000000 -l 0x200000 -w dhboot-min.bin -v
sudo ./snander -a 0x340000 -l 0x60000 -e
sudo ./snander -a 0x340000 -l 0x60000 -w dhboot.bin -v

Загрузчик прошит, можно отключать питание, переводить программатор в режим TTL, переключать коннекторы и запускать консоль. Дальнейшие действия описаны в статье Отвязка от Ростелеком камеры DH-IPC-K42LB.

Восстановление камер на процессорах SigmaStar
Оцените статью
( 2 оценки, среднее 5 из 5 )
МихаТроник
Добавить комментарий


  1. Serg

    Отличная наработка. У меня на руках 2 камеры на этом процессоре померли, после обновления. Ни в какую не стартуют, даже со снятой с донора флешкой. Возможно сам проц с подписью. Разница только умерли – рынок чисто китай, с доноры- европа.

    Ответить
    1. mixatronik автор

      Вообще разработчик допилил инструмент и теперь работа со snander стала намного проще. И под винду появилась сборка. Обновлю статейку в ближайшем будущем.
      А шина видится snander-ом?

      Ответить
      1. Serg

        Да, шина видится. Если я правильно даташиты на процессор видел и правильно понял, сам проц ssc327de имеет защиту. С камерами РТшными с такой проблемой не попадались, если совсем убиты до появления snader я поднимал дампом, а потом правил переменные.
        А вот оригинальные камеры Dахуа совсем не хотят.
        PS 42 и 46 камеры – считаю самые удачные.

        Ответить
        1. mixatronik автор

          Я Дахи как-то вообще недолюбливаю. Хики больше нравятся.

          Ответить
  2. sergol2

    Добрый день. А точки подключения те же что и ttl или надо искать другие?

    Ответить
    1. mixatronik автор

      В статье схема есть так-то. Правда статья устарела. Автор допилил софтину и теперь всё просто и элегантно без всяких плясок с пакетами.

      Ответить