wiki/ru/faq.md

214 lines
14 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.

# OpenIPC Wiki
[Оглавление](../README.md)
Вопросы и ответы
----------------
### Как настроить авторизацию ssh-сессии по ключу
__На камере__: Откройте ssh сессию и создайте непустой пароль пользователю root. По умолчанию в нашей прошивке у пользователя root пароля нет.
Имейте в виду, что после того как вы создали пароль, все последующие новые ssh сессии до момента настройки авторизации по публичному ключу,
а так же при попытке захода с компьютера, где такого ключа нет, будут требовать авторизации именно с этим паролем. Не забудьте его!
```
passwd
```
__На десктопе__: Скопируйте публичный ключ на камеру, авторизовавшись созданным выше паролем.
```
ssh-copy-id root@192.168.1.666
```
__На камере__: Создайте папку `.ssh` в домашней директории пользователя root и скопируйте в неё файл с хранилищем авторизованных ключей.
```
mkdir ~/.ssh
cp /etc/dropbear/authorized_keys ~/.ssh/
```
__На десктопе__: Откройте новую сессию, чтобы проверить, что авторизация проходит по открытому ключу, без участия пароля.
```
ssh root@192.168.1.666
```
### Majestic
#### Как получить дамп памяти для отладки?
Включите и настройте отсылку Core Dump в меню Majestic > Majestic Debugging.
#### Изображение с камеры имеет розовый оттенок
Вам нужно указать GPIO пины для управления инфракрасным фильтром. Настройки для некоторых камер можно найти [в таблице](https://openipc.org/wiki/en/gpio-settings.html). Если вашей камеры в таблице нет, то вам потребуется утилита [ipctool](https://github.com/OpenIPC/ipctool/releases/download/latest/ipctool).
Прошивка OpenIPC автоматически скачает свежую версию утилиты в каталог /tmp при первом вызове `ipctool`.
На родной прошивке вам потребуется скачать утилиту на камеру самостоятельно, используя имеющие в системе средства: wget, curl, tftp...
Например, скачайте утилиту ipctool на сервер TFTP в локальной сети, затем скачайте ее оттуда на камеру:
```
tftp -g -r ipctool -l /tmp/ipctool 192.168.1.1
chmod +x /tmp/ipctool
/tmp/ipctool
```
При наличии на камере доступа в интернет вы можете попробовать смонтировать публичный NFS шаринг и запустить утилиту с него, без скачивания на камеру:
```
mkdir -p /tmp/utils
mount -o nolock 95.217.179.189:/srv/ro /tmp/utils/
/tmp/utils/ipctool
```
После того как утилита скачана на камеру, выполните команд `ipctool gpio scan` в терминале и пару раз закройте-откройте объектив камеры ладошкой.
Следите за выводом ipctool, чтобы определить пины, отвечающие за управление шторкой ИК фильтра.
Внесите полученные значения в настройки ночного режима Majestic. Если розовый оттенок не исчез, возможно необходимо включить инверсию сигнала сенсора.
Не забудьте добавить модель камеры и найденные значения GPIO в таблицу!
#### Можно-ли вывести данные для настройки автоматической фокусировки линз вместо текущего sample_af в стандартный /metrics?
Нет, это отдельный тяжелый алгоритм, его нет смысла запускать просто так.
#### Копирование файлов с Linux системы на камеру
Очень часто требуется поместить некоторые файлы на камеру. Кроме приведенного выше способа через NFS (Network File System)
можно использовать стандартную комманду scp системы Linux для копирования файлов через SSH соединение:
```
scp ~/myfile root@192.168.1.65:/tmp/
```
Эта команда скопирует myfile из домашней директории в директорию /tmp на камере.
На очень новых системах может возникнуть следующая ошибка:
```
sh: /usr/libexec/sftp-server: not found
scp: Connection closed
```
В таком случае пишите так:
```
scp -O ~/myfile root@192.168.1.65:/tmp/
```
### Как поменять MAC адрес на камере?
__Через веб консоль__: Откройте веб-консоль, выполните команду fw_setenv ethaddr AA:BB:CC:DD:EE:FF, где AA:BB:CC:DD:EE:FF соответствует необходимому адресу.
### Как восстановить камеру если затерт или испорчен u-boot
Во многих современных процессорах камер есть фича fastboot, которая позволяет прошить флэшку даже если она пуста или на ней отсутствует u-boot. При включении платформы если процессор получает специальные команды, то включится режим fastboot, который позволит записать прошивку. Есть несколько программ, которыми можно воспользоваться для восстановления u-boot:
* Для камер на процессорах Hisilicon: HiTool
* Для камер на процессорах Goke: ToolPlatform
* Универсальная утилита на python burn как подпроект OpenIPC:
https://github.com/OpenIPC/burn
Пример запуска для платформы gk7205v300 где u-boot/gk7205v300 - это имя файла с путем:
```
./burn --chip gk7205v300 --file=u-boot/gk7205v300.bin --break; minicom -D /dev/ttyUSB0
```
Команда запускается следующим алгоритмом при подключении через UART:
1. Выключить камеру
2. Запустить комманду burn
3. Включить камеру
Если burn ругается на недостающие модули python, то надо установить приоложенный список этих модулей следующей командой
```
pip install -r requirements.txt
```
### Самостоятельная сборка прошивки из исходников
#### У меня нет Linux. Как собрать прошивку под Windows?
Это несколько сложнее, но возможно.
Для начала необходимо установить подсистему Linux для Windows (WSL)
Как это сделать, можно прочесть, например, тут: https://docs.microsoft.com/ru-ru/windows/wsl/install
Однако, этого мало: нужно настроить переменные окружения, иначе скрипт будет отваливаться с ошибкой.
Ругается на наличие неправильных символов в переменной окружения `$PATH`. Причина проста: винда и свои пути пихает:
```diff
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files (x86)/VMware/VMware Workstation/bin/:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/mnt/c/Program Files (x86)/Common Files/Intel/Shared Files/cpp/bin/Intel64:/mnt/c/Program Files (x86)/Intel/iCLS Client/:/mnt/c/Program Files/Intel/iCLS Client/:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files (x86)/PuTTY/:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/Program Files/LLVM/bin:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/Intel/WiFi/bin/:/mnt/c/Program Files/Common Files/Intel/WirelessCommon/:/mnt/c/Program Files (x86)/Common Files/Acronis/SnapAPI/:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/ProgramData/DockerDesktop/version-bin:/mnt/c/Program Files (x86)/Intel/Platform Flash Tool Lite:/mnt/c/Program Files (x86)/Paragon Software/LinuxFS for Windows/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/WireGuard/:/mnt/c/Program Files/dotnet/:/mnt/c/Users/USER/Python/Scripts/:/mnt/c/Users/USER/Python/:/mnt/c/Users/USER/AppData/Local/Programs/Python/Python37-32/Scripts/:/mnt/c/Users/USER/AppData/Local/Programs/Python/Python37-32/:/mnt/c/Users/USER/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/USER/AppData/Local/atom/bin:/mnt/c/Program Files/Intel/WiFi/bin/:/mnt/c/Program Files/Common Files/Intel/WirelessCommon/:/mnt/c/Users/USER/AppData/Local/Microsoft/WindowsApps:/mnt/c/Program Files/Multipass/bin:/mnt/c/Users/USER/AppData/Local/Programs/Microsoft VS Code/bin:/snap/bin
```
Как видно, в путях есть пробелы, которые не нравятся linux. Нужно избавиться от такого наследия.
Нужно создать файлик `/etc/wsl.conf`
```diff
[automount]
enabled = true
root = /mnt
options = "metadata,umask=22,fmask=11"
mountFsTab = true
[network]
generateHosts = true
generateResolvConf = true
[interop]
enabled = false
appendWindowsPath = false
```
... и ребутнуть машину:
`exit`
`wsl --shutdown`
В блоке `[interop]` как раз и содержатся нужные настройки
Результат:
```diff
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/snap/bin
```
(с) SterX aka zalessky
### Чем отличаются базовая версия прошивки (Lite) от расширенной версии (Ultimate) ?
- поддержка NAND flash
- файловая система UBI
- поддержка WiFi
- сканер QR кода
- сетевой экран
- MQTT (на некоторых Lite то-же есть)
- ZeroTier
- WireGuard
- множество фич Majestic в т.ч. стрим на Youtube/Telegram и т.д.
### После установки не работает сеть в u-boot и в linux
Иногда после установки OpenIPC на камере не работает сеть при том, что с кабелем и сетью однозначно проблем нет.
#### Нет сети в uboot
Светодиод наличия сетевого соединения на рутере/свитче для порта, куда подключена камера, не горит. Это может сопровождаться следующим сообщением
```
OpenIPC # run uknor8m
Hisilicon ETH net controler
MAC: 00-12-12-xx-xx-xx
PHY not link.
```
В таком случае требуется некоторый тюнинг подсистемы MII (Media Independent Interface):
```
setenv mdio_intf rmii
setenv phyaddru 0
setenv phyaddrd 1
saveenv; reset
```
Выше приведены чаще всего используемые настройки MII, но они могут и отличаться.
Возможны следующие значения mdio_intf: rmii, rgmii, gmii. Эти значения и адреса проще всего взять со стоковой прошивки через ipctool. Если они не сохранены, то вам остается только перебирать все комбинации. Адреса могут меняться от 0 до 3.
Проверить работоспособность сети в uboot можно следующим образом:
```
OpenIPC # ping 192.168.1.1
Hisilicon ETH net controler
MAC: 00-12-12-xx-xx-xx
eth0 : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M
eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
**host 192.168.1.1 is alive**
```
#### В uboot сеть появилась, а в Linux отсутствует сетевой интерфейс eth0
После настройки MII в uboot для Linux тоже потребуется настройка:
```
fw_setnenv extras hieth.phyaddru=0 hieth.phyaddrd=1
```
После сохранения корректных для вашей камеры значений в переменную extras обязательно нужно перезагрузить камеру после чего интерфейс должен появиться. Проверить это можно командой ifconfig или ip addr .