wiki

OpenIPC Wiki

Оглавление

Вопросы и ответы

Как настроить авторизацию 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 пины для управления инфракрасным фильтром. Настройки для некоторых камер можно найти в таблице. Если вашей камеры в таблице нет, то вам потребуется утилита 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:

Пример запуска для платформы 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. Причина проста: винда и свои пути пихает:

$ 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

[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] как раз и содержатся нужные настройки

Результат:

$ 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) ?

После установки не работает сеть в 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 .