visionfive2 开发板性能还是不错的,有些人买的时候会带一个无线wifi网卡,但是官方提供的操作系统没有驱动。 所以需要自己编驱动(他大爷的)。
还好有人已经踩过坑了。
星光2之USB无线网卡使用教程【新增RTL8832AU WiFi6双频无线网卡】 - 昉·星光 2(中文论坛) - RVspace Forum
第一步装环境
# 安装基本工具和编译工具
sudo apt install -y build-essential gcc-riscv64-linux-gnu libncurses-dev
sudo apt install -y git flex bison bc vim-tiny wget
sudo apt install iw im-config usbutils pciutils iputils-ping
安装完成以后,检查一下riscv64-linux-gnu-gcc安装是否正确:
riscv64-linux-gnu-gcc -v
第二步编linux内核
mkdir ~/repos
git clone https://github.com/starfive-tech/linux.git
cd linux
git checkout -b JH7110_VisionFive2_devel origin/JH7110_VisionFive2_devel
git pull
然后,进行内核配置和编译:
# 生成默认内核配置
make starfive_visionfive2_defconfig CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv
# 打开内核配置, 开启ECR6600U的支持,见后面的图片
make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv menuconfig
用官方的WiFi dongle
星光板2官配的USB无线网卡是ESWIN的ECR6600U,在内核配置中,有对应的选项,但是开启后,不能直接使用,需要安装驱动才能用。
从以下路径,打开ECR6600U的支持:
首屏 – Device Drivers – Network device support – Wireless LAN:
编译内核并安装到build目录下:
# 编译内核
make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv vmlinux all modules -j4
# install
mkdir build
make INSTALL_PATH=./build install
make INSTALL_MOD_PATH=./build modules_install
make INSTALL_DTBS_PATH=./build dtbs_install
在build目录下生成的内核可以复制到visionfive2开发板上进行使用。
内核模块复制到/lib/modules/相应的目录下。
生成initrd.img, 5.15.0-goodboy是内核的版本号。
mkinitramfs 5.15.0-goodboy -o /boot/boot/initrd.img-5.15.0-goodboy
uboot启动就是修改
/boot/boot/extlinux/extlinux.conf
## /boot/extlinux/extlinux.conf
##
## IMPORTANT WARNING
##
## The configuration of this file is generated automatically.
## Do not edit this file manually, use: u-boot-update
default l0
menu title U-Boot menu
prompt 0
timeout 10
label l0
menu label Debian GNU/Linux bookworm/sid 5.15.0-goodboy
linux /boot/vmlinuz-5.15.0-goodboy
initrd /boot/initrd.img-5.15.0-goodboy
fdtdir /boot/dtbs
append root=/dev/mmcblk1p3 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0
第三步编译并安装网卡的驱动
编译并安装ECR6600U的开源驱动
cd ~/repos
# git下载驱动源码
git clone https://github.com/eswincomputing/eswin_6600u.git
cd eswin_6600u
# 编译驱动:路径需要指定正确
time make KERNELDIR=~/repos/linux/ KBUILDDIR=~/repos/linux/ product=6600u
# 安装对应firmware的bin文件
sudo cp firmware/ECR6600U_transport.bin /lib/firmware/
# 加载驱动:
sudo insmod ~/repos/eswin_6600u/wlan_ecr6600u_usb.ko
# 查看加载的驱动:
sudo lsmod
# 查看dmesg输出
dmesg | tail -n 5
第四步 配置网卡
使用/sbin/ifconfig -a查看网卡,此时又会多出两个wl开头,名称超长的网卡设备。
其中,第一个设备是普通无线网卡设备,第二个设备是WIFI-DIRECT。
如果不想修改名字,直接进行连接测试:
# TPLink是wifi的SSID , 密码:11111111
wpa_passphrase TPLink 11111111 > wifi.conf
# -B 在后台运行
wpa_supplicant -i wlx2c0547b1166b -c wifi.conf -B
#分配ip
dhclient wlx2c0547b1166b
网卡改名:
对新的两个网卡设备进行设置:
sudo vim /etc/udev/rules.d/70-persistent-net.rules
### 添加下面的行 ###
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="2c:05:47:a1:1c:31", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="wlan1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="2e:05:47:a1:1c:31", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="p2p1"
# 使新的udev规则生效
sudo udevadm control --reload-rules
上述配置中的 ATTR{address}==后面的值是无线网卡的mac地址,从ifconfig的输出搞过来。
设置完成后,重新插拔ECR6600U,再次使用/sbin/ifconfig查看,网卡名称就正常命名了。
然后,参考使用nmcli为RTL8192CU设置wifi连接的方式,为ECR6600U设置即可。
注意:今天使用使用最新的官方linux代码编译安装内核,再更新ECR660U驱动,发现使用会存在问题,重新插拔可能导致死机,需要重启后,才能使用insmod加载驱动并使用该无线网卡
重新insmod 网卡驱动,可能导致网卡的MAC地址产生变化。