Отвязка от Ростелеком камеры DH-IPC-K42LB

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

Эта камера, судя по всему, по железу аналогична камере Dahua DH-IPC-K42AP, а называется так по принципу “Операции “Ы” – “Чтоб никто не догадался!” Если кто не знает о чём речь, то загуглите, а лучше посмотрите! Ну так вот, загрузчик у этой модели уже не оригинальный и так просто отвязать не получится, но если покопаться, то результат будет.

Камера

Инструменты

Утилиты

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

Материалы

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

u-boot
U-Boot 2015.01 (Mar 05 2021 - 14:39:35)
Version: I6g#######
I2C:   ready
DRAM:
WARNING: Caches not enabled
SPINAND_I:  SPINAND: _MDrv_SPINAND_GET_INFO: Found spinand INFO
(0xA1), (0xE4), (0x7F),
SPINAND: board_nand_init: CIS contains part info
128 MiB
MMC:   MStar SD/MMC: 0
In:    serial
Out:   serial
Err:   serial
Net:   MAC Address 00:30:1B:BA:02:DB
Auto-Negotiation...
Link Status Speed:100 Full-duplex:1
sstar_emac
gpio debug MHal_GPIO_Pad_Set:599
gpio[12] is 0
gpio debug MHal_GPIO_Pad_Set:599
gpio[13] is 0
gpio debug MHal_GPIO_Pad_Set:599
gpio[63] is 1
gpio - Config gpio port
Usage:
gpio (for 2nd parameter, you must type at least 3 characters)
gpio output  <1/0>  : ex: gpio output 69 1
gpio input/get      : ex: gpio input 10  (gpio 10 set as input)
gpio toggle         : ex: gpio tog 49 (toggle)
gpio state          : ex: gpio sta 49 (get i/o status(direction) & pin status)
gpio list [num_of_pins]    : ex: gpio list 10 (list GPIO1~GPIO10 status)
help
?       - alias for 'help'
aes     - Control Mstar AES engine
base    - print or set address offset
bootm   - boot application image from memory
bootp   - boot image via network using BOOTP/TFTP protocol
chpart  - change active partition
cmp     - memory compare
cp      - memory copy
crc32   - checksum calculation
dbg     - set debug message level. Default level is INFO
dcache  - enable or disable data cache
debug   - Disable uart rx via PAD_DDCA to use debug tool
dhcp    - boot image via network using DHCP/TFTP protocol
dstar   - script via SD/MMC
eeprom  - EEPROM sub-system
env     - environment handling commands
estar   - script via network
estart  - EMAC start
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
fatread - FAT fatread with FSTART
fatsize - determine a file's size
fwupdate- fwupdate command allows to flash vc camera firmware from file on mmc or from memory.
go      - start application at address 'addr'
gpio    - Config gpio port
help    - print command description/usage
i2c     - I2C sub-system
icache  - enable or disable instruction cache
initDbgLevel- Initial varaible 'dbgLevel'
loop    - infinite loop on address range
macaddr - setup EMAC MAC addr
md      - memory display
mm      - memory modify (auto-incrementing address)
mmc     - MMC sub system
mmcinfo - display MMC info
mssdmmc - Mstar SD/MMC IP Verification System
mstar   - script via TFTP
mtdparts- define flash/nand partitions
mw      - memory write (fill)
mxp     - MXP function for Mstar MXP partition
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
readcis - Read cis block content
reset   - Perform RESET of the CPU
riu     - riu  - riu command

run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
secauth - Control Sstar security authenticate sequence
setenv  - set environment variables
sf      - SPI flash sub-system
sfbin   - for uploading sf image to a server(via network using TFTP protocol)
sigauth - Only verify digital signature without aes
srcfg   - sensor pin and mclk configuration.
tftpboot- boot image via network using TFTP protocol
ubi     - ubi commands
usb     - USB sub-system
usbboot - boot from USB device
ustar   - script via USB
version - print monitor, compiler and linker version
writecis- Search CIS in dram then write to spinand.
printenv
baudrate=115200
bootargs=mem=130840K console=ttyS0,115200 LX_MEM=0x7fc6000 mma_heap=mma_heap_name0,miu=0,sz=0x4000000 rootfstype=ramfs mtdparts=nand0:1536K(boot),512K(tech),5120K(kernel),16384K(app),-(config) hw_type=2007
bootcmd=nand read 0x22000000 0x200000 0x500000; bootm 0x22000000; setenv bootargs $(bootargs) bkp=1; nand read 0x22000000 0x700000 0x500000; bootm 0x22000000
bootdelay=0
ethact=sstar_emac
ethaddr=00:30:1b:ba:02:db
ipaddr=192.168.1.10
nand_erasesize=20000
nand_oobsize=40
nand_writesize=800
preboot=gpio output 12 0;gpio output 13 0;gpio output 63 1;gpio output 6 0gpio output 52 0
serverip=192.168.1.128
stderr=serial
stdin=serial
stdout=serial
usb_folder=images

Environment size: 718/131068 bytes

Подключение

Подключаемся к плате камеры через UART, запускаем Putty на нужном порту и подаём питание. Ростелекомовский загрузчик останавливается по комбинации Ctrl-Enter. Если с контактами всё в порядке и нажали комбинацию вовремя, то попадаем в бут и можем действовать.

Резервная копия прошивки

На всякий случай нужно сделать бэкап. Через tftp не выйдет, т.к. он работает только на приём, поэтому единственный вариант – через карту памяти. Нужно вставить карточку и выполнить следующие команды:

mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x0 0x1000000;mmc write 0x22000000 0x10 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x1000000 0x1000000;mmc write 0x22000000 0x8010 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x2000000 0x1000000;mmc write 0x22000000 0x10010 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x3000000 0x1000000;mmc write 0x22000000 0x18010 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x4000000 0x1000000;mmc write 0x22000000 0x20010 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x5000000 0x1000000;mmc write 0x22000000 0x28010 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x6000000 0x1000000;mmc write 0x22000000 0x30010 0x8000
mw.b 0x22000000 0xff 0x1000000;nand read 0x22000000 0x7000000 0x1000000;mmc write 0x22000000 0x38010 0x8000

Не уверен, что всё прошло как надо, но надеюсь бэкап не пригодится 🙂 Вытащить с карточки его можно только в Linux.

Прошивка загрузчика

Распаковываем бинарный файл прошивки с помощью архиватора 7Zip, либо берём уже готовые файлы.

У Dahua загрузчик состоит из двух частей и в скачанной прошивке есть они обе, поэтому восстановление оригинального загрузчика особого труда не представляет. Нас интересуют файлы dhboot-min.bin.img и dhboot.bin.img. Алгоритм действий подробно разобран в статье Восстановление камер Dahua, а здесь просто упомяну, что нужно отрезать от каждого из файлов 64 байта заголовка и сохранить полученный результат в файл с другим именем, например, dhboot-min.bin и dhboot.bin.

Далее запускаем tftp-сервер, кладём в его рабочий каталог подредактированные файлы, а заодно и все остальные файлы распакованной прошивки.

setenv serverip 192.168.1.128
setenv ipaddr 192.168.1.10

mw.b 0x22000000 ff 0x1000000
tftp 0x22000000 dhboot-min.bin
nand erase 0x0 0x1000000
nand write 0x22000000 0x0 0x1000000

mw.b 0x22000000 ff 0x1000000
tftp 0x22000000 dhboot.bin
nand erase 0x340000 0x1000000
nand write 0x22000000 0x340000 0x1000000

reset

Команды nand erase, nand write и reset даём только в том случае, если выполнение предыдущей команды прошло успешно. Если что-то пошло не так, например, бинарник не скачался, а память уже затёрта, то после reset с вероятностью 100% получим кирпич.

После перезапуска, для попадания в оригинальный даховский бут, надо жать уже другую клавишу: *. Если успели, то снова задаём адрес сервера и прошиваем остальные части системы.

setenv serverip 192.168.1.128

run dp
run dk
run dr
run pd
run dw
run da

Или одной строкой:

setenv serverip 192.168.1.128;run dp;run dk;run dr;run pd;run dw;run da

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

Далее, задаём критически важные переменные окружения.

setenv HWID IPC-K42A-HD:01:02:07:89:3C:00:01:10:01:01:04:320:03:00:00:00:00:00:00:00:80

setenv devalias DH-IPC-K42LB
setenv ethaddr 6c:1c:71:00:00:00         // MAC-адрес с наклейки камеры
setenv ID 7G05B7AB091000000              // QR-код с наклейки на ИК-фильтре

save

HWID определяет аппаратную платформу, devalias – то, как камера будет видеться в ConfigTool, а может и не только в нём, ethaddr MAC-адрес, который берётся с наклейки камеры, а ID – серийный номер из QR-кода с наклейки на ИК-фильтре.

Насчёт серийного номера возможны варианты. На наклейке есть цифровой серийник РТ, который можно использовать в качестве ID. С ним облако Dahua тоже вроде бы работает, но продолжительное время не тестировал – может и отвалиться. На корпусе ИК-фильтра есть наклейка с QR-кодом, который больше похож на Даховский серийник и думаю, что в качестве ID лучше использовать именно его.

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


  1. kot4600

    купил на авито пару DH-IPC-K42LB, чтоб по экспериментировать по вашей инструкции , первую прошил все отлично , а со второй что то пошло не так.

    Между командами выдерживал интервал , все прошло внешне успешно, но после перезагрузки

    Search UNFD_PART_UBOOT-Header fail
    Load BL from SPINAND
    -Verify CRC32 Header failed!
    Disable MMU and D-cache before jump to UBOOT

    Все, приплыли?

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

      То есть в бут не получается зайти? Скорее всего не прошилась вторая часть загрузчика. Либо где-то при выполнении команды была ошибка, либо флешка дохлая.
      Если первое, то оживить можно – в Вики OpenIPC есть мануал по раскирпичиванию камер на процах SigmaStar, но я пока не освоил, хотя кирпичик такой есть и вникать придётся.
      У тебя. соответственно, выбор – подождать моего мануала, либо попытаться разобраться самому.

      Ответить
      1. kot4600

        Спасибо за наводку! Если получится отпишусь. Да в boot зайти не получается.

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

          Удачи!

          Ответить
  2. Dmitry

    Добрый день. Подскажите пожалуйста, купил адаптер Адаптер CH340 без G. он без одной ножки, подключился согласно инструкции, при подключении через Puttyy вижу как летят строки данных, но остановить комбинацией Ctrl+enter не получается. камера аналогична статье буква в букву.

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

      Добрый! При нажатии на клавиши в логе проскакивает то, что нажимаешь?

      Ответить
      1. Dmitry

        да. при нажатии на клавиши символы можно вбить, но всё пролетает, дальше вбить ничего не получается, иногда запрашивает Login а после password. Но пишет что пароль не верный, всё это происходит при бесконечном потоке строк.

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

          Тогда тупо не успеваешь. То что описываешь, это уже Линукс, а надо остановить запуск загрузчика. Для этого надо давить кнопки прям сразу после подачи питания. И не просто нажать и держать, а нажал-отпустил, нажал-отпустил, но быстро.

          Ответить
          1. Dmitry

            Только руки дошли. Спасибо. Всё получилось. Но пришлось немного глядеть в вашу статью на Дзене, чтобы получить картину целиком 🙂 там подробней, чем здесь. Спасибо за ваш труд.

          2. mixatronik автор

            Вот это поворот! Вообще говоря сайт первичен и на Дзен портирую позже. Хотя там другая статья. Её оригинал на сайте вот: Отвязка от Ростелеком камеры Dahua DH-IPC-K42AP.
            Спасибо за обратную связь! Как раз сейчас работаю над тем, чтобы статьи были самодостаточны. Например, про TFTP сервер практически перестал подробно описывать, потому что для меня это уже рутина, а для человека, который сталкивается впервые это создаёт проблему, т.к. непонятно, что это, как и куда. Приходится искать информацию, что неудобно. Хотя, с другой стороны, самообразование всегда эффективнее, что просто прочитать готовое 🙂
            Пожалуйста!

  3. Михаил

    здравствуйте, есть две камеры DH-IPC-K42LB, очень хочу чтобы кто нибудь прошил (отвязал от РТ) естественно не бесплатно !
    avilonmx@ya.ru, 8-9o5-575-oo-44

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

      Добрый! Вот тут написал, что и как и сколько стоит. Если всё устраивает – сделаем.

      Ответить
  4. sergol2

    Добрый день. После прошивки первой части имеем следующее. Можно с этим что то сделать?

    IPL_CUST fd8e347
    runUBOOT()
    CIS in Block00
    Need to search SNI
    Not find SNI
    ChkHealthy: 0003: 0007: 0000
    ChkHealthy: 0004: 0007: 0000
    ChkHealthy: 0005: 0007: 0000

    Load BL from SPINAND
    -Verify CRC32 passed!
    -Decompress XZ
    u32HeaderSize=0x00000040
    u32Loadsize=0x00006948
    decomp_size=0x0000f294
    Disable MMU and D-cache before jump to UBOOT

    U-Boot 2010.06-svn8061 (Jun 29 2021 – 15:25:15)

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

      Всё в порядке. Надо просто вовремя нажать *

      Ответить
  5. sergol2

    И есть ли информация по каким адресам и как писать загрузчик программатором?

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

      По тем же, что и через UART.

      Ответить
  6. sergol2

    Выяснилось что залил прошивку от ap в lb. Можно ли это как то поправить?

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

      Так это одна и та же железка. В первом предложении же написано.

      Ответить
  7. Sergol2

    Проблему вроде решил. Через nander. Большое вам спасибо за статью. Последний вопрос я так и не понял а у этих камер есть вай фай?

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

      Хорошо, что всё получилось! Хотя, по-моему и в первом сообщении всё было правильно 🙂
      Wi-Fi у них нет.

      Ответить
  8. domian

    всё прошил по инструкции, но при перезапуске пишет “Unable to open persistent property directory /data/property errno: 2”, горит красным и перезапускается. похоже что чего-то не хватает. можно как-то решить?

    Ответить
  9. domian

    разобрался. надо было после задания “критически важных переменных окружения” сохранить настройки! спасибо.

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

      Там есть save, хотя в первой редакции действительно упустил 🙂 Спасибо за обратную связь!

      Ответить