mirror of https://github.com/OpenIPC/wiki.git
118 lines
12 KiB
Markdown
118 lines
12 KiB
Markdown
## Заметки по прошивке камеры IVG-G2S прошивкой OpenIPC.
|
||
|
||
ВНИМАНИЕ! Большая часть информации из этой статьи безнадежно устарела, все дополнительные помимо прошивки шаги уже неактуальны - они внесены в прошивку, и все работает из коробки, необходимо лишь произвести копирование ключа gs.key с камеры на наземную станцию и указать правильно каналы на обоих.
|
||
|
||
|
||
Цель этой заметки - помочь привлечь внимание к крайне перспективной теме запуска digital fpv на дешевых камерах без одноплатника на борту.
|
||
Разработчикам **ОЧЕНЬ** важны отзывы, при наличии популярности проект будет развиваться с их помощью значительно быстрее.
|
||
Переходите в специально созданный для этой темы [телеграмм-чат](https://t.me/+BMyMoolVOpkzNWUy), задавайте вопросы которые не описаны тут и по ссылкам ниже, публикуйте информацию о своих успехах и запрашивайте помощь в решении проблем.
|
||
Еще раз - фидбеки крайне важны, даже если у вас все получилось и работает - пожалуйста, не поленитесь описать свой сетап и опубликуйте в чате отзыв. Это позволит развиваться проекту с участием разработчиков.
|
||
|
||
* [Основная страница по OpenIPC + FPV теме, обязательна к прочтению](https://github.com/OpenIPC/wiki/blob/master/ru/fpv.md)
|
||
* [Основная wiki проекта](https://github.com/OpenIPC/wiki) (на текущий момент EN версия содержит больше информации)
|
||
* [Генератор инструкций на сайте](https://openipc.org/supported-hardware/featured)
|
||
|
||
|
||
### Термины
|
||
|
||
* Flash - в данном контексте SPI-flash, микросхема памяти.
|
||
* U-Boot - загрузчик. Есть "родной", есть от OpenIPC. Родной запаролен. Нам нужен скачанный из генератора инструкций.
|
||
* uImage - ядро Embedded Linux, в виде bin файла.
|
||
* Root-FS - файловая система выбранной версии (lite, ultimate, fpv), в виде squash-fs файла [https://ru.wikipedia.org/wiki/Squashfs]. uImage и rootfs нужно добывать через конструктор инструкций, раздельная прошивка u-boot и root-fs.
|
||
* Shell - командная строка linux камеры, доступна через uart и ssh (программа putty). Также есть shell загрузчика, только uart. Логин root, пароля нет.
|
||
* Majestic - утилита - стример потоков видео, из комплекта прошивки OpenIPC.
|
||
|
||
Платы оснащаются обычно spi-flash размером 8 или 16 мб. Версия ultimate требует 16, можно перепаять. Для fpv целей достаточно 8мб.
|
||
|
||
Если у вас нет кабеля ethernet для подключения камеры к вашему свичу/роутеру, его можно сделать из половинки обычного патч-корда и разъема jst xh1.25 8pin. Такие использовались в полетниках Omnibus F4 и много где еще.
|
||
Распиновки камеры и коннектора легко гуглятся, соединять необходимо 4 линии: rx+, rx-, tx+, tx- на кабеле и камере. На тот же разъем подается питание от 5 до 12в на пины 7(gnd) и 8(vcc).
|
||
|
||
Рекомендую сначала прошить lite, поскольку в ней разблокирован shell через uart (в файле /etc/inittab) и это позволит подключаться в нештатных ситуациях, например при отсутствии сети.
|
||
|
||
Существует три способа прошить камеру ivg-g2s на OpenIPC. В порядке усложнения: coupler, burn, программатор.
|
||
|
||
- Coupler [https://github.com/OpenIPC/coupler] - это загрузка ядра и rootfs одним файлом через родной веб-интерфейс камеры. Минусы - не меняется родной запароленный
|
||
загрузчик, можно выполнить только один раз, откат или смена прошивок только через прочие способы.
|
||
Алгоритм: выяснить в родном веб-интерфейсе версию, на ее основании скачать прошивку, загрузить как обновление в родном вебинтерфейсе. Для ivg-g2s/659A7 есть [прошивка с загрузчиком](gk7205v200/659A7_OpenIPC_FPV.bin).
|
||
|
||
- Burn [https://github.com/OpenIPC/burn] - загрузка незапароленного загрузчика u-boot от OpenIPC через uart камеры и uart-usb адаптер (например, ch340) и дальнейшая работа в загрузчике, согласно конструктору инструкций OpenIPC.
|
||
Минусов нет, меняется загрузчик которым в любой момент можно загрузить с tftpf сервера [https://pjo2.github.io/tftpd64/] нужный образ и прошить во flash.
|
||
Алгоритм описан видеоинструкциями на канале OpenIPC [https://www.youtube.com/@openipc/videos]. Далее, загрузив в RAM загрузчик (только [выбираем свой](gk7205v200_u-boot-7502v200-for-telemetry.md) ввиду нюансов), работаем через конструктор инструкций. uImage и root-fs распаковываем и кладем в каталог tftpd.
|
||
Я пробовал пробросить usb-uart в archlinux под virtualbox и ипользовать burn оттуда, но загрузка не проходила, связь с uart была в одну сторону, только на чтение. Из под windows 7 все прошло штатно.
|
||
Используйте короткие провода как от usb порта до адаптера, так и от адаптера до камеры. Распиновка uart на камере есть в первой статье из списка выше, соединять необходимо "накрест" - tx адаптера на rx камеры и rx адаптера на tx камеры.
|
||
Если все в порядке, но tftp не загружает файл - попробуйте сменить адрес камере на соседний свободный, `setenv ipaddr '192.168.0.223'`.
|
||
|
||
- Программатор - выпаивание флеш или одной ноги и подключение к программатору, прошивка всего через программатор.
|
||
Самый сложный способ, это единственный минус.
|
||
|
||
При первой загрузке необходимо выполнить команду firstboot.
|
||
Если камера циклично перезагружается - это срабатывает watchdog от majestic (стримера). Скорее всего нужно снять колпачок объектива и включить свет. Отключается в /etc/majestic.yaml, убить процесс быстро: `killall majestic`.
|
||
|
||
Управлять параметрами конфига с сохранением можно через утилиту cli шелла:
|
||
```
|
||
cli -s .image.contrast 50
|
||
cli -s .image.luminance 50
|
||
cli -s .video0.codec h264
|
||
cli -s .hls.enabled false
|
||
cli -s .isp.sensorConfig /etc/sensors/imx307_i2c_2l_1080p.ini
|
||
cli -s .video0.size 1920x1080
|
||
cli -s .video0.fps 30
|
||
```
|
||
Рекомендую выполнить эти команды, это настроит majestic для первоначальных попыток.
|
||
|
||
Перейти на версию FPV с обновлением. Внимание! В версии FPV отключен shell через uart (освобожден для работы телеметрии), после загрузки, остается только сетевой доступ. Сам загрузчик, конечно, работает через uart.
|
||
```
|
||
sed -i 's/BUILD_OPTION=lite/BUILD_OPTION=fpv/' /etc/os-release
|
||
sysupgrade --force_ver -k -r -n
|
||
```
|
||
Если вы не собираетесь использовать телеметрию сквозь этот видеолинк, можете включить его назад:
|
||
```
|
||
sed -i 's/#console::respawn:\/sbin\/getty/console::respawn:\/sbin\/getty/' /etc/inittab
|
||
reboot
|
||
```
|
||
Если flash заблокирована (вы как то прошили ядро предыдущих версий, которые не умеют разблокировать флеш), то эта и любые прочие команды выполнены не будут.
|
||
|
||
Пример вывода `dmesg | grep bsp-sfc` для определения блокировки флешки:
|
||
|
||
Разблокирована
|
||
```
|
||
bsp-sfc bsp_spi_nor.0: SR1:[02]->[00]
|
||
bsp-sfc bsp_spi_nor.0: SR2:[02]->[00]
|
||
bsp-sfc bsp_spi_nor.0: all blocks are unlocked.
|
||
bsp-sfc bsp_spi_nor.0: Winbond: SR1 [], SR2 [QE], SR3 [DRV0,DRV1]
|
||
```
|
||
|
||
Заблокирована
|
||
```
|
||
bsp-sfc bsp_spi_nor.0: SR1:[02]->[00]
|
||
bsp-sfc bsp_spi_nor.0: SR2:[02]->[00]
|
||
bsp-sfc bsp_spi_nor.0: all blocks are unlocked.
|
||
bsp-sfc bsp_spi_nor.0: Winbond: SR1 [TB], SR2 [QE], SR3 [WPS,DRV0,DRV1]
|
||
```
|
||
|
||
Попытка разблокировать флеш из shell (мне не помогла)
|
||
```
|
||
devmem 0x10010024 32 0x06;devmem 0x10010030 32 0;devmem 0x1001003C 32 0x81;devmem 0x14000000 16 0x0000;devmem 0x10010024 32 0x01;devmem 0x10010030 32 0;devmem 0x10010038 32 2;devmem 0x1001003C 32 0xA1
|
||
#
|
||
sysupgrade --force_ver -k -r -n
|
||
```
|
||
|
||
Путь к разблокировке flash лежит через загрузку свежего ядра, распакованного архиватором из tgz файла с ядром и rootfs, взятого из конструктора инструкций. Загрузившись, оно автоматически разблокирует flash. Делается из загрузчика, залитого в ram через burn.
|
||
|
||
```
|
||
# Устанавливаем адрес камеры и адрес сервера tftpd
|
||
setenv ipaddr 192.168.0.222; setenv serverip 192.168.0.107
|
||
|
||
# Устанавливаем аргументы окружения (env)
|
||
setenv bootargs 'mem=32M console=ttyAMA0,115200 panic=20 rootfstype=squashfs root=/dev/mtdblock3 init=/init mtdparts=sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||
|
||
# Очищаем область оперативной памяти для скачивания ядра
|
||
mw.b 0x42000000 ff 1000000
|
||
|
||
# Загружаем ядро uImage.gk7205v200 с tftpd сервера
|
||
tftpboot 0x42000000 uImage.${soc}
|
||
|
||
# Запускаем ядро
|
||
bootm 0x42000000
|
||
```
|