Skip to content

Встановлення Waybeam на камеру

Ця інструкція описує, як встановити Waybeam на камеру з чіпом SigmaStar (Infinity6E / Infinity6C) та налаштувати його для роботи з WFB-ng замість Majestic.

Що таке Waybeam?

Waybeam — це автономний H.265 (HEVC) відеоенкодер, який повністю замінює Majestic. Він забезпечує нижчу затримку, повний HTTP API для налаштування в реальному часі, та нативну інтеграцію з WFB-ng через Unix-сокет. Бінарник, конфіг (/etc/waybeam.json) та init-скрипт мають назву waybeam.

Інструкцію звірено з версією v0.40.1 (липень 2026).


Вимоги

КомпонентДеталі
Камера (VTX)Star6E (SSC30KQ / SSC338Q, Infinity6E) або Maruko (SSC378QE, Infinity6C) з OpenIPC прошивкою
СенсорIMX335, IMX415, GC4653 або інший підтримуваний
ПрошивкаOpenIPC (Lite або FPV)
ДоступSSH до камери (root / 12345)
МережаEthernet або WiFi для передачі файлів

Крок 1: Підключення до камери через SSH

Підключіться до камери по SSH. IP-адреса камери зазвичай 192.168.1.10 або визначається через роутер.

powershell
ssh [email protected]
# пароль: 12345
bash
ssh [email protected]
# пароль: 12345

Графічний клієнт для Windows

Замість командного рядка можна скористатися PuTTY: у полі «Host Name» — IP камери, порт 22, тип SSH, логін root, пароль 12345.


Крок 2: Зупинка Majestic

Перед встановленням Waybeam необхідно зупинити та вимкнути Majestic:

bash
# Зупинити Majestic
killall majestic 2>/dev/null

# Вимкнути автозапуск Majestic
# (якщо він запускається через init-скрипт)
if [ -f /etc/init.d/S95majestic ]; then
    chmod -x /etc/init.d/S95majestic
fi

Важливо

Majestic і Waybeam не можуть працювати одночасно — вони обидва використовують ISP та відеоенкодер чіпа.


Крок 3: Завантаження Waybeam

Релізи поставляються тарболами, які містять бінарник waybeam, шаблон конфігурації waybeam.json і (для Maruko) потрібні бібліотеки SigmaStar. Оберіть тарбол відповідно до вашого чіпа.

bash
cd /tmp
curl -L -o waybeam-star6e.tar.gz \
  https://github.com/OpenIPC/waybeam_venc/releases/latest/download/waybeam-star6e.tar.gz
tar xzf waybeam-star6e.tar.gz

# Встановити бінарник
cp waybeam /usr/bin/waybeam
chmod +x /usr/bin/waybeam
bash
cd /tmp
curl -L -o waybeam-maruko.tar.gz \
  https://github.com/OpenIPC/waybeam_venc/releases/latest/download/waybeam-maruko.tar.gz
tar xzf waybeam-maruko.tar.gz

cp waybeam /usr/bin/waybeam
chmod +x /usr/bin/waybeam

Maruko потребує бібліотек

Стокова прошивка OpenIPC для Infinity6C не містить vendor-бібліотек SigmaStar (MI). Бібліотеки з тарболу потрібно скопіювати в /usr/lib/, а також можуть знадобитися сенсорні .ko-модулі та ISP .bin-файли. Деталі та скрипти провізіонінгу — у README репозиторію.

Альтернативний метод — SCP зі зібраного бінарника

Якщо ви збираєте Waybeam самостійно (make build SOC_BUILD=star6e):

bash
scp out/star6e/waybeam [email protected]:/usr/bin/waybeam

Крок 4: Створення конфігурації

Створіть файл конфігурації /etc/waybeam.json (у тарболі є готовий шаблон waybeam.json — його можна просто скопіювати в /etc/):

bash
cat > /etc/waybeam.json << 'EOF'
{
  "system": { "webPort": 80, "overclockLevel": 1, "verbose": false },
  "sensor": { "index": -1, "mode": -1 },
  "isp": {
    "sensorBin": "",
    "aeEngine": "sdk",
    "aeFps": 15,
    "gainMax": 0,
    "awbMode": "auto",
    "awbCt": 5500,
    "keepAspect": true
  },
  "image": { "mirror": false, "flip": false, "rotate": 0 },
  "video0": {
    "rcMode": "cbr",
    "fps": 60,
    "size": "1920x1080",
    "bitrate": 8192,
    "gopSize": 1.0,
    "qpDelta": -4,
    "sceneThreshold": 0,
    "sceneHoldoff": 2,
    "resilience": "off",
    "framing": "off",
    "zoomX": 0.5,
    "zoomY": 0.5
  },
  "outgoing": {
    "enabled": true,
    "server": "unix://wfb_tx",
    "streamMode": "rtp",
    "maxPayloadSize": 1400,
    "connectedUdp": true,
    "audioPort": 0,
    "sidecarPort": 0
  },
  "discovery": {
    "enabled": true,
    "serviceType": "_waybeam-venc._tcp",
    "name": "",
    "bareAlias": true
  },
  "fpv": { "roiEnabled": true, "roiQp": 0, "roiSteps": 2, "roiCenter": 0.4, "noiseLevel": 0 },
  "audio": {
    "enabled": false,
    "sampleRate": 48000,
    "channels": 1,
    "codec": "opus",
    "volume": 80,
    "mute": false
  },
  "imu": {
    "enabled": false,
    "i2cDevice": "/dev/i2c-1",
    "i2cAddr": "0x68",
    "sampleRateHz": 200,
    "gyroRangeDps": 1000,
    "calFile": "/etc/imu.cal",
    "calSamples": 400
  },
  "attitude": {
    "enabled": false,
    "mountDeg": 0,
    "invertRoll": false,
    "invertPitch": false
  },
  "record": {
    "enabled": false,
    "mode": "mirror",
    "dir": "/mnt/mmcblk0p1",
    "format": "ts",
    "maxSeconds": 300,
    "maxMB": 500,
    "bitrate": 0,
    "fps": 0,
    "gopSize": 0,
    "server": ""
  },
  "snapshot": { "enabled": true, "quality": 80, "channel": 7, "width": 0, "height": 0 },
  "debug": { "showOsd": false }
}
EOF

Усі поля опціональні

Будь-яке пропущене поле бере вбудоване значення за замовчуванням. Дефолтне video0.size"auto" (рідна роздільність сенсора).

Кодек завжди H.265

Поля video0.codec більше немає — Waybeam кодує тільки H.265 (HEVC). Старі конфіги з "codec": "h264" чи "h265" завантажуються без помилок, але ключ ігнорується.

Для версій до v0.19 — поле video0.frameLost

У старих версіях секція video0 містила SDK-стратегію пропуску кадрів при перевантаженні:

json
"video0": {
  "...": "...",
  "frameLost": true
}

У v0.19 цю стратегію прибрано повністю — поля frameLost більше не існує ані в конфізі, ані в API; натомість діє нижня межа бітрейту 1000 kbps. Якщо ключ лишився у вашому старому конфізі — видаліть цей рядок.


Крок 5: Ключові параметри конфігурації

Відео (video0)

ПараметрОписТипові значення
rcModeРежим керування бітрейтом"cbr", "vbr", "avbr", "fixqp"
fpsЧастота кадрів (макс. залежить від режиму сенсора)30, 60, 90, 100, до 144
sizeРоздільна здатність"auto", "1920x1080", "1280x720"
bitrateБітрейт (кбіт/с), мінімум 1000409616384
gopSizeРозмір GOP у секундах (діє лише коли resilience: "off")0.54.0
qpDeltaЗсув QP I/P-кадрів-1212
resilienceПресет стійкості до втрат (потребує reboot)"off", "racing", "fpv", …
framingСтабілізація / цифровий зум"off", "stab", "zoom-2x", …

Детальніше про framing, resilience та attitude

Режими стабілізації/зуму (framing), пресети стійкості (resilience) та штучний горизонт з IMU (секція attitude, v0.39+) докладно описані у розділі Веб-панель та HTTP API.

Стрімінг (outgoing)

ПараметрОписПриклади
enabledУвімкнути стрімінгtrue / false
serverАдреса приймача"unix://wfb_tx", "udp://192.168.1.1:5600", "shm://venc_ring"
streamModeРежим потоку"rtp" або "compact"
maxPayloadSizeМакс. розмір RTP-пакету1400 (за замовч.)
connectedUdpПідключений UDP-сокет (connect())true (за замовч.); false — unconnected, використовується у WiFi-режимі apfpv
audioPortАудіоканал0 — разом з відео; >0 — окремий UDP-порт; <0 — аудіо лише в запис, не в ефір

Виявлення в мережі (discovery)

Камера анонсує себе через mDNS — її можна відкривати як http://waybeam.local, без пошуку IP:

ПараметрОписЗа замовч.
enabledmDNS-анонс у локальній мережіtrue
serviceTypeТип сервісу"_waybeam-venc._tcp"
nameВласне ім'я; порожнє — waybeam-<суфікс>, де суфікс — хвіст die ID чипа""
bareAliasДодатково коротке ім'я waybeam.local (конфлікт кількох камер вирішується за RFC 6762)true

Повний 12-значний серійник (die ID) читається з GET /api/v1/configdata.device.serial.

FPV ROI-кодування (fpv)

ПараметрОписЗначення
roiEnabledПріоритет центру кадруtrue — центр у вищій якості
roiQpQP-зсув для ROI (-3030)-18 — максимальна якість центру
roiStepsКількість зон14
roiCenterРозмір центральної зони0.10.9

Крок 6: Запуск Waybeam

Ручний запуск (для тестування)

bash
# Запуск з виводом логів у консоль
waybeam

Веб-панель буде доступна за адресою http://<ip-камери>/ або просто http://waybeam.local — камера анонсує себе через mDNS (секція discovery, увімкнена за замовчуванням).

Перевірка роботи

bash
# Перевірити версію
curl http://localhost/api/v1/version

# Перевірити конфігурацію
curl http://localhost/api/v1/config

# Перевірити, які параметри можна змінити в реальному часі
curl http://localhost/api/v1/capabilities

Крок 7: Автозапуск Waybeam

Створіть init-скрипт для автоматичного запуску Waybeam при завантаженні камери:

bash
cat > /etc/init.d/S96waybeam << 'INITEOF'
#!/bin/sh

case "$1" in
  start)
    echo "Starting waybeam..."
    # Переконатися, що Majestic не запущений
    killall majestic 2>/dev/null
    # Запуск waybeam у фоновому режимі
    start-stop-daemon -S -b -x /usr/bin/waybeam -- 2>&1 | tee /tmp/waybeam.log &
    ;;
  stop)
    echo "Stopping waybeam..."
    killall waybeam 2>/dev/null
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac

exit 0
INITEOF

chmod +x /etc/init.d/S96waybeam

Порядок запуску

Скрипт має номер S96, що означає запуск після більшості системних сервісів, але вам потрібно переконатися, що WiFi-драйвери та WFB-ng вже завантажені до цього моменту (особливо для unix://wfb_tx, де wfb_tx має слухати сокет раніше).

audioPort та sidecarPort

У конфізі вище audioPort: 0 і sidecarPort: 0. Це означає:

  • audioPort: 0 — аудіо передається разом з відео через той самий канал (оптимально для WFB-ng)
  • audioPort < 0 (наприклад, -1) — режим «лише запис»: звук пише у файл на SD, але в ефір не відправляється
  • sidecarPort: 0 — sidecar-канал діагностики вимкнений (ніяких накладних витрат)

Дефолтний шаблон має audioPort: 5601 і sidecarPort: 5602 — якщо вам потрібна окрема передача аудіо чи покадрова телеметрія через UDP, встановіть відповідні значення.


Крок 8: Зміна параметрів у реальному часі

Після запуску Waybeam ви можете змінювати параметри без перезапуску:

bash
# Змінити бітрейт (live)
curl "http://localhost/api/v1/set?video0.bitrate=4096"

# Змінити роздільну здатність (потребує reinit)
curl "http://localhost/api/v1/set?video0.size=1280x720"

# Змінити FPS (live)
curl "http://localhost/api/v1/set?video0.fps=90"

# Увімкнути ROI для FPV (live)
curl "http://localhost/api/v1/set?fpv.roiEnabled=true"
curl "http://localhost/api/v1/set?fpv.roiQp=-18"

# Запит IDR-кейфрейму (корисно після підключення)
curl http://localhost/request/idr

Поширені проблеми

Waybeam не запускається — помилка бібліотек

Переконайтеся, що всі бібліотеки SigmaStar доступні в /usr/lib. На Maruko їх потрібно встановити з тарболу вручну. Якщо ви використовуєте staged-збірку, встановіть змінну:

bash
export LD_LIBRARY_PATH=/шлях/до/lib
Немає відео після запуску
  1. Перевірте, що outgoing.enabled встановлено в true
  2. Перевірте правильність адреси outgoing.server
  3. Перевірте, що Majestic повністю зупинений: ps | grep majestic
  4. Перевірте логи: cat /tmp/waybeam.log
Чорний екран або артефакти

Перевірте сумісність сенсора:

bash
# Поточний сенсор і доступні режими
curl http://localhost/api/v1/modes

Переконайтеся, що sensor.index та sensor.mode встановлені на -1 (автовизначення).

Оновилися зі старої версії? Лінійки режимів сенсорів перебудовано кілька разів: v0.21/v0.23 (Maruko), v0.25–v0.34 (Star6E, власні in-tree драйвери IMX335/IMX415). Індекси sensor.mode перенумеровано, а частину режимів приховано — збережений у конфізі індекс поза новим діапазоном не дає waybeam стартувати (помилка вибору режиму при завантаженні). Звірте старий конфіг зі списком /api/v1/modes або поверніть -1.

Кодек H.264 не працює

Waybeam кодує тільки H.265 (HEVC) на обох чіпах. Поля video0.codec немає; H.264 не підтримується. Переконайтеся, що ваш приймач (PixelPilot, ffplay, QGroundControl, GStreamer) налаштований на H.265.


Наступні кроки

Чи була ця сторінка корисною?