PrimeCast

Углублённая диагностика модуля

Углублённая диагностика аппаратного модуля PrimeCast по SSH: службы, логи journalctl, видеоустройства V4L2, USB, сеть, время, температура и файлы конфигурации /etc/primecast.

Команды этого раздела выполняются по SSH только уполномоченным специалистом. Перед углублённой диагностикой выполните быструю проверку.

Информация о системе

uname -a
cat /etc/os-release
tr -d '\0' </proc/device-tree/model

Состояние служб

systemctl status primecast-agent --no-pager
systemctl status primecast-localrelay --no-pager
systemctl status primecast-osd --no-pager
systemctl status NetworkManager --no-pager

Последние ошибки

sudo journalctl -u primecast-agent -p warning -n 100 --no-pager
sudo journalctl -u primecast-localrelay -p warning -n 100 --no-pager
sudo journalctl -u primecast-osd -p warning -n 100 --no-pager

Видеоустройства

v4l2-ctl --list-devices
ls -l /dev/video*

Эталонный захват определяется как UVC Camera и создаёт /dev/video0, /dev/video1.

Системные узлы Raspberry Pi вида bcm2835-codec или bcm2835-isp не являются HDMI-захватом.

Форматы захвата

v4l2-ctl -d /dev/video0 --list-formats-ext

Сопоставьте:

  • формат из /etc/primecast/agent.json;
  • разрешение;
  • FPS;
  • реально поддерживаемую комбинацию.

USB

lsusb
lsusb -t
dmesg --level=err,warn | tail -n 100

Признаки проблемы:

  • постоянное переподключение USB;
  • device descriptor read error;
  • недостаток питания;
  • переход устройства на низкую скорость;
  • ошибки UVC.

Сеть

nmcli -t -f DEVICE,TYPE,STATE,CONNECTION device status
ip -br address
ip route show default
getent hosts YOUR_SERVER

Время

timedatectl status
chronyc tracking

Неверное время вызывает:

  • ошибки сертификата;
  • преждевременное истечение токенов;
  • неверную временную шкалу логов.

Нагрузка и температура

uptime
free -h
df -h /
vcgencmd measure_temp
vcgencmd get_throttled

throttled=0x0 означает отсутствие зарегистрированных проблем питания и троттлинга. Ненулевое значение требует расшифровки и проверки блока питания.

Открытые порты

ss -lntup

Не открывайте порт наружу только потому, что он отображается в списке. Сначала сверьте сетевую архитектуру и firewall.

Службы аппаратного модуля

СлужбаНазначение
primecast-agent.serviceHDMI-захват, кодирование и SRT-передача
primecast-localrelay.serviceЛокальный MediaMTX
primecast-osd.serviceTFT-интерфейс и джойстик
NetworkManager.serviceСетевые подключения
ssh.serviceТехнический доступ

Перезапуск одной службы

sudo systemctl restart primecast-agent

После перезапуска:

systemctl is-active primecast-agent
sudo journalctl -u primecast-agent -n 50 --no-pager

Рекомендуемый порядок полного перезапуска служб

sudo systemctl restart primecast-localrelay
sudo systemctl restart primecast-agent
sudo systemctl restart primecast-osd

Полный перезапуск нужен только после изменения соответствующих конфигураций.

Важно. Не маскируйте проблему бесконечными перезапусками. Перед вторым перезапуском сохраните логи и установите причину.

Файлы конфигурации модуля

ПутьСодержимоеРекомендуемые права
/etc/primecast/agent.jsonЗахват, кодирование, реле и SRTroot:primecast 640
/etc/primecast/system-key.jsonКлюч и пароль устройстваroot:root 600
/etc/primecast/mediamtx.ymlЛокальное медиарелене доступен обычным пользователям на запись
/etc/primecast/osd-access.envУстаревшие/технические OSD-параметрыroot:root 600
/var/lib/primecast/Состояние и локальные ключиограниченный доступ

Безопасная проверка JSON

sudo python3 -m json.tool /etc/primecast/agent.json >/dev/null
sudo python3 -m json.tool /etc/primecast/system-key.json >/dev/null

Упрощённая структура agent.json

{
  "device_id": "pi-01",
  "relay": {
    "host": "YOUR_SERVER",
    "srt_port": 8890,
    "control_url": "",
    "provision_url": ""
  },
  "capture": {
    "kind": "v4l2",
    "device": "/dev/video0",
    "width": 1920,
    "height": 1080,
    "fps": 30,
    "input_format": "mjpeg"
  },
  "encode": {
    "hardware": "v4l2m2m",
    "bitrate_kbps": 6000,
    "gop": 60
  },
  "audio": {
    "enabled": false,
    "device": ""
  },
  "srt": {
    "passphrase": "CHANGE_ME",
    "publish_user": "device",
    "publish_pass": "CHANGE_ME",
    "latency_ms": 1000
  },
  "secrets_dir": "/var/lib/primecast"
}

Важно. Не копируйте пример как production-конфигурацию. Поля доступа должны генерироваться независимо для каждого контура.

Обновлено: 3 августа 2026 г.