在BananaPiBPI-R4上使用FibocomFM35...

开源不如不打烊 2024-10-31 05:18:53

BPI-R4 是 Banana Pi 基于联发科 MT7988(Filogic 880)的高性能路由器开发套件。它具有无与伦比的高性能 IO 可扩展性。它提供从 SFP+ 到 PCI-E(m.2)的各种高速接口。

Fibocom FM350-GL 是一款 5G NR (SA/NSA) 高速 (4670 Mbps DL / 1250 Mbps UL) 5G 模块,目前 (2024) 可在市场上以相对较低的价格购买。它基于联发科 T700 芯片组。完整的参考手册以及 AT 命令手册可在网上​找到。

2024年上半年,FM350-GL的Linux驱动程序被合并到主线中。就在上周,BPI-R4专用的BPI-R4-NIC-BE14 Wi-Fi 7模块的驱动程序也被合并到了OpenWrt的最新Snapshot中,这构成了我们实施这个项目的必要前提。

模块的安装非常简单直接,只需将其插入标有 SIM1 的 PCI-E2 插槽并拧紧螺丝,记得安装合适的天线。提示:由于 FM350 在运行过程中会产生大量热量,因此建议安装更大的散热器,以确保运行过程中不会因模块过热而导致速度下降。

硬件准备就绪。由于基于 BSP 的固件和 OpenWrt Snapshot 预编译固件都无法与我们当前的配置正常工作,因此下一步是编译固件。

首先我们按照OpenWrt官方文档(https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem)安装编译环境,我选择的是Ubuntu 24.04.3 Server。

然后根据这个文档(https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem)拉取需要的源码。并选择我们需要的内核和luci模块make menuconfig。

我检查了以下内容:

mt7986-wo-firmwaremt7988-2p5g-phy-firmwarekmod-mtk-t7xxkmod-phy-aquantiakmod-sfpkmod-wwankmod-usb-net-rndiskmod-usb-serialkmod-usb-serial-optionkmod-usb3kmod-mt7915ekmod-mt7986-firmwarekmod-mt7996-233-firmwarekmod-mt7996eluci-proto-mbimluci-proto-modemmanagerluci-proto-ncmcomgtpciutilsusbutils

然后开始编译。然后您就可以开始编译. /openwrt/bin/targets/mediatek/filogic/openwrt-mediatek-filogic-bananapi_bpi-r4-squashfs-sysupgrade.itb来找到编译好的镜像。

闪现出来。

首先你可以看到3个Wi-Fi都运行正常。

由于FM350现在工作在PCI-E模式,因此在Interface选项卡中新建一个ModemManager接口,然后就可以直接上网了。

但它不会持续太久,您很快就会遇到图中所示的问题,它很快就会导致内核恐慌,然后自动重启。

针对这个问题,我尝试将针对最新6.11内核的修复补丁反向移植到Openwrt目前的6.6内核,但收效甚微,只能缓解,却不能完全解决Tx Queue full的问题。

https://github.com/torvalds/linux/commit/d785ed945de6955361aafc2d540d9bb7c6a69a65.patchhttps://github.com/torvalds/linux/commit/7d5a7dd5a35876f0ecc286f3602a88887a788217.patch

为此,我首先选择了一种解决方法(目前),通过修改 dtsi 来解决 PCI-E 驱动程序错误,从而使 FM350 在 USB3 模式下工作,这就是为什么我之前必须付出额外的努力来选择各种 USB 以及 NCM kmods。

现在让我们回到我们的编译系统。执行以下命令。

make -j$(nproc) defconfig download

然后修改dtsi,路径如下

./build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.52/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts

/* M.2 key-B SIM1 */

&pcie2 {

pinctrl-names = "default";

pinctrl-0 = <&pcie2_pins>;

status = "okay";

};

将第290行修改为“disabled”。

/* M.2 key-B SIM1 */

&pcie2 {

pinctrl-names = "default";

pinctrl-0 = <&pcie2_pins>;

status = "disabled";

};

注意,此时编译时不要执行make clean或download,否则会导致我们的更改被覆盖。

make -j$(nproc) world

然后将刚刚编译好的固件刷入BPI-R4,然后关机重启。这是彻底重启FM350里面的芯片组。不要问我为什么,照做就好,这很重要!

经过一段时间的摸索,我发现在 USB3 模式下使用 FM350 的最佳做法(目前)是使用名为 atc 的软件包。使用以下命令安装非常简单

wget https://github.com/mrhaav/openwrt/raw/master/atc/fib-fm350_gl/atc-fib-fm350_gl_2024-08-04-0.2_all.ipk

opkg install atc-fib-fm350_gl_2024-08-04-0.2_all.ipk

wget https://github.com/mrhaav/openwrt/raw/master/atc/luci-proto-atc_20230813-0.2_all.ipk

opkg install luci-proto-atc_20230813-0.2_all.ipk

同样,在接口选项卡中创建一个新的ATC proto端口。不要忘记填写APN。

在我的情况下,调制解调器设备是 /dev/ttyUSB4,如果它不起作用,您可以使用 minicom 发送 AT 命令来确认哪个 ttyUSB 是真正的 AT 接口,它可以是 0-7 中的任何一个。

到目前为止,您将获得一台带有 5G 高速 WWAN 的 Wi-Fi7 路由器。

感谢我的朋友 Ananas,

他为我提供了各种想法。

参考:

https://docs.banana-pi.org/en/BPI-R4/BananaPi_BPI-R4-NIC-BE14https://github.com/torvalds/linux/tree/master/drivers/net/wwanhttps://github.com/frank-w/BPI-Router-Linux/commit/eed623a44fc9bb4f9f960df562f45d6b946b57a3https://cateee.net/lkddb/web-lkddb/MTK_T7XX.htmlhttps://patchwork.kernel.org/project/linux-mediatek/patch/20240108085228.4727-3-zajec5@gmail.com/​​https://openwrt.org/docs/guide-developer/toolchain/use-buildsystemhttps://openwrt.org/docs/guide-developer/toolchain/install-buildsystem#debianubuntuminthttps://github.com/torvalds/linux/commit/d785ed945de6955361aafc2d540d9bb7c6a69a65https://github.com/torvalds/linux/commits/master/drivers/net/wwan/t7xxhttps://firmware-selector.openwrt.org/?version=SNAPSHOT&target=mediatek%2Ffilogic&id=bananapi_bpi-r4https://github.com/torvalds/linux/commit/7d5a7dd5a35876f0ecc286f3602a88887a788217https://forum.openwrt.org/t/fibocom-fm350-gl-support/142682/71https://openwrt.org/docs/guide-user/network/wan/wwan/modemmanagerhttps://openwrt.org/docs/guide-user/network/wan/wwan/ltedonglehttps://github.com/mrhaav/openwrt/tree/master/atc/fib-fm350_glhttps://bugs.launchpad.net/ubuntu/+source/modemmanager/+bug/1981190https://forum.banana-pi.org/t/bpi-r4-requesting-help-using-fm350-gl/16989/8https://forum.banana-pi.org/t/openwrt-trunk-now-officially-supports-the-required-233-for-banana-pi-bpi-r4-be14-wifi-module/19134/1
0 阅读:0

开源不如不打烊

简介:感谢大家的关注