matiaspl/LinkPi-ENCx
GitHub: matiaspl/LinkPi-ENCx
对 LinkPi ENC 系列与 TBS 2603SE 视频编码器固件与协议栈的逆向研究项目。
Stars: 79 | Forks: 14
# Link Pi ENC1 / TBS 2603SE 编码器连接指南
两款设备均基于 F3520D 主板([链接](https://linkpi.cn/archives/870))。不过 TBS 缺少 F3520D_EX2 扩展板(因此没有 HDMI 输出、模拟音频输入/输出、USB 接口、按键和串口头——软件支持所有这些功能)。

基础软件在整条 Link Pi 编码器产品线中通用,因此 ENC-Tiny(TinyENC1)、ENC1、ENC1V2、ENC2、ENC5、ENC9 和 ENCSH(以及 TBS)具有相同的开机/关机操作。
**更新 8.04.2022**:看起来 TinyENC1 的固件略有不同,默认未启用 telnet/ssh。如果有人感兴趣,可以捐赠一台或发送恢复固件给我。
**更新 9.11.2023**:最新的设备采用性能更强的 CPU,SS5248V100(据说是 Hi35xx 芯片的即插即用替代品,尤其是 Hi3520),内存更大,闪存容量也更大。
## 个人免责声明
我与 LinkPi 公司或其开发流程没有任何关联。我的个人看法是:它们是非常出色的设备,功能比某些贵十倍的名牌编码器更强。它拥有规划良好且响应迅速的 UI,画质和音质不错,而且“一切正常”。我已经习惯了这种 100 美元左右视频设备的表现,所以拿到并测试 ENC1 的那一刻简直是“豁然开朗” 😄
我曾尝试联系 Link Pi(开发和销售部门)关于安全问题,但未收到回复,因此决定在此公开所有潜在和真实的问题。
如果 LinkPi 的团队正在阅读,请查收邮件并至少告诉我“一边去” 😅
很遗憾底层的 Linux 系统没有得到像 UI 那样多的关注,但只要谨慎操作,新手也能在几分钟内让设备更安全。
## 已知缺陷
* 如果编码器长时间运行(例如超过 48 小时),USBCam 流输出会冻结。同一时间快照流水线似乎不受影响。
* 混合流水线输入如果长时间运行也会冻结(但快照和流流水线似乎不受影响)。
## 未记录的功能
### 软件
* USBCam 支持仅音频流传输(使用 UAC 设备,例如 USB 麦克风)
* 内部 RTMP 服务器支持外部连接,使用 rtmp://enc1_ip/live 路径和任意流密钥(避免使用 stream* 和 sub* 密钥,它们是内部用途),因此可以作为中继使用
* 自 **update_20210927** 起,启用本地 SRT 服务器(SLS),监听模式并接受带有正确 streamID 的连接。如果编码端推流到 srt://enc1_ip:8080?streamid=push/live/XYZ,播放/解码端可以连接到 srt://enc1_ip:8080?streamid=pull/live/XYZ(支持多客户端连接)。
> 注意:SLS 内置解析器会用 H.264 元数据覆盖 MPEGTS 视频头,因此向 SLS 发送 HEVC 流会很困难。另外,不支持加密。
* 支持高达 96 kHz 的音频采样率(但未启用,可通过编辑对应的 PHP 脚本手动添加)
* ~~OPUS 音频编解码器已支持(纯软件,默认禁用)~~(不再未记录)
* 截至 **20231031**,编码器支持在 SEI 视频流中插入时间戳信息(UI 提到 sinsam(规格)和 normal(与 sinsam 相同,只是不是每包而是每 GOP))
### 硬件
* 编码器可使用 5V 供电(通过移动电源或 USB 电源搭配 USB-A 到 DC 5.5x2.5mm 插头),前提是能提供约 2 安培(Carl Mills@EnDeCo)
* ENC1V2 上没有 USB-C 与标准 USB 之间的电源稳压器,因此如果通过 USB-C 提供 9/12V,设备会启动,但很可能烧毁连接到其他 USB 端口的设备(Carl Mills@EnDeCo)
## 第三方应用
静态编译的 armhf 应用程序似乎运行良好。我测试了 ffmpeg 和 v4l2-ctl,两者都可用。
* LinkPi-oled-logo-converter:将图形转换为 OLED 启动 Logo 格式 —— [GitHub](https://github.com/YveIce/LinkPi-oled-logo-converter)
* ffmpeg:[官网](https://johnvansickle.com/ffmpeg/)
* v4l2-ctl:[GitHub](https://github.com/9crk/v4l2-ctl) —— 该仓库包含一个静态 armhf 二进制文件 v4l2-ctl.exe
* v4l2ctl-ctl-with-php:通过 PHP 远程控制 USB 摄像头参数(亮度、对比度、背光等)[GitHub](https://github.com/wilwad/v4l2-ctl-with-php)
## 有用的内部页面(未在菜单中列出)
部分页面可能因前端大幅清理而不再可用。
* http://enc1/fac.php —— 低级工厂设置(也使用 oled.php、themes.php 和 remote.php)
* http://enc1/ndireg.php —— 输入 NDI 许可证字符串(需单独购买)
工程遗留:
* http://enc1/demo/audio.php —— 音频混音器,[AB33EP 扩展板](https://gitee.com/LinkPi/Audio/wikis/pages/preview?sort_id=1475161&doc_id=324053) 的前端
* http://enc1/demo/audio2.php —— audio.php? 的后端
* http://enc1/demo/config.html —— 看起来像是“设置默认值”的脚本
* http://enc1/demo/rtmp.html
* http://enc1/demo/netex.php
* http://enc1/demo/netex%20-%20拷贝.php(在 update_20210123 移除)
* http://enc1/demo/timer.html —— JavaScript 计时器,有助于测量延迟
* http://enc1/demo/demo.html —— 人脸识别(未工作)
* http://enc1/wxfunc.php —— 可能是旧后端的一部分,允许未经授权更改
* http://enc1/test.html —— 可能是 QA 残留,允许未经授权的幻灯片浏览所有输入
* http://enc1/monitor.php —— 运动检测
* http://enc1/face.php —— 人脸识别
## 交互台与计轨
交互台系统(从 20211201 版本开始)使用一个未知的 UDP 协议在 7000 端口通信,通过中央服务器(来源未公开,安装包与二进制文件位于 [这里](https://gitee.com/LinkPi/Service/))。根据符号判断,服务器是基于 LinkLib 的 QT 应用;客户端运行在 _/link/bin/Encoder_ 进程中,并使用 LinkLib 的 LinkIntercom 接口。
计轨系统能够使用 vMix 和 Sinsam(vMix 的中文克隆版)API,以及内置的 UART(_/dev/ttyAMA1_)作为下游的 PGM/PVW 信号源。文档说明(截至 20220804)仅 vMix 集成已完成。
固件分析显示系统依赖一个特定的“ttyTally”接口来控制计轨灯,该接口在系统中表现为 _/dev/ttyUSB0_。应能与大多数 Linux 支持的 USB-UART 芯片配合使用(特别是 ESP/ESP32 和 Arduino 设备)。截至 20220712,udev 规则选择 10c4:ea60(Silicon Labs CP210x UART 桥)作为 ttyTally 设备。
通用的 USB UAC 声卡通过 ALSA 似乎被用作交互台通信的源与目的地(如果同时使用摄像头和交互台可能会产生冲突)。
从 20220705/20220712 版本开始,udev 热插拔规则已包含 USB 音频设备 08dc:0014(C-Media - Unitek Y-247A)和 12d1:0010(未知设备,华为厂商 ID —— 可能是带耳机孔的 LTE 上网卡或 USB-C 手机耳机)。两者都会创建指向 /dev/headphone 的符号链接,很可能用于交互台的音频 IO。
## 默认密码/后门
### SSH / Telnet
```
root / linkpi.com (Link Pi)
root / turbosig (TBS)
root / linkpi.cn (newer Link Pi boxes)
```
/etc/passwd:
```
(...)
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
messagebus:tptRhoI1eT1Ak:1000:1000:Linux User,,,:/home/messagebus:/bin/sh
avahi:uTgaD2s17tOZ.:1002:1002:Linux User,,,:/home/avahi:/bin/sh
netdev:IY9bkphWuof06:1003:1003:Linux User,,,:/home/netdev:/bin/sh
```
**重要!** messagebus、avahi 和 net 账户密码为空(哈希可在此查看:https://www.seancassidy.me/etc/passwords.txt)。结合启用的 _telnetd_,这是一个**严重的安全威胁**!只有 sshd 账户受到一定保护,因为其对应的 /etc/shadow 文件不存在,认证直接失败。
请参考 **修复 -> 禁用 telnetd**
### Web
密码以未加盐的 MD5 哈希形式存储在 `/link/config/passwd.json` 中。默认值为:
```
admin / admin
superadmin / linkpi.com
```
超级管理员账户未公开文档,因此请手动删除或至少修改其密码。
### 远程协助
内置远程协助/E.T. 拨号回家功能,会通过 NGROK 建立隧道连接到 Link Pi 服务器。如果不需要,请删除 `/link/web/config.php` 中 `$remote=` 行的 IP 地址并重启。
**更新 05.2021**:远程管理已公开可用。如果你是微信用户,可在 [[wx.linkpi.cn]] 获取绑定码,并将编码器与提供的 Web 远程访问系统配对(打开“选项” -> “反向代理”页面,粘贴正确绑定码,开启远程访问功能并保存)。
该系统处于开发早期阶段,可能会偶尔宕机。
### ONVIF
默认运行一个未受保护的 ONVIF 服务,且无法通过 UI 禁用。
## 修复与技巧
### 恢复损坏的固件更新
完整闪存包与升级包不同。升级包通常是 .tar 文件,包含自上一版本以来更改的文件;而完整闪存包是分区镜像。你需要从以下链接获取对应设备的包:
https://gitee.com/LinkPi/Encoder/wikis/%E5%8D%87%E7%BA%A7&%E5%88%B7%E6%9C%BA/%E5%88%B7%E6%9C%BA%E5%8C%85
并按以下步骤操作:
1. 准备一个 USB 闪存盘,格式化为 FAT32,单一分区(无隐藏分区,推荐使用带活动 LED 的盘——能让 5-6 步等待更易忍受)
2. 将对应型号的完整闪存包解压到 USB 盘根目录
3. 关闭编码器电源,将 USB 盘插入编码器的 USB 端口
4. 按住编码器上的“DEF”按钮(用牙签),并打开电源
5. 看到 OLED 显示“UPDATING”或 HDMI 显示“System Updating”后松开 DEF 按钮
6. 等待固件刷写完成(OLED 或 HDMI 显示 Logo)
7. 刷写完成后,系统将恢复默认 IP(192.168.1.217),对应多型号刷写包。需手动访问 http://192.168.1.217/fac.php,选择并确认对应型号,然后重启。
如果导航 LinkPi Gitee 仓库遇到困难,Chrome 内置的翻译引擎效果不错。
### 为其他 HiLink/Huawei 4G 模块添加支持
使用 `lsusb` 查看设备的 VID 和 PID,然后按需修改:
/etc/udev/rules.d/11-usb-hotplug.rules
```
(...)
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f01", RUN+="/etc/udev/usb4g.sh"
SUBSYSTEM=="net", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14db", KERNEL=="eth*", RUN+="/etc/udev/usbUp.sh %k"
(...)
```
/etc/udev/usb4g.sh
```
#!/bin/sh
/usr/bin/usb_modeswitch -v 0x12d1 -p 0x1f01 -J
```
(usbUp.sh 脚本仅运行 udhcpc,无需修改)
### 创建并替换默认的“无信号” slate 图像
默认情况下,LinkLib 使用 `/link/config/nosignal.yuv` 作为视频源不可用时的占位图。该文件是 1920x1080 的原始半平面 4:2:0 子采样 YUV 位图。要创建自定义 slate,可使用 ffmpeg 转换 1920x1080 图像:
```
ffmpeg yourfile.png -c:v rawvideo -pix_fmt nv21 nosignal.yuv
```
然后覆盖原文件。
### 保护空密码的系统账户
为防止通过 Telnet 无密码登录,可将非 root 用户的哈希改为 `:x:`(例如使用 _vi_)。最终应如下所示:
```
(...)
messagebus:x:1000:1000:Linux User,,,:/home/messagebus:/bin/sh
avahi:x:1002:1002:Linux User,,,:/home/avahi:/bin/sh
netdev:x:1003:1003:Linux User,,,:/home/netdev:/bin/sh
```
### 禁用 Telnet 守护进程(已过时,新版请参考下方)
注释 `/etc/init.d/rcS` 中的 _telnetd_ 行。
### 禁用不安全的网络服务(如 Telnet、ONVIF)
编辑 `/link/config/service.json`(感谢 [@Gradinko](https://github.com/Gradinko)):
/link/config # more service.json
```json
{ "telnet":false, "ssh":true, "php":true, "nginx":true, "crond":true, "onvif":true, "ndi":true, "sls":true, "frp":false, "trans":false }
```
### 设置合理的时区 —— 已过时
设备使用 busybox/libc 的时区管理,可通过 `/etc/TZ` 设置。参考 https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html 创建对应时区行。
对于 CET/CEST(欧洲/华沙):
```
echo "CET-1CEST,M3.5.0,M10.5.0/3" > /etc/TZ
```
**更新**:从 20230322 起无需此操作,时区可在 UI 中配置。
### 启用基于密钥的 SSH 登录
大多数文件和目录的 UID/GID 为 1000,部分为 0 或 1027:100。这可能是构建脚本不完整所致。由于目录(包括 `/root` 子目录)权限设置不当,基于密钥的 SSH 登录无法工作。
修复方法如下:
```
chown root:root ~/
```
这将允许 `ssh-keygen` 将密钥复制到 ~/.ssh。
## 其他发现与建议
1. 完整 UI 使用 PHP 编写。
2. 软件在有无 OLED 显示的设备上通用;特定功能通过 http://enc1/fac.php 启用(可启用 USB 录制、UVC 摄像头输入、USB UAC 音频设备、NDI 支持、视频播放、UART 支持以及 GPIO 按键映射)。若启用不生效,可检查 `/link/web/config.php` 并手动添加参数(如 `$NDI=true` 和 `$OPUS=true`)。参考 `/link/fac/DEF/web/config.php`。
3. 设备几乎不做内部日志记录:仅包含 nginx-rtmp(支持 rtmp 和 rtmp/flv over http)和 php-fpm 日志。如需启用系统日志(直到下次重启):
```
mkdir /var/log
syslogd
```
或通过启动脚本启用。
4. 设备内置 256 MB 内存。对于此类设备较为罕见,整个文件系统以可写方式挂载:
```
~ # df -h
Filesystem Size Used Available Use% Mounted on
ubi0:ubifs 214.7M 62.3M 152.4M 29% /
tmpfs 95.7M 0 95.7M 0% /dev
tmpfs 95.7M 248.0K 95.4M 0% /tmp
```
```
~ # mount
rootfs on / type rootfs (rw)
ubi0:ubifs on / type ubifs (rw,sync,relatime)
proc on /proc type proc (rw,nosuid,nodev,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,relatime)
tmpfs on /dev type tmpfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
```
6. 内核包含以下驱动:
- cdc_ncm(4G 模块)
- uvcvideo(UVC 设备)
- ALSA(含 UAC 设备)
此外还有厂商提供的额外模块:
- 无线:88x2cu / 8821cu
- Gennum SDI 解串器:gs2971a
- 六通道德州仪器 ADC 音频 codec:tlv320aic31
- 硬件 SHA256 加速器:atsha204a
- 未知的 GPIO 多路复用器
## 从 HiSilicon 硬件加速 AV 后端获取信息
(https://www.programmersought.com/article/52274083303)
* VPSS(视频处理子系统)`cat /proc/umap/vpss`
* VI(视频输入)`cat /proc/umap/vi`
* VO(视频输出)`cat /proc/umap/vo`
* VEnc(视频编码器)`cat /proc/umap/venc`
* VDec(视频解码器)`cat /proc/umap/vdec`
* AI(音频输入)`cat /proc/umap/ai`
* SYS(系统)`cat /proc/umap/sys`
### 接收/发送特定参数
```
cat /proc/umap/hdmi0
cat /proc/umap/hdmi0_sink
cat /proc/umap/hdmi0_vo
```
### 设置 MPP 日志级别并获取内容
```
cat /dev/logmpp
echo venc=7 > /proc/umap/logmpp
cat /dev/logmpp
echo venc=3 > /proc/umap/logmpp
```
获取后端内存使用信息:
```
cat /proc/media-mem
```
## F3520D 引脚定义
* J1 —— USB 0,J4 —— USB 1
| 1 | 2 | 3 | 4 |
|---|---|---|---|
| +5V | USB- | USB+ | GND |
* P5 —— VGA
| 1 | 2 | 3 | 4 | 5 | 6 | | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|----|
| +5V | NC | NC | VSync | HSync | GND | Red | Green | Blue | GND |
* J16 —— UART 0
| 1 | 2 | 3 |
|----|----|-----|
| TX | GND | RX |
## 软件/固件更新日志
> 以下描述为从中文翻译并略作删减的发布说明。
在更新至 20210123 之前,部分功能需重启两次才能生效。新版固件似乎会自动完成重启。
设备出厂时可能搭载无法直接下载的固件版本(例如 20201111)。
### 5.0.0 build 20260130
**警告:更新破坏了交互台页面(ENC1V1)**
* 修复 SLS 服务内存占用问题
* 为 SS524V100 系列设备添加 TRTC 流支持([腾讯 RTC](https://console.cloud.tencent.com/trtc))
* 优化 USB 摄像头音视频捕获与重连
* 优化 SRT 流解码(针对 HI3520DV400、HI3521DV100、HI3531DV100 系列)
* 优化 RPC 服务,新增基于 JavaScript 的开发模式([LinkJS](https://www.yuque.com/linkpi/linkjs)),支持 SS524、SS528、SS928 系列设备
> 此模式需刷写固件,不包含在升级包中;需通过 factory setup(fac.php)启用。
### 4.4.1 build 20251130
此更新对以下功能有影响:
* 对于 20250228 及更早版本,更新后将禁用 frp 服务
* 对于版本低于 20250630 的系统,直接更新会覆盖“直播”页面的配置信息,请提前备份
* 更新将禁用红外遥控;需在遥控配置页面手动启用,并支持第二个遥控器(需选择对应设备,默认禁用)
其他变更:
* [输入] 页面中 USB 摄像头的 UI 已调整,与其他页面更一致
* 新增 [串口控制] 页面,可通过串口操作设备
* 原“串口、按键”页面更名为 [串口服务器],以更好匹配功能
* [轮播] 页面移至扩展功能
* 优化双 USB 摄像头同时使用时的内存占用
* 修复频繁插拔设备输入接口导致内存持续增长的问题
* 优化有线音频输入(降噪)
* 优化 SRT 流接收稳定性
* 修复 AAC 带扩展头的音频流无法解码的问题
* 修复缓冲模式下 NDI 流解码失败的问题
* 修复 WeChat 小程序加载异常
* 为所有型号添加 IPv6 支持
### 4.3.2 build 20250831
* 修复 ENCS1 遥控器触发异常
* 修复 ENC4S 特定分辨率下 SDI 输出异常
* 优化 NTP 时间同步稳定性
* 优化 GB28181 平台连接稳定性
* 优化 [推送] 页面中 H265 预览
* 新增 RIST 协议流输出
* 新增 [轮播] 页面,支持单/多画面自动轮换(MINI 型号不支持)
* 升级 RPC 服务
### 4.2.2 build 20250630
此更新将覆盖“直播”页面的配置信息,请提前备份。
* 优化 ENC5V2、ENC2V3、ENC8 的 Wi-Fi 稳定性
* 修复 ONVIF 获取编码分辨率自动时的 RTSP 流无法获取问题
* 修复 ENC4 第二路 HDMI 输出音频异常
* 修复 MiniEnc1 线路输出音量过低
* 新增 [接口输入] 页面,支持 HDMI/SDI/VGA、USB、Line In(带降噪与增益控制)
* 移除 [实验室] 中的 USB 摄像头页面,功能整合至 [输入] 页面
* 移除 [编码] 页面中的视频参数标签页,整合至 [输入] 与 [旋转/裁剪] 标签页
* 新增从混合通道中移除 Line In 音频的功能
* 新增 [流] 页面交互逻辑,可为每个输出通道指定音视频源
### 4.1.3 build 20250430
* 修复扫描的 NDI 流与设备 IP 不匹配的问题
* 移除 ENC2V2 页面中无效的网络端口显示
* 将 ENC8 与 ENCMini 的默认 EDID 改为 1080p
* 修复定时流设置无效的问题
* 修复远程协助在 ENCMini 上无法启用的问题
* 修复 ENCMini 上 SSH 登录无法启用的问题
* 新增 MAC 地址管理机制
* 在 [流] 页面的 RTSP 标签中添加自定义通道,支持 Onvif 输出
* 优化 ENCMini 内存占用
* 优化 Onvif 输出
* 优化 WebRTC 流协议
* 优化与 TallyArbiter 服务的连接稳定性
* 优化设备启动速度
### 4.0.0 build 20250228
> 仅支持 20240131 及更高版本。切勿直接使用低于 20230426 的升级包降级。
* 移除所有型号的经典版网页及相关配置
* 优化日志功能内存占用
* 优化纯网络流视频解码逻辑
* 移除实验室中的 insta360 链接
* 新增实验室中的 USB 摄像头页面,兼容 insta360 控制
* 修复部分 USB 盘在循环录制时保留空间获取不准确的问题
* 修复文件录制页面中“循环录制”标签页显示文件名不连续的问题
* 移除 OLED 显示的 AUD 与 BR 状态,新增录制(REC)与推流(PUSH)状态显示
### 3.6.0 build 20241231
> 仅支持 20240131 及更高版本。切勿直接使用低于 20230426 的升级包降级。
* 实验室页面新增系统日志查看/下载
* 新增线路输出控制到接口输出页面
* 编码设置页面新增 AAC-HE 音频编码
* 文件录制页面新增循环录制、分段录制、开机录制等功能
* 修复 MP3 编码异常问题
* 优化水印缩放性能
* 修改部分页面文本描述
### 3.5.0 build 20241031
> 仅支持 20240131 及更高版本。切勿直接使用低于 20230426 的升级包降级。
* 新增 OLED 按钮交互
* 修复小屏幕菜单不显示的问题
* 直播页面修复保存后预览可能无法加载的问题
* H5 播放器页面新增指定通道全屏快捷创建功能
* 优化包含 B 帧的网络流解码
* 低频系统优化
### 3.4.0 build 20240831
* 解码设置页面支持多路 NDI 流解码输出
* 调整直播页面交互逻辑,新增 WebRTC 流功能
* 视频特效页面支持视频流预览(需启用 RTMP 或 WebRTC 流)
* 修复设备扫描 ONVIF 流输出的罕见问题
* 优化主题功能,支持设置主色调
### 3.3.0 build 20240731
* 在解码页面新增 SRT 标签页
* 新增超低延迟 WebRTC 预览(启用后在 H5 播放器中可用)
* 在流输出页面新增一键复制流 URL
* 优化 DHCP
### 3.2.0 build 20240531
* 标准版:解码设置页面新增接收 RTMP 流功能,支持认证流
* 修复 ENCSHV2 型号首次启动后 Wi-Fi 默认开启的问题
* 优化帧同步功能
### 3.1.0 build 20240430
* 标准版:修改标题搜索框交互逻辑,不再弹出搜索框
* 标准版:标题搜索功能,支持关键词高亮
* 标准版:移除编码页面的网络输入选项,将网络输入移至解码页面
* 标准版:修复 DHCP 关闭后网络设置仍可能自动获取 IP 的问题
* 标准版:完全兼容各类分辨率预览效果(包括竖屏)
* 标准版:新的远程控制交互逻辑(仅部分型号支持)
* 标准版:修复部分型号编码设置页面无 4K 选项的问题
* 标准版:优化部分 HTTP 接口逻辑
* 经典版:修复视频混合页面切换布局时通道切换无效的问题
* 自定义布局管理器,支持竖屏及各种自定义分辨率显示
### 3.0.0 build 20240131
* 标准版:修复部分页面翻译问题
* 标准版:修复 NDI 注册失败问题
* 标准版:新增标题关键词搜索功能
* 在布局管理器中添加音频源绑定到视频通道的功能(*布局管理器中未看到此选项,但编码器的音频标签页可用的音频源比以往更广...*)
* 修复 NTFS 格式硬盘无法自动挂载的问题
* 优化部分 HTTP 接口逻辑
* 优化文件录制功能
* 为 ENC1V3、ENCSHV2、ENC4S 型号优化内核以提升 UDP 稳定性
### 2.9.0 build 20231229
* 经典版:修复指定输入源切换时可能无效的问题
* 标准版:修复因集成通信页面未绑定广播软件导致的页面加载异常
* 标准版:修复设置 LPH 后切换版本失效的问题
* 标准版:新增单键 HDMI 输出功能到解码设置页面
* 移除 LPH 设置水印接口中的冗余返回值
* 网络管理优化
### 2.8.0 build 20231130
* 优化分段录制功能
* NTP 同步增加定时同步间隔
* 修复 NTP 同步导致的录制与流输出异常
* 修正 ENC1V3、ENCSHV2 等型号的 UDP 包乱序问题
* 修复通道特效数量不能超过 8 的问题
* ENCSH 型号变更后新增管理 UI,提供“经典”(原厂)与“标准”(新版)两种版本
### 2.7.0 build 20231031
* 在编码设置页面新增帧同步设置(“sinsam/normal/close”)
* 多平台直播页面——新增推流兼容性设置,支持向 YouTube 推送 H265 流
* 优化 NTP 同步
* 优化纯音频网络流编码逻辑
* 系统优化
### 2.6.0 build 20230928
* 优化无音频网络流编码逻辑
* 优化无音频 USB 摄像头编码逻辑
* 优化设备 NDI 编码帧率
* 修复 ENC2V2 无法识别所连接 USB 网卡的问题
* 修复在低分辨率流与 NOSIGNAL 屏幕间切换导致的水印缩放问题
### 2.5.0 build 20230831
* 修复通过 HTTP 接口获取/设置水印的异常问题
* 修复 SRT 输出中延迟无法大于 1000 ms 的问题
* 优化 ENC1V3 与 ENCSHV2 型号的 4K 输出质量
* 为 ENC1V3、ENCSHV2、ENC5V2 型号添加 HDMI 输出水平镜像功能
* 在高级设置中添加新的 Rtty 访问设备方式
* 系统优化
### 2.4.0 build 20230731
* 修复挂载大容量设备时磁盘空间显示不准确的问题
* 修复 ENC5V2 型号恢复出厂设置时出现小概率异常
* 为 SDI 输入添加 Level B 标准支持
* 为 ENC1V3、ENC4SS、ENCSHV2 型号添加远程控制支持
* 在扩展功能中添加存储挂载设置,支持 NFS 挂载、Windows 共享目录挂载以及指定分区挂载
**缺陷**:
* LCD 布局配置小程序不再可用(实测)
* 色键(“绿幕”)功能偶尔会锁死(未实测)
### 2.3.0 build 20230630
* 修复无效流地址导致内存占用增加的问题
* 修正输出设置页面上显示的播放地址问题
* 新增通过升级包恢复用户设置的功能
**缺陷**:
* LCD 布局配置小程序不再可用(实测)
* 色键(“绿幕”)功能偶尔会锁死(未实测)
### 2.2.0 build 20230531
> 仅支持 20230426 及更高版本。其他版本请下载完整闪存固件升级。如需降级,请使用对应版本的闪存包。切勿直接使用低于 20230426 的升级包降级。**注意:此升级将覆盖设备配置信息,请按需备份**
* 为所有平台直播流添加定时启用/禁用推流功能
* 优化部分型号的 Onvif PTZ 功能
* 优化集成通信功能
* 优化设备内存占用
* 调整主页端口状态显示逻辑
* 修复 ROI 设置功能
* 修复因系统时间变更导致的流时长显示不准确问题
* 修正 ENC1 型号按钮触发概率异常的问题
* 支持新的基于互联网的小程序,不再依赖局域网,可随时随地查看
**缺陷**:
* LCD 布局配置小程序不再可用
* 色键(“绿幕”)功能偶尔会锁死
### 2.1.0 build 20230426
> 仅支持 20221116 及更高版本。其他版本请下载完整闪存固件升级。如需降级,请使用对应版本的闪存包。切勿直接使用低于此版本的升级包降级。**注意:此升级将覆盖设备配置信息,请备份**
>
> 注意:从 20230322 升级至此版本时,我的设备变砖(软砖),不得不进行完整闪存升级才能恢复。
* 修复 B 帧解码的缓冲控制
* 降低 MP3 编码的 CPU 占用
* 支持最新的 insta360Link 固件
* 修复部分情况下网络流叠加特效异常的问题
* 修复缩放、旋转等情况下解码插图显示异常的问题
* 修复部分型号网络流旋转异常的问题
* 解决 SRT 模式下 IPv6 域名解析问题
* 替换升级包/资源上传组件
* 视频轮播支持解码与重新编码(即 U 盘播放与流输出)
* 实验室新增键控功能,即绿幕抠像
### 2.0.0 build 20230322
> 据说此版本更改了固件升级方式。官方说明:只能逐版本升级
* 状态页面——修复网络上行/下行状态显示问题
* 编码设置——(视频参数)新增裁剪与旋转网络流功能,为 HDMI/SDI 通道添加 NTSC 兼容帧率
* 编码设置——(音频参数)音频源选择支持从其他视频通道选取音频
* 输出设置——(播放 URL 设置)新增默认主/辅流命名方案修改功能
* 系统设置——新增批量配置导出与导入功能,新增时区选择功能
* 多推流设置——新增主/辅流选择选项
* 默认在无网络信号时显示无信号 slate,可通过 fac.php 页面开启/关闭此功能
* 修复部分页面翻译错误并优化其他功能
* 新增一个实验性模块:菜单栏包含 GB28181 支持、ROI 编码区域兴趣、Insta360 摄像头控制、Onvif PTZ 控制、音视频同步调整(实验功能,请谨慎使用)
### 1.0.0 build 20221116
* 新增在线固件搜索与升级功能
* rtsp 输出流添加账号密码认证功能
* 新增扩展功能下的 USB 磁盘助手
* 添加 B 帧视频流解码兼容性
* 修复使用 Wi-Fi 网络卡时获取网络状态异常的问题
* 优化交互台功能
* 新增 H5 播放器页面支持 h265 编码回放(播放 h265 流需要较高电脑性能,若卡顿请换性能更好的电脑播放)
* ENC1、ENC1V2、ENCSH 型号支持 Wi-Fi6 网卡版本 2.0
### update_20220712
* 修复使用 USB 摄像头时设备重启后小概率出现的音频捕获异常
* 修复 USB 摄像头插拔后音频无法捕获的问题
* 修复因无效 SRT 流导致编码器程序打开文件句柄数不断增加的问题
* 修复设备绑定 wx.linkpi.cn 后自定义布局管理器加载异常的问题
* 所有型号 HTTP API 接口,优化 URL 匹配规则
* 登录框水平垂直居中,修复密码自动填充时输入框背景色问题
* 修复多网卡设备获取网络状态异常的问题
* 交互台功能在 ENC1、ENC1V2、ENCSH 型号更改为 PTT
* 修复辅助流组设置问题
### update_20220518
* 修复 NDI5 无法解码 NDI4(HX2)的 H265 流问题
* 修复 YouTube 直播卡顿问题
* 适用于 20211201 之后的任意版本
### update_20220424
* 升级至 NDI5(NDI4 用户需联系客服更换授权码)
* 新增 HTTP-API 接口
* 适用于 20211201 之后的任意版本
### update_20211201
* 新增集成呼叫系统与计轨灯支持 [官方 Wiki 链接](https://gitee.com/LinkPi/Encoder/wikis/%E8%BF%9B%E9%98%B6%E6%95%99%E7%A8%8B/%E9%9B%86%E6%88%90%E9%80%9A%E4%BF%A1%E7%B3%BB%E7%BB%9F/%E9%9B%86%E6%88%90%E9%80%9A%E4%BF%A1%E7%B3%BB%E7%BB%9F%E6%A6%82%E8%BF%B0)
* 新增配置文件的导入与导出功能
* 新增后台媒体服务配置修改功能
* 修复网络设置页面 IP 等参数的格式验证
* 录制支持文件分片
* 支持无分区 SD 卡或 TF 卡
* 修复 USB 摄像头音频无效的问题
* 修复 OLED 录制状态显示异常
* 修复网络输入保存参数后设备重启的问题
### update_20210927
* 添加 frp 支持([GitHub](https://github.com/fatedier/frp))
* 内置 sls 服务([GitHub](https://github.com/Edward-Wu/srt-live-server))
* 在输出设置页面为 SRT 输出添加 streamID 属性
* 优化 NTP 时间同步
* 优化音视频同步
* 解决远程访问与 SRT 可能产生的冲突
* 解决特定情况下 CPU 占用率异常升高的问题
* 修正网页主题显示效果
* _低比特率 NDI 支持(厂商未在更新日志中提及)。低比特率 NDI 流遵循子流设置。_
### update_20210607
* 修复上一版本导致的语言切换问题
* 修复上一版本导致的 MP4 录制问题
* 适用于 20210123 之后的任意版本
### update_20210527
* 添加远程访问功能([使用方法](https://linkpi-cn.translate.goog/archives/1388?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=pl&_x_tr_pto=wapp))
* 添加自定义布局设计界面
* 优化解码兼容性
* 优化解码流畅度(同步模式)
* 解决网络输入源在重启后无法重新编码的问题
* 增强 HDMI 输入稳定性
* 适用于 20210123 之后的任意版本
### update_20210123
* ENC1V2 添加远程控制操作支持
* ENCTiny 提升稳定性
* 优化文件录制操作界面
* 修复 Web 中与 OEM 包配置冲突的 CSS 设置
* 语言选择将保存在设备中,不再仅依赖 Cookie
* [3520D] 解决特定版本下 HDMI 输入分辨率异常或音频异常的问题
* [3531D] 解决 OLED 程序导致高 CPU 使用率的问题
* 解决 HDMI 输出分辨率在设备重复重启后可能变小的问题
### update_20201029
* 新增 ENC1V2 型号
* 增强 HDMI 兼容性
* 按键功能可关闭
* 修复 ENCSH 重置问题
* 修复部分情况下网页无预览图像的问题
* 修复 RTMP 大码率下一定概率的丢包问题
### update_20200823
* 网络输入同步模式可手动设置缓冲时间
* 音频增益可同时应用于 HDMI、SDI、Line 和 Mix
* 串口透明传输支持设置 IP,可实现成对透明传输应用
* 新增视频混合上下分屏布局,适合竖屏直播
* 支持关闭视频编码以实现独立音频输出
* 优化录制管理界面
* 新增 SRT 加密选项
* 支持交错视频旋转
* 添加常用 USB 串口驱动
* 新增 H5 播放器页面
* 新增即时 DHCP 功能
* 添加网络测试功能
* 优化大码率发送接收兼容性
* 优化时间戳间隔
* 修复 YouTube 音频兼容问题
* 修复 RTMP 转 RTMP 问题
* 修复 RTMP 携带帧率信息问题
### update_20200504
* 修复 NDI 授权在升级后会被清除的问题
### update_20200504
* 新增远程协助功能(位于系统设置底部)
### update_20200502
* 修正 SRT 延迟时间单位
* 打开 3520D 看门狗
### update_20200430
* 新增 4G 模块支持
* 修复开启多个 SRT 通道时异常重连的问题
### update_20200427
* 修复 Wi-Fi 管理页面问题
### update_20200426
* 修改 SRT 用户界面
* 添加 Wi-Fi 模块支持
* 修复 Overlay 的添加、删除和修改异常
### update_20200420
* 新增平台直播视频预览
* 优化小程序界面
## 链接
- https://www.yuque.com/linkpi/encoder/ —— 官方英文文档
- https://linkpi.gitbook.io/encoder/ —— 旧版官方英文文档
- https://www.yuque.com/linkpi/encoder/pkfir2g98gwpzymt —— 升级固件仓库
- https://www.yuque.com/linkpi/encoder/kpvg3mbg5ussrx69 —— 启动(“完整闪存”)固件仓库
- https://www.yuque.com/linkpi/linkjs/ —— LinkJS 开发文档
- https://gitee.com/LinkPi/ —— 官方 Link Pi 代码仓库
- https://gitee.com/LinkPi/Encoder/wikis —— 官方文档,是了解内部结构和固件的好资料
- https://linkpi.cn/archives/1388 —— HTTP API([Google 翻译](https://linkpi-cn.translate.goog/archives/1388?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=pl&_x_tr_pto=wapp))
- https://gitee.com/LinkPi/Encoder/issues —— 缺陷列表(不确定是否有开发者查看过)
- https://blog.csdn.net/weixin_41486034 —— 中文博客,包含许多 ENCx 使用案例和想法(很可能由 Link Pi 开发者或技术型销售运营)
- https://linkpi.cn/archives/444 —— 对一篇 CSDN 文章的广泛 ENC5 测试复述
- http://wiki.endeco.xyz/ —— 英文手册,用于重新品牌化和加锁的 LinkPi 编码器(已停用 ;( )
标签:ASN解析, ENC1, ENC2, ENC5, ENC9, ENCSH, F3520D, HDMI输出, Hi3520, LinkPi, Linux系统, SEO, SS5248V100, SSH, TBS 2603SE, Telnet, TinyENC1, UI设计, USB接口, 串口调试, 主板, 云资产清单, 固件逆向, 固件逆向工程, 安全漏洞, 嵌入式系统, 模拟音频, 流媒体修复, 硬件分析, 视频流, 视频编码器, 逆向工程, 隐藏功能