移植USB RTL8723DU WIFI无线驱动给LINUX【转】
为了给手上的duo支持wifi无线,买了一个采用usb接口的RTL8723DU,在内核编译时把所有与RTL无线和RTL蓝牙相关的驱动都选择后,并且在内核配置中将usb设置成host模式。
注意!!如果设置成了host模式,将不能通过rndis连接duo
把网卡接到自己画的扩展版,通过dmesg发现可以识别到设备为无线网卡,并驱动蓝牙,但是在ifconfig中没有找到对应的wlan0。
推断有可能是内核里面没有针对8723du wifi的驱动。所以需要查询当前的5.10内核是否包含8723du的驱动。
通过以下网址 https://linux-hardware.org/
并结合dmesg的usb信息
可以得到信息6.3之前的内核是只包含了蓝牙驱动,6.3之后的内核才包含了内核驱动
而当前duo的内核是5.10,不支持,需要移植驱动。
驱动我选择了lwfinger提供的驱动 https://github.com/lwfinger/rtl8723du
以下是具体移植操作步骤:
1、先下载duo-app-sdk https://github.com/milkv-duo/duo-app-sdk
2、解压duo-sdk.tar.gz
tar zvxf duo-sdk.tar.gz
3、获取rtl8723du的驱动
git clone https://github.com/lwfinger/rtl8723du
4、进入到下载下来的驱动目录
5、执行编译命令
make ARCH=riscv CROSS_COMPILE=交叉编译工具链 KSRC=内核目录绝对路径
交叉编译工具链是sdk目录下的
riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl- 内核绝对路径是buildroot-sdk目录下的 linux_5.10/build/cv1800b_milkv_duo_sd
我自己的编译语句,因为有部分路径是不一样的,不要直接复制使用,供大家参考和修改
make arch=RISCV CROSS_COMPILE=/home/kamin/code/duo-examples/duo-sdk/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl- KSRC=/home/kamin/code/duo-buildroot-sdk/linux_5.10/build/cv1800b_milkv_duo_sd
执行完成后,可以看到已经编译好8723du.ko,我们把它上传到duo中
6、在duo中加载驱动
insmod 8723du.ko
再通过dmesg输出信息,我们可以看到成功加载了8723du的驱动
7、启用WiFi网卡
ifconfig wlan0
8、设置连接信息,编辑duo系统中的 /etc/wpa_supplicant.conf,在network中加入以下两行,加入后保存
ssid="你的WiFi名称" psk="你的WiFi密码"
9、连接wifi
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf &
10、手动设置IP或自动设置IP
通过DHCP获取IP
udhcpc -R -n -O search -p /var/run/udhcpc.wlan0.pid -i wlan0 -x hostname:milkv
手动设置静态IP
ifconfig wlan0 192.168.1.119 netmask 255.255.255.0 route add default gw 192.168.1.1
192.168.1.119 为要设置的静态ip
255.255.255.0 为要设置的子网掩码
192.168.1.1 为要设置的网关
PING测试