Yocto WiFi 配置,用于在启动时自动连接



我正在尝试在我的Avenger96(基于96Boards STM32MP157)板上建立WiFi连接。目标是在启动期间自动设置 WiFi 连接,这样就无需在每次启动后手动配置 WiFi。

我完成的步骤:

  1. 在 wpa_supplicant.conf-sane 中添加network部分,如下所示:poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant

    ctrl_interface_group=0
    update_config=1
    network={
    ssid="WiFi"
    #psk="xxxx"
    psk=bcc0f1e055c895febe6f4766e90a7972334b2dac4dda015876a185a8bd577a04
    }
    

我使用wpa_passphrase生成 psk,这是一个命令行工具,它生成wpa_supplicant所需的最小配置,如下所示:

$ wpa_passphrase WiFi xxxx
  1. 用于初始化wpa_supplicant并在启动时配置 WiFi 的脚本。我在以下路径/meta/recipes-core/initscripts/initscripts-1.0/setup-wifi.sh创建了一个自定义脚本"setup-wifi.sh":

    ifconfig wlan0 10.233.174.16   #Set the static IP address, should be unique
    wpa_passphrase WiFi  xxxx> /etc/wpa_supplicant.conf
    route add default gw 10.233.174.254  #Router IP address
    wpa_supplicant -B -i   wlan0    -c    /etc/wpa_supplicant.conf
    echo “nameserver 8.8.8.8” >> /etc/resolv.conf
    echo “nameserver 10.233.174.254” >> /etc/resolv.conf
    : exit 0
    
  2. /meta/recipes-core/initscripts/initscripts-1.0.bb编辑了包含"setup-wifi.sh"的"initscript bitbake 配方",并在构建后将其安装在/etc/initscripts目录中。

    file://setup-wifi.sh 
    "
    do_install () {
    install -m 0755    ${WORKDIR}/setup-wifi.sh     ${D}${sysconfdir}/init.d
    update-rc.d -r ${D} setup-wifi.sh start 99 2 3 4 5 .
    }
    MASKED_SCRIPTS = " 
    setup-wifi 
    "
    
  3. 包含在build/local.conf文件中的IMAGE_INSTALL_append = " wpa-supplicant iw dhcp-client"CORE_IMAGE_EXTRA_INSTALL += " packagegroup-base-wifi kernel-modules"。另外,DISTRO_FEATURES_append = " wifi"我的自定义食谱中。接下来,运行bitbake并使用映像启动主板。

但是,在启动时未配置 WiFi,当我尝试手动连接它时,出现以下错误:

unknown global field 'passphrase must be 8..63 characters'

当我使用# iw dev wlan0 link检查连接时,它显示"未连接"。

任何人都可以让我知道我在这里缺少什么以及如何解决这个问题吗?您的帮助将不胜感激。

提前感谢!

PS:我正在使用Ubuntu 20.04和Yocto Dunfell branch作为构建系统。

错误unknown global field 'passphrase must be 8..63 characters'令人困惑。

如果密码是正确的,那么我认为某些配置文件由完全相同的字符串passphrase must be 8..63 characters而不是一些有用的值组成,因此错误unknown global field 'passphrase must be 8..63 characters

您可以使用grep -rn "characters" /etc/搜索和验证相同的字符串,并从包含passphrase must be 8..63 characters的配置文件中删除字符串。

最新更新