Skip to content

refactor(debos/flash)!: switch RB1 && UnoQ to EDK2-based boot firmware - #593

Draft
Christopher Obbard (obbardc) wants to merge 7 commits into
mainfrom
wip/obbardc/qrb2210-switch-to-edkii-bootflow
Draft

refactor(debos/flash)!: switch RB1 && UnoQ to EDK2-based boot firmware#593
Christopher Obbard (obbardc) wants to merge 7 commits into
mainfrom
wip/obbardc/qrb2210-switch-to-edkii-bootflow

Conversation

@obbardc

@obbardc Christopher Obbard (obbardc) commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Switch QRB2210-based devices (RB1 and UnoQ) to use the EDK2-based boot firmware. This removes the need for a custom U-Boot binary to be built and shipped with the images.

Tested on Arduino UnoQ.


TODO (PR is draft until these are resolved)

  • Test on RB1
  • Mark the commit removing u-boot-efi-dtb as a breaking change as arduino-deb-images might depend on it, but they can continue adding it in their layer.
  • Move the commit removing qbootctl to a separate PR

@obbardc Christopher Obbard (obbardc) changed the title refactor(debos/flash): rb1: switch to edk2-based boot firmware refactor(debos/flash)!: rb1: switch to edk2-based boot firmware Aug 21, 2026
@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from d474803 to 8337fe4 Compare August 21, 2026 15:04
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown

Test Results

  7 files  ±0   21 suites  ±0   22m 51s ⏱️ ±0s
 21 tests ±0   21 ✅ ±0  0 💤 ±0  0 ❌ ±0 
180 runs  ±0  179 ✅ ±0  1 💤 ±0  0 ❌ ±0 

Results for commit 477ccdc. ± Comparison against base commit 0257878.

♻️ This comment has been updated with latest results.

@github-actions

Copy link
Copy Markdown

@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from 8337fe4 to 3735679 Compare August 21, 2026 19:21
@obbardc Christopher Obbard (obbardc) changed the title refactor(debos/flash)!: rb1: switch to edk2-based boot firmware refactor(debos/flash)!: switch RB1 to EDK2-based boot firmware Aug 21, 2026
@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch 2 times, most recently from 65200af to a3805ba Compare August 21, 2026 19:33
@github-actions

Copy link
Copy Markdown

@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from a3805ba to 3dbfd10 Compare August 22, 2026 18:56
Christopher Obbard (obbardc) added a commit that referenced this pull request Aug 22, 2026
The reverted commit bumps qcom-ptool to a version which includes a
breaking change to the qrb2210-rb1 partition layout, which switches the
partitions to a new layout for the EDK-II based bootflow. Unfortunately
that is incompatible with the existing U-Boot based bootflow which the
qcom-deb-images currently uses (see switching to EDK-II in #593) and
removes the boot_a and boot_b partitions where we currently chain
U-Boot. Revert the change to allow qrb2210-rb1 to boot again.

This reverts commit 5ae45ff.

See: #587
Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
@github-actions

Copy link
Copy Markdown

@lool

Copy link
Copy Markdown
Contributor

Christopher Obbard (@obbardc) Thanks for starting this; a few bits:

  • yes, Please add support for Agatti/qcm2290 soc qcom-dtb-metadata#126 is related but you use a "combined dtb" style for both boards in the board database instead of a FIT image, and it will work for now – we'll only miss fancy overlays, but some other boards miss it it too
  • yes, we could remove qbootctl, these were the only official platforms that needed it, but it's a bit orthogonal, and Dmitry might be adding support for platforms that need it, so we can do it in a followup PR, taking the time to discuss
  • yes, we can drop u-boot-efi-dtb, mark this as a breaking change as arduino-deb-images might depend on it, but they can continue adding it in their layer; you can also defer to a separate PR
  • don't bother with EFS cleanup, there's an artifact aging process that should eventually garbage collect this
  • I would only deprecate the U-Boot scripts and drop them from docs; you can also do this in a separate PR

I would convert both agatti boards in one PR – RB1 and UNOQ, otherwise the current scope of your PR is fine.

@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from 3dbfd10 to 477ccdc Compare August 27, 2026 12:52
@github-actions

Copy link
Copy Markdown

@obbardc Christopher Obbard (obbardc) changed the title refactor(debos/flash)!: switch RB1 to EDK2-based boot firmware refactor(debos/flash)!: switch RB1 && UnoQ to EDK2-based boot firmware Sep 3, 2026
Update qcom-ptool to bring in parition table changes for QRB2210
devices to support the new EDKII based boot firmware, on RB1 and
Arduino Uno Q devices.

The following changes were merged in qcom-ptool since 80e52f:

Ali Erdinc Koroglu (1):
      tests: add pytest-based unit tests

Amer Alshanawany (1):
      qcom_ptool: loaders: parse uniqueguid from partition config

Christopher Obbard (1):
      qrb2210-unoq: update partition layout for the downstream edk2 boot
        firmware

Fang Wu (1):
      Revert "platforms/qcs615-ride: add uefivarstore partition to UFS
        layout"

Igor Opaniuk (11):
      pyproject: drop duplicate pytest ini_options section
      README: fix project name in title
      pyproject: declare PyYAML and jsonschema runtime deps
      README: document PyYAML and jsonschema runtime deps
      loaders: add YAML partition loader with schema validation
      tests: cover the YAML loader and schema
      board: add multi-storage board model and composition resolver
      tests: cover the board composition resolver
      gen_partition: add multi-storage --board invocation
      cli: add show subcommand for resolved board specs
      tests: cover board-mode gen_partition and the show subcommand

Ricardo Salveti (1):
      qrb2210-rb1: update partitions based on the edk2-downstream boot
        firmware

Royyan Zahir (1):
      tests: cover the named GPT attribute flags

Vivek Puar (3):
      platforms/glymur-crd: specify dtb file name in SPI-NOR partition
        conf
      platforms/kaanapali-mtp: update partition type GUIDs for
        Kaanapali-MTP
      platforms/sm8750-mtp: update partition type GUIDs for SM8750-MTP

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
Replace the old 96 Boards/Linaro rescue image for qrb2210-rb1 with the
QRB2210_bootbinaries.1.0 boot firmware release (00021) published on
the Qualcomm Software Center. This new release changes the qrb2210-rb1
boot flow to the new EDK2-downstream baseline; superseding the U-Boot
based rescue-image flow.

Wire up the matching RB1 Core Kit CDT download and cdt_filename so the
CDT binary is included in the flashing package.

The new bootloader requires a different partition layout to be flashed
to the device; introduced in qualcomm-linux/qcom-ptool#109.

As the board now boots through the EDK2 bootflow shipped with its boot
binaries, the custom U-Boot image is no longer needed; stop pointing
the board at it through the u_boot_file field. That field was fed by
the u_boot_rb1 option, which also gated whether the board was built at
all, so qrb2210-rb1 is now built unconditionally like every other board
and is selected with `target_boards`.

Note that this change is currently untested on RB1 hardware.

Reference: qualcomm-linux/meta-qcom#2057
Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
Replace the Arduino-published bootloader archive for the UNO Q
("Imola") with the QRB2210_bootbinaries.1.0 boot firmware release
(00021) published on the Qualcomm Software Center, the same release
now used by qrb2210-rb1. This changes the qrb2210-unoq boot flow to
the new EDK2-downstream baseline; superseding the U-Boot based
bootloader archive.

The new bootloader requires a different partition layout to be flashed
to the device; introduced in qualcomm-linux/qcom-ptool#165.

The Arduino archive bundled the board's CDT alongside the boot
binaries, whereas the QRB2210 release is not board-specific. Wire up
a separate UNO Q CDT download and cdt_filename so the CDT binary is
still included in the flashing package.

This change has been tested on UNO Q hardware without regressions.

Reference: qualcomm-linux/meta-qcom-arduino#2
Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
Both QRB2210 boards now boot through the EDK2 bootflow shipped with
their boot binaries so no boards need custom U-Boot to be build or
flashed anymore.

Drop the u_boot_rb1 option along with the u_boot_file board field and
the code overwriting boot.img in the flash directory with the custom
U-Boot binary. Stop installing the U-Boot image into the artifacts and
drop the build instructions from the README.

The (unused) U-Boot build workflow and scripts/build-u-boot-rb1.sh are
left in place for now.

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
RB1 now boots the EDK2-based firmware shipped with its boot binaries;
we no longer need to build a custom U-Boot image, so there is nothing
left that uses the artifacts this workflow builds.

Drop the weekly schedule so it stops occupying the self-hosted runners
for a build nothing depends on and note at the top of the file that the
workflow is deprecated. Manual runs via workflow_dispatch are kept for
now, until the workflow and scripts/build-u-boot-rb1.sh are removed.

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
The u-boot-efi-dtb package installs a kernel hook copying the device
trees shipped by the kernel package to /boot/efi/dtb, where U-Boot picks
them up. This was only useful on RB1: the sole board booting U-Boot and
required working around its postinst in the image recipe: diverting the
kernel hook so it doesn't fail outside qemu, installing the package only
once the ESP is mounted and copying an initial set of DTBs.

Now that RB1 and UnoQ boot using the EDK2 bootflow, no board uses these
DTBs anymore so drop the package and the action to copy the initial set
of DTBs to the EFI partition.

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
qbootctl marks the current Android boot partition as successfully
booted, which the Android bootloader needs so it doesn't fall back to
the other slot after a few boots. This was only required on RB1 where
the Android bootloader chainloaded U-Boot from the boot_a/boot_b
partitions.

As RB1 and UnoQ now boot through the EDK2 bootflow, no supported
board depends on this slot handling any more so drop the package.

Signed-off-by: Christopher Obbard <chris.obbard@oss.qualcomm.com>
@obbardc
Christopher Obbard (obbardc) force-pushed the wip/obbardc/qrb2210-switch-to-edkii-bootflow branch from da8eba2 to 8222c45 Compare September 10, 2026 08:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants