Запуск OpenIPC на камере Ростелеком IPC-C22E-S2 v2

OpenIPC

Несмотря на схожее название, эта камера не имеет ничего общего с камерой IPC-C22E-S2, про отвязку которой от сервисов различных провайдеров на сайте есть несколько статей. Кто является производителем железа не ясно и вряд ли это вообще Dahua. В связи с этим, не очень понятно, где искать оригинальную прошивку и существует ли она в принципе.

Как всегда, в подобной ситуации, выручает OpenIPC, благо аппаратная платформа в списке поддерживаемых и сборка для препарируемой модели есть даже в репозитории проекта OpenIPC Builder.

OpenIPC Builder позволяет получить дамп, в котором уже прописаны основные настройки и нет необходимости делать это вручную. Таким образом, сразу после прошивки, получаем работающее устройство.

Инструменты

Материалы

  • ipc-c22e-s2-v2.zip – дампы загрузчика, ядра и системы.
  • commands.txt – шпаргалка.

Утилиты

  • Putty — программа для работы через UART.

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

u-boot
IPL g40bd5ed
D-0a
HW Reset
SPI 54M
128MB
BIST0_0001-OK
MXP found at 0x0000f000
offset:00010000
Checksum OK

IPL_CUST g40bd5ed
MXP found at 0x0000f000
offset:00020000
XZ decomp_size=0x00045e44


U-Boot 2015.01 (Mar 22 2023 - 07:52:09)

Version: I6g#######
I2C:   ready
DRAM:
WARNING: Caches not enabled
MMC:   MStar SD/MMC: 0
nor_flash_mxp allocated success!!
Flash is detected (0x0B05, 0xC8, 0x40, 0x18)
SF: Detected nor0 with total size 16 MiB
MXP found at mxp_offset[2]=0x0000F000, size=0x1000
can not found mxp record: UBOOT_ENV
Flash is detected (0x0B05, 0xC8, 0x40, 0x18)
SF: Detected nor0 with total size 16 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   MAC Address 00:30:1B:BA:02:DB
Auto-Negotiation...
AN failLink Status Speed:10 Full-duplex:0
Status Error!
sstar_emac
Warning: sstar_emac using MAC address from net device

gpio debug MHal_GPIO_Pad_Set:603
gpio[78] is 1
gpio debug MHal_GPIO_Pad_Set:603
gpio[79] is 1
gpio debug MHal_GPIO_Pad_Set:603
gpio[14] is 1
gpio debug MHal_GPIO_Pad_Set:603
gpio[15] is 0
gpio debug MHal_GPIO_Pad_Set:603
gpio[52] is 0
gpio debug MHal_GPIO_Pad_Set:603
gpio[47] is 0
gpio debug MHal_GPIO_Pad_Set:603
gpio[46] is 0
gpio debug MHal_GPIO_Pad_Set:603
gpio[47] is 1
SigmaStar #
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
btime   - Show booting time
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 /)
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
mw      - memory write (fill)
mxp     - MXP function for Mstar MXP partition
nm      - memory modify (constant address)
ping    - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
reset   - Perform RESET of the CPU
riu     - riu  - riu command

run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
sdstar  - script via sd package
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 and aes
srcfg   - sensor pin and mclk configuration.
test_sig- Test runAuthenticate2

tftpboot- boot image via network using TFTP protocol
uart    - UART sub-system
version - print monitor, compiler and linker version
printenv
baudrate=115200
bootargs=mem=130840K console=ttyS0,115200  LX_MEM=0x7fe0000 mma_heap=mma_heap_name0,miu=0,sz=0x4000000 rootfstype=ramfs mtdparts=NOR_FLASH:320K(boot),64K(tech),5120K(kernel),8192K(app),-(config) hw_type=2501
bootcmd=sf probe 0; sf read 0x22000000 0x60000 0x500000; bootm 0x22000000; setenv bootargs $(bootargs) bkp=1; sf read 0x22000000 0x560000 0x500000; bootm 0x22000000
bootdelay=0
ethact=sstar_emac
ethaddr=00:30:1b:ba:02:db
preboot=gpio output 78 1;gpio output 79 1;gpio output 14 0;gpio output 15 0;gpio output 52 0;gpio output 47 0;gpio output 46 0;gpio output 47 1;
stderr=serial
stdin=serial
stdout=serial

Environment size: 652/4092 bytes

Подготовка

Для прошивки понадобится подключиться к разъёму UART. Проводного сетевого интерфейса нет, поэтому брать дампы будем с карты памяти. Карту памяти нужно отформатировать в FAT32 и положить на неё дампы загрузчика, ядра и файловой системы:

  • u-boot-ssc335de-nor.bin
  • uImage.ssc335de
  • rootfs.squashfs.ssc335de

Загрузчик берём стандартный, а ядро и систему – из репозитория Builder.

Коннектор используется такой же, как для Dahua и Uniview, но у него придётся подогнуть или откусить крайнюю лапку, которая всё равно не используется, т.к. на плате всего 3 отверстия и лишняя лапка будет мешать.

Прошивка

Подаём питание на камеру и останавливаем загрузку нажатием клавиши Enter. Далее вводим команды прошивки.

mw.b 0x21000000 0xff 0x50000
fatload mmc 0:1 0x21000000 u-boot-ssc335de-nor.bin
sf probe 0
sf erase 0x0 0x50000
sf write 0x21000000 0x0 0x50000

mw.b 0x21000000 0xff 0x200000
fatload mmc 0:1 0x21000000 uImage.ssc335de
sf erase 0x50000 0x200000
sf write 0x21000000 0x50000 0x200000

mw.b 0x21000000 0xff 0x500000
fatload mmc 0:1 0x21000000 rootfs.squashfs.ssc335de 
sf erase 0x250000 0x500000
sf write 0x21000000 0x250000 0x500000

sf erase 0x750000 0x8b0000
reset

После перезапуска останавливаем загрузку и задаём MAC-адрес беспроводного интерфейса. Взять его можно с наклейки камеры. Если не задать, то система возьмёт MAC из чипа Wi-Fi.

setenv wlanmac e6:0f:76:d3:a2:62
save

Подключение к сети

Параметры подключения к Wi-Fi хранятся в двух переменных: wlanssid – SSID сети и wlanpass – пароль сети. Присвоить значения этим переменным можно тремя способами:

В загрузчике

Останавливаем запуск загрузчика и прописываем параметры своей Wi-Fi сети:

setenv wlanssid MyWiFi
setenv wlanpass 31592078
save
reset

В системе

Не останавливаем загрузку и входим в систему под пользователем root с паролем 12345. Задаём значения переменных загрузчика:

fw_setenv wlanssid MyWiFi
fw_setenv wlanpass 31592078
reboot

С помощью QR-кода

На сайте OpenIPC существует специальный инструмент: Wireless Network QR Code Generator. Вводим параметры своей сети и жмём кнопку Generate QR Code. Объектив камеры направляем на полученный QR-код и ждём пока камера скажет “Device ready”. Подготовить QR-код лучше заранее, потому что камера ищет его только в первые несколько секунд после включения.

После подключения к сети камера получит адрес, который можно узнать в консоли, командой ifconfig, в интерфейсе роутера – в разделе выданных адресов или просканировать сеть утилитой Advanced IP Scanner.

Веб-интерфейс

В браузере вбиваем полученный адрес и видим предложение поменять дефолтный пароль 12345 на сложный. После выполнения этой процедуры попадаем в веб-интерфейс OpenIPC.

В разделе Preview можно полюбоваться на изображение, которое выдаёт камера, а увидеть видеопоток можно в VLC, открыв в нём RTSP URL: rtsp://root:пароль@192.168.1.214/stream=0

Если нужно, можно включить ONVIF и/или NETIP. Параметры для переключения режима день/ночь настроены, но автоматическое переключение не включено, т.к. требуется настроить пороги срабатывания, а делается это опытным путём, ориентируясь на значение освещённости в конкретный момент.

Камрад igor столкнулся с ситуацией, когда при искусственном освещении и статичной картинке (нет движения в кадре) камера зависает и пропадает из сети, а возвращается только перезагрузкой по питанию. Сам же нашёл решение, которым и поделился, за что – респект и уважуха!

Зависание камеры через фиксированное время (40 секунд) на статичной картинке и при искусственном освещении — классический симптом «падения» стримера (majestic) или самого ядра из-за алгоритмов CBR/VBR, шумоподавления (3DNR) или некорректной работы драйвера Wi-Fi.На статичном кадре битрейт видео резко падает. Если при этом включено искусственное освещение, матрица улавливает микромерцания ламп (частота 50 Гц), которые алгоритм кодека пытается сгладить. В сочетании с падением битрейта до критического минимума это вызывает ошибку переполнения буфера или ступор энкодера, из-за чего «вешается» весь процессор, а вместе с ним и Wi-Fi.

Лечится сменой в web-интерфейсе OpenIPC режима битрейта с переменного на постоянный : Majestic -> Settings -> Video0 (и в Video1) -> Rate Control Mode установить в значение “cbr” (constant bit rate).
В загрузчике не работает интерфейс карты памяти. Причина ищется. Насчёт работы этого интерфейса в системе имеются противоречивые данные. Кто-то говорит, что работает, а кто-то, что не работает. У меня вроде бы работало, но потом перестало. А может и сразу не работало. Надо разбираться.
Жду обратной связи – как у вас с этим дело обстоит?

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

  1. XAK

    спасибо!

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

      Пожалуйста!

      Ответить
  2. ivan

    Решился вопрос с записью на карту памяти?
    Или запись идет только на ПО видео регистратора по RSTP.

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

      Решение вопроса с записью на карту памяти – это долгий процесс. Точно не один месяц займёт.

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

    Спасибо! Всё получилось с первого раза

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

      Рад помочь!

      Ответить
  4. ZetIxzet

    Добрый день, можете поправить статью там опечатка и не хватает команды save перед reset

    а то устройство в кирпич может превратиться)

    mw.b 0x21000000 0xff 0x50000
    fatload mmc 0:1 0x21000000 u-boot-ssc335de-nor.bin
    sf probe 0
    sf erase 0x0 0x50000
    sf write 0x21000000 0x0 0x50000

    mw.b 0x21000000 0xff 0x200000
    fatload mmc 0:1 0x21000000 uImage.ssc335de
    sf erase 0x50000 0x200000
    sf write 0x21000000 0x50000 0x200000

    mw.b 0x21000000 0xff 0x500000
    fatload mmc 0:1 0x21000000 rootfs.squashfs.ssc335de
    sf erase 0x250000 0x500000
    sf write 0x21000000 0x250000 0x500000

    sf erase 0x750000 0x8b0000
    save <-вот тут
    reset

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

      А в чём ошибка? Для чего здесь save? Он здесь не нужен, потому что save или saveenv сохраняет присвоенные в текущем сеансе значения переменных окружения. А тут с карточки загружается дамп и записывается прямо в память. Так что кирпич ни как не получится. Разве что память битая, но это совсем другая история.

      Ответить
      1. ZetIxzet

        На самом деле большое спасибо за инструкцию, всё получилось в итоге)
        Немного предыстории
        Вчера прошивали три камеры, одну из которых друг превратил в кирпич по инструкции)
        Он утверждал что прописывал команды по порядку и после reset камера перестала стартовать(я не утверждаю что он правильно всё прописал [не видел] и возможно у него просто руки не из того места)
        В итоге целый день прошивали загрузчик выгрузив ламп с непрошитой рабочей камеры
        После я когда прошивали на openipc я на всякий добавил save перед reset
        Собственно всё запустилось и работает
        Возможно всё таки друг напортачил и вы абсолютно правы
        П.с. я правда благодарен за инструкцию, большое спасибо !!!

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

          Пожалуйста! Насчёт друга – думаю так и есть 🙂 save тут точно ни при чём. Нужно контролировать корректность выполнения команд на каждом этапе. Если, например, дамп по какой-то причине не считался, то не надо стирать и шить, а надо разбираться с причиной сбоя. Либо ошибка в команде или цифрах.

          Ответить
  5. Ярослав

    Камера, походу, окирпичилась после попытки прошить ее этим способом(даже индикатор не загорается, пытался включить ее от повербанка, так он даже не видит камеру)… как быть???

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

      Повербанк может не видеть камеру из-за слишком малого потребления, поэтому это не показатель – прошивка тут ни при чём. Кирпич можно восстановить программатором или через snander.
      А какая всё же модель камеры: IPC-C22E-S2 или IPC-C22E-S2 v2? Или камеры есть разные? Просто, если пытался прошить камеру IPC-C22E-S2 по инструкции для IPC-C22E-S2 v2, то результат понятен – это разные камеры на разном железе и их прошивки не совместимы.

      Ответить
      1. Ярослав

        IPC-C22E-S2 v2
        Она не загорается даже от родного блока питания…

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

          Так индикаторы управляются программно, а программы нет. Вот и…

          Ответить
      2. Ярослав

        И терминал молчит, даже ничего ввести не дает.

        Ответить
      3. Ярослав

        И терминал молчит, даже ничего ввести не дает.
        Не знаю, что и думать…

        Ответить
      4. Ярослав

        Если не сложно, то опишите, пожалуйста, процесс восстановления через snander…

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

          Уже всё описано: https://mixatronik.ru/videonablyudenie/openipc/vosstanovlenie-kamer-na-protsessorah-sigmastar-s-pomoschyu-snander
          В статье камера другая, поэтому из статьи нужно брать только порядок действий, а загрузчик – из статьи про прошивку целевой камеры.

          Ответить
          1. Ярослав

            Дулю с маком: камера не отвечает (прога не видит ее)…

          2. mixatronik автор

            Во-первых, так и не понял, какая модель камеры всё-таки, а во-вторых, дело может быть в неверном подключении.

  6. igor

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

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

      Нормальные вопросы. Если известно понятие “ламер”, то это уже о чём-то говорит 🙂
      А что хочется получить? Ростелекомовскую камеру или OpenIPC?

      Ответить
      1. igor

        OpenIPC

        ситуация такая
        есть 4 камеры. одну прошил месяц назад и обновил из вебморды. соответсвенно она и сейчас с гитхаба тянет прошивку свежую и обновляется. вчера дошли руки до остальных. прошил их но сейчас из вебморды они не обновляются. начал копать и на одной завалил видимо основной раздел 5 мегабайтный. загрузчик целый но так как нет LAN и микроСД тоже не видится я не могу залить разделы. натолкните на решение…

        Ответить
        1. igor

          /tmp лежали образы
          rootfs.squashfs.ssc335de
          uImage.ssc335de

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

          Память NOR, поэтому можно программатором прошивку залить. Либо можно попробовать с помощью snander, т.к. проц SigmaStar.

          Ответить
          1. igor

            чуть подробнее плиз…
            носом ткни так сказать куда копать что читать )))

          2. mixatronik автор

            Есть два варианта, как прошить дамп прямо во флешку: программатором, как программатором или им же, но в режиме I2C. В обоих случаях нужен Программатор CH341A. Если программатором, то нужно подключиться к лапкам микросхемы памяти с помощью “прищепки” или зажимов или зонда и используя AsProgrammer или NeoProgrammer залить дамп, предварительно считанный с рабочей камеры. Такой статьи пока нет. Если в режиме I2C, то нужно поставить другой драйвер и воспользоваться утилитой snander. Такая статья есть.

  7. igor

    Никто не сталкивалося с такой прьлемой? Выполнил описанную в статье процедуру, все получилось. Камеру видно как через rtsp, так и через видеорегистратор пи по протоколу ONVIF и по протоколу NETIP
    Но: при искуственном освещении и статичной картинке (нет движения в кадре) камера зависает и пропадает из сети. Возвращается только перезагрузкой по питанию.

    Ответить
    1. igor

      …сам и отвечу: проблема оказалась известной и при попытке погуглить, гугловый ии сразу дал ответ (см. ниже).
      Лечится сменой в web-интерфейсе openIPC значения битрейта: Majestic -> Settings -> Video0 (и в Video1) -> Rate Control Mode установить в значение “cbr” (constant bit rate).

      “Зависание камеры через фиксированное время (40 секунд) на статичной картинке и при искусственном освещении — классический симптом «падения» стримера (majestic) или самого ядра из-за алгоритмов CBR/VBR, шумоподавления (3DNR) или некорректной работы драйвера Wi-Fi.На статичном кадре битрейт видео резко падает. Если при этом включено искусственное освещение, матрица улавливает микромерцания ламп (частота 50 Гц), которые алгоритм кодека пытается сгладить. В сочетании с падением битрейта до критического минимума это вызывает ошибку переполнения буфера или ступор энкодера, из-за чего «вешается» весь процессор, а вместе с ним и Wi-Fi.Ниже собраны основные шаги для исправления этой проблемы, упорядоченные от простых к сложным.”

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

        Спасибо за обратную связь! Добавлю информацию в статью.

        Ответить
        1. igor

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

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

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