Исследование бортовой системы
Отчёт об исследовании вычислительного модуля Пионер Мини 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)
| Компонент | Значение |
|---|---|
| CPU | 4×A72 @2.11 ГГц + 4×A53 @1.92 ГГц |
| RAM / Swap | 3.8 ГиБ / zram 1.9 ГиБ |
| ПЗУ | eMMC 28.9 ГБ (занято 5 ГБ, 19%) |
| GPU / NPU | Mali-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 |
| Дальномер ToF | VI5300 | i2c-0, ioctl /dev/vi5300 |
| Полётные сенсоры | IMU / магнитометр / баро / GPS / RC | через полётный контроллер по PlazLink (не через Linux) |
4. Сеть
| Интерфейс | Режим | Адрес | Примечание |
|---|---|---|---|
usb0 | RNDIS, shared | 10.42.0.1/24 | борт раздаёт адрес ПК; канал SSH (клиент 10.42.0.54) |
usb1 | RNDIS | — | сконфигурирован, DOWN |
wlan0 | AP (hotspot) | 10.42.1.1/24 | SSID PMINI2-…, 5 ГГц ch36, dnsmasq |
- Netplan → NetworkManager;
/boot/firmware/netconfig:HOTSPOT=yes, band 5; клиентский Wi-Fiubnt. - 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. Карта портов и сервисов
| Порт | Процесс | Назначение |
|---|---|---|
| 22 | sshd | SSH |
| 20556 | plazlink-server-rs | мост PlazLink ↔ TCP |
| 50051 | python3 grpc-server | gRPC ControlService |
| 8554/8889/8890/8000-8001/8189 | mediamtx | RTSP / WebRTC / SRT / RTP |
| 9997 | mediamtx | REST API стримера |
| 2020 | pioneer-bricks | Web-UI программирования |
| 9090 | web_menu.py | Web-меню Pioneer Code |
| 7777 | model_registry.py | реестр ИИ-моделей |
| 4000 | pm2-test-server | онборд-тесты (actix/WS) |
| 17222 | pm2-ctrl-server | системный контроль (axum) |
| 5000 | dufs | файлы /mnt/media (delete/archive) |
| 9999 | code-server | VS Code в браузере |
| 53/67 | dnsmasq | DNS/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 с |
FlyCommand | arm / 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-rknn1.6.3,rknn-toolkit-lite22.3.0,librknnrt2.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;/tmptmpfs (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 |