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

Yocto WiFi configuration for automatic connection at boot time

我正在尝试在我的 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 处编辑了“initscript bitbake 配方”,其中包含“setup-wifi.sh”,并在构建后将其安装在 /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 检查连接时,它显示“未连接”。

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

提前致谢!

P.S:我正在使用 Ubuntu 20.04 和 Yocto Dunfell b运行ch 作为构建系统。

错误 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.

的配置文件中删除字符串