Uploaded January 2025 | Updated September 2026, 2 weeks ago
One of the most popular methods for building custom embedded Linux distributions is the Yocto Project. Yocto is a collaborative project under the Linux Foundation that uses the OpenEmbedded framework and the BitBake build engine. Poky, the reference system of the Yocto Project, follows a six-month release cycle and provides metadata organized into layers and recipes for building various packages and images. This tutorial outlines the exact steps to build an image with a very basic GNU/Linux distribution for the Raspberry Pi 5, including systemd support using Yocto LTS release Scarthgap. Follow the steps below:
* Download the source code:
git clone -b scarthgap git.yoctoproject.org/poky poky-rpi
cd poky-rpi
git clone -b scarthgap github.com/agherzan/meta-raspberrypi.git
* Initialize the build environment:
source oe-init-build-env
* Add BSP layer meta-raspberrypi to conf/bblayers.conf:
bitbake-layers add-layer ../meta-raspberrypi
* Append the following 3 lines to the end of conf/local.conf:
MACHINE = "raspberrypi5"
INIT_MANAGER = "systemd"
LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"
* Build a basic image for Raspberry Pi 5:
bitbake core-image-base
π Related Videos
===
Episode 2: SSH for Remote Network Access
youtu.be/ltckiBV9FXg?si=DJwsKLDhHkDIqCIn
Episode 3: The Yocto Project on Raspberry Pi 5 Episode 3: Running Docker Containers
youtu.be/kQnOidK_U3M?si=5KiS1FK87OwfdQ0m
Episode 4: The Yocto Project on Raspberry Pi 5 Episode 4: U-Boot Bootloader
youtu.be/9tohomiv1Ug?si=kylUv0uT_BFmXt5g
Episode 5: Modifying U-Boot Environment in Linux with fw_setenv
youtu.be/SB5NvIF1IEU?si=0So6Gfv9hQR7gQgY
Episode 6: Runtime Package Management with apt and deb Packages
youtu.be/6i5UtF7fiaA?si=8DuUHUxywVEEtdyN
Episode 7: Create a New Layer, a New Recipe (.bb) and .bbappend
youtu.be/W5J1W_Cy14Y?si=ftu5WpeGqel8BZhf
π Useful Links
===
yoctoproject.org
docs.yoctoproject.org
openembedded.org/wiki/Main_Page
anavi.org/article/298
One of the most popular methods for building custom embedded Linux distributions is the Yocto Project. Yocto is a collaborative project under the Linux Foundation that uses the OpenEmbedded framework and the BitBake build engine. Poky, the reference system of the Yocto Project, follows a six-month release cycle and provides metadata organized into layers and recipes for building various packages and images. This tutorial outlines the exact steps to build an image with a very basic GNU/Linux distribution for the Raspberry Pi 5, including systemd support using Yocto LTS release Scarthgap. Follow the steps below:
* Download the source code:
git clone -b scarthgap git.yoctoproject.org/poky poky-rpi
cd poky-rpi
git clone -b scarthgap github.com/agherzan/meta-raspberrypi.git
* Initialize the build environment:
source oe-init-build-env
* Add BSP layer meta-raspberrypi to conf/bblayers.conf:
bitbake-layers add-layer ../meta-raspberrypi
* Append the following 3 lines to the end of conf/local.conf:
MACHINE = "raspberrypi5"
INIT_MANAGER = "systemd"
LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"
* Build a basic image for Raspberry Pi 5:
bitbake core-image-base
π Related Videos
===
Episode 2: SSH for Remote Network Access
youtu.be/ltckiBV9FXg?si=DJwsKLDhHkDIqCIn
Episode 3: The Yocto Project on Raspberry Pi 5 Episode 3: Running Docker Containers
youtu.be/kQnOidK_U3M?si=5KiS1FK87OwfdQ0m
Episode 4: The Yocto Project on Raspberry Pi 5 Episode 4: U-Boot Bootloader
youtu.be/9tohomiv1Ug?si=kylUv0uT_BFmXt5g
Episode 5: Modifying U-Boot Environment in Linux with fw_setenv
youtu.be/SB5NvIF1IEU?si=0So6Gfv9hQR7gQgY
Episode 6: Runtime Package Management with apt and deb Packages
youtu.be/6i5UtF7fiaA?si=8DuUHUxywVEEtdyN
Episode 7: Create a New Layer, a New Recipe (.bb) and .bbappend
youtu.be/W5J1W_Cy14Y?si=ftu5WpeGqel8BZhf
π Useful Links
===
yoctoproject.org
docs.yoctoproject.org
openembedded.org/wiki/Main_Page
anavi.org/article/298
![Remote Power Control on Linux: Using Wake-on-LAN with Ubuntu
Wake-on-LAN is often a convenient way to keep a computer powered off most of the time and still bring it up when needed, like waking a home server to SSH into it, start a few containers, run backups, grab files from a NAS, or fire up a dev machine without having it fully running 24/7. This video demonstrates how to setup Wake-on-LAN on Fujitsu Futro s920 with Ubuntu 24.04 LTS server. Wake-on-LAN on Linux depends on driver and hardware support and interface names or paths can differ between systems, but the following steps describe a common and working approach on Ubuntu 24.04 LTS. First, running sudo ethtool network-interface is simply a diagnostic step that shows the current settings of the network interface, including whether Wake-on-LAN is supported and which mode (if any) is currently active, so you can confirm the hardware and driver are capable of WoL. Next, sudo ethtool -s network-interface wol g explicitly enables Wake-on-LAN in g mode, meaning the interface will wake the machine when it receives a magic packet, but this setting is temporary and will be lost after a reboot, which is why the next steps exist. By running sudo vim /etc/systemd/system/wol.service, you create a custom systemd service file that re-applies the WoL setting automatically at boot; the [Unit] section describes the service and ensures it runs after the network stack is initialized, the [Service] section defines it as a one-shot action that executes /sbin/ethtool -s network-interface wol g exactly once to enable WoL, and the [Install] section tells systemd that this service should be part of the normal multi-user startup. After saving the file, sudo systemctl daemon-reload forces systemd to re-read its configuration so it becomes aware of the new service, sudo systemctl enable wol.service registers the service to run automatically on every boot, and sudo systemctl start wol.service runs it immediately so you donβt need to reboot to activate the setting. Finally, the wakeonlan 90:1b:0e:fa:3d:05 command (run from another machine on the same network or a properly routed network) sends a magic packet to the specified MAC address, which is the actual test that confirms everything is working and that the Ubuntu system can now be woken remotely over the network.
sudo ethtool enp1s0
sudo ethtool -s enp1s0 wol g
sudo vim /etc/systemd/system/wol.service
[Unit]
Description=Enable Wake-on-LAN
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s enp1s0 wol g
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable wol.service
sudo systemctl start wol.service
wakeonlan MAC
π Useful Links
Setting Up Wake-on-LAN on Ubuntu 24.04 LTS
https://anavi.org/article/340/
π Chapters
0:00 Intro
0:27 BIOS
2:29 Ubuntu
7:29 Demo
9:42 Advantages
10:01 Disadvantages
10:31 Conclusions Remote Power Control on Linux: Using Wake-on-LAN with Ubuntu](https://i.ytimg.com/vi/fmvhlXrH_p4/mqdefault.jpg)









![The Yocto Project on Raspberry Pi 5 Episode 8: Using ConnMan Network Manager for Wi-Fi Connectivity
ConnMan is an open-source, command-line network manager designed for embedded Linux devices with a focus on fast connection handling and resolution times. First released in 2008, it is written in C, licensed under the GNU GPL, and its source code is hosted in a Git repository on kernel.org.
π‘ Using ConnMan
- Bring up the Wi-Fi interface wlan0
rfkill unblock wifi
ip link set wlan0 up
- Enter connman CLI
connmanctl
- Enable Wi-Fi (only if it is not enabled)
technologies
enable wifi
- Scan for W-Fi networks:
scan wifi
- List the found and available Wi-Fi networks (write down the wireless network service with format like wifi_[MAC_ADDR]_[SSID_HEX]_managed_psk:
services
- Turn on agent:
agent on
- Connect to a Wi-Fi network:
connect wifi_[MAC_ADDR]_[SSID_HEX]_managed_psk
- If the network is secured the agent will prompt you to enter a password:
Agent RequestInput wifi_[MAC_ADDR]_[SSID_HEX]_managed_psk
Passphrase = [ Type=psk, Requirement=mandatory ]
Passphrase?
π€ Troubleshooting
To bring up the WiFi interface automatically at boot on embedded Linux distributions with systemd create file /etc/systemd/network/10-wlan0.network with the following content:
[Match]
Name=wlan0
[Network]
DHCP=yes
π Related Videos
Episode 1: Building an Embedded GNU Linux Distribution
https://youtu.be/fY7u6PiV8qA?si=goTZ5V7I2dwa33a-
Episode 2: SSH for Remote Network Access
https://youtu.be/ltckiBV9FXg?si=DJwsKLDhHkDIqCIn
Episode 3: The Yocto Project on Raspberry Pi 5 Episode 3: Running Docker Containers
https://youtu.be/kQnOidK_U3M?si=5KiS1FK87OwfdQ0m
Episode 4: The Yocto Project on Raspberry Pi 5 Episode 4: U-Boot Bootloader
https://youtu.be/9tohomiv1Ug?si=kylUv0uT_BFmXt5g
Episode 5: Modifying U-Boot Environment in Linux with fw_setenv
https://youtu.be/SB5NvIF1IEU?si=0So6Gfv9hQR7gQgY
Episode 6: Runtime Package Management with apt and deb Packages
https://youtu.be/6i5UtF7fiaA?si=8DuUHUxywVEEtdyN
Episode 7: Create a New Layer, a New Recipe (.bb) and .bbappend
https://youtu.be/W5J1W_Cy14Y?si=ftu5WpeGqel8BZhf
π Useful Links
https://www.yoctoproject.org/
https://docs.yoctoproject.org/
https://www.openembedded.org/wiki/Main_Page
https://anavi.org/article/325/
π Chapters
0:00 Intro
0:25 ConnMan
3:45 connmanctl
8:00 Troubleshooting
11:10 Summary
11:40 Conclusions The Yocto Project on Raspberry Pi 5 Episode 8: Using ConnMan Network Manager for Wi-Fi Connectivity](https://i.ytimg.com/vi/ib8a0PeOGAU/mqdefault.jpg)