Если с камерой от ДОМ.РУ всё обстоит довольно просто – нужно только штатными средствами прошить оригинальную прошивку, то Ростелеком постарался на славу! Прошивка совсем другая и надо менять её полностью.
Инструменты
Материалы
- IPC-C22E-S2.zip – подготовленные файлы прошивки.
- General_IPC_Consumer_Mao_Molec_Eng_P_V2_800_0000000_17_R_211129.zip – прошивка.
- c22ep_s2_rt-boot.zip – загрузчик РТ для восстановления через snander
Утилиты
- Putty — программа для работы через UART.
- ConfigTool — поисковая утилита для камер Dahua.
Исходные данные
Подготовка
- Разархивировать подготовленные файлы прошивки, скопировать их на карту памяти и вставить карту в камеру. Я использовал карту объёмом 16Gb, отформатированную в FAT32.
- Подключить UART-адаптер к камере и компьютеру. Установить драйверы, если ещё не установлены.
- Открыть Putty, выбрать COM-порт, на котором висит адаптер и задать параметры порта.
- Подать питание на камеру.
- Остановить загрузку нажатием клавиши Enter.
Бэкап
Если планов возвращаться на ростелекомовскую прошивку нет, то этот пункт можно пропустить. Тем более, что камера на процессоре SigmaStar, а методика раскирпичивания таких камер уже освоена и описана: Восстановление камер на процессорах SigmaStar.
На всякий случай уточню – дамп пишется непосредственно на карту памяти, уничтожая её файловую систему, и считать его можно потом тоже только определённым способом. Соответственно, если делать бэкап, то нужна вторая карта памяти, либо сделать бэкап, затем скинуть дамп на комп, затем отформатировать карту, положить на неё файлы прошивки и вставить в камеру.
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x0 0x1000000;mmc write 0x22000000 0x0 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x1000000 0x1000000;mmc write 0x22000000 0x8000 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x2000000 0x1000000;mmc write 0x22000000 0x10000 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x3000000 0x1000000;mmc write 0x22000000 0x18000 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x4000000 0x1000000;mmc write 0x22000000 0x20000 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x5000000 0x1000000;mmc write 0x22000000 0x28000 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x6000000 0x1000000;mmc write 0x22000000 0x30000 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x7000000 0x1000000;mmc write 0x22000000 0x38000 0x8000
После записи дампа нужно в Linux проделать следующие операции, чтобы получить файлы, пригодные для дальнейшего использования в случае необходимости.
sudo dd bs=512 count=32768 if=/dev/sdd of=./c22ep_s2_dump0.bin
sudo dd bs=512 skip=32768 count=32768 if=/dev/sdd of=./c22ep_s2_dump1.bin
sudo dd bs=512 skip=65536 count=32768 if=/dev/sdd of=./c22ep_s2_dump2.bin
sudo dd bs=512 skip=98304 count=32768 if=/dev/sdd of=./c22ep_s2_dump3.bin
sudo dd bs=512 skip=131072 count=32768 if=/dev/sdd of=./c22ep_s2_dump4.bin
sudo dd bs=512 skip=163840 count=32768 if=/dev/sdd of=./c22ep_s2_dump5.bin
sudo dd bs=512 skip=196608 count=32768 if=/dev/sdd of=./c22ep_s2_dump6.bin
sudo dd bs=512 skip=229376 count=32768 if=/dev/sdd of=./c22ep_s2_dump7.bin
Нужная команда есть в ростелекомовском загрузчике, поэтому пришлось посредством I2C залить в камеру первый кусочек бэкапа и повторить процесс, но уже с заливкой всех частей прошивки.
Прошивка
Общая метода уже описана в статье Восстановление камер Dahua, поэтому здесь повторяться не буду и приведу только конкретные шаги. Тем более, что ничего резать и высчитывать не надо – вся информация предоставлена. В двух словах: нужно залить на флешку заранее подготовленные части прошивки, а затем, после перезагрузки и входа в оригинальный загрузчик, подправить переменные окружения.
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 dhboot-min.bin
nand erase 0x0 0x200000
nand write 0x22000000 0x0 0x200000
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 dhboot.bin
nand erase 0x340000 0x100000
nand write 0x22000000 0x340000 0x100000
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 partition-x.cramfs.bin
nand erase 0x1C00000 0x100000
nand write 0x22000000 0x1C00000 0x100000
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 pd-x.squashfs.bin
nand erase 0x1D00000 0x100000
nand write 0x22000000 0x1D00000 0x100000
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 kernel.bin
nand erase 0x2200000 0x300000
nand write 0x22000000 0x2200000 0x300000
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 web-x.squashfs.bin
nand erase 0x2900000 0x100000
nand write 0x22000000 0x2900000 0x100000
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 romfs-x.squashfs_0.bin
nand erase 0x3300000 0x1000000
nand write 0x22000000 0x3300000 0x1000000
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 romfs-x.squashfs_1.bin
nand erase 0x4300000 0x100000
nand write 0x22000000 0x4300000 0x100000
Переменные окружения
После прошивки нужно перезагрузить камеру командой reset и снова войти в загрузчик. Теперь это уже родной загрузчик Dahua, поэтому останавливаем загрузку звёздочкой: *. Войдя в загрузчик задаём переменные. Значение ID берётся из QR-кода на корпусе ИК-фильтра (точки убрать), а MAC-адрес, он же wifiaddr – с наклейки. Теоретически ID тоже можно взять с наклейки. С ростелекомовским ID облако тоже вроде бы работает, но могут ведь и забанить такие идентификаторы, а ID из QR-кода хотя бы похож на родной, хоть и цифр в нём чуть больше. SC – это Security Code использующийся в качестве пароля администратора и пароля точки доступа Wi-Fi, которую запускает камера для того, чтобы можно было к ней подключиться. Можно задать своё значение, но не меньше 8 символов.



setenv HWID IPC-C22E-S2:01:02:0F:77:3B:00:01:10:01:01:04:400:00:02:00:00:04:01:00:01:80
setenv hwidEx 00:03:00:00:00:00:00:00:00:00:00:00:00:00:00:00
setenv devalias IPC-C22E-S2
setenv SC MXTR2023
setenv ID 7F0638DB0000000
setenv wifiaddr 6C:1C:71:00:00:00
save
Подключение
Подключение камеры к Wi-Fi и к облаку производится с помощью приложения IMOU или DMSS. Проще всего сделать это отсканировав QR-код, но ростелекомовский не подойдёт, т.к. содержит только ID, да и тот теперь неправильный. Правильный QR-код нужно сгенерировать каким-нибудь сервисом, например qrcoder.ru. Кодируемая строка должна иметь вид:
{SN:7F0638DB0000000,DT:IPC-C22EP-S2,SC:MXTR2023,NC:008}
где SN – ваш серийный номер, а SC – ваш Security Code. Остальное менять не нужно. Для этой строки QR-код выглядит так:

Полученный QR-код сканируется приложением и, после запроса параметров местной Wi-Fi сети, камера подключается к ней и добавляется в аккаунт. Подробнее тут: Подключение.
Web-морды у камеры нет, но понастраивать её можно через ConfigTool.
Доброго дня. А есть чуть более подробная инструкция для чайников?
Камеру разобрал, подпаялся к разъёму.
Скопировал разархивированную прошивку на флешку.
Запустил Putty, в графе Session выставил свой COM4 и скорость 115200, нажал Open – открылось окно сессии.
А вот после этого всё дальше не пошло: подаю на камеру питание, в окне начинают в массовом порядке бегать надписи, но ни сразу ни потом нажатие Enter этот процесс не останавливает. Делаю я это соответственно из Win10… может, нужно было из-под Линукса?
Доброго! Камера точно этой модели?
Естественно, с первого раза не получилось 🙂 Бэкап не сделал. Загрузчик прошился, но видимо что-то из файлов прошилось некорректно, т.к. при включении камера вроде и грузится, но диод мигать не начинает и, а просто горит, судя по логу в Putty, загрузка останавливается на стадии
init: Unable to open persistent property directory /data/property errno: 2
init: property_service started…
init: minit [MVX2####g8f044dCM_MINIT#####XVN]
И всё, камера просто так и стоит с горящим красным диодом, сеть WI-FI не появляется.
Поделитесь кто-нибудь бэкапом плиз на почту megabyte-s@yandex.ru
Видимо да – что-то пошло не так… Все части прошивки заливал? И все они записались успешно? Ошибок не было? И переменные инициализированы?
С восстановлением два варианта. Первый – штатный, но зависит от того, какая часть системы работает. К сожалению одного загрузчика для этого недостаточно. Мануал такой:
1. Отформатируйте карту памяти в fat;
2. Положите 2 файла из архива в корень карточки;
3. отключите питание от камеры;
4. вставьте карту;
5. зажмите кнопку RESET, и с зажатой кнопкой подайте питание и удерживайте до тех пор пока камера не начнет перемигиваться красным и зеленым цветом.
Нужные файлы вот: https://disk.yandex.ru/d/UiqUAlj1g5gcsA
Если не сработало, то надо восстанавливать через I2C. Как именно описано в статье: Восстановление камер на процессорах SigmaStar. Надо залить в память камеры первый кусочек ростелекомовского дампа, в котором есть загрузчик и повторить процедуру, но уже внимательнее :). Заливается правда долго, но можно и вырезать – сам-то загрузчик маленький. Дамп смоуг скинуть только вечером – никуда не выкладывал его пока – дома на компе лежит.
0) Судя по ростелекомовской наклейке, это именно IPC-C22E-S2. Дата производства указана 10.2022. Но есть некотрое отличие с той, что в этой статье: наклейка с ID находится не на объективе, а со сзади на плате, причём это не просто QR, а рядом с ним ещё и строчкой продублирован сам ID.
1) На удержание кнопки при включении камера никак не реагирует. Видимо, всё плохо. Но попробую ещё раз с правильными файлами в правильной ФС карточки (было FAT32), чем чёрт не шутит.
2) Части прошивки вроде заливал все. Ошибок не видел. Но заливались они как-то слишком стремительно, буквально 0,5…2 секунды, что несколько подозрительно. Ну и, судя по тому, что камера не запускается, где-то я всё-таки накосячил, т.к. чудес не бывает 🙂
3) Переменные ввёл, но, к сожалению, не знаю, как понять, что они инициализированы. ID взял с наклейки на плате камеры, MAC – с наклейки РТ на подставке камеры, SC оставил как в статье. Может, можно попробовать повторить?
Дамп не сделал только потому, что программатор CH341A только через 2 дня приедет на руки. О чём теперь, естественно, жалею.
Не столько ценна сама камера, сколько из спортивного интереса хочется её поднять. Да и с программаторами интересно поработать.
Начну с конца. Для снятия дампа программатор не нужен, т.к. всё делается через консоль и пишется дамп на карту, но там хитро. Ну и насчёт возможности снятия дампа с НАНДов этим программатором мнения расходятся. Сам не пробовал, поэтому ничего сказать не могу.
Насчёт инициализированы или нет, и имею ввиду, что прописаны и сохранены. Достаточно вызвать printenv, чтобы убедиться, что переменные на месте. Если нет, например HWID или он указан неверно, то камера не запустится.
Шьются быстро все кроме предпоследнего бинарника, который весит 16 метров. Остальные мелкие.
С родным ID бывает по разному – либо он в разных местах, либо его вообще нет. Кау же писал кажется, с ростелекомовским тоже работает.
Если с переменными всё в порядке но не стартует и через зажатый резет не шьётся, то только snander поможет. Дамп скину.
В общем, результаты такие: с карточки не шьётся, переменные не применились. Ввожу команды, никакой ошибки при этом не выдаётся, но после ввода reset и printenv всё становится вот так:
bootargs=mem=128M console=ttyS0,115200 root=/dev/mtdblock12 rootfstype=squashfs
bootcmd=kload 0x22000000; bootm 0x22000000
bootdelay=1
baudrate=115200
ethaddr=00:12:34:56:78:9A
ipaddr=192.168.1.108
serverip=192.168.1.1
gatewayip=192.168.1.1
netmask=255.255.255.0
bootfile=”uImage”
wifiaddr=00:12:34:56:78:91
mp_autotest=0
UUID=tuya136991455963d822
AUTHKEY=wc2QVH1BIK5APSQ9nV9Mz9vxYfAsQ6Cu
ID=000000000000000000
da=tftp 0x22000000 dhboot.bin.img; flwrite;tftp dhboot-min.bin.img;nand protect off;flwrite
dr=tftp 0x22000000 romfs-x.squashfs.img; flwrite
dk=tftp 0x22000000 kernel.img; flwrite
du=tftp 0x22000000 user-x.squashfs.img; flwrite
dw=tftp 0x22000000 web-x.squashfs.img; flwrite
dp=tftp 0x22000000 partition-x.cramfs.img;flwrite
dc=tftp 0x22000000 custom-x.squashfs.img; flwrite
up=tftp 0x22000000 update.img; flwrite
tk=tftp 0x22000000 uImage; bootm
dh_keyboard=1
appauto=1
sysbackup=1
loglevel=4
pd=tftp 0x22000000 pd-x.squashfs.img; flwrite
stdin=serial
stdout=serial
stderr=serial
ethact=sstar_emac
ver=U-Boot 2010.06-svn8061 (Nov 27 2021 – 10:11:10)
Environment size: 1063/131068 bytes
Пробовал ID и родной и ростелекомовский. Причём, если вызвать printenv без перезагрузки, то переменные меняются.
А-а-а-а-а-а! Позор на мои седины… Конечно переменные не сохранились. Команды save то нет!!! После ввода переменных надо её ввести… Поправил.
З.Ы. Благодарю за фидбэк.
З.З.Ы. Пардоньте…
Воооот! Теперь у меня полный “дас ист фантастиш”. После сохранения переменных камера загрузилась, заморгал диод и нашлась приложением ImoU, подключилась к вайфаю и открылась в Конфиг Туле.
Так что громадное спасибо за статью и за то, что помогли разобраться в том, что не понял!
Рад, что всё в порядке! И ошибку в статье исправили заодно…
SigmaStar # fatload mmc 0 0x22000000 dhboot-min.bin
_[sdmmc_0] Err: #Cmd_16 (0x00000200)=>(E: 0x0008)(S: 0x00000B00)__(L:913)
** Unrecognized filesystem type ** тут я перезагрузил камеру
SigmaStar # ▒<▒8▒<8▒▒▒<
это всё,я убил загрузчик?
Да нет. Убивается он только после nand erase 0x0.
Я вводил эти команды
mw.b 0x22000000 0xff 0x1000000
fatload mmc 0 0x22000000 dhboot-min.bin
nand erase 0x0 0x200000
nand write 0x22000000 0x0 0x200000
потом понял что файлы с карты не записываются, поробовал с другой картой и тоже ответ был Unrecognized filesystem type
вот я и перезагрузил камеру.
далее при загрузке такие символы ▒<▒8▒<8▒▒▒<
Основной мой посыл в том, что если команда fatload mmc 0 0x22000000 dhboot-min.bin закончилась неудачей, то не надо делать nand erase 0x0 0x200000 и nand write 0x22000000 0x0 0x200000, потому что раз с карты ничего не считалось, то и записывать нечего. В результате – кирпич. Другое дело, что эту камеру можно восстановить через snander, так что не всё потеряно.
что может быть?, восстановил по инструкции, но теперь в терминал пишет такое:
▒▒0▒3ь2▒#s▒▒▒3▒J▒\J▒1B▒▒▒▒
▒1▒▒ͺJ▒
-\J!j▒▒▒▒
камера при этом пашет нормально видится в сети, подключается
Похоже на неправильную скорость – надо 115200. Либо плохой контакт.
Да, все верно, по запаре забыл сменить скорость порта, стояла поумолчанию 9600 поставил 115200 и все пошло, спасибо большое!!!
Пожалуйста!