跟踪日志

2024/1/9

通过 TFTP 和 UART 逐步安装 OpenIPC 固件。

2024//

2024//

参考文章

说明

核心就是利用网络摄像头,而且网络监控的市场很大,网络摄像头可选择的范围很大,可以根据主控芯片、图像传感器的型号,以及板载的串口(刷鞋固件、通信),USB(连接WIFI网卡)的情况自由选择
我这里选择的是 SigmaStar SsC338Q 分辨率4K@20FPS 内置2Gb DDR3

固件安装

这里是利用的TFTP和UART来安装固件

SoC识别

SoC(系统级芯片)包括相机的 CPU 内核以及所有必要的外围设备,例如相机和网络接口。这部分由摄像头厂商确定,需要看IC标记丝印来查看,或者使用ipctool软件识别SoC型号

闪存芯片大小

通常是摄像头8引脚的一个芯片,可以通过U-boot启动过程确认,也可以查看丝印(丝印包含64,即是8M,包含128,即16M)

TFTP服务器

TFTP(Trivial File Transfer Protocol)服务器是一种简单的文件传输协议服务器,用于在网络设备之间传输文件。与FTP(File Transfer Protocol)相比,TFTP更轻量级,通常用于在局域网(LAN)中传输小文件,如配置文件、固件更新等。

说白了就是用它来传固件的

连接相机的UART端口

最好是看摄像头手册 好用的就是一个usb转ttl的串口适配器

将适配器上的引脚连接到 UART 端口的可能触点。使用标准电源适配器为相机供电。如果幸运,就可以在终端窗口中看到 Booting log。在某些情况下,如果在屏幕上看到乱码文本而不是引导内核,需要将连接速度更改为 57600 bps,然后重试。RX、TX

访问bootloader

通过按计算机键盘上的组合键来引导加载程序控制台, 在 bootloader 启动和 Linux 内核启动之前。

保存原始固件

固件烧写

串口登录设置

网络配置及远程登录

连接wifi网卡

检查WiFi模块的识别情况

生成和安装 WFB-NG 的密钥配对

编辑 wfb.conf 以设置正确的 wifi 频道

在相机上配置 majestic.yaml 文件

视频延时组成

视频链路:摄像头==》编码==》传输==》解码==》显示,大体上可以分为以下几个延时:

  1. 摄像头数据采集延时(camera)
  2. 编码器编码延时(H264 codec)
  3. 无线网络延时(wfb_ng): ~ 5ms
  4. 解码器解码延时(H264 decoder)
  5. 显示器刷新延时(monitor refresh rate)

地面站

接收端网卡

目前开发的地面站支持的大多是rtl8812au这一款网卡(主要是网卡驱动问题)
并支持monitor 模式

monitor模式

什么是monitor模式

WiFi Monitor模式需要WiFi芯片本身支持,并且驱动要支持相应的接口。

在非Monitor模式 (平时正常使用的状态)下,内核会将802.11帧封装成普通网络帧传递给上层; 而在Monitor模式 下,内核则会直接将802.11帧传给上层,不会进行封装,用户层就通过接口拿到RAW包,可以按802.11帧格式进行包解析处理。

在Linux内核中,hostap_80211_rx 函数是IEEE 802.11接收无线skb的tasklet函数,其作用是处理802.11网卡传递过来的数据包。倘若网卡被设置成monitor模式,该函数中会调用如下分支:

if (local->iw_mode == IW_MODE_MONITOR) {


monitor_rx(dev, skb, rx_stats);

return;

}

在monitor_rx 函数中,主要是prism2_rx_80211 函数,将带有802.11头的skb直接发送给netif。netif为linux内核网络数据包的标准框架。在prism2_rx_80211中,在skb里补充了一个抓包的头,给用户提供更多的包信息。这个头对应的数据结构为linux_wlan_ng_cap_hdr ,具体声明如下:

struct linux_wlan_ng_cap_hdr {


__be32 version;

__be32 length;

__be64 mactime;

__be64 hosttime;

__be32 phytype;

__be32 channel;

__be32 datarate;

__be32 antenna;

__be32 priority;

__be32 ssi_type;

__be32 ssi_signal;

__be32 ssi_noise;

__be32 preamble;

__be32 encoding;

} __packed;

如何开启

使用如下命令可以实现:
iwconfig wlan0 mode Monitor
其调用了如下ioctl来配置:
ret = ioctl(skfd, SIOCSIWMODE, &wrq);
对应的配置模式,通过wrq参数来定义。而上面的skfd则由下面操作获取:
skfd = socket(AF_INET, SOCK_DGRAM, 0);

网卡选择

网卡官方支持:
RTL8812AU、ar9271、rtl8812eu

https://forums.developer.nvidia.com/t/rtl8822ce-access-point-mode/288083
板载算力板上的网卡型号为rtl8812CE,不支持monitor mode

地面站选择

OpenIPC地面站
1、使用海思HI3536ERBCV100、DRBCV100芯片的 nvr网络监控主板,价格便宜dv100价20~35,二手数量大。
-解析显示最高1080P@60FPS。
-dv100主板需留意挑16M闪存(25q128)、256M内存(xxxx2Gxxx)
#指南https://github.com/OpenIPC/wiki/blob/master/en/fpv-nvr.md
2、使用ubuntu系统的笔记本电脑,无需额外投资,电脑性能强劲
-缺点是体积大和户外显示亮度不够。
#指南https://github.com/OpenIPC/wiki/blob/master/en/fpv-gs-ubuntu.md
3、Orange pi5(rk3588s),499元,解析力超强1080P120。
#指南https://github.com/OpenIPC/sbc-groundstations/releases/
4、Radxa zero 3w(rk3566),4G+32G 370元,2G测试中169,解析力够1080p90。
#指南https://github.com/OpenIPC/sbc-groundstations/releases/

Ubuntu查看和接收OpenIPC

方法一:直连,ubuntu主机安装wfb-ng,直接连接USB网卡(8812au、8812eu、8812cu等)
方法二:转发接收,接收 (安装有 wfb-ng)的电视盒子、zero 3W 、树莓派 等转发过来的 视频和mavlink信息

地面站烧录

虚拟机Ubuntu

泰山派Android系统

泰山派Ubuntu

算力版jetson