一、X3pi刷机与初始化配置
1.1 刷机
1.2 串口连接,网络初始化配置
我选择的是server版系统,没有图形桌面,并且不便连接有线网络,所以选择配置wifi,先要使用串口登录进行网络配置。串口连接和wifi配置详见文档network
二、 USB无线网卡配置
2.1 驱动编译和安装
经过使用体验,在使用板载的网卡做无线图像传输的时候很卡顿,参考《在旭日X3派上使用双频1300M USB无线网卡》,配置USB网卡,所使用型号为Comfast CF-924AC V3,此版本为免驱版,后续会提到其中的小坑。
2.1.1 驱动源码下载与编译
此款网卡所对应驱动型号和源码下载链接:rtl8812cu,可以将网卡先安装到windows上,看其驱动型号。已编译并测试能用的驱动已上传云盘88x2cu.ko,提取码:q8ek
。
- 可直接安装我编译好的驱动文件或下载源码,从源码编译。
驱动编译和安装参考了《在旭日X3派上使用双频1300M USB无线网卡》,将编译好的驱动放到x3pi的
/lib/modules/4.14.87
目录后:cd /lib/modules/4.14.87 sudo hobot-sign-file 88x2cu.ko sudo /sbin/depmod -a 4.14.87 sudo insmod 88x2cu.ko
驱动若加载成功,则能够看到网卡的指示灯亮起,并且使用
ifconfig
也能看到USB网卡信息。但是经过测试,此版网卡是免驱版,因此x3pi将其识别为了存储设备,因此即使驱动加载正确,仍不能启动网卡,为了验证是这个原因引起的,可以将网卡插在windows电脑上,正确安装后查看其VID和PID,然后将网卡插到x3pi上,在x3pi上使用
lsusb
查看识别到的网卡的PID,对比二者PID和VID是否一致,经过对比发现二者识别到的PID不一致,且x3pi上显示网卡的driver是storage,可以确认为被识别为存储设备。解决办法是使用usb-modeswitch
工具切换识别模式:sudo apt-get update sudo apt-get install usb-modeswitch sudo usb_modeswitch -v <VendorID> -p <ProductID> -K # 执行完后再使用`lsusb`就可以看到网卡设备的VID和PID就已经变成和windows识别到的一致,并且网卡灯亮起,`ifconfig`可以看到新出现的usb网卡
为了使系统开机时自动切换网卡识别模式,可以做如下配置:
sudo vim /etc/udev/rules.d/70-usb-modeswitch.rules # 然后在其中添加如下内容: ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="<VendorID>", ATTRS{idProduct}=="<ProductID>", RUN+="/usr/sbin/usb_modeswitch -v <VendorID> -p <ProductID> -K" # 然后重新加载`udev`规则` sudo udevadm control --reload-rules sudo udevadm trigger
使用源码编译,下载驱动源码后,上传至x3pi,然后可以尝试直接执行
install.sh
脚本自动编译安装驱动,或手动编译安装。编译驱动前,按照《在旭日X3派上使用双频1300M USB无线网卡》修改Makefile,增加以下内容:###################### Platform Related ####################### CONFIG_PLATFORM_I386_PC = n CONFIG_PLATFORM_ARM_SUNRISEX3 = y ##### 151行处添加以下内容 CONFIG_PLATFORM_ANDROID_X86 = n CONFIG_PLATFORM_ANDROID_INTEL_X86 = n CONFIG_PLATFORM_JB_X86 = n ###################################### 1383 行处添加以下内容 ifeq ($(CONFIG_PLATFORM_ARM_SUNRISEX3), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT ARCH := arm64 # 主要修改地方 KVER := $(shell uname -r) KSRC := /usr/src/linux-headers-$(KVER) # 主要修改地方 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ INSTALL_PREFIX := STAGINGMODDIR := /lib/modules/$(KVER)/kernel/drivers/staging endif
2.2 USB网卡设置为SoftAP模式
考虑到户外时无wifi,将USB网卡设置为AP热点模式,通过手机可以连接其发射的热点实现图像传输。
- 为了使系统开机默认为ap模式,可以设置一个脚本,在系统启动时自动配置网卡为AP模式。这涉及到使用hostapd(用于AP模式)和DHCP服务等。
首先安装服务
sudo apt update sudo apt install hostapd sudo apt install isc-dhcp-server
配置hostapd.conf
sudo vim /etc/hostapd.conf # 做如下配置: interface=wlx40a5ef204f0f # lsusb查看,wlan0是板载网卡,wlx40a5ef204f0f是usb网卡 driver=nl80211 ssid=Wifi_name # 这里是热点名称 ctrl_interface=/var/run/hostapd hw_mode=g channel=6 # wmm_enabled=0 # macaddr_acl=0 # auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=YourPassword # 热点密码 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
确认路径配置正确
sudo vim /etc/default/hostapd # 配置 DAEMON_CONF="/etc/hostapd.conf"
配置dhcp
sudo vim /etc/default/isc-dhcp-server INTERFACESv4="wlx40a5ef204f0f" # sudo vim /etc/dhcp/dhcpd.conf authoritative; # 取消其注释 # 文件末尾添加: subnet 10.5.5.0 netmask 255.255.255.0 { #网段和子网掩码 range 10.5.5.100 10.5.5.254; #可获取的IP范围 option subnet-mask 255.255.255.0; #子网掩码 option routers 10.5.5.1; #默认网关 option broadcast-address 10.5.5.31; #广播地址 default-lease-time 600; #默认租约期限,单位秒 max-lease-time 7200; #最长租约期限,单位秒 }
设置开机自动进入ap模式
# # 以下命令可以手动执行,测试是否可行,若可行可设置开机自启动AP模式,编辑`/etc/rc.local`,添加以下代码 killall hostapd # 先关闭hostapd服务 sleep 2 # systemctl stop wpa_supplicant ip addr flush dev wlx40a5ef204f0f sleep 0.5 ifconfig wlx40a5ef204f0f down sleep 1 ifconfig wlx40a5ef204f0f up sleep 5 # 延时,确保网卡驱动已准备好 hostapd -B /etc/hostapd.conf ifconfig wlx40a5ef204f0f 10.5.5.1 netmask 255.255.255.0 systemctl start isc-dhcp-server systemctl enable isc-dhcp-server
5 条评论
已成功修改网卡设备的VID和PID,已经变成和windows识别到的一致,但指示灯依旧没有亮,ifconfig也识别不到网卡信息,请问大佬该怎么办
看一下驱动加载没有
请确保使用的是正版网卡,是瑞昱芯片。某些盗版网卡使用的是联发科,驱动会不匹配。
我也是这个问题,问下拟解决了吗?
您好问下如果我买的是驱动板呢,会不会造成别的影响