wiki/translated_sandbox/notes_start_ivg-g2s.md

118 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## Заметки по прошивке камеры 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
```