0001 MPRG4(基于树莓派5 PCIe设计)

来自Mcuzone Wiki
Mcuadm留言 | 贡献2024年7月1日 (一) 14:06的版本 (创建页面,内容为“== 关键词: == 树莓派5  MPRG4  四千兆网口扩展板  Pi OS  Ubuntu  OpenWrt  软路由  交换机 == 一、简介 == MPRG4(或称MPG4)是一款专为树莓派5设计的通过PCIE接口扩展的四千兆网口扩展板。该扩展板通过PCIE接口外挂RTL8111H PCIE网口,然后进一步通过交换机芯片扩展成四路千兆网口。可用于以下几种场景: 1,树莓派系统或Ubuntu系统下,其中一个网口连接上级…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

关键词:

树莓派5  MPRG4  四千兆网口扩展板  Pi OS  Ubuntu  OpenWrt  软路由  交换机

一、简介

MPRG4(或称MPG4)是一款专为树莓派5设计的通过PCIE接口扩展的四千兆网口扩展板。该扩展板通过PCIE接口外挂RTL8111H PCIE网口,然后进一步通过交换机芯片扩展成四路千兆网口。可用于以下几种场景:

1,树莓派系统或Ubuntu系统下,其中一个网口连接上级路由器,剩余3个网口为附近其它需要联网的设备提供网络接入(四个网口位于同一个网段),可省却一个外挂的交换机和电源。

2,OpenWrt软路由系统下,原生千兆配置为WAN口,扩展的四个网口配置为LAN口,可为四台设备提供网络接入服务。

注意1:四个千兆口位于同一个网段,由上游路由器来分配地址池。如果不接上游路由器则在树莓派系统和Ubuntu系统下将无法获取合法IP地址(会收到169.254.xx.xx的IP地址,表示仅有物理网线连接但无合法IP地址)。

注意2:在树莓派系统和Ubuntu系统下如果开机时没有插网线一段时间后系统将会获取到169.254.xx.xx的IP地址,此时即便插入来自上游路由器的网线后系统也获取不到合法IP,需要按一下扩展板上的交换机复位键才能重新获取到合法IP地址。

二、硬件资源

1,通过16Pin 0.5mm FPC和树莓派5连接;

2,板载RTL8111H芯片,实现PCIE转千兆以太网;

3,板载交换机芯片,将RTL8111H网口扩展为四个,这四个网口具备独立IP,但隶属于同一个网段;

4,一盏电源指示灯;

5,一个交换机复位键(Switch RST),适用于树莓派系统和Ubuntu系统下开机一段时间后再插入网线获取不到合法IP的情况;

6,可选3D打印底座,可保护桌面不被划伤;

7,可选钣金外壳,美观可靠;

8,可选外延的树莓派5开关机按键(树莓派5自带开关机按键,同时有预留插针孔用于外延开关机按键);

9,板子尺寸:约86mmx75mm


01.jpg


另可选配4G模块安装在树莓派5上方来搭建4G路由器。

注意:四网口无法接入不同网段的上游路由设备,即无法实现一条电信一条移动一条联通这样的多网聚合应用,也无法实现一个网口接外网一个网口接内网网段的桥接应用。

三、树莓派系统下使用演示

请先连接好FPC线。注意,如果是使用PCIE专用线,上面有标记树莓派5的朝向。

树莓派系统下默认已经集成驱动,可直接使用。

1,请根据需要烧写树莓派系统,支持32位和64位系统,由于PCIE接口已被占用,可从TF启动;

2,系统启动后,执行ifconfig -a,可看到有eth1设备,即为扩展的RTL8111H网卡:

02.jpg

3,PC连接至四网口中的任意一个,树莓派和PC各自运行iperf3进行测速,基本跑满:

Windows版iperf3下载:

http://www.mcuzone.com/down/Software.asp?ID=10000634

Linux下iperf3安装:

sudo apt-get install iperf3


03.jpg


四网口之间的iperf3测试也一样可以跑满。

注意1:四个端口的交换机是物理层设备,系统下不可见。

注意2:如果开机前没有插网线连接至上级路由器,一段时间后即便接入网线也会无法联网(IP地址为169.254.xx.xx),此时需要按一下交换机的复位键(丝印标记为Switch RST).

四、Ubuntu系统下的使用演示

注意,Ubuntu系统下需要安装RTL8111H,而且要注意的是系统版本和驱动版本强相关,如有驱动编译问题可以联系我们获取已配置好驱动的镜像文件。

驱动编译流程如下:

官网下载网卡驱动包:

https://www.realtek.com/Download/List?cate_id=584  找到此驱动将其下载至本地。


04.jpg


官网最新驱动可能不适用于Ubuntu最新系统,如果安装不了请使用我司当前的驱动版本

http://www.mcuzone.com/r8168-8.052.01.tar.bz2

加载和验证驱动:

下载完成后使用SSH等工具将压缩包放至Ubuntu系统下,接下来按照以下步骤进行驱动安装:

1.更新系统和头文件:

sudo apt-get update

sudo apt-get upgrade

理论上不需要更新头文件,Ubuntu不同于Pi OS,upgrade的时候头文件也会一并更新。

如果后续报头文件问题,用以下命令检查头文件:

sudo apt-get install linux-headers-$(uname -r)

2.准备编译环境:

sudo apt-get install --reinstall linux-headers-$(uname -r) linux-headers-generic build-essential dkms

3.解压对应的源码到/usr/src:

sudo tar xvf r8168-8.052.01.tar.bz2 -C /usr/src

4.添加一个dkms.conf:

添加一个dkms.conf到/usr/src/r8168-8.052.01/dkms.conf,内容如下:

PACKAGE_NAME=Realtek_r8168

PACKAGE_VERSION=8.052.01

DEST_MODULE_LOCATION=/updates/dkms

BUILT_MODULE_NAME=r8168

BUILT_MODULE_LOCATION=src/

MAKE="'make' -C src/ all"

CLEAN="'make' -C src/ clean"

AUTOINSTALL="yes"

注意:请在本Ubuntu系统下建立此文件,如果在Windows下建立此文件并直接拷入本Ubuntu系统的话会有字符格式问题,从而造成编译无法通过。

5.编译DKMS:

sudo dkms add -m r8168 -v 8.052.01

sudo dkms build -m r8168 -v 8.052.01

sudo dkms install -m r8168 -v 8.052.01

sudo depmod -a

sudo modprobe r8168

如果dkms.conf的字符格式有问题,在执行add时就会编译错误,之后即使改正了dkms.conf,在执行add时仍会报Error! DKMS tree already contains,此时请执行下列语句,之后再重新执行add:

sudo rm -r /var/lib/dkms/8812au

如果在执行build时报binary update-secureboot-policy not found,请执行下列语句,之后再重新执行build:

apt-get install shim-signed

如果在执行build时报ERROR (dkms apport),请执行下面语句代替build之后的语句:

sudo apt install r8168-dkms

sudo modprobe r8168

6.验证安装结果:

运行如下命令即可看到enxxx的有线网接口:

ifconfig -a

05.png