Отвязка от Ростелеком камеры IPC-HFW1230SP/IPC-HDW1230SP

Отвязка от Ростелеком

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

Камера

тут будет фото и данные по SoС, памяти и т.п.

Инструменты

Утилиты

  • TFTP-сервер Tftpd64 — TFTP-сервер для передачи файлов.
  • Putty — программа для работы через UART.
  • ConfigTool — поисковая утилита для камер Dahua.

Материалы

Исходные данные

u-boot
hi3516cv300 System startup


U-Boot 2010.06 (Jun 01 2020 - 08:20:12)

Check Flash Memory Controller v100 ... Found
SPI Nand(cs 0) ID: 0xc8 0x21 Name:"F50L1G41A"
Block:128KB Page:2KB Chip:128MB*1 OOB:64B ECC:8bit/512
ECC provided by Flash Memory Controller
SPI Nand total size: 128MB
MMC:
EMMC/MMC/SD controller initialization.
Card did not respond to voltage select!
No EMMC/MMC/SD device found !
*** Warning - bad CRC or NAND, using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
hi3516cv300-vc #
help
?       - alias for 'help'
base    - print or set address offset
bootm   - boot application image from memory
bootp   - boot image via network using BOOTP/TFTP protocol
bootss  - boot from snapshot image
cmp     - memory compare
cp      - memory copy
crc32   - checksum calculation
ddr     - ddr training function
ext2load- load binary file from a Ext2 filesystem
ext2ls  - list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
fwupdate- fwupdate command allows to flash vc camera firmware from file on mmc or from memory.
getinfo - print hardware information
go      - start application at address 'addr'
help    - print command description/usage
hi_gpio - set hisilicon gpio states
loadb   - load binary file over serial line (kermit mode)
loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
md      - memory display
mii     - MII utility commands
mm      - memory modify (auto-incrementing address)
mmc     - MMC sub system
mmcinfo - mmcinfo -- display MMC info
mtest   - simple RAM read/write test
mw      - memory write (fill)
nand    - NAND sub-system
nboot   - boot from NAND device
nm      - memory modify (constant address)
ping    - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
saveenv - save environment variables to persistent storage
setenv  - set environment variables
sf      - SPI flash sub-system
tftp    - tftp  - download or upload image via network using TFTP protocol
ugzip   - Compress gzipfile with hardware IP
version - print monitor version
printenv
bootargs=mem=64M console=ttyAMA0,115200 rootfstype=ramfs mtdparts=hinand:1024K(boot),1024K(tech),5120K(kernel),16384K(app),-(config) hw_type=405 ubi.mtd=3,2048
bootcmd=hi_gpio $(hi_gpios); fwupdate mmc 0:1 firmware.bin --enable-legacy-fw --with-props; nand read 0x82000000 0x200000 0x500000; bootm 0x82000000; setenv bootargs $(bootargs) bkp=1; nand read 0x82000000 0x700000 0x500000; bootm 0x82000000
bootdelay=1
baudrate=115200
ethaddr=00:00:23:34:45:66
ipaddr=192.168.1.10
serverip=192.168.1.2
netmask=255.255.255.0
bootfile="uImage"
hi_gpios=60! 0! 73 27 72
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06 (Jun 01 2020 - 08:20:12)

Environment size: 656/131068 bytes

Бэкап

Первым делом надо сделать резервную копию текущей прошивки. Благо соответствующие команды в загрузчике присутствуют. Для того, чтобы дамп успешно скопировался в каталог 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
Перед манипуляциями с tftp-сервером отключайте Брандмауэр Windows или, если используете какой-то другой, то его, либо ставьте порт UDP 69 в исключения.

Снимать дамп будем частями по 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. Статья об этом будет чуть позже.

Прошивка и настройка загрузчика

Правильнее шить камеру средствами загрузчика, но загрузчик у нас корявый, поэтому очевидное решение – прошить родной загрузчик. Как выяснилось в процессе экспериментов, одного загрузчика недостаточно, а нужна ещё часть родного дампа, поэтому и шить будем сразу всё нужное.

Необходимые материалы предоставил и помог ценными советами камрад fobos с форума dahuacctv.com
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 и увидим следующее:

Отвязка от Ростелеком камеры IPC-HFW1230SP/IPC-HDW1230SP
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
Отвязка от Ростелеком камеры IPC-HFW1230SP/IPC-HDW1230SP

После перезапуска камера станет доступна по адресу 192.168.1.108 и будет в неинициализированном состоянии. Надо инициализировать – задать пароль и можно настраивать.

Отвязка от Ростелеком камеры IPC-HFW1230SP/IPC-HDW1230SP
Положительного результата удалось добиться только после совместного мозгового штурма с камрадом @ABATAPA

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


  1. montajnik007

    Добрый день, решился прошить по инструкции. Но похоже что-то пошло не так и после последнего действия при загрузке выходит только это:
    hi3516cv300 System startup
    U-Boot 2010.06-svn6470 (Dec 11 2018 – 16:27:39)
    Похоже кирпич) Подскажите есть варианты воскресить?

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

      Она жива 🙂 Просто у загрузчика отключен вывод в консоль. Если бы было только hi3516cv300 System startup, то кирпич, а так, скорее всего нет и всё нормально. После подачи питания надо сразу давить * не дожидаясь приглашения и всё будет.

      Ответить
      1. montajnik007

        Отлично, сработало) Инициализировал в ConfigTool и зашел на Web-морду. Единственный нюанс с маком, вводил вроде все по инструкции но стал 90 и все нули. На выходных потестю с регистраторои Орбита. Большое спасибо за ваш труд!!!!

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

          Пожалуйста!
          С таким MAC-ом могут быть проблемы при работе в сети. Так что лучше всё-таки пофиксить.

          Ответить
  2. Александр

    Этот метод подойдёт к любой камере IPC-HFW1230SP с прошивкой Ростелекома или есть различия исходя из серийного номера?

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

      Вот чего не знаю, того не знаю. Таких камер пока восстановил не очень много и статистики не набралось. До сих пор всё проходило удачно. У некоторых, правда, был какой-то непонятный глюк с bootargs, но ещё не понял по какой причине он возникает. И даже этот глюк путём шаманства лечится, но опять же, не совсем понятно почему лечится именно так. Так что, практически результат тоже есть, но и научный интерес тоже есть, а там уж кому что – или восстановить и запустить в работу или ковыряться дальше.
      Статья не закончена, а когда этот момент настанет, то и все ответы будут, надеюсь.

      Ответить
      1. worlock

        Благодарю за инструкцию и файлы!
        Удалось отвязать две камеры с положительным исходом.

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

          Рад помочь!

          Ответить
  3. Reyz

    Уважаемый mixatronik!
    Огромное спасибо за проделанный труд! Можно попросить у вас фото штрих-кода для ID (например, K42LB на борту несёт 3 наклейки,одна на объективе 17 символов с точками, вторая в правом углу (мелкая 15 символов) и последняя на плате после снятия объектива).

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

      Надо понимать, что тут всё на уровне догадок, но я же чётко указал откуда сам брал код – с корпуса ИК-фильтра. Это как раз 17 символов с точками, но точки надо убрать.
      На самом деле, для этой модели облако не так уж и актуально. Слота под карту памяти у неё нет, а значит писать придётся на регистратор. Ну а там своё облако.

      Ответить
  4. Алексей

    Здравствуйте! А вы можете помочь удаленно спроцессом отвязки камер? По незнанию купил пару таких, а теперь вот в печали… Приобрел вроде все необходимое, подпоялся на плате и выполнил подключение через Putty, бежит бесконечно отладочная информация, но никаких команд веести не могу

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

      Как понимаю уже не акутально. 🙂

      Ответить
  5. Алексей

    у меня прогресс
    но на моменте выполнения команды 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

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

      Недоступен tftp-сервер или в его каталоге нет искомого файла. Если первое, то смотреть в сторону брандмауэра, если второе, то положить файл. Ещё может быть, что неправильно задан IP-адрес сервера, то бишь компа, но тут могу посоветовать только повнимательнее читать мануал 🙂

      Ответить
      1. Алексей

        Уже разобрался😀 ip сервера поправил и все завелись отлично! Спасибо Вам большое за отличную инструкцию) спасаете людей)

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

          Всегда пожалуйста!

          Ответить
  6. Андрей

    Добрый день, mixatronik!
    Пытался отвязать камеру и получил кирпич.
    Вот что было последнее:

    bootdelay=1
    baudrate=115200
    ethaddr=00:00:23:34:45:66
    netmask=255.255.255.0
    bootfile=”uImage”
    hi_gpios=60! 72 27 0! 73
    stdin=serial
    stdout=serial
    stderr=serial
    verify=n
    ver=U-Boot 2010.06 (Feb 20 2020 – 08:38:06)
    serverip=192.168.1.39
    ipaddr=192.168.1.111

    Environment size: 658/131068 bytes
    hi3516cv300-vc # mw.b 0x82000000 0xff 0x1000000
    hi3516cv300-vc # tftp 0x82000000 ipc1230sp-boot+.bin
    Hisilicon ETH net controler
    MAC: 00-00-23-34-45-66
    PHY not link.
    hi3516cv300-vc # nand erase 0x0 0x1000000

    NAND erase: device 0 offset 0x0, size 0x1000000
    Erasing at 0xfe0000 — 100% complete.
    OK
    hi3516cv300-vc # nan
    nand – NAND sub-system

    hi3516cv300-vc # nand erase 0x0 0x1000000

    NAND erase: device 0 offset 0x0, size 0x1000000
    Erasing at 0xfe0000 — 100% complete.
    OK
    hi3516cv300-vc # nand write 0x82000000 0x0 0x1000000

    NAND write: device 0 offset 0x0, size 0x1000000
    pure data length is 16777216, len_incl_bad is 16777216
    16777216 bytes written: OK
    hi3516cv300-vc # reset
    resetting …

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

      Добрый! В чате уже подсказали, что и как, но напишу и здесь. Строка PHY not link буквально означает, что связи нет и, соответственно, передача дампа невозможна. Значит и записывать нечего, поэтому и имеющееся стирать не стоит. Надо разбираться почему нет связи и только после её восстановления продолжать.
      Тем не менее, дерьмо случается, но выход есть: Восстановление камеры IPC-HFW1230SP/IPC-HDW1230SP, поэтому можно смело экспериментировать.

      Ответить
  7. Rinat

    Огромное спасибо за проделанную работу! Удачно отвязал камеру от ростелекома.

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

      Рад помочь!

      Ответить
  8. Андрей

    Добрый день. А русский язык в родную прошивку Dahua 1230SP как-то добавить можно? Если да, то как? Благодарю.

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

      Добрый! Честно говоря, по моему мнению, русификация, в данном случае, нужна не более чем никому 🙂 Переводить там особо нечего. Там ведь не высокохудожественный текст, а тупо параметры. Соответственно, вообще не интересовался этим вопросом. Может и можно что-то сделать, но зачем?

      Ответить