Углублённая диагностика модуля
Углублённая диагностика аппаратного модуля 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.service | HDMI-захват, кодирование и SRT-передача |
primecast-localrelay.service | Локальный MediaMTX |
primecast-osd.service | TFT-интерфейс и джойстик |
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 | Захват, кодирование, реле и SRT | root: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-конфигурацию. Поля доступа должны генерироваться независимо для каждого контура.