Запуск OpenIPC на камере Hikvision DS-2CD2345F-IS. Попытка №2

OpenIPC

О том, как работать с этой камерой хоть и с рядом ограничений, но зато без сложных манипуляций, рассказано в статье Работа с камерой Hikvision DS-2CD2345F-IS без Ростелеком.

Первая, не очень удачная попытка, запустить OpenIPC на этой платформе описана в статье: Запуск OpenIPC на камере Hikvision DS-2CD2345F-IS. Попытка №1. Сначала хотел переписать её, но потом решил оставить для истории. Некоторые моменты, описанные в ней, могут пригодиться при работе с другими камерами. Да и комментарии, после изменения текста статьи станут бессмысленными. Так что пусть остаётся. Единственное, что внесу кое-какие правки.

UBIFS

Основная проблема прошлой сборки заключалась в том, что в качестве файловой системы rootfs использовалась JFFS, а она не подходит для используемого типа памяти – NAND. Как следствие, периодически происходит сброс настроек системы на дефолтные значения.

Для NAND больше подходит UBIFS и специально для таких камер появилась и соответствующая сборка OpenIPC.

Кроме сборки с UBI появился ещё и универсальный бут OpenIPC, в котором процесс прошивки упрощён с помощью макросов. По идее, начинать надо именно с него, но после окирпичивания одной камеры у меня фобия и поэтому трогать бут я пока не буду. До тех пока не раскирпичу.

Камрад dubinkin оказался смелей. К тому же, у него есть программатор и необходимый скилл. Выяснилось, что бут u-boot-hi3516av100-universal.bin шить не надо, а надо шить u-boot-hi3516dv100-universal.bin. Но я всё же пока как-нибудь так…
OpenWall
Картинка с моей камеры, транслируемая на OpenWall
Прошивка OpenIPC находится в статусе разработки и это нужно учитывать при работе с ней. Всё течёт, всё меняется и когда-то OpenIPC станет универсальным и стабильным продуктом, но пока это не так. Поэтому после сборки придётся немного доработать напильником.

Возможности

• Разрешение 2МП (1920×1080)
• Разрешение 4МП (2592×1520)
• Веб-интерфейс
• Протоколы: RTSP, ONVIF, JPEG, MJPEG
• Облако IP EYE (бесплатная трансляция, только H264)
• Линейный аудиовход
• Переключение режима день/ночь
• Микрофон
• Вход, выход

Подготовка

Качаем архив с образами ядра и файловой системы для имеющегося процессора. Тут есть один нюанс – вообще, в камере установлен процессор hi3516dv100, но собранный под него образ системы OpenIPC предназначен для работы с памятью NOR, а здесь NAND, поэтому берём образ для процессора hi3516av100, в котором реализована поддержка нужного нам типа памяти. Причём образ берём не стандартный, а тот, что с поддержкой UBIFS.

Поскольку OpenIPC динамично развивается, то в каждой следующей сборке может быть как что-то добавлено и улучшено, так и сломано то, что работало ранее. Так случилось, например, с сетевым интерфейсом. Вдруг стали обращаться люди с жалобами на то, что eth0 отсутствует в системе после прошивки. После разбирательств оказалось, что причина в автодетекте сетёвки, который отключили 1.08.22. Благо в Telegram ведётся архив сборок и удалось проблему локализовать. Поэтому буду давать две ссылки на сборку. Одну – на репозиторий, где будет самая свежая версия, а вторую – на свой Яндекс.Диск, где будет лежать та версия, которую проверил лично.

Для прошивки понадобится подключиться через UART, что соответственно, потребует адаптер USB-TTL, коннектор к нему и программу-терминал. Подробнее об этом в статье Работа с загрузчиком.

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

  • Подключаем коннектор к камере и адаптеру.
  • Подключаем адаптер к компьютеру – появится виртуальный COM-порт. Исхожу из того, что драйверы уже установлены.
  • Запускаем терминал.
  • Подаём питание на камеру и, как только побежит лог загрузки, нажимаем любую клавишу для остановки запуска и попадания в загрузчик.

Прошивка

Переменные окружения

Первым делом нужно задать переменные окружения и обязательно сохранить внесённые изменения в постоянную память.

  • soc – процессор. Сердце всей системы: hi3516av100.
  • sensor – сенсор. Тот элемент, который оцифровывает изображение: ov4689.
  • totalmem – общее количество памяти: 128Мб.
  • osmem – количество памяти, используемое системой: 48Мб.
  • baseaddr – адрес пользовательской области оперативной памяти.
  • bootargs – параметры загрузки и разметка флешки.
  • bootcmd – командная строка загрузки.
  • ethaddr – MAC-адрес сетевого интерфейса.
  • ipaddr – IP-адрес сетевого интерфейса.
  • netmask – маска сети.
  • gateway – шлюз сети.
  • serverip – адрес TFTP-сервера.
setenv soc hi3516av100
setenv sensor ov4689
setenv totalmem 128M
setenv osmem 48M
setenv baseaddr 0x82000000

setenv bootargs 'mem=48M console=ttyAMA0,115200 panic=20 init=/init root=ubi0:rootfs rootfstype=ubifs ubi.mtd=3,2048 mtdparts=hinand:256k(boot),768k(wtf),3072k(kernel),-(ubi) of_mdio.higmacphy=0'
setenv bootcmd 'nand read ${baseaddr} 0x100000 0x300000; bootm ${baseaddr}'

setenv ethaddr 00:12:34:56:78:90    //задать MAC-адрес камеры, если не задан
setenv ipaddr 192.168.1.10          //задать IP-адрес камеры, если не задан
setenv serverip 192.168.1.2         //задать адрес компа с TFTP-сервером

saveenv

Образ ядра и файловой системы

Теперь нужно записать в постоянную память образы ядра и файловой системы. Алгоритм стандартный – очистить область оперативной памяти, загрузить в неё с TFTP-сервера бинарный файл, очистить область постоянной памяти и сохранить в неё из оперативки полученный блок данных. Подробнее об этом – в статье Работа с памятью в загрузчике. Повторяться не буду – приведу только сами команды. Последняя команда – перезапуск.

mw.b ${baseaddr} ff 0x1000000
tftp ${baseaddr} uImage.${soc}
nand erase 0x100000 0x300000
nand write.i ${baseaddr} 0x100000 0x300000

mw.b ${baseaddr} ff 0x1000000
tftp ${baseaddr} rootfs.ubi.${soc}
nand erase 0x400000 0x7c00000
nand write.i ${baseaddr} 0x400000 ${filesize}

reset

…или в две строки (reset не считается):

mw.b ${baseaddr} ff 0x1000000; tftp ${baseaddr} uImage.${soc}; nand erase 0x100000 0x300000; nand write ${baseaddr} 0x100000 0x300000

mw.b ${baseaddr} ff 0x1000000; tftp ${baseaddr} rootfs.ubi.${soc}; nand erase 0x400000 0x7c00000; nand write ${baseaddr} 0x400000 ${filesize}

reset

Первый запуск

Не прерываем загрузку бута и наблюдаем лог запуска системы. Если всё прошло штатно и в использованной сборке ничего не отломано, то через несколько секунд увидим приглашение входа. Логинимся под пользователем root без пароля и вводим команду ifconfig eth0, чтобы увидеть полученный IP-адрес.

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

Веб-интерфейс по умолчанию доступен по порту 85. Логин: admin, пароль: 12345. При первом входе будет предложено задать новый сложный пароль, который станет также и паролем root при входе в консоль через UART или SSH

Основная часть системы – стример Majestic. Он выполняет функции захвата и трансляции изображения и делает всё остальное, что с этим связано. Надо настроить.

Пункт меню Majestic -> Image Signal Processor (ISP)

  • В поле Path to sensor configuration file выбрать /etc/sensors/ov4689_i2c_1080p.ini для разрешения 2МП либо /etc/sensors/ov4689_i2c_4M.ini для разрешения 4МП.

Пункт меню Settings -> Reset…

  • Нажать Reboot Camera для перезапуска.

После перезапуска в Preview можно увидеть картинку.

Пункт меню Majestic -> Mainstream Video (Video0)

  • Убедиться, что включен переключатель Enable Video0
  • В поле Video0 codec выбрать вариант h265

Пункт меню Majestic -> Substream Video (Video1)

  • Включить переключатель Enable Video1
  • В поле Video1 codec выбрать вариант h265

В Preview только слайд-шоу, а если хочется видеопотока, то проще всего увидеть его в VLC, выбрав в меню пункт Открыть URL и введя одну из строк:

  • rtsp://admin:password@ip-address:554/stream=0 – первый поток
  • rtsp://admin:password@ip-address:554/stream=1 – второй поток

где: password – ваш пароль, ip-address – адрес камеры.

Если дефолтные значения параметров не устраивают и кажется, что картинка может быть лучше, можно поиграть с настройками сенсора и видеопотоков, но есть шанс сломать Majestic. Для восстановления работоспособности в меню Settings -> Reset… есть пункт Reset Majestic Settings. После его использования надо сделать ещё и Reboot Camera.

Переключение день/ночь

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

Система может определять отсутствие света либо по датчику, либо по изображению. Пока Majestic умеет работать только с датчиком. В этой модели камеры его нет. Значит надо задать параметры управляющих выходов, а управлять ими придётся с помощью скрипта. Пункт меню Majestic -> Night Mode:

  • Включить Enable night mode
  • Задать GPIO pin1 of signal for IRcut filter: 105
  • Задать GPIO pin2 of signal for IRcut filter: 104
  • Задать GPIO pin to turn on night mode illumination: 114

Теперь Majestic знает про GPIO и можно попробовать поуправлять переключением вручную с помощью кнопки.

Скрипт управления переключением режима день/ночь

Создаём файл файл скрипта:

cat > /usr/sbin/checkexp.sh

… и вставляем содержимое через буфер обмена:

#!/bin/sh
sleep 10
login=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f2)
pass=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f3)
chtime=300 #change time to check isp_again, default 300 sec
chexp=15 #change isp_again threshold (15-30)
day=1

while true; do

exp=$(curl -s http://localhost/metrics | grep ^isp_again | cut -d' ' -f2)
bri=`expr $exp / 1000`
logger "Analog gain $bri"

    if [ $bri -gt $chexp -a $day -eq 1 ] ;then
	day=0
	curl -u $login:$pass http://localhost/night/on
	logger "Night mode ON"
    fi
	
	if [ $bri -le $chexp -a $day -eq 0 ] ;then
	day=1
	curl -u $login:$pass http://localhost/night/off
	logger "Night mode OFF"
    fi

sleep $chtime
done

Жмём Enter и cохраняем файл нажав комбинацию Ctrl+D и даём разрешение на выполнение:

chmod +x /usr/sbin/checkexp.sh

Если теперь запустить скрипт, то он начнёт анализировать экспозицию и управлять ночным режимом. По умолчанию интервал проверки задан длительностью 300 секунд, то бишь 5 минут.

Для того, чтобы скрипт запускался автоматически при старте системы, создаём файл запуска:

cat > /etc/init.d/S99rc.local

… и вставляем содержимое:

./usr/sbin/checkexp.sh > /dev/null 2>&1 &
exit 0

Сохраняем файл нажав комбинацию Ctrl+D и даём разрешение на выполнение:

chmod +x /etc/init.d/S99rc.local

Теперь можно перезапускать камеру и радоваться что переключение режима работает. Благодарность за скрипт – камраду solalex.

Часовой пояс

Время в системе синхронизируется автоматически, тно для того, чтобы оно соответствовало региону размещения камеры, нужно указать правильный часовой пояс. Пункт меню Information, кнопка Change timezone. Решил написать про этот пункт, потому что там не всё так прозрачно, как кажется на первый взгляд. По умолчанию указана зона относительно GMT, но не надо искать в списке свой вариант, а надо всё стереть и начать набивать название города, которому соответствует нужный часовой пояс. Дело в том, что в этом поле ввода реализована фильтрация по содержимому и если там стоит GMT, то Asia/Ekaterinburg в списке не будет.

On-screen Display (OSD)

Следующее, что будет полезно сделать – настроить OSD. Для тех, кто не знает, OSD – это текстовая информация, выводимая поверх изображения. Обычно – это дата и время, но в OpenIPC возможности OSD несколько шире.

OSD отображается только на основном потоке

Пункт меню Majestic -> On-screen Display (OSD)

  • Включить переключатель Enable On-Screen Display (OSD)
  • В поле OSD Template указать формат строки. Поддерживается формат функции strftime().

Open Wall

Open Wall – это изображения с реальных IP-камер, работающих на прошивке OpenIPC, предоставленные их владельцами. Поскольку занимаюсь данной камерой не только для себя, а и других несчастных, у которых такой неплохой девайс есть, а использовать его не получается, то первой мыслью было – поделиться достигнутым результатом. А где ещё это сделать, как не на таком публичном ресурсе? Благо все средства для этого в прошивку встроены. Правда есть нюанс – если просто включить отправку на стену, то картинка появится, но без OSD. Если нужен OSD на Open Wall, то делаем следующее:

Пункт меню Preview

  • Нажать кнопку Open Wall settings (шестерёнка рядом с кнопкой Send to Open Wall)
  • Включить там переключатель Use HEIF format

Теперь на изображение с камеры будет накладываться нужный текст и эта картинка будет отображаться на Open Wall. По умолчанию интервал отправки – 15 минут.

Запуск OpenIPC на камере Hikvision DS-2CD2345F-IS. Попытка №2
Настройка трансляции на Open Wall

Кроме всего прочего, картинку с Open Wall можно вставить на сайт. Первая картинка в статье как раз оттуда и представляет собой последний отправленный кадр.

Развлекайтесь!

Данная статья является обобщением информации на эту тему из обсуждения в группе OpenIPC users. Присоединяйтесь!

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


  1. FlashVagON

    Спасибо!!! прокатило с сохранением
    Работает!!!

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

      Пожалуйста! Экспериментируйте дальше. Там много интересного.

      Ответить
  2. NX

    Добрый день.

    В архиве который выложили на ЯД, не работает сеть, если поднять вручную интерфес, DHCP не работает, только статика.

    У меня пошло что то не так?

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

      Добрый! Скорее всего 🙂 На самом деле, это первая сборка в которой сеть работает и не нужен спец параметр в энвах. У меня интерфейс был поднят изначально и адрес получался по DHCP сразу. Если же в энвах прописать параметр, который определяет физический интерфейс, а именно of_mdio.higmacphy=0, то можно качать сборку и с гитхаба. По крайней мере, до тех пор, пока снова что-нибудь не сломается 🙂
      Нельзя исключать, что камеры этой модели могут чем-то и отличаться, если например, было несколько партий.

      Ответить
      1. NX

        Я поступил несколько иначе,добавил в скрипт проверки экспозиции строчку про поднятия сетевого интерфейса, т.к еще в процессе изучения openipc.

        Можете более подробно рассказать про энвы или дать ссылку на ман?

        Спасибо!

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

          Я и сам то только в начале изучения OpenIPC, а энвы – переменные окружения. В статье они есть. Конкретно эта: mtdparts=hinand:256k(boot),768k(wtf),3072k(kernel),-(ubi) of_mdio.higmacphy=0′
          Вообще предполагалось, что ядро само детектит сетевой интерфейс, но оказалось, что это не так. Возможно не так только на этом проце. И в разных реализациях phy_addr был либо 1, либо 0, но автодетект всегда выдаёт 0. И раз автодетект не работает, решили ввести параметр, который однозначно задаёт физический интерфейс сети.

          Ответить
          1. NX

            Понял, спасибо.

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

          2. mixatronik автор

            Договорились!

  3. aur4x

    Добрый день ! а можно фото где находиться uart распинновку

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

      Нет такого, но надо добавить, конечно…

      Ответить
  4. Дмитрий

    Здравствуйте. Прошил камеру через программатор. Камера стартует, через уарт все ок, но камера не видна в сети, не получает ip и соответственно нет возможности зайти в веб морду. Почему?

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

      Здравствуйте! Через программатор? То есть флешку выпаивал? А дамп где взял?

      Ответить
  5. kot4600

    Подскажите пожалуйста, какой алгоритм прошивки бута ? поискал не нашел.
    И что даст новый бут кроме чуть более простой процедуры заливки?

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

      Других отличий пожалуй и нет. В православном буте OpenIPC куча макросов для настройки энвов под разные аппаратные платформы и собственно сама настройка выполняется одной командой. И для заливки макрос есть. Только в этом и отличие. Может и ещё в чём-то, но это никак не проявляется. А поскольку у меня фобия и одна камера так и лежит пока дохлая, то ну его нафиг. Это известный принцип программеров: Работает – не ломай!

      Ответить
      1. kot4600

        у меня тоже основополагающий принцип, не чини что работает. Но из нескольких прошитых камер , в 3 прошивку залить не удалось, зависает во время работы с TFTP и потом циклическая перезагрузка. (бут живой)
        Backtrace:
        [] (dump_backtrace) from [] (show_stack+0x18/0x1c)
        r7:c20c1000 r6:c2fda820 r5:00000000 r4:c05262e8
        [] (show_stack) from [] (dump_stack+0x20/0x28)
        [] (dump_stack) from [] (panic+0xb8/0x22c)
        [] (panic) from [] (mount_block_root+0x1e8/0x27c)
        r3:00000000 r2:00000001 r1:c2833ee0 r0:c045a256
        r7:c20c1000
        [] (mount_block_root) from [] (prepare_namespace+0x90/0x1c0)
        r10:c04f829c r9:c0526000 r8:c04eb854 r7:c04eb834 r6:00000070 r5:c04eb868
        r4:c04eb858
        [] (prepare_namespace) from [] (kernel_init_freeable+0x15c/0x1bc)
        r6:00000070 r5:c0526000 r4:00000008
        [] (kernel_init_freeable) from [] (kernel_init+0x10/0xf4)
        r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c03db0d4
        r4:00000000
        [] (kernel_init) from [] (ret_from_fork+0x14/0x2c)
        r5:c03db0d4 r4:00000000
        Rebooting in 20 seconds..
        Проанализировав чем 3 камеры отличается от 4 прошитых понял, что в них было 2 различных прошивки (в прошитых третья ), и возможно различался (бут) . Вот теперь думаю что с ними попробовать сделать, заниния в этой теме пока поверхностные. Хотел попробовать поменять бут.

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

          То есть перестаёт передаваться файл? Может что-то с сетью? Я ещё понимаю, если не будет производиться запись, например, если флешка сдохла, что тоже возможно, но зависание при передаче…
          Можно и бут прошить, но морально надо быть готовым к последствиям.
          З.Ы. Знания у всех поверхностные в самом начале, но со временем копятся, если двигаться в том же направлении.

          Ответить
          1. kot4600

            с сетью все в порядке, подсовываю другую камеру на этот же сетевой хвост с ней все норм, шьется, я конечно могу ушатать еще одну, чтоб показать на какой этапе виснет .. ))
            А обновления через Web c родным бутом можно?
            Еще не понял как перевернуть изображение . почему то виснет, если оставить так как есть то разъем флешки оказывается сверху, возможно затекание при осадках.

          2. mixatronik автор

            С разъёмом для флеши действительно странно, но если заметил, рядом написано UP, т.е. это таки верх. А с переворачиванием в OpenIPC фигово дело обстоит пока, либо не хватает производительности процессора. Надо разбираться. Что-то с сетью на этом экземпляре, хотя что – непонятно. А какой tftp-сервер используешь? Если хиковский, то причина может быть в нём.
            Про Web и родной бут не понял вопроса.

  6. kot4600

    вот так если построчно вводить , маки это я “забил” реально они там есть , зависает на Downloading: * в tftp сессия почти сразу после этого рвется
    hi3516-vc # setenv soc hi3516av100
    hi3516-vc # setenv sensor ov4689
    hi3516-vc # setenv totalmem 128M
    hi3516-vc # setenv osmem 48M
    hi3516-vc # setenv baseaddr 0x82000000
    hi3516-vc # setenv bootargs ‘mem=48M console=ttyAMA0,115200 panic=20 init=/init root=ubi0:rootfs rootfstype=ubifs ubi.mtd=3,2048 mtdparts=hinand:256k(boot),768k(wtf),3072k(kernel),-(ubi) of_mdio.higmacphy=0’
    hi3516-vc # setenv bootcmd ‘nand read ${baseaddr} 0x100000 0x300000; bootm ${baseaddr}’
    hi3516-vc #
    hi3516-vc # setenv ethaddr //////////////////////
    hi3516-vc # setenv ipaddr 192.168.1.10
    hi3516-vc # setenv serverip 192.168.1.2
    hi3516-vc #
    hi3516-vc # saveenv
    Saving Environment to NAND…
    Erasing Nand…
    Erasing at 0xe0000 — 100% complete.
    Writing to Nand… done
    hi3516-vc # mw.b ${baseaddr} ff 0x1000000
    hi3516-vc # tftp ${baseaddr} uImage.${soc}
    ETH0: PHY(phyaddr=3, rmii) link UP: DUPLEX=FULL : SPEED=100M
    MAC: ///////////////////////////////////
    TFTP from server 192.168.1.2; our IP address is 192.168.1.10
    Download Filename ‘uImage.hi3516av100’.
    Download to address: 0x82000000
    Downloading: #################################################
    done
    Bytes transferred = 1912148 (1d2d54 hex)
    hi3516-vc # nand erase 0x100000 0x300000

    NAND erase: device 0 offset 0x100000, size 0x300000
    Erasing at 0x3e0000 — 100% complete.
    OK
    hi3516-vc # nand write.i ${baseaddr} 0x100000 0x300000

    NAND write: device 0 offset 0x100000, size 0x300000
    3145728 bytes written: OK
    hi3516-vc # mw.b ${baseaddr} ff 0x1000000
    hi3516-vc # tftp ${baseaddr} rootfs.ubi.${soc}
    ETH0: PHY(phyaddr=3, rmii) link UP: DUPLEX=FULL : SPEED=100M
    MAC: 64-DB-8B-37-58-01
    TFTP from server 192.168.1.2; our IP address is 192.168.1.10
    Download Filename ‘rootfs.ubi.hi3516av100’.
    Download to address: 0x82000000
    Downloading: *

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

      Странно конечно… Если конфликтов по сети нет и ни какой брандмауэр соединение не блочит, то очень странно. Как вариант, можно залить прошивку через терминал, но это долго.

      Ответить
      1. kot4600

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

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

          А это не важно – строка hinand:256k(boot),768k(wtf),3072k(kernel),-(ubi) задаёт разметку. Если только разметка жёстко не зашита в загрузчике.
          Что-то не получается?

          Ответить
          1. kot4600

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

          2. mixatronik автор

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

  7. kot4600

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

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

      Вообще надо бы поразбираться, что не так – а то мало ли, может там железо другое. Но если неймётся, то бинарник вот: https://github.com/OpenIPC/firmware/releases/download/latest/u-boot-hi3516dv100-universal.bin
      Первым делом нужно проверить применимость:

      mw.b 0x82000000 0xff 0x100000
      tftp 0x82000000 boot-hi3516dv100-universal.bin
      go 0x82000000

      Должен запуститься новый бут. И можно шить, хоть из него, хоть перегрузившись и вернувшись в родной:

      mw.b 0x82000000 0xff 0x100000
      tftp 0x82000000 boot-hi3516dv100-universal.bin
      nand erase 0x0 0x100000
      nand write 0x82000000 0x0 0x100000

      Ответить
  8. kot4600

    Похоже залился если судить по надписи OpenIPC # вместо hi3516-vc #
    Но дальше Boot загрузка не проходить и лин на камере не поднимается.
    hi3516-vc # mw.b 0x82000000 0xff 0x100000
    hi3516-vc # tftp 0x82000000 u-boot-hi3516dv100-universal.bin
    ETH0: PHY(phyaddr=3, rmii) link UP: DUPLEX=FULL : SPEED=100M
    MAC:
    TFTP from server 192.168.1.2; our IP address is 192.168.1.10
    Download Filename ‘u-boot-hi3516dv100-universal.bin’.
    Download to address: 0x82000000
    Downloading: #################################################
    done
    Bytes transferred = 123176 (1e128 hex)
    hi3516-vc # nand erase 0x0 0x100000

    NAND erase: device 0 offset 0x0, size 0x100000
    Erasing at 0xe0000 — 100% complete.
    OK
    hi3516-vc # nand write 0x82000000 0x0 0x100000

    NAND write: device 0 offset 0x0, size 0x100000
    1048576 bytes written: OK

    На половину удачный эксперимент ))

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

      То есть в загрузчике сети нет? Надо попробовать setenv phyaddru 3, но могу ошибаться с названием переменной или цифрой – сейчас перед глазами нет printenv с этой камеры. Если у тебя сохранился, то там посмотреть можно.
      З.Ы. А эксперимент полностью удачный – только допилить нужно. Ну и православный бут надо сконфигурить его же макросами. Короче, надо тоже сделать и статью дополнить.

      Ответить
      1. kot4600

        Да не поднимается линк на сетевой карте “сетевой кабель не подключен”

        setenv phyaddru 3
        saveenv
        не помогло
        порылся в сети шашел это
        Harex (5013A-CF/5020A-FF), HI3516CV100
        For U-boot network
        setenv extras ‘hieth.phyaddru=1 hieth.mdioifu=0’
        saveenv
        но тоже не помогло
        а какой командой по через ноль можем бут перезалить можно …может криво влился как то

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

          Так где нет сети? В загрузчике или в системе?

          Ответить
  9. Dima

    Подскажите у вас тоже переключается режим день-ночь каждые 5 минут?
    Запустил камеру с предложенным скриптом. В темноте начинает циклично включать и выключать режим ночь

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

      Да, скрипт не идеален. Но у меня он в сумерках так себя ведёт, а в полной темноте перестаёт. Надо допиливать.

      Ответить
      1. Dima

        попробую подпилить)
        в скриптах не силен, но логика вроде ясна
        напишу как будет результат

        Ответить
      2. Dima

        Вот такой вариант более корректно работает:
        добавьте и измените строчки:
        chtime=11 #change time to check isp_again, default 300 sec
        chexp=16000 #change isp_again threshold (15000-30000)
        chexpday=4500#change isp_again threshold (4000-5000)

        if [ $bri -le $chexpday -a $day -eq 0 ] ;then

        пробуйте

        Ответить
      3. Dima

        Полный скрипт не могу выложить
        Дайте контакты я сброшу

        Ответить
        1. Dima

          Одну строчку забыл)
          добавьте и измените строчки:
          chtime=11 #change time to check isp_again, default 300 sec
          chexp=16000 #change isp_again threshold (15000-30000)
          chexpday=4500#change isp_again threshold (4000-5000)

          bri=`expr $exp / 1`

          if [ $bri -le $chexpday -a $day -eq 0 ] ;then

          пробуйте

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

            Благодарю! Проверим 🙂

        2. mixatronik автор

          Все контакты есть на сайте – справа вверху.

          Ответить
  10. Михаил

    а где можно скачать эту прошивку? хочу попробовать u-boot-hi3516dv100-universal.bin

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

      Рисковый парень! На само деле я и сам созрел для этого и скоро будет новая статья или эту дополню. А скачать можно на сайте OpenIPC. Но пока сам не попробовал и не убедился, что всё работает конкртеную ссылку давать не буду, т.к. реанимировать эту модель пока не умею 🙁

      Ответить
    2. Михаил

      Неизвестная ошибка (Network request failed) и Неверный файл прошивки
      Вот что пишет камера, когда бинарник загружаю

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

        Загружаешь куда? Не скажу насчёт “Network request failed”, а насчёт неверного файла – точно нет! Что-то не то делаешь. Не может там быть такого сообщения, потому что льётся чистый бинарник и командам передачи и загрузки абсолютно параллельно, что там внутри. Если то, то после перезапуска всё заработает, а если не то, то в лучшем случае – не заработает, а в худшем будет кирпич. Предположу, что пытаешься передать непонятно какой файл непонятно в какую камеру непонятно каким образом, т.е. совсем не так, как описано в статье. Но это не точно…

        Ответить
  11. Groh

    Здравствуйте, спасибо, по инструкции все прошло успешно. Но вот с ночным режимом беда какая-то. С вашим скриптом переводит из ночного режима в дневной каждые 5 минут, а по скрипту что выкладывал здесь Dima вообще каждые 11 секунд. Есть ли нормальные настройки скрипта или может можно как-нибудь задать включение ночного режима по времени? (Например с 20:00 до 6:00).

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

      Есть такая проблема – скрипт работает не идеально. Как вариант – увеличивать интервал опроса, чтобы преодолеть время сумерек. Потому что такое наблюдается только во время, когда уже не светло, но ещё и не темно. Вариант с расписанием конечно возможен. Это же Linux, соответственно нужно настроить задание в планировщике cron. Минус в том, что время перехода придётся корректировать периодически по понятным причинам.

      Ответить
      1. Groh

        Проблема в том что камера стоит практически в полной темноте и очень очень тусклый свет постоянный. И вот она туда-сюда. Днем же все отлично.

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

          Тогда поможет cron.

          Ответить
  12. KUL

    Спасибо за очень полезную инструкцию! Как новичок с UART, убил много времени, чтобы понять, что нужно подключать не только TX и RX, но и GND провод обязателен.
    Загрузчик не менял, поставил прошивку 2.4.04.28-ultimate, openipc-hi3516av100.
    В логе syslogd вижу периодически подозрительные строки (ни кто такие не встречал или может на глаз понимает, что происходит?):
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: abort! int_raw_status: 0x750!
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: hi_i2c_abortprocess->89:
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: tx_abrt_src is 1.
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: hi_i2c_wait_rxfifo_notempty->283:
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: abort! int_raw_status: 0x550!
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: hi_i2c_abortprocess->89:
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: tx_abrt_src is 1.
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: hi_i2c_wait_rxfifo_notempty->283:
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: abort! int_raw_status: 0x750!
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: hi_i2c_abortprocess->89:
    May 1 19:06:53 openipc-hi3516av100 kern.alert kernel: tx_abrt_src is 1.

    И вопрос – а как uImage и rootfs можно прошить из под SSH без UART?

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

      Команда обновления: sysupgrade -r -k
      Спасибо за обратную связь. Действительно надо добавить подробностей.

      Ответить
    2. kul

      Нашёл в документации:
      soc=$(fw_printenv -n soc)
      sysupgrade –kernel=/tmp/uImage.${soc} –rootfs=/tmp/rootfs.squashfs.${soc} -z

      Но у меня падало в ошибку:
      RootFS
      Update rootfs from /root/rootfs.ubi.hi3516av100
      mount: mounting /dev/loop0 on /tmp/rootfs failed: Invalid argument
      Unable to mount /tmp/rootfs! Aborting.

      поэтому через UART с TFTP обновил

      Кстати, для тех, кто захочет сделать логирование системы не в оперативную память, а на диск (чтобы лог был доступен после ребута), то сделать так:
      #Внимание! logread работать не будет (в веб интерфейсе не увидите лога)
      vi /etc/init.d/S01syslogd
      #привести строку SYSLOGD_ARGS к виду:
      SYSLOGD_ARGS=”-t -O /var/log/messages -b 2 -s 200KB”
      /etc/init.d/S01syslogd restart
      #смотрим лог
      tail -500 /var/log/messages

      И кстати, нужно инструкцию поправить – при первом запуске не доступны пункты меню в Majestic -> Settings -> ISP, в частности выбора сенсора. Поэтому нужно зайти Majestic -> Configuration и вручную поправить ямл файл, добавив строку (далее после перезагрузки все пункты меню появятся):
      isp:
      antiFlicker: disabled
      sensorConfig: /etc/sensors/ov4689_i2c_4M.ini

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

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

        Ответить
  13. Георгий

    Огромная благодарность автору Михаилу за подробную инструкцию и реальную помощь в восстановлении камеры.

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

      Рад помочь!

      Ответить
  14. Дмитрий

    Подскажите а есть ли возможность убрать в OSD серый фон ,либо сделать его более прозрачным?

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

      С ходу не скажу – надо смотреть. Вообще самый правильный путь – открыть файл majestic.full, который представляет собой полный конфигурационный файл стримера, и посмотреть какие опции есть там. Если нужная найдётся, то добавить её в свой majestic.yaml.

      Ответить