Прошивка камеры Ростелеком IPC-K22AP

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

Про такую модель уже есть статья Отвязка от Ростелеком камеры Dahua DH-IPC-K22AP, но в тот раз прошивка была практически родная, только залоченная. Прислали на прошивку несколько аналогичных камер, но уже по внешнему виду стало понятно, что что-то c ними не так. Логотипа Dahua не было. Наклейка с серийником и MAC-ом была, но другого формата. Правда наклейка с правильным QR-кодом оказалась в наличии, а значит будет откуда брать серийник и к облаку можно будет подключить без особых трудностей.

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

Инструменты

Материалы

Утилиты

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

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

u-boot
IPL geaba80f
D-0a
128MB
BIST0_0001-OK
Load IPL_CUST from SPINAND
u16Pba: 0006
crc OK

IPL_CUST geaba80f
u16Pba: 0009
Load UBOOT from SPINAND
  decomp_size=0x000741f0


U-Boot 2015.01 (Mar 31 2023 - 06:28:53)

Version: I6g#######
I2C:   ready
DRAM:
WARNING: Caches not enabled
SPINAND_I:  SPINAND: _MDrv_SPINAND_GET_INFO: Found spinand INFO
(0xC8), (0x1), (0x7F),
SPINAND: board_nand_init: CIS contains part info
128 MiB
MMC:   MStar SD/MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   MAC Address 00:30:1B:BA:02:DB
Status Error!
sstar_emac
Warning: sstar_emac using MAC address from net device

gpio debug MHal_GPIO_Pad_Set:599
gpio[12] is 1
gpio debug MHal_GPIO_Pad_Set:599
gpio[13] is 1
gpio debug MHal_GPIO_Pad_Set:599
gpio[63] is 0
gpio debug MHal_GPIO_Pad_Set:599
gpio[52] is 0
gpio debug MHal_GPIO_Pad_Set:599
gpio[6] is 1
gpio debug MHal_GPIO_Pad_Set:599
gpio[7] is 1
gpio debug MHal_GPIO_Pad_Set:599
gpio[6] is 0
_[sdmmc_0] Err: #Cmd_8 (0x000001AA)=>(E: 0x0008)(S: 0x00000000)__(L:913)
_[sdmmc_0] Err: #Cmd_55 (0x00000000)=>(E: 0x0008)(S: 0x00000000)__(L:913)
_[sdmmc_0] Err: #Cmd_1 (0x00000000)=>(E: 0x0008)(S: 0x00000000)__(L:913)
Card did not respond to voltage select!
Invalid device index:part 0:1
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=0x5000000 rootfstype=ramfs mtdparts=nand0:1536K(boot),512K(tech),5120K(kernel),16384K(app),-(config) hw_type=908
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
preboot=gpio output 12 1;gpio output 13 1;gpio output 63 0;gpio output 52 0;gpio output 6 1;gpio output 7 1;gpio output 6 0; ; fwupdate mmc 0:1 firmware.bin --enable-legacy-fw --with-props
stderr=serial
stdin=serial
stdout=serial
usb_folder=images

Environment size: 706/131068 bytes

Подготовка

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

Вскрытие

Вскрывается камера просто – нужно открутить только два винта снизу сзади и снять крышку.

Прошивка камеры Ростелеком IPC-K22AP

TFTP-сервер

TFTP-сервер Tftpd64 нужно извлечь из архива и запустить. Речь идёт про портативную версию. Далее нужно положить распакованные файлы прошивки в ту же папку или в отдельную, но тогда эту отдельную папку надо указать в настройках Tftpd64. Нажатием на кнопку Show Dir можно открыть окно с содержимым текущей папки и убедиться, что файлы видны сервером.

Прошивка камеры Ростелеком IPC-K22AP

Брандмауэр или антивирус с функцией брандмауэра должен быть отключён, либо в их настройках должен быть открыт UDP-порт 69.

UART-адаптер

Далее нужно подключить коннектор к контактным отверстиям UART-интерфейса. Ножки разъёма болтаются в отверстиях, поэтому надо либо их чуть подогнуть, либо наклонить сам коннектор, чтобы добиться надёжного соединения. Затем можно подключать адаптер к компьютеру. Исхожу из того, что драйверы уже установлены и номер порта известен.

Putty

При запуске Putty нужно выбрать тип соединения Serial, скорость 115200, прописать COM-порт, который система выделила UART-адаптеру и нажать кнопку Open.

Прошивка

Подать питание на камеру и сразу же нажать Enter. Отпустить можно тогда, когда запуск остановится и на экране появится приглашение ввода команд. Дальше нужно задать адреса камеры и компьютера с запущенным TFTP-сервером.

setenv serverip 192.168.1.128
setenv ipaddr 192.168.1.10
save

Бэкап делать не стал, т.к. tftp в этом загрузчике работает только в одну сторону – на приём, а возиться с картой памяти не хотелось. Да и ни к чему это!

В приведённых примерах адрес компьютера: 192.168.1.128, а адрес камеры: 192.168.1.10. Необязательно адреса должны быть именно такими. Главное, чтобы были из одной подсети.

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

mw.b 0x22000000 0xff 0x200000
tftp 0x22000000 dhboot-min.bin
nand erase 0 0x200000
nand write 0x22000000 0 0x200000

mw.b 0x22000000 0xff 0x100000
tftp 0x22000000 dhboot.bin
nand erase 0x340000 0x100000
nand write 0x22000000 0x340000 0x100000

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

Поскольку загрузчик теперь даховский, то и останавливать его надо звёздочкой: *.

В родном загрузчике снова задаём адреса камеры и сервера и значения переменных HWID, devalias, ID и ethaddr. Узнать ID можно отсканировав QR-код, расположенный на задней крышке. В нём содержится строка для подключения к облаку вида:

{SN:8K00234PB000000,DT:IPC-K22AP,SC:L23FBEF2,NC:010}

В этом примере ID равен 8K00234PB000000. Значение ethaddr – это MAC-адрес, который берётся с наклейки со штрих-кодом.

setenv serverip 192.168.1.128;setenv ipaddr 192.168.1.10;save
setenv HWID IPC-K22A-HD:01:02:07:A8:3B:00:01:10:01:01:04:320:03:00:00:00:00:00:00:00:80
setenv devalias DH-IPC-K22AP
setenv ID 8K00234PB000000
setenv ethaddr C0:B3:C8:00:00:00

save

run dp;run dk;run dr;run pd;run dw;run da
reset

reset

Команду run da можно и не выполнять, т.к. это прошивка загрузчика, а его уже прошили ручками, но пусть будет. Мало ли…

В QR-коде, расположенном на задней стенке корпуса камеры, есть ещё и код безопасности, он же SC, но оказалось, что если прописать его в загрузчике, как и положено, то камеру можно подключить только к DMSS, а к IMOU она подключаться отказывается. Если же переменная SC в загрузчике отсутствует, то подключить можно и к DMSS и к IMOU. Более универсально получается.

Запуск

Запускаем утилиту ConfigTool и ждём пока в списке появится наш зверёк. Сначала адрес будет дефолтный 192.168.1.108, но если камера подключена не напрямую в комп, а в коммутатор или роутер, то бишь в сеть, а в сети есть DHCP-сервер, то не надо торопиться заходить по дефолтному адресу, потому что он поменяется. Смотрим какой адрес получила камера и открываем его в браузере. Полноценно интерфейс работает, опять же, только в Internet Explorer или в Edge в режиме Internet Explorer

После прошивки камера находится в неинициализированном состоянии. Инициализировать её можно задав пароль через ConfigTool, с помощью кнопки Initiallize, либо в браузере, при первом входе.

Результат

u-boot
IPL fd8e347
D-0a
128MB
BIST0_0001-OK
Load IPL_CUST from SPINAND
CIS in Block00
Match CIS ID( c8 01 )

 BlSize 00004780
Checksum OK

IPL_CUST fd8e347
runUBOOT()
CIS in Block00
Match CIS ID( c8 01 )
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 (Nov 27 2021 - 10:11:10)


disable wdt
help
?       - alias for 'help'
backup  - backup        - manual backup program.

boot    - boot default, i.e., run 'bootcmd'
bootm   - boot application image from memory
chpart  - change active partition
ebist   - PHY loopback test
edump   - EMAC Register settings dump
eloopback- Long loopback test
epd     - emac power down
erasepart- erasepart

err     - get arm fsr
estart  - EMAC start
ewavetest- EMAC wave test
fatls   - list files in a directory (default /)
flwrite - flwrite - write data into FLASH memory

fsr     - get arm fsr
help    - print command description/usage
kload   - kload  - load uImage file from parttion

loadspi - load data from SPI
macaddr - setup EMAC MAC addr
memsize - memsize               - set mem size

mtdparts- define flash/nand partitions
nand    - NAND sub-system
nboot   - boot from NAND device
otp_printf- print TracingCode environment variables
partition- print partition information
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
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv  - set environment variables
tftpboot- tftpboot- boot image via network using TFTP protocol
printenv
bootargs=mem=128M console=ttyS0,115200 root=/dev/mtdblock12 rootfstype=squashfs
bootcmd=kload 0x22000000; bootm 0x22000000
bootdelay=1
baudrate=115200
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
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
ethact=sstar_emac
serverip=192.168.1.128
ipaddr=192.168.1.10
HWID=IPC-K22A-HD:01:02:07:A8:3B:00:01:10:01:01:04:320:03:00:00:00:00:00:00:00:80
devalias=DH-IPC-K22AP
ID=8K00234PB000000
ethaddr=C0:B3:C8:00:00:00
stdin=serial
stdout=serial
stderr=serial
ver=U-Boot 2010.06-svn8061 (Nov 27 2021 - 10:11:10)

Environment size: 1164/131068 bytes
Прошивка камеры Ростелеком IPC-K22AP
Изображение на скриншоте – это не какой-то хитрый фон, так показывает эта камера, когда её объектив полностью закрыт.

Поддерживается ONVIF и RTSP, поэтому никаких проблем с подключением к регистраторам и видеосерверам быть не должно. Ссылка RTSP:

  • rtsp://admin:password@192.168.1.11:554/cam/realmonitor?channel=1&subtype=0 – 1-й канал, 1-й поток;
  • rtsp://admin:password@192.168.1.11:554/cam/realmonitor?channel=1&subtype=1 – 1-й канал, 2-й поток.
Оцените статью
( 2 оценки, среднее 5 из 5 )
МихаТроник
Добавить комментарий