Repository navigation
Highlights
- Standalone
qdl resetsubcommand: kicks a board out of EDL or crash mode over Sahara without uploading a programmer, falling back to a
Firehose power reset when one is already running (#307) qdl ksno longer needs a device node: it uses the standard usb/qud backends, so kickstart works over libusb and on Windows and can
replace QSaharaServer on flashless boards (#300)- New
create-sahara-archivesubcommand to build a Sahara programmer archive from acontents.xmlor a list of images
(#303) - UFS provisioning fixes: the commit step gets a longer timeout and a device that resets right after committing the configuration descriptor
is reported as success (#314, #322) - NAND program tags carry the partition label, so programmers that resolve partitions by name apply the bad-block adjusted offset
(#306) - Sahara end-of-image and done status codes are decoded into human-readable descriptions (#336)
- Millisecond timestamps on
--debugdiagnostics to spot stalls and correlate host and device activity (#321) - Second hardening batch across parsers, backends and the build (#302)
- USB backend fixes: zero-length packet reads are deferred to the next real transfer, so Firehose no longer stalls on xHCI controllers
that complete the speculative read early (ASMedia ASM2142/3142);--serialfalls back toiSerialNumberwheniProductcarries
no serial, retries transient string descriptor reads right after enumeration and matches case-insensitively
(#346, #348) - Readable output:
--color[=auto|always|never],ERR:/WARN:prefixes, uppercase subsystem tags, result lines with size and rate,
a single run summary line and-q/--quietfor CI and production lines (#341) - Linux udev rules are installed with qdl, granting local users access to EDL and crashdump devices without running as root
(#342) - Leaner builds: zip container support is a meson feature option (
-Dzip-container=disabled) and the meson floor is lowered to 0.56 so qdl
can be packaged for EL9 (#299, #333) - Document official packages: qdl is in Debian, Ubuntu, Fedora and EPEL, and an official Homebrew formula
is available in homebrew-core (brew install qdl) (#338) - The HIL suite runs unattended on self-hosted Linux and macOS runners with real boards, including VIP end to end
(#296, #340) - Documentation refreshed and split into per-topic guides under
docs/(#329,
#317)
What's Changed
- qdl: let kickstart use the standard device backends by @igoropaniuk in #300
- meson: make zip container support optional by @igoropaniuk in #299
- For linux msm/create sahara archive by @quic-bjorande in #303
- qdl: add a standalone reset subcommand by @igoropaniuk in #307
- Harden error paths across parsers, backends and the build by @igoropaniuk in #302
- Run the HIL suite unattended on self-hosted runners by @igoropaniuk in #296
- firehose: deduplicate the chunk-streaming loop by @igoropaniuk in #308
- ufs: replace module globals with a caller-owned context by @igoropaniuk in #309
- firehose: send the partition label in NAND program tags by @franciscojsfc in #306
- README: document installer package creation by @quic-bjorande in #317
- commitlint: recognize Closes as a footer trailer by @igoropaniuk in #319
- firehose: give the UFS provisioning commit a longer timeout by @igoropaniuk in #314
- qdl: decouple helper modules from the CLI front-end by @igoropaniuk in #313
- Add missing stdint.h include by @aekoroglu in #324
- github: build on ubuntu 26.04 runners by @igoropaniuk in #327
- github: drop macos-14 and build on macos-15 and macos-26 runners by @igoropaniuk in #328
- README: refresh and split into docs/ by @igoropaniuk in #329
- ux: add consistent timestamps to debug diagnostics by @igoropaniuk in #321
- meson: lower the required meson version to 0.56 by @igoropaniuk in #333
- firehose: treat -ENODEV on commit=1 as success after UFS provisioning by @JohnSagaQuic in #322
- qdl: split the flashing front-end from the CLI plumbing by @igoropaniuk in #323
- sahara: describe status codes in end-of-image and done packets by @bhavyaVeera in #336
- github: prepare CI for the move to the Qualcomm GitHub organization by @igoropaniuk in #335
- README: document distribution packages and Homebrew by @igoropaniuk in #338
- github: run the HIL suite on the macOS runner by @igoropaniuk in #340
- ux: colored output, level and subsystem prefixes, run summary and --quiet by @igoropaniuk in #341
- udev: install rules for EDL device access by @lool in #342
- usb: defer ZLP reads to real transfers by @agumarcolin in #346
- usb: fall back to iSerialNumber and retry transient string reads by @igoropaniuk in #348
New Contributors
- @franciscojsfc made their first contribution in #306
- @aekoroglu made their first contribution in #324
- @JohnSagaQuic made their first contribution in #322
- @bhavyaVeera made their first contribution in #336
- @lool made their first contribution in #342
- @agumarcolin made their first contribution in #346
Testing credits
Thanks to everyone who helped test v2.9-rc1 in #345:
- @igoropaniuk tested on RB3Gen2 (secure) and Uno Q across Linux and Windows
- @JohnSagaQuic tested on Kaanapali, RB3, Hawi and NordAU (SA8797P)
Full Changelog: v2.8...v2.9