Исследование бортовой системы

Отчёт об исследовании вычислительного модуля Пионер Мини 2 (pioneermini@10.42.0.1), выполненном в режиме «только чтение». Описаны аппаратная платформа, камеры и сенсоры, сеть, службы systemd, карта портов, полётная архитектура, gRPC API, видео, нейроускоритель и ключевые пути файловой системы.

Данные получены в SSH-сессии к бортовому компьютеру; файлы, службы, сетевые настройки и полётное ПО на борту не изменялись.

1. Общая идентификация

ПараметрЗначение
Hostname / модельpioneermini / PioneerMini 2
ОСPioneerOS (Ubuntu 24.04.4 LTS, noble), сборка Geoscan, версия 0.9.0
Ядро6.1.99-geoscan-sdk-rk3576 (aarch64), сборка 20.02.2026
Uptime / load~47 мин, load avg 3.5 / 3.1 / 2.8
ВремяUTC; системные часы 2026-05-08, RTC = 2021-01-01, NTP не синхронизирован
ЗагрузчикU-Boot, DTB rockchip/rk3576-pioneermini2.dtb

2. Аппаратная платформа (Rockchip RK3576)

КомпонентЗначение
CPU4×A72 @2.11 ГГц + 4×A53 @1.92 ГГц
RAM / Swap3.8 ГиБ / zram 1.9 ГиБ
ПЗУeMMC 28.9 ГБ (занято 5 ГБ, 19%)
GPU / NPUMali-G52 / rknpu + RKNN
  • zram1 50 МБ смонтирован на /var/log (armbian-zram-config) — снижение износа eMMC.
  • Термозоны: soc 66.5 °C, bigcore 67.5, little-core 70.2, ddr 67.5, npu 66.5, gpu 69.3 °C. Порог ошибки gRPC — 80 °C.
  • PMIC RK806 (i2c-1 0x23) · RTC HYM8563 (i2c-6) · EEPROM 24C08 (i2c-3 0x50, UUID).
  • GPIO: gpiochip0–5; PWM pwmchip0 (1 канал) — сервопривод.
  • CAN0: rk3576_canfd, 1 Мбит/с, FD off, ERROR-ACTIVE, активный обмен (~57 МБ принято).
  • USB: два OTG-контроллера, сконфигурированы как два RNDIS-гаджета (usb0 / usb1).

3. Камеры и сенсоры

УстройствоМодельПодключение / роль
Основная камераOV13B10 13 МПi2c-2; RKISP/RKCIF → rkvpss; программа 1080×720@30, запись до 4K
Оптический потокOV9281 (глобальный затвор)i2c-0; 1280×800@30/60
Дальномер ToFVI5300i2c-0, ioctl /dev/vi5300
Полётные сенсорыIMU / магнитометр / баро / GPS / RCчерез полётный контроллер по PlazLink (не через Linux)

4. Сеть

ИнтерфейсРежимАдресПримечание
usb0RNDIS, shared10.42.0.1/24борт раздаёт адрес ПК; канал SSH (клиент 10.42.0.54)
usb1RNDISсконфигурирован, DOWN
wlan0AP (hotspot)10.42.1.1/24SSID PMINI2-…, 5 ГГц ch36, dnsmasq
  • Netplan → NetworkManager; /boot/firmware/netconfig: HOTSPOT=yes, band 5; клиентский Wi-Fi ubnt.
  • SSH: порт 22, PermitRootLogin yes, PasswordAuthentication yes.
  • openvpn.service числится active, но реальных конфигов нет (пустышка пакета).
  • vnStat: wlan0 tx ~427 МБ (исходящее видео), can0 rx ~57 МБ.

5. Службы systemd

Отказов служб нет, ошибок в журнале загрузки нет. Основные сервисы:

plazlink-core        → PlazLink-мост (ttyS3, 115200)
grpc-server          → управление БПЛА (gRPC :50051)
media-server         → mediamtx (RTSP/WebRTC/SRT)
motion-opt           → обработка оптического потока
pwm-setup + pwm-servo→ привод сервопривода
pm2-power-manager    → защита серво по току/GPIO
servo-rc-trigger     → серво по RC-каналу
setup-can            → инициализация can0 (1 Мбит/с)
usb-gadget           → два RNDIS-гаджета
manage-connection    → hotspot / клиент Wi-Fi
model-registry       → реестр ИИ-моделей (:7777)
pioneer-bricks       → блочное программирование (:2020)
pioneer-code-web-menu→ веб-меню (:9090)
pm2-ctrl-server      → системный контроль (:17222)
pm2-test-server      → онборд-тесты (:4000)
dufs-recordings      → файловый сервер (:5000)
rkaiq_3A             → 3A-обработка камер
code-server@…        → VS Code в браузере (:9999)

6. Карта портов и сервисов

ПортПроцессНазначение
22sshdSSH
20556plazlink-server-rsмост PlazLink ↔ TCP
50051python3 grpc-servergRPC ControlService
8554/8889/8890/8000-8001/8189mediamtxRTSP / WebRTC / SRT / RTP
9997mediamtxREST API стримера
2020pioneer-bricksWeb-UI программирования
9090web_menu.pyWeb-меню Pioneer Code
7777model_registry.pyреестр ИИ-моделей
4000pm2-test-serverонборд-тесты (actix/WS)
17222pm2-ctrl-serverсистемный контроль (axum)
5000dufsфайлы /mnt/media (delete/archive)
9999code-serverVS Code в браузере
53/67dnsmasqDNS/DHCP shared-интерфейсов

7. Полётная архитектура (ядро системы)

  • Полётный контроллер подключён по UART /dev/ttyS3, 115200 8N1 (активный обмен ~2.1 МБ rx). Протокол — PlazLink (Rust-сервер, есть loopback, parser ловит invalid plazlink magic/CRC).
  • Pioneer SDK 2 0.15.1 — основной API: Pioneer, Camera, ServoCamera, RecorderControl. Ядро протокола — Cython-модуль proto (Component/Field/FieldSet).
  • Компоненты телеметрии: Battery (charge/voltage/temperature), UavMonitor.mode, SensorMonitor.flags, SmartBoard (rcChan/rcServo), Allystar (GNSS), LpsMonitor/USNav_module (локальная навигация).
  • board_config.json: board_type 23, серво −80…+30°, ranger/grab = true, cargo/flashlight = false.
  • SDK: arm / disarm / takeoff / land / rtl, go_to_local_point / go_to_global_point, скорость и рыскание, каналы RC, события (POINT_REACHED, LOW_VOLTAGE, ENGINES_STARTED), IMU/GPS/высота/дальномеры, LED, параметры автопилота.

8. gRPC API (ControlService)

RPCНазначение
GetTelemetryнапряжение/температура/заряд батареи, скорость (LPS), высота (ToF), FlightState
GetStatusфлаги автопилота + linux: перегрев, неисправность серво, остаток места
StreamControlsстрим RC (aileron/elevator/throttle/rudder/mode), 100 Гц, таймаут 5 с
FlyCommandarm / disarm / land / takeoff
VideoCommandстарт/стоп стрима, запись, фото (4K/2K/FullHD)
ServoCommandугол −80…+30 через Unix-сокет /tmp/servo.sock

Лог /tmp/jump_log: PlazLink подключён, ControlService listening on [::]:50051, SensorMux_rc set to 0.

9. Видео и запись

  • GStreamer 1.24.2 + патчи Geoscan, MPP-энкодер mpph264enc, RGA.
  • mediamtx поднимает по требованию: maincamera → /dev/video44 (crop 1080×720@30), optcamera → /dev/video47 (1280×800@30).
  • pm2-jmp-camera-control публикует __jmp_stream (video42, 1920×1088) и __jmp_opt (video46, 1280×800). WebRTC: http://10.42.1.1:8889/MAIN/, /OPT/.
  • motion-opt гоняет mvopt.sh — тракт обработки оптического потока для навигации.
  • Записи/фото: /mnt/media/{videos,photos}, права 777, раздача через dufs (5000). Файлов пока нет.

10. ИИ / NPU

  • pioneer-rknn 1.6.3, rknn-toolkit-lite2 2.3.0, librknnrt 2.3.0.
  • model-registry (:7777): архитектуры yolov8, yolov8-pose, yolov11, PP-OCRv5_mobile_det/rec.
  • Веса: yolov8n.rknn, yolov8n_pose.rknn, OCR det/rec в /usr/local/bin/model-registry/models.

11. Инструменты разработки и пользователи

  • code-server 4.105.1 / VS Code 1.105.1 (:9999), рабочая папка /home/pioneermini/workspace (пример py.py — автономный маршрут по точкам).
  • pioneer-bricks (:2020) и pioneer-code-web-menu (:9090) — визуальное/блочное программирование.
  • Пользователь pioneermini (uid 1000) в группах sudo, dialout, video, netdev, systemd-journal, input; sudo требует пароль. Root-SSH разрешён, authorized_keys пуст.

Безопасность по умолчанию: парольная аутентификация + root-логин по SSH, отсутствие firewall, открытые без авторизации dufs / mediamtx / веб-UI (2020, 9090, 7777).

12. Файловая система и обновления

  • / ext4, noatime,commit=120,errors=remount-ro; /tmp tmpfs (nosuid); /var/log — zram.
  • Пакеты Geoscan: aic8800-*, camera-engine-rkaiq-rk3576, iqfiles-mini2, gstpm2-image-processing, linux-*-geoscan-sdk-rk3576, motion-opt, plazlink-*, pm2-*, pioneer-*, dufs-geoscan-assets-mini2, pionet.
  • Обновления: unattended-upgrades активен; присутствует cloud-init.
  • Конфиги: /boot/firmware/netconfig, /etc/pm2-power-manager/default.json, /opt/configs/code/*.json, /usr/local/etc/mediamtx.yml.

13. Наблюдения и потенциальные риски

Часы: системное время 2026-05-08, RTC 2021-01-01, NTP не синхронизирован — влияет на метки файлов/логов.

Слабая защита: root-SSH, парольная аутентификация, нет firewall, открытые без аутентификации dufs/mediamtx/веб-UI на USB- и Wi-Fi-интерфейсах.

Wi-Fi hotspot виден всем и использует дефолтный пароль geoscan123 (если не переопределён в netconfig). sudo-пароль совпадает с Wi-Fi-паролем прошивки — единая точка компрометации.

Нагрузка (load ~3.5) в основном от GStreamer-пайплайнов (H.264 двух камер) и rkaiq_3A_server.

/opt/scripts/{get_uid, range_calibration} — root-only бинарники калибровки.

14. Сводка ключевых путей

РазделПути
SDK/usr/local/lib/python3.12/dist-packages/pioneer_sdk2/ · /usr/lib/python3/dist-packages/proto*.so
gRPC / proto/opt/grpc-server/ (main.py, mproto/v2/pm2.proto)
Скрипты борта/opt/scripts/ (can.sh, pwm-setup.sh, setup_twousbotg.sh, manage-network.sh…)
Сервисы/etc/systemd/system/*.service, /usr/lib/systemd/system/{grpc-server,pwm-servo,pm2-*}.service
Медиа / сокеты/mnt/media/{photos,videos}; /tmp/{maincamera,optcamera,servo.sock}, /tmp/jump_log
Логиjournalctl, /var/log/syslog, /var/log/auth.log, /var/log/kern.log