Commit Graph
1830 Commits
Author SHA1 Message Date
Andrei Gherzan ae6dc3faee ci: mark the layer checkout safe for git in yocto-check-layer
The checkout is owned by the runner user while the container runs as ci, so
git refuses to read /work. Mark it as a safe directory, as the DCO check
already does.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:51 +01:00
Andrei Gherzan bac21e1933 ci: silence dpkg progress output in yocto-builder
Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:50 +01:00
Andrei Gherzan 3309f6cd8d ci: add renovate configuration
Keep the pinned GitHub Actions and Dockerfile base images up to date.
Commits follow the repository conventions and are signed off for DCO.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:49 +01:00
Andrei Gherzan 5fc6bb93e0 ci: pin git-mirror-me-action to v3.0.0
Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:48 +01:00
Andrei Gherzan fc46cbc4fb ci: prune unused sstate weekly
Nothing removes artifacts from the runner's SSTATE_DIR, so it grows without
bound. Delete sstate files not touched in 30 days. bitbake touches sstate files
whenever a build checks or unpacks them, so mtime tracks last use across all
branches.

DL_DIR is not pruned. Download stamps are only touched by do_fetch, which
sstate-restored recipes skip, so their age doesn't reflect whether a rebuild
would need them.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:48 +01:00
Andrei Gherzan 67d7736ed4 ci: cancel superseded runs with native concurrency groups
cancel-redundant-workflows.yml had some overhead as it was spawning an extra
workflow_run job per workflow. With concurrency groups, a new push cancels the
PR's previous run directly.

A cancelled step can leave its docker container running against the shared
sstate.  Label containers with the runner name and remove them in the cleanup
step. Rename docker-prune-images to docker-cleanup accordingly.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:47 +01:00
Andrei Gherzan 651a6a21ed ci: persist the hash equivalence database
BB_HASHSERVE defaults to "auto", which stores hashserv.db in the build
directory. CI builds in a temporary build directory, so the database was
discarded after every job and equivalent outputs from previous builds were
never matched.

Store it in SSTATE_DIR, next to the artifacts it references. This also aligns
to bitbake-setup default behaviour.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:46 +01:00
Andrei Gherzan df3c09e34c ci: reuse docker images across jobs
We were rebuilding Docker images from scratch with --no-cache, tagged by PR
number. With this, we were building multiple images per PR for the same
context.

This change tags the images by the git tree hash of the build context and only
build if the tag is missing. This naturally covers rebuilding on build context
changes.

Finally, this change handles refreshing images every 7 days (for example to
refresh OS packages) and prune by CI label after 14 days. The gap ensures an
image a running job just picked up isn't pruned under it.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:45 +01:00
Andrei Gherzan 26ddb68f93 ci: don't persist the checkout token
Nothing after checkout should need the GITHUB_TOKEN so persisting would only be
an extra risk.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:44 +01:00
Andrei Gherzan b4dd0415ce ci: pin third-party actions to commit SHAs
Bump actions/checkout from v3 to v7.0.1, as v3 runs on the deprecated node16
runtime. Bump fsfe/reuse-action from v1 to v6.0.0.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:43 +01:00
Andrei Gherzan 3efe6589e8 ci: replace tj-actions/changed-files with a local action
Drop the dependency on tj-actions/changed-files and replace it with a local
composite action. Especially given it was compromised in the past - see
CVE-2025-30066.

The action diffs HEAD^1..HEAD of the PR merge commit that actions/checkout
checks out by default. It fails if HEAD is not a merge commit, so a change to
the checkout ref can't silently diff the wrong range.

With this in place, both of the workflows can share a consistent list of paths.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:42 +01:00
Andrei Gherzan 6c1080f564 ci: fix retry exit check in docker build
If the retry succeeds at the 3rd try, the final check would have failed.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:41 +01:00
Andrei Gherzan c29bfe6e74 ci: split machine coverage in tiers
Full builds of 16 machines run serially on one runner and take 5-17h per PR.
Most of them share tune, defconfig and DTBs with another machine.

Build rpi-test-image only for raspberrypi0-wifi, raspberrypi-armv7,
raspberrypi-armv8, raspberrypi3-64, raspberrypi4-64 and raspberrypi5, which
together cover every tune, defconfig and kernel recipe.

Run yocto-check-layer with every machine in conf/machine. Its BSP machine
tests were skipped until now as no machines were passed. The machines are
listed from the layer, so new ones are checked without workflow changes.

Also trigger yocto-layer.yml on changes to itself.

Fixes #1633

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:41 +01:00
Andrei Gherzan d61f81830d linux-firmware-rpidistro: package per machine
The cyfmac43455-sdio.bin link depends on CYFMAC43455_SDIO_FIRMWARE, which
differs for raspberrypi5 based machines. As an allarch recipe, machines sharing
a TMPDIR produced conflicting packages for the same "all" architecture
(yocto-check-layer test_machine_signatures).

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:40 +01:00
Andrei Gherzan 15baf60b84 python3-picamera, picamera-libs: remove deprecated components
picamera uses the legacy MMAL camera stack, which Raspberry Pi documents
as deprecated and unsupported since Bullseye, with Picamera2 on libcamera
as its replacement [1][2]. libcamera is available through the
multimedia-layer dynamic layer.

The recipe also fetches over SSH and RDEPENDS on python3-colorzero from
meta-python while living outside dynamic-layers, which breaks world
without meta-python (yocto-check-layer test_machine_world).

picamera-libs only provides picamera's firmware libraries.

[1] https://www.raspberrypi.com/documentation/computers/camera_software.html
[2] https://github.com/raspberrypi/picamera2

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:47:33 +01:00
Andrei Gherzan b5baddc1af omxplayer: remove deprecated component
omxplayer is deprecated upstream in favour of VLC and relies on the legacy
OMX/MMAL userland stack. It also depends on libssh and libpcre from meta-oe
while living outside dynamic-layers, which breaks world on 32-bit machines
without meta-oe (yocto-check-layer test_machine_world).

Use rpidistro-ffmpeg or GStreamer with the default vc4 stack instead.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-19 04:43:45 +01:00
devgianlu 863444d39c pi-bluetooth: bump SRCREV to let bluetoothd power the adapter on
Without systemd, bthelper runs from udev when hci0 appears, before
bluetoothd starts. It brings the interface up with hciconfig, which
powers the adapter without the kernel's power-on initialisation: that
runs only when the adapter is powered through the management interface,
and it is where the SMP channels are registered and Secure Simple
Pairing is enabled. bthelper's delayed "bluetoothctl power off; power
on" is meant to recover from this, but bluetoothd isn't running yet, so
the adapter ignores LE pairing requests after every boot, and bluetoothd
logs "Failed to set privacy: Rejected (0x0b)", until the Bluetooth stack
is restarted.

Upstream bthelper now takes the interface down again once it is done,
so bluetoothd powers the adapter on when it starts, and powers it on
through bluetoothd when that is already running:
https://github.com/RPi-Distro/pi-bluetooth/pull/39. The same symptom is
reported on Raspberry Pi OS in
https://github.com/RPi-Distro/pi-bluetooth/issues/35.

Refresh the hciconfig path patch to cover the new hciconfig call.

Signed-off-by: devgianlu <altomanigianluca@gmail.com>
2026-10-18 22:16:16 +01:00
Andrei Gherzan 9bd4f13a78 ci: switch yocto-builder Dockerfile to Ubuntu 26.04
pseudo on oe-core master now wraps open_tree_attr(), which needs
struct mount_attr from the system headers. Ubuntu 22.04 (glibc 2.35)
doesn't provide it, so pseudo-native fails to build:

  error: conflicting types for 'real_open_tree_attr'

Move the builder to Ubuntu 26.04.

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-18 16:11:03 +01:00
Andrei Gherzan 5a42258cf4 docs: document ENABLE_DWC2_OTG and DWC2 mode exclusivity
Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-17 15:37:42 -07:00
Andrei Gherzan 0e32644279 rpi-config: make DWC2 USB modes mutually exclusive
ENABLE_DWC2_HOST was not checked against the other DWC2 modes, so
enabling it with ENABLE_DWC2_PERIPHERAL or ENABLE_DWC2_OTG resulted in
conflicting dr_mode overlays in config.txt. Enabling both PERIPHERAL
and OTG resulted in no overlay at all.

Fail the build when more than one mode is enabled.

Fixes #1590

Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
2026-10-17 15:37:42 -07:00
Jon Mason 3434e412ba kas/base.yml: remove unused layers
meta-qt5 and meta-openembedded are not actively being used in the
default builds, and are displaying some warnings because they are being
included.  Specifically, LICENSE errors in meta-qt5.  Given they are
unnecessary, remove them to avoid the noise.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2026-10-14 23:12:56 +01:00
Jon Mason dbb7f7e91e kas: split into unique files and add testimage
Refactor the existing kas configuration by splitting it into a shared
base.yml and a set of per-machine include files. This allows for easier
usage and potential CI use cases.

Also, change the readme to reflect the new changes.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2026-10-13 19:30:08 -07:00
Jon Mason e8e1692de4 raspberrypi4-64.conf: add QB_ variables for runqemu
Add the relevant QB_ variables sufficient to get the QEMU raspi1ap model
running with runqemu.

Unfortunately, it doesn't fully boot to shell, and seems to hang trying
to find boot media (for both SD and USB boot devices).

Signed-off-by: Jon Mason <jon.mason@arm.com>
2026-10-13 19:30:08 -07:00
Jon Mason 1f291aedaa raspberrypi3-64.conf: add QB_ variables for runqemu
Add the relevant QB_ variables sufficient to get the QEMU raspi1ap model
running with runqemu.

Unfortunately, it doesn't fully boot to shell, and seems to hang around
bluetooth and video inits.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2026-10-13 19:30:08 -07:00
Jon Mason c3539e8040 raspberrypi0.conf: add QB_ variables for runqemu
Add the relevant QB_ variables sufficient to get the QEMU raspi0 model
running with runqemu.  The dwc_otg.fiq_fsm_enable setting is necessary
to get USB devices (both disk and net) working.  Without this, boot
hangs.  The initcall_blacklist=bcm2835_pm_driver_init is needed to
workaround other boot issues.  Seems like the PM HW emulation isn't
present in the QEMU model.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2026-10-13 19:30:08 -07:00
Jon Mason 25a847b50f raspberrypi.conf: add QB_ variables for runqemu
Add the relevant QB_ variables sufficient to get the QEMU raspi1ap model
running with runqemu.  The dwc_otg.fiq_fsm_enable setting is necessary
to get USB devices (both disk and net) working.  Without this, boot
hangs.  The initcall_blacklist=bcm2835_pm_driver_init is needed to
workaround other boot issues.  Seems like the PM HW emulation isn't
present in the QEMU model.

Adding the QB_ fields, etc to raspberrypi.conf, is adding support to
raspberrypi-cm, which doesn't have an emulated board, and adding some of
the wrong fields to raspberrypi0.  So, remove the include and put the
contents in the relevant files.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2026-10-13 19:30:08 -07:00
Jon Mason 97e3d165a6 raspberrypi2: add usb networking and change to usb storage
Add support for USB networking and change to USB storage for the boot
device.  This requires adding in a workaround of
"dwc_otg.fiq_fsm_enable=0" to prevent a hang during boot.  Booting from
a USB devices prevents and issues with "power of 2" for emulated SD
cards and seems to be more reliable.  Also, add in the early console
help with future debugging.

Also, adding in init-ifupdown file to automatically get an IP address on
the USB network interface.  This is the same file currently in OE Core,
only with the USB interface being automatically brought up and given a
dynamic address.  This will help when testimage support is added.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2026-10-13 19:30:08 -07:00
Jon Mason 5002d6410c oeqa: Remove broken parselogs config
Since OE Core commit bba243e1d18b954578afcdb3c727d8f687187ee8
(4 December 2023) changed how parselogs ignores works, this code has
been broken.  Since it wasn't actually doing any extra checking, there
is no need to add back anything to replace it.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2026-10-13 19:30:08 -07:00
Leon Anavi b2669c24bb conf/layer.conf: Support Blacksail
Set the layer compatibility to the Yocto Project release Blacksail
following the recent change in openembedded-core:
https://git.openembedded.org/openembedded-core/commit/?id=37623ffbdd34a5c6b3e12ee33195f8e82343f198

Fixes:

ERROR: Layer raspberrypi is not compatible with the core layer
which only supports these series: blacksail (layer is compatible
with wrynose)

This work was sponsored by GOVCERT.LU.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-09-24 23:30:45 -07:00
Keisuke Tsukuda a6414e743b udev-rules-rpi: create groups used by 99-com.rules
99-com.rules assigns I2C, SPI, and GPIO devices to the i2c, spi, and
gpio groups, but the recipe does not create them. This causes udev to
warn about unknown groups at boot and prevents the intended ownership.

Create the three system groups when udev-rules-rpi is installed.

Fixes: #1311
Signed-off-by: Keisuke Tsukuda <tkdkei@outlook.jp>
2026-09-12 16:32:34 -07:00
Johan Davidsson 60c7fe3849 rpi-base: Add missing HiFiBerry overlays that the kernel builds
hifiberry-adc, hifiberry-adc8x and hifiberry-dac8x cannot be selected at
all - naming one in config.txt gives a card that never appears and no error
to go with it.

hifiberry-studio-dac8x and hifiberry-studio-dac8x-pro are left out on
purpose. They were added to the kernel in
https://github.com/raspberrypi/linux/commit/ba7ae2c94ff9ace5d9df63a3b0ea4a1a99f06b29
and are absent from the kernel the 6.6 recipe pins, and this list is shared
by every kernel recipe the layer ships, so adding them would break a 6.6
build.

Verified with PREFERRED_VERSION_linux-raspberrypi = "6.6.%": the three
overlays added here compile, while adding hifiberry-studio-dac8x on top
fails do_compile with "No rule to make target
'arch/arm/boot/dts/overlays/hifiberry-studio-dac8x.dtbo'".

Signed-off-by: Johan Davidsson <johan.et.davidsson@gmail.com>
2026-09-07 08:51:21 -07:00
Johan Davidsson 699dbae2dc rpi-base: Add the HiFiBerry DAC+ split overlays
https://github.com/raspberrypi/linux/commit/9e31e8ce44ef
https://www.hifiberry.com/blog/changes-in-hifiberry-drivers/

HiFiBerry split standard and pro cards due to not being able to
dynamically change the clock configuration on Raspberry Pi 5. Update
accordingly to HiFiBerry splitting the DAC+ overlay in two.
A DAC+ Standard, Amp2 or Amp4 now wants hifiberry-dacplus-std and a DAC+
Pro or DAC2 Pro wants hifiberry-dacplus-pro.

Signed-off-by: Johan Davidsson <johan.et.davidsson@gmail.com>
2026-09-07 08:51:21 -07:00
Leon Anavi eed544f1d0 python3-adafruit-blinka: Upgrade 6.2.2 -> 9.2.0
Upgrade to release 9.2.0:

- Update lgpio chip selection to work with more than 1 digit
- Add PlatformDetect dependency update workflow
- Update Blinka to pyproject.toml
- Fix generic Linux SPI write_readinto slice
- Add BeaglePlay (AM625X) board support
- QCM6490 (Particle Tachyon): auto-detect gpiochip for
  f100000.pinctrl
- Ensure libgpiod resources are cleaned up on exit
- Add helpful message when lgpio is not installed on Raspberry Pi
- Remove Python 3.13 version cap on lgpio dependency

License-Update: File modified, no change of the license

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-20 05:38:11 -07:00
Leon Anavi 0b22c79ce8 python3-lgpio: Add recipe
Add recipe for release 0.2.2.0:

- Changes forced by the adoption of a different timestamp clock
  in gpiochip API 2.
- The gpiochip changes broke the operation of GPIO debounce and
  watchdogs.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-20 05:38:11 -07:00
Leon Anavi a152484fb2 lg: Add recipe
Add recipe for the Linux C libraries for manipulating GPIO.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-20 05:38:11 -07:00
Leon Anavi a89c5fdff9 python3-adafruit-platformdetect: 3.27.0 -> 3.89.1
Upgrade to release 3.89.1:

- Fix BeagleBone ID Lookup for BeaglePlay on newest image

From release 3.89.0:

- Move XU4 detection above hardware field check
- Fix chip detection failure on Alpine Linux and other
  non-standard distros
- Bump max-module-lines from 1000 to 2000
- Fix Orange Pi detection on non-Armbian systems (Debian)
- Fix PocketBeagle 2 support: correct DT compatible string and
  black formatting
- Update Read the Docs configuration for latest Ubuntu and Python

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-15 10:11:01 -07:00
Leon Anavi af90fcb9f4 python3-adafruit-circuitpython-register: 1.9.10 -> 1.12.1
Upgrade to release 1.12.1:

- Document alarm date placeholders

From release 1.12.0:

- Add register_struct and register_bits fix

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-15 02:05:12 -07:00
Leon Anavi ae3586c3f6 python3-adafruit-pureio: Enable tests
Inherit ptest-python-pytest. The tests require I2C and are supposed
to be run against a ADS1x15 I2C analog-to-digital converter (ADC).
Show a warning if ENABLE_I2C has not been set to "1" during the
installation of the tests.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-13 06:37:00 -07:00
Leon Anavi 03a1689671 python3-adafruit-pureio: Upgrade 1.1.9 -> 1.1.11
Upgrade to release 1.1.11:

- Switch to pyproject.toml, build wheels
- Adding missing attribution for SPI code

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-13 06:37:00 -07:00
Leon Anavi f30b465cf0 u-boot: Disable interrupt timeout for Raspberry Pi 5
Disable U-Boot interrupt timeout for Raspberry Pi 5 to avoid boot
issues without a connected debug UART. This is a known U-Boot issue
discussed in:
https://bugzilla.opensuse.org/show_bug.cgi?id=1251192
https://lists.denx.de/pipermail/u-boot/2025-January/576305.html

The issue affects Raspberry Pi 5 with U-Boot version 2025.04 from
branch scarthgap/u-boot of layer meta-lts-mixins.

This work was sponsored by GOVCERT.LU.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-12 06:50:53 -07:00
Leon Anavi a0ebcf5639 rpi-u-boot-scr: oe.kernel.map_uboot_arch
Replace UBOOT_ARCH with oe.kernel.map_uboot_arch(d) because the
variable has been dropped and all OE-Core usages are now
independent of kernel-arch, following the change in oe-core with
git commit 7e8523f3c16efb29657effd732a88e939eb0cf84.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-08-04 16:47:16 -07:00
Leon Anavi 9e41c54b45 Upgrade LICENSE to use AND
Replace & with AND in the LICENSE of the affected recipes.

Fixes:

WARNING: LICENSE is using an old syntax and should be upgraded

This work was sponsored by GOVCERT.LU.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-07-25 20:22:36 -07:00
Leon Anavi 996ce64882 bluez-firmware-rpidistro: Fix license warnings
Resolve license warnings regarding the old syntax by updating to
the new identifier LicenseRef-Firmware-cypress-rpidistro.

Fixes:

WARNING: bluez-firmware-rpidistro: LICENSE is using an old syntax
and should be upgraded to: "LicenseRef-Firmware-cypress-rpidistro"

This work was sponsored by GOVCERT.LU.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-07-25 20:22:36 -07:00
Leon Anavi 83cfcd18c3 Upgrade LICENSE syntax to LicenseRef-Broadcom-RPi
Replace Broadcom-RPi with the new syntax LicenseRef-Broadcom-RPi.

Fixes:

WARNING: LICENSE is using an old syntax and should be upgraded to:
"LicenseRef-Broadcom-RPi"

This work was sponsored by GOVCERT.LU.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-07-25 20:22:36 -07:00
Leon Anavi fa132b7f88 linux-firmware-rpidistro: Fix license warnings
Resolve license warnings regarding the old syntax by updating to
the new identifiers: LicenseRef-binary-redist-Cypress-rpidistro
and LicenseRef-Synaptics-rpidistro.

This work was sponsored by GOVCERT.LU.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2026-07-25 20:22:36 -07:00
Ayoub Zaki b0f0a6c0bf rpi-eeprom: update eeprom firmware to v2026.05.11-2712
Signed-off-by: Ayoub Zaki <ayoub.zaki@embetrix.com>
2026-07-08 15:47:17 -07:00
Ayoub Zaki 52206557e5 rpi-bootfiles: update firmware to 20260521
Signed-off-by: Ayoub Zaki <ayoub.zaki@embetrix.com>
2026-07-08 15:44:12 -07:00
Ayoub Zaki b03b6532e3 raspi-utils: bump SRCREV and add rpi-fw-crypto and rpi-eeprom-ab tools
Signed-off-by: Ayoub Zaki <ayoub.zaki@embetrix.com>
2026-07-08 15:43:37 -07:00
Khem Raj f62c679214 raspberrypi4: Pin to using 6.12 kernel
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-07-06 21:33:19 -07:00
Ayoub Zaki 004d6d4637 linux-raspberrypi: switch to Linux 6.18
Switch the default linux-raspberrypi to 6.18.

Pin raspberrypi-armv7 to 6.12 for both linux-raspberrypi and
linux-raspberrypi-v7, since bcm2711_defconfig was dropped from
arch/arm/configs/ in 6.18 and 32-bit builds fail do_kernel_metadata.
arm64 machines stay on 6.18.

Signed-off-by: Ayoub Zaki <ayoub.zaki@embetrix.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-07-06 21:33:19 -07:00