2022年5月6日星期五

如何将无线驱动集成到官方openwrt上

 有很多牛人,将一些openwrt不支持的路由器的闭源的驱动集成到了openwrt上。但是有时候出于各种原因,这些牛人的版本,比起openwrt官方的版本要老一些。可能这也是出于稳定的原因考虑。对于想尝鲜的小伙伴,可以考虑将这些驱动集成到官方的版本中。下面就是我居于大佬lean的版本,尝试集成到openwrt中的一个探索。

下面以ACRH17的路由器为例子,介绍如何将其驱动集成到官方openwrt中。

如何编译openwrt这里不做细讲。

一、将官方的版本下载到本地

git clone https://github.com/openwrt/openwrt.git
./scripts/feeds update -a
./scripts/feeds install -a

二、将驱动拷贝到编译目录

拷贝qcom-ipq4019-rt-acrh17.dts,和board-asus_rt-acrh17.qca4019

target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-rt-acrh17.dts

package/firmware/ipq-wifi/board-asus_rt-acrh17.qca4019

(文件可以到lean的github上找到https://github.com/coolsnowwolf/lede)

三、增加在make menuconfig中实现acrh17路由器可选择的配置

编辑target/linux/ipq40xx/image/generic.mk文件,增加下面的代码

define Device/asus_rt-acrh17
$(call Device/FitImageLzma)
DEVICE_VENDOR := ASUS
DEVICE_MODEL := RT-ACRH17
DEVICE_DTS := qcom-ipq4019-rt-acrh17
SOC := qcom-ipq4019
BLOCKSIZE := 128k
PAGESIZE := 2048
DTB_SIZE := 65536
IMAGE_SIZE := 20439364
FILESYSTEMS := squashfs
UIMAGE_NAME:=$(shell echo -e '\03\01\01\01RT-ACRH17')
DEVICE_PACKAGES := ipq-wifi-asus_rt-acrh17 ath10k-firmware-qca9984-ct kmod-usb-ledtrig-usbport
endef
TARGET_DEVICES += asus_rt-acrh17

三、增加网络,及wifi相关配置

1、编辑package/firmware/ipq-wifi/Makefile文件,在 ALLWIFIBOARDS:= \ 增加下面代码:

asus_rt-acrh17 \

在对应的位置增加:

$(eval $(call generate-ipq-wifi-package,asus_rt-acrh17,ASUS RT-ACRH17))

2、编辑target/linux/ipq40xx/base-files/etc/board.d/02_network文件,在下面的位置中,增加asus,rt-acrh17|\ 设置交换机:


asus,rt-acrh17|\
asus,rt-ac42u|\
asus,rt-ac58u|\
mikrotik,hap-ac2|\
mikrotik,hap-ac3|\
p2w,r619ac-64m|\
p2w,r619ac-128m|\
zyxel,nbg6617)
ucidef_set_interfaces_lan_wan "eth0" "eth1"
ucidef_add_switch "switch0" \
"0u@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
;;

第二位置,增加MAC地址:
asus,rt-acrh17|\
asus,rt-ac58u)
wan_mac=$(mtd_get_mac_binary_ubi Factory 0x1006)
lan_mac=$(mtd_get_mac_binary_ubi Factory 0x5006)
label_mac=$wan_mac
;;

3、编辑文件target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh,增加代码:

asus,rt-acrh17)
CI_UBIPART=UBI_DEV
base_mac=$(mtd_get_mac_binary_ubi Factory 0x1006)
ip link set dev eth0 address $(macaddr_add "$base_mac" 1)
;;

4、编辑文件target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata,在

"ath10k/pre-cal-pci-0000:01:00.0.bin")
case "$board" in 

下增加代码

asus,rt-acrh17)
CI_UBIPART=UBI_DEV
caldata_extract_ubi "Factory" 0x9000 0x2f20
;;
"ath10k/pre-cal-ahb-a000000.wifi.bin")
case "$board" in
下,增加代码:
asus,rt-acrh17)
caldata_extract_ubi "Factory" 0x1000 0x2f20
;;

5、编辑target/linux/ipq40xx/base-files/etc/board.d/01_leds文件,设置LED灯的显示,


asus,rt-acrh17)
ucidef_set_led_default "status" "STATUS" "blue:status" "1"
ucidef_set_led_wlan "wlan2g" "WLAN2G" "blue:wlan2g" "phy1tpt"
ucidef_set_led_wlan "wlan5g" "WLAN5G" "blue:wlan5g" "phy0tpt"
ucidef_set_led_switch "wan" "WAN(blue)" "blue:wan" "switch0" "0x20"
ucidef_set_led_switch "lan1" "LAN1" "blue:lan1" "switch0" "0x02"
ucidef_set_led_switch "lan2" "LAN2" "blue:lan2" "switch0" "0x04"
ucidef_set_led_switch "lan3" "LAN3" "blue:lan3" "switch0" "0x08"
ucidef_set_led_switch "lan4" "LAN4" "blue:lan4" "switch0" "0x10"
;;

6、编辑target/linux/ipq40xx/base-files/lib/upgrade/platform.sh,设置升级的时候平台的检测。下面位置增加asus,rt-acrh17 |\

asus,rt-ac42u |\
asus,rt-acrh17 |\
asus,rt-ac58u)
CI_KERNPART="linux"
nand_do_upgrade "$1"
;;

四、将驱动集成到编译文件中,编辑target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch

增加代码:

+ qcom-ipq4019-rt-acrh17.dtb \

最重要一半,不要忘记修改这个文件中,下面代码。76表示补丁的行数,如你增加了上面一行代码,那么下面76的位置需要改成77.

@@ -903,11 +903,76 @@ dtb-$(CONFIG_ARCH_QCOM) += \


五、最后是选择acrh17开始编译(不细讲)

make menuconfig
make



安装 PaddleOCR的方法

  安装飞桨版本:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/windows-pip.html 命令:  python -m pip...