一、X3pi刷机与初始化配置

1.1 刷机

系统烧录见官网文档详细说明,本章节所使用镜像为2.1.0

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
最后修改:2024 年 02 月 06 日
如果觉得我的文章对你有用,请随意赞赏