Modifying bitbake/yocto initscripts to start wifi during boot

We will need to change the wpa-supplicant.conf file as below, by modifying poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa_supplicant.conf-sane

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1

network={
        ssid="MYSSID"
        psk="MY-SECURE-PASSKEY"
        proto=RSN
        key_mgmt=WPA-PSK
}

Now, once we modified wpa_supplicant configuration files, we need to create an script which will start the wpa_supplicant application which uses this conf file to connect to WiFi access point.

 $ vim poky/meta/recipes-core/initscripts/initscripts-1.0/start-wifi.sh 
#!/bin/sh
ifconfig wlan0 192.168.1.150
route add default gw 192.168.1.1

wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf
: exit 0

As you can see above, if you don’t have DHCP enabled and server is unable to assign IP address to wifi device wlan0 , we have assigned free IP address manually i.e. 192.168.1.150 in your case it may be different.

Now, we need to modify initscript bitbake recipe to start the above script during the boot, modify initscripts.bb SRC_URI so bitbake build system considers this as source file from local files folder and then we modify install function “do_install” to copy this start-wifi.sh to filesystem etc initscripts directory.

 $ vim poky/meta/recipes-core/initscripts/initscripts_1.0.bb 
SRC_URI = "
file://start-wifi.sh \
"
do_install () {
install -m 0755    ${WORKDIR}/start-wifi.sh     ${D}${sysconfdir}/init.d

update-rc.d -r ${D} start-wifi.sh start 99 2 3 4 5 .
}

MASKED_SCRIPTS = " \
start-wifi \
"

Now if you compile the root file system which contains initscripts and boot the board with this new file system, you can see start-wifi.sh script is executed during initial booting which starts wpa_supplication and WiFi is already connected.

Android Android Commands Android Java Applications Application Libraries Bash / Shell Scripts Bluetooth driver Build Frameworks Commands and Packages Core Kernel C Programs Development Environment Setup Documents / Books Errors & Failures File Systems Framebuffer / Display Driver git Go Language Programs Hardware Platforms Home HTML JAVA Programs Kernel & Device Drivers Kernel Booting and Porting Linux, OS Concepts and Networking Linux Device Drivers Linux Host, Ubuntu, SysAdmin Linux Kernel Linux Networking Middleware Libraries, HAL NDK / Middleware / HAL Network Driver OS Concepts PHP Programming Languages RaspberryPi Scripting and Automation Search Engine Optimisation ( SEO ) Socurce Code Management ( SCM ) System Administration, Security Testing and Debugging Uncategorized Userspace Utilities Web design and development Wordpress Yocto / Bitbake / Openembedded

Leave a Reply