Взял за правило сохранять всю доступную информацию по препарируемым камерам. Бывает так, что посчитаешь что-то незначительным и не нужным, а потом вдруг оно надо, а нету. А чтобы не искать в своих “архивах” всё буду выкладывать на сайт.
Камера
… тут будет фото и данные по SoС, памяти и т.п. …
Инструменты
Утилиты
- TFTP-сервер Tftpd64 — TFTP-сервер для передачи файлов.
- Putty — программа для работы через UART.
- ConfigTool — поисковая утилита для камер Dahua.
Материалы
- ipc1230sp-boot+.zip – кусочек оригинального дампа.
- update.zip – оригинальная прошивка.
Исходные данные
Бэкап
Первым делом надо сделать резервную копию текущей прошивки. Благо соответствующие команды в загрузчике присутствуют. Для того, чтобы дамп успешно скопировался в каталог tftp-сервера, нужно, чтобы компьютер, где он запущен, и камера находились в одной сети. Смотрим значение ipaddr и serverip и меняем, если нужно, или меняем адрес компьютера.
У меня локальная сеть 192.168.1.х и адрес 192.168.1.10 не занят, поэтому с адресом камеры всё в порядке. Адрес моего компьютера 192.168.1.128 и либо можно изменить его в настройках сетевой карты и поменять последний октет, чтобы получилось 192.168.1.2, либо поменять значение serverip.
setenv serverip 192.168.1.128
save
Снимать дамп будем частями по 16 Мб, но вся память не нужна, т.к. в прошивке Ростелеком она, в основном, пустая и имеет смысл сохранить только первые 32 Мб.
mw.b 0x82000000 0xff 0x1000000
nand read 0x82000000 0x0 0x1000000
tftp 0x82000000 rt-ipc-hdw1230sp0.bin 0x1000000
mw.b 0x82000000 0xff 0x1000000
nand read 0x82000000 0x1000000 0x1000000
tftp 0x82000000 rt-ipc-hdw1230sp1.bin 0x1000000
На всякий случай выкладываю и дамп прошивки Ростелеком. Мало ли, вдруг кто-то захочет обратно вернуться. Только надо серийник поправить в редакторе. И ещё вырезал из дампа загрузчик, который позволяет восстановить окирпиченную камеру через HiTool. Статья об этом будет чуть позже.
- rt-ipc-hdw1230sp.zip – дамп прошивки Ростелеком
- rt-ipc-hdw1230sp-boot.zip – загрузчик прошивки Ростелеком
Прошивка и настройка загрузчика
Правильнее шить камеру средствами загрузчика, но загрузчик у нас корявый, поэтому очевидное решение – прошить родной загрузчик. Как выяснилось в процессе экспериментов, одного загрузчика недостаточно, а нужна ещё часть родного дампа, поэтому и шить будем сразу всё нужное.
mw.b 0x82000000 0xff 0x1000000
tftp 0x82000000 ipc1230sp-boot+.bin
nand erase 0x0 0x1000000
nand write 0x82000000 0x0 0x1000000
reset
После перезапуска, не дожидаясь приглашения, сразу жмём кнопку * и попадаем в загрузчик. Приглашения нет, потому что вывод в консоль в загрузчике отключен. За это отвечает параметр dh_keyboard. По умолчанию он равен 1, но если хочется видеть лог загрузки и загрузчика и ядра, то можно выставить его в 0.
Для понимания, что и как, введём команду printenv и увидим следующее:
Environment size: 990/131068 bytes
dhboot # printenv
bootargs=mem=256M console=ttyS0,115200 root=/dev/mtdblock7 rootfstype=squashfs
bootcmd=kload 0x82000000; bootm 0x82000000
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"
quickstart=0
wifiaddr=00:12:34:56:78:91
mp_autotest=0
HWID=IPC-HDBW1230E-S2:01:02:05:60:28:00:01:00:00:00:00:320:00:00:00:00:00:00:00:00:100
hwidEx=00:03:00:00:00:00:00:00:00:00:00:00:00:00:00:00
ID=000000000000000000
devalias=DH-IPC-HFW1230SP-0280B
da=tftp 0x82000000 dhboot.bin.img; flwrite;nand protect off;tftp dhboot-min.bin.img;flwrite
dr=tftp 0x82000000 romfs-x.squashfs.img; flwrite
dk=tftp 0x82000000 kernel.img; flwrite
du=tftp 0x82000000 user-x.squashfs.img; flwrite
dw=tftp 0x82000000 web-x.squashfs.img; flwrite
dp=tftp 0x82000000 partition-x.cramfs.img;flwrite
dc=tftp 0x82000000 custom-x.squashfs.img; flwrite
up=tftp 0x82000000 update.img; flwrite
tk=tftp 0x82000000 uImage; bootm
dh_keyboard=1
appauto=1
sysbackup=1
loglevel=4
pd=tftp 0x82000000 pd-x.squashfs.img; flwrite
stdin=serial
stdout=serial
stderr=serial
ver=U-Boot 2010.06-svn6470 (Dec 11 2018 - 16:27:39)
Environment size: 990/131068 bytes
Как видим, всё получилось и загрузчик у нас теперь Dahua, но нет важных параметров: MAC-адреса (ethaddr) и ID. Корректный MAC позволит работать в сети, а правильный ID даст возможность подключиться к облаку.
MAC-адрес есть на шильдике, а ID берётся из QR-кода на корпусе ИК-фильтра. Только точки из него надо убрать. Ниже QR-кода есть те же цифры, что и зашифрованы в нём, но не все. Если считать код, то там цифр больше и тестировал именно такой ID. Будет ли облако работать с укороченным, не проверял.
Поскольку загрузчик теперь другой то и serverip тоже другой – дефолтный, а не тот, который задали на предыдущем шаге. Выставим заодно и его в нужное значение.
setenv ID 6F079F7B09000000 // значение берётся из QR-кода
setenv ethaddr 08:ed:ed:00:00:00 // значение берётся с шильдика
setenv serverip 192.168.1.128
save
Прошивка прошивки
Теперь всё готово для прошивки штатным образом. Вводим команду run up и ждём окончания процесса, а после этого перезапускаем камеру командой reset.
run up
............
reset
После перезапуска камера станет доступна по адресу 192.168.1.108 и будет в неинициализированном состоянии. Надо инициализировать – задать пароль и можно настраивать.
Добрый день, решился прошить по инструкции. Но похоже что-то пошло не так и после последнего действия при загрузке выходит только это:
hi3516cv300 System startup
U-Boot 2010.06-svn6470 (Dec 11 2018 – 16:27:39)
Похоже кирпич) Подскажите есть варианты воскресить?
Она жива 🙂 Просто у загрузчика отключен вывод в консоль. Если бы было только hi3516cv300 System startup, то кирпич, а так, скорее всего нет и всё нормально. После подачи питания надо сразу давить * не дожидаясь приглашения и всё будет.
Отлично, сработало) Инициализировал в ConfigTool и зашел на Web-морду. Единственный нюанс с маком, вводил вроде все по инструкции но стал 90 и все нули. На выходных потестю с регистраторои Орбита. Большое спасибо за ваш труд!!!!
Пожалуйста!
С таким MAC-ом могут быть проблемы при работе в сети. Так что лучше всё-таки пофиксить.
Этот метод подойдёт к любой камере IPC-HFW1230SP с прошивкой Ростелекома или есть различия исходя из серийного номера?
Вот чего не знаю, того не знаю. Таких камер пока восстановил не очень много и статистики не набралось. До сих пор всё проходило удачно. У некоторых, правда, был какой-то непонятный глюк с bootargs, но ещё не понял по какой причине он возникает. И даже этот глюк путём шаманства лечится, но опять же, не совсем понятно почему лечится именно так. Так что, практически результат тоже есть, но и научный интерес тоже есть, а там уж кому что – или восстановить и запустить в работу или ковыряться дальше.
Статья не закончена, а когда этот момент настанет, то и все ответы будут, надеюсь.
Благодарю за инструкцию и файлы!
Удалось отвязать две камеры с положительным исходом.
Рад помочь!
Уважаемый mixatronik!
Огромное спасибо за проделанный труд! Можно попросить у вас фото штрих-кода для ID (например, K42LB на борту несёт 3 наклейки,одна на объективе 17 символов с точками, вторая в правом углу (мелкая 15 символов) и последняя на плате после снятия объектива).
Надо понимать, что тут всё на уровне догадок, но я же чётко указал откуда сам брал код – с корпуса ИК-фильтра. Это как раз 17 символов с точками, но точки надо убрать.
На самом деле, для этой модели облако не так уж и актуально. Слота под карту памяти у неё нет, а значит писать придётся на регистратор. Ну а там своё облако.
Здравствуйте! А вы можете помочь удаленно спроцессом отвязки камер? По незнанию купил пару таких, а теперь вот в печали… Приобрел вроде все необходимое, подпоялся на плате и выполнил подключение через Putty, бежит бесконечно отладочная информация, но никаких команд веести не могу
Как понимаю уже не акутально. 🙂
у меня прогресс
но на моменте выполнения команды runup выдает вот такое
dhboot # run up
Hisilicon ETH net controler
miiphy_register: non unique device name ‘0:1’
miiphy_register: non unique device name ‘0:2’
UP_PORT : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M
UP_PORT : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
Download Filename ‘update.img’.
Downloading: *
ARP Retry count exceeded; starting again
Недоступен tftp-сервер или в его каталоге нет искомого файла. Если первое, то смотреть в сторону брандмауэра, если второе, то положить файл. Ещё может быть, что неправильно задан IP-адрес сервера, то бишь компа, но тут могу посоветовать только повнимательнее читать мануал 🙂
Уже разобрался😀 ip сервера поправил и все завелись отлично! Спасибо Вам большое за отличную инструкцию) спасаете людей)
Всегда пожалуйста!