О том, как работать с этой камерой хоть и с рядом ограничений, но зато без сложных манипуляций, рассказано в статье Работа с камерой Hikvision DS-2CD2345F-IS без Ростелеком.
Первая, не очень удачная попытка, запустить OpenIPC на этой платформе описана в статье: Запуск OpenIPC на камере Hikvision DS-2CD2345F-IS. Попытка №1. Сначала хотел переписать её, но потом решил оставить для истории. Некоторые моменты, описанные в ней, могут пригодиться при работе с другими камерами. Да и комментарии, после изменения текста статьи станут бессмысленными. Так что пусть остаётся. Единственное, что внесу кое-какие правки.
UBIFS
Основная проблема прошлой сборки заключалась в том, что в качестве файловой системы rootfs использовалась JFFS, а она не подходит для используемого типа памяти – NAND. Как следствие, периодически происходит сброс настроек системы на дефолтные значения.
Для NAND больше подходит UBIFS и специально для таких камер появилась и соответствующая сборка OpenIPC.
Камрад dubinkin оказался смелей. К тому же, у него есть программатор и необходимый скилл. Выяснилось, что бут u-boot-hi3516av100-universal.bin шить не надо, а надо шить u-boot-hi3516dv100-universal.bin. Но я всё же пока как-нибудь так…
Возможности
• Разрешение 4МП (2592×1520)
• Веб-интерфейс
• Протоколы: RTSP, ONVIF, JPEG, MJPEG
• Облако IP EYE (бесплатная трансляция, только H264)
• Линейный аудиовход
• Вход, выход
Подготовка
Качаем архив с образами ядра и файловой системы для имеющегося процессора. Тут есть один нюанс – вообще, в камере установлен процессор hi3516dv100, но собранный под него образ системы OpenIPC предназначен для работы с памятью NOR, а здесь NAND, поэтому берём образ для процессора hi3516av100, в котором реализована поддержка нужного нам типа памяти. Причём образ берём не стандартный, а тот, что с поддержкой UBIFS.
Поскольку OpenIPC динамично развивается, то в каждой следующей сборке может быть как что-то добавлено и улучшено, так и сломано то, что работало ранее. Так случилось, например, с сетевым интерфейсом. Вдруг стали обращаться люди с жалобами на то, что eth0 отсутствует в системе после прошивки. После разбирательств оказалось, что причина в автодетекте сетёвки, который отключили 1.08.22. Благо в Telegram ведётся архив сборок и удалось проблему локализовать. Поэтому буду давать две ссылки на сборку. Одну – на репозиторий, где будет самая свежая версия, а вторую – на свой Яндекс.Диск, где будет лежать та версия, которую проверил лично.
- GitHub: openipc.hi3516av100-nand-ultimate.tgz
- Яндекс.Диск: openipc.hi3516av100-nand-br.tgz – версия от 30.10.22
Для прошивки понадобится подключиться через 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 несколько шире.
Пункт меню 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 минут.
Кроме всего прочего, картинку с Open Wall можно вставить на сайт. Первая картинка в статье как раз оттуда и представляет собой последний отправленный кадр.
Развлекайтесь!
Спасибо!!! прокатило с сохранением
Работает!!!
Пожалуйста! Экспериментируйте дальше. Там много интересного.
Добрый день.
В архиве который выложили на ЯД, не работает сеть, если поднять вручную интерфес, DHCP не работает, только статика.
У меня пошло что то не так?
Добрый! Скорее всего 🙂 На самом деле, это первая сборка в которой сеть работает и не нужен спец параметр в энвах. У меня интерфейс был поднят изначально и адрес получался по DHCP сразу. Если же в энвах прописать параметр, который определяет физический интерфейс, а именно of_mdio.higmacphy=0, то можно качать сборку и с гитхаба. По крайней мере, до тех пор, пока снова что-нибудь не сломается 🙂
Нельзя исключать, что камеры этой модели могут чем-то и отличаться, если например, было несколько партий.
Я поступил несколько иначе,добавил в скрипт проверки экспозиции строчку про поднятия сетевого интерфейса, т.к еще в процессе изучения openipc.
Можете более подробно рассказать про энвы или дать ссылку на ман?
Спасибо!
Я и сам то только в начале изучения OpenIPC, а энвы – переменные окружения. В статье они есть. Конкретно эта: mtdparts=hinand:256k(boot),768k(wtf),3072k(kernel),-(ubi) of_mdio.higmacphy=0′
Вообще предполагалось, что ядро само детектит сетевой интерфейс, но оказалось, что это не так. Возможно не так только на этом проце. И в разных реализациях phy_addr был либо 1, либо 0, но автодетект всегда выдаёт 0. И раз автодетект не работает, решили ввести параметр, который однозначно задаёт физический интерфейс сети.
Понял, спасибо.
Будет время поковыряю, если что то интересное найду, скину здесь.
Договорились!
Добрый день ! а можно фото где находиться uart распинновку
Нет такого, но надо добавить, конечно…
Здравствуйте. Прошил камеру через программатор. Камера стартует, через уарт все ок, но камера не видна в сети, не получает ip и соответственно нет возможности зайти в веб морду. Почему?
Здравствуйте! Через программатор? То есть флешку выпаивал? А дамп где взял?
Подскажите пожалуйста, какой алгоритм прошивки бута ? поискал не нашел.
И что даст новый бут кроме чуть более простой процедуры заливки?
Других отличий пожалуй и нет. В православном буте OpenIPC куча макросов для настройки энвов под разные аппаратные платформы и собственно сама настройка выполняется одной командой. И для заливки макрос есть. Только в этом и отличие. Может и ещё в чём-то, но это никак не проявляется. А поскольку у меня фобия и одна камера так и лежит пока дохлая, то ну его нафиг. Это известный принцип программеров: Работает – не ломай!
у меня тоже основополагающий принцип, не чини что работает. Но из нескольких прошитых камер , в 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 различных прошивки (в прошитых третья ), и возможно различался (бут) . Вот теперь думаю что с ними попробовать сделать, заниния в этой теме пока поверхностные. Хотел попробовать поменять бут.
То есть перестаёт передаваться файл? Может что-то с сетью? Я ещё понимаю, если не будет производиться запись, например, если флешка сдохла, что тоже возможно, но зависание при передаче…
Можно и бут прошить, но морально надо быть готовым к последствиям.
З.Ы. Знания у всех поверхностные в самом начале, но со временем копятся, если двигаться в том же направлении.
с сетью все в порядке, подсовываю другую камеру на этот же сетевой хвост с ней все норм, шьется, я конечно могу ушатать еще одну, чтоб показать на какой этапе виснет .. ))
А обновления через Web c родным бутом можно?
Еще не понял как перевернуть изображение . почему то виснет, если оставить так как есть то разъем флешки оказывается сверху, возможно затекание при осадках.
С разъёмом для флеши действительно странно, но если заметил, рядом написано UP, т.е. это таки верх. А с переворачиванием в OpenIPC фигово дело обстоит пока, либо не хватает производительности процессора. Надо разбираться. Что-то с сетью на этом экземпляре, хотя что – непонятно. А какой tftp-сервер используешь? Если хиковский, то причина может быть в нём.
Про Web и родной бут не понял вопроса.
вот так если построчно вводить , маки это я “забил” реально они там есть , зависает на 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: *
Странно конечно… Если конфликтов по сети нет и ни какой брандмауэр соединение не блочит, то очень странно. Как вариант, можно залить прошивку через терминал, но это долго.
Может так статься, что флешки в каких то версиях прошивки были размечены как то по другому ? это можно как то проверит?
А это не важно – строка hinand:256k(boot),768k(wtf),3072k(kernel),-(ubi) задаёт разметку. Если только разметка жёстко не зашита в загрузчике.
Что-то не получается?
Одни получается залить , а другие не льются. Не льются с определенным типом изначально прошивки. Собственно это и не получается. Вот хотел с бутом по экспериментировать, но не нашел инструкции по его заливке.
Да инструкция то не сложная. Всё то же самое, только надо правильный бут залить по нулевому адресу. Но блин боязно 🙂
Ну все же напишите пожалуйста как быт вшить. Любопытно попробовать. А если боязно я могу доступ на свою дать удаленный, без всякой ответственности в случае негативного исхода )
Вообще надо бы поразбираться, что не так – а то мало ли, может там железо другое. Но если неймётся, то бинарник вот: 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
Похоже залился если судить по надписи 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
На половину удачный эксперимент ))
То есть в загрузчике сети нет? Надо попробовать setenv phyaddru 3, но могу ошибаться с названием переменной или цифрой – сейчас перед глазами нет printenv с этой камеры. Если у тебя сохранился, то там посмотреть можно.
З.Ы. А эксперимент полностью удачный – только допилить нужно. Ну и православный бут надо сконфигурить его же макросами. Короче, надо тоже сделать и статью дополнить.
Да не поднимается линк на сетевой карте “сетевой кабель не подключен”
setenv phyaddru 3
saveenv
не помогло
порылся в сети шашел это
Harex (5013A-CF/5020A-FF), HI3516CV100
For U-boot network
setenv extras ‘hieth.phyaddru=1 hieth.mdioifu=0’
saveenv
но тоже не помогло
а какой командой по через ноль можем бут перезалить можно …может криво влился как то
Так где нет сети? В загрузчике или в системе?
Подскажите у вас тоже переключается режим день-ночь каждые 5 минут?
Запустил камеру с предложенным скриптом. В темноте начинает циклично включать и выключать режим ночь
Да, скрипт не идеален. Но у меня он в сумерках так себя ведёт, а в полной темноте перестаёт. Надо допиливать.
попробую подпилить)
в скриптах не силен, но логика вроде ясна
напишу как будет результат
Вот такой вариант более корректно работает:
добавьте и измените строчки:
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
пробуйте
Полный скрипт не могу выложить
Дайте контакты я сброшу
Одну строчку забыл)
добавьте и измените строчки:
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
пробуйте
Благодарю! Проверим 🙂
Все контакты есть на сайте – справа вверху.
а где можно скачать эту прошивку? хочу попробовать u-boot-hi3516dv100-universal.bin
Рисковый парень! На само деле я и сам созрел для этого и скоро будет новая статья или эту дополню. А скачать можно на сайте OpenIPC. Но пока сам не попробовал и не убедился, что всё работает конкртеную ссылку давать не буду, т.к. реанимировать эту модель пока не умею 🙁
Неизвестная ошибка (Network request failed) и Неверный файл прошивки
Вот что пишет камера, когда бинарник загружаю
Загружаешь куда? Не скажу насчёт “Network request failed”, а насчёт неверного файла – точно нет! Что-то не то делаешь. Не может там быть такого сообщения, потому что льётся чистый бинарник и командам передачи и загрузки абсолютно параллельно, что там внутри. Если то, то после перезапуска всё заработает, а если не то, то в лучшем случае – не заработает, а в худшем будет кирпич. Предположу, что пытаешься передать непонятно какой файл непонятно в какую камеру непонятно каким образом, т.е. совсем не так, как описано в статье. Но это не точно…
Здравствуйте, спасибо, по инструкции все прошло успешно. Но вот с ночным режимом беда какая-то. С вашим скриптом переводит из ночного режима в дневной каждые 5 минут, а по скрипту что выкладывал здесь Dima вообще каждые 11 секунд. Есть ли нормальные настройки скрипта или может можно как-нибудь задать включение ночного режима по времени? (Например с 20:00 до 6:00).
Есть такая проблема – скрипт работает не идеально. Как вариант – увеличивать интервал опроса, чтобы преодолеть время сумерек. Потому что такое наблюдается только во время, когда уже не светло, но ещё и не темно. Вариант с расписанием конечно возможен. Это же Linux, соответственно нужно настроить задание в планировщике cron. Минус в том, что время перехода придётся корректировать периодически по понятным причинам.
Проблема в том что камера стоит практически в полной темноте и очень очень тусклый свет постоянный. И вот она туда-сюда. Днем же все отлично.
Тогда поможет cron.
Спасибо за очень полезную инструкцию! Как новичок с 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?
Команда обновления: sysupgrade -r -k
Спасибо за обратную связь. Действительно надо добавить подробностей.
Нашёл в документации:
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
Инструкция писалась под определённую версию сборки – ту, которая на Яндекс.Диске, а в текущей версии с гитхаба действительно есть косяк с выбором сенсора. Обещали поправить в следующей версии. Думаю ещё один вариант статьи сделать – финальный, с прошивкой православного OpenIPC-загрузчика. Сам уже это сделал – ничего не окирпичил и всё пашет, но есть нюансы.
Огромная благодарность автору Михаилу за подробную инструкцию и реальную помощь в восстановлении камеры.
Рад помочь!
Подскажите а есть ли возможность убрать в OSD серый фон ,либо сделать его более прозрачным?
С ходу не скажу – надо смотреть. Вообще самый правильный путь – открыть файл majestic.full, который представляет собой полный конфигурационный файл стримера, и посмотреть какие опции есть там. Если нужная найдётся, то добавить её в свой majestic.yaml.