WHC Wi-Fi Fat Host 驱动移植

驱动移植

FullMAC 当前基于 Linux 内核 5.4 ,5.10 以及 5.15 进行测试和验证,若在其他内核版本遇到编译问题,请`联系我们 <https://aiot.realmcu.com/contact-us/technical-consult>`__。

备注

SPI 会在 CS 引脚置低并检测到 CLK 后立即进行数据传输。总线繁忙时可能存在边界条件:

  • 测试表明,在 CS 置低与主机推送 CLK 之间增加 7μs 延迟可确保总线繁忙时的数据传输安全。

  • 但部分旧版本系统的 SPI 驱动可能不支持 spi_delay,此时需直接修改驱动代码以添加延迟。

环境准备

在 Linux 系统安装以下依赖包:

sudo apt-get install build-essential
sudo apt install dhcpcd hostapd dhcpd
  1. 使能接口

    • Linux PC:跳过此步骤

    • 树莓派

    通过 dtoverlay 配置 SDIO。

    树莓派 4 专用指令为:

    sudo dtoverlay sdio poll_once=off
    

    树莓派 5 指令为:

    sudo dtoverlay sdio
    
  2. 在目录 /component/wifi/whc/whc_host_linux 执行以下操作, nanp2p 为可选参数,在需要使能 Wi-Fi NAN 和 Wi-Fi P2P 功能时添加:

    ./fullmac_setup.sh sdio [nan] [p2p]
    
  3. 根据主机运行模式选择输入 1 或 2

    choose target host mode:
    1) Fat host with cfg80211
    2) Slim host without cfg80211
    choose target host mode:
    
  4. whc_host_linux 目录复制到 Linux 内核源码树

  5. 新终端执行编译

    cd {driver_path}/whc_host_linux
    make
    
  1. 加载驱动

    模块路径/whc_host_linux/fullmac/sdio/fullmac_sdio.ko

    sudo su
    cp sdio/fullmac_sdio.ko /lib/modules/$(uname -r)/
    depmod
    modprobe fullmac_sdio
    

功能验证与 Demo 演示

  • 驱动加载确认

    在 modprobe 加载成功后,执行 ifconfig 可查看 Wi-Fi 设备信息。

    输出示例:

    • Station 模式:设备 MAC 地址前缀为 00:e0:4c

    • SoftAP 模式:设备 MAC 地址前缀为 00:e1:4c

    ../../../_images/ifconfig_sta_softap.png
  • 关闭 NetworkManager 和 DHCP 服务以避免冲突

    Ubuntu 系统注意:若需通过命令行连接 AP,需关闭 NetworkManager 和 DHCP 服务以避免冲突

    sudo systemctl stop NetworkManager dhcpcd.service
    sudo systemctl disable NetworkManager
    
  • 创建配置文件 ``/etc/wpa_supplicant/wpa_supplicant.conf``

    ctrl_interface=/var/run/wpa_supplicant
    network={
       ssid="HUAWEI-JX2UX5_HiLink_5G"
       psk="12345678"
    }
    
  • 启动 WPA 连接

    wpa_supplicant -D nl80211 -i wlanX -c /etc/wpa_supplicant/wpa_supplicant.conf -dd > /var/wifi_log
    
  • 获取 IP 地址

    dhcpcd wlanX
    
  • 配置 SoftAP

    1. 创建配置文件 /etc/hostapd/hostapd.conf

    driver=nl80211
    logger_syslog=-1
    logger_syslog_level=2
    hw_mode=g
    channel=6
    ssid=aaa_test
    wpa=2
    wpa_passphrase=12345678
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=CCMP
    
    1. 创建 DHCP 配置文件 /etc/udhcpd_wlanX.conf

    start 192.168.43.20
    end 192.168.43.254
    interface wlanX
    opt dns 192.168.43.1
    option subnet 255.255.255.0
    opt router 192.168.43.1
    
    1. 启动 SoftAP

    hostapd /etc/hostapd/hostapd.conf -i wlanX
    
    1. 设置 AP IP 地址

    ifconfig wlanX 192.168.43.1 netmask 255.255.255.0
    
    1. 启动 DHCP 服务

    udhcpd -f /etc/udhcpd_wlanX.conf
    

备注

wlanX 为模式设备名,可在终端执行 ifconfig -a 来获取信息

客制化通路指南

Fat Host 模式下,如果除了标准的 Wi-Fi/BT/Socket 编程之外,客户还有 Host 与 Device 之间客制化的通信需求,则可以使用 CUST_PATH