Skip to content

Releases: raspberrypi/rpi-imager

v2.0.11

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 14 Aug 15:24
2aa9677

What's changed

  • OS Customisation:
    • Add the rpi-preseed first-boot customisation format, and list it as a
      valid init_format in the schema notes.
    • rpi-preseed: always add the account to the 'sudo' group.
    • cloud-init: write sudo: null when the user declines passwordless sudo.
      A singular user: block is merged over the distro default_user, which
      raspberry-pi-os populates with passwordless sudo, so omitting the key
      granted it regardless of the user's choice; null suppresses the rules
      while keeping 'sudo' group membership, so the account is prompted for one.
    • Centralise credential derivation in CustomisationGenerator and hash
      credentials in C++ before persisting them.
    • Verify the device kept the customisation files after writing.
    • UI: keep customisation steps centre-middle; drop the unused ImageOptions
      enum; bind SSH key row data; allow query parameters on custom manifest
      URLs.
  • Fastboot (Compute Module):
    • Add an Erase command for 'Format'.
    • Verify device identity before treating a target as a Pi.
    • Align stage() tests and docs with the download verb.
  • Write reliability:
    • Support multi-frame .img.zst images (use ZSTD_findDecompressedSize).
    • Linux/Windows: take an exclusive lock on drive open. On Windows, hold
      volume locks rather than deleting drive letters, only remove removable
      mountpoints, retry the exclusive open before falling back to shared, and
      flush the filesystem to media before writing the partition table.
    • macOS: run DiskArbitration on the main run loop with blocking calls, and
      move the nested run loop onto worker threads.
  • Embedded (Raspberry Pi network installer):
    • Build a dedicated Qt configured -no-opengl -qpa linuxfb -no-dbus
      -no-feature-icu. The pi-gen-micro netboot image carries no Mesa or X11
      (far too large for a network-loaded image), no session bus, and none of
      the languages that need ICU. The package had drifted onto the desktop Qt
      and so linked libEGL/libGL/libX11 and libQt6DBus -- absent from the image
      -- and could not load on the target.
    • Build the application without QtDBus for embedded; its DBus users (portal
      file dialog, NetworkManager WiFi backend, Pi Connect URI handler) are
      unusable on a busless image and are compiled out via QT_DBUS_LIB guards.
    • Assemble the .deb with debhelper so debian/control is the single source of
      dependencies and metadata and md5sums are generated; trim Depends to the
      minimal host-provided set (no libegl1/libgl1/libx11-6/libsystemd0, which
      apt would otherwise pull -- Mesa and X11 included -- into the image).
    • Bake an $ORIGIN-relative rpath at build time (was a leaked build-host
      path), dereference the bundled fontconfig config, and drop the stale
      vendored ICU handling.
  • Build / packaging:
    • Rootless multi-arch (amd64/arm64/armhf) release pipeline: every arch,
      the host included, builds inside its bookworm mmdebstrap chroot; there is
      no host-native build path (a package built against the host's libraries
      is not the package it claims to be).
    • Desktop and CLI AppImages are now self-contained: bundle the transitive
      library closure of the staged AppDir (via readelf, so it also works for
      foreign-architecture AppDirs), which was previously taken from the host
      and left arm64/armhf incompletely bundled. Declare the genuinely
      host-coupled libraries in debian/control.
    • Build Qt with -no-feature-icu across desktop/CLI/embedded; drop the
      JPEG 2000 image plugin; collect the source .buildinfo.
    • liburing: probe for the 64-bit user_data API (added in 2.2) before
      enabling io_uring, so an older build environment falls back to
      synchronous writes instead of failing to link.
    • Vendor curl/libarchive/libusb/nghttp2/xz as git submodules.
    • Reproducibility and hygiene: normalise mtimes; generate version files in
      an explicit build override; prune qmlls and performance profiles from the
      packaged tree; stop deleting the screenshot; ship the fastboot udev rule
      inside the .debs; assorted amd64/arm64 packaging fixes.

PRs

New Contributors

Full Changelog: v2.0.10...v2.0.11

v2.0.11-rc1

v2.0.11-rc1 Pre-release
Pre-release

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 08 Jul 16:03

What's Changed

Full Changelog: v2.0.10...v2.0.11-rc1

v2.0.10

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 19 Jun 14:35

(v2.0.10 includes all changes from v2.0.9, but in released form)

What's new

Pi Connect for Organisations

  • Enrol devices via a new wizard flow for Pi Connect for Organisations
  • Register devices over HTTPS with on-device signing (ConnectDeviceRegistrar)
  • Track organisation registration and provisioning tokens
  • Register device identity with Connect automatically after a fastboot flash
  • Fix Connect sign-in on more Linux desktop systems (#1564)

Secure Boot and CM5 re-provisioning

  • In-place CM5 secure boot re-provisioning via a rewritten SecureBootProvisioner
  • New BootloaderImage TLV editor for pieeprom.bin, with bootfile repacking
  • Config-signature generation, RSA public-key extraction, and bootcode2712 signing
  • AB-image support in BootloaderImage, with signing and extraction tests
  • Debug toggles for force-secure-boot and sign-fastboot-gadget
  • Fetch firmware from rpi-eeprom; improved reboot handling
  • Set chosen storage as the first boot source via EEPROM (fastboot)

Accessibility

  • Reduced motion support
  • New FocusableText and FocusableHeading components
  • Prevent VoiceOver crash on password fields (#1607)

Device I/O

  • Read per-device I/O limits to inform write tuning

Improvements

OS customisation

  • Cloud-init: drop enable_ssh in favour of systemctl runcmd
  • Cloud-init: use user (not users) for user configuration
  • Improve SSID handling with octet support and YAML escaping
  • Vendor capital cities data locally; no longer fetch from the REST Countries API
  • Improve wizard nextStep logic for "write another" mode

UI

  • Major QML refactor: ImageWriter singleton, cachegen, lazy-loaded App Options and Debug Options dialogs
  • Make App Options dialog scrollable; move Telemetry to the bottom
  • Fix keyboard navigation on the write confirmation dialog
  • Disable "clear customisation" during active writes
  • Gate OTP programming visibility
  • Align Secure Boot step container styling

Write operations

  • Remove the 512-byte alignment requirement
  • Do not emit success after a failed extraction (#1603)
  • Set extract length when a manifest size is given
  • Omit percentage progress when the extract size cannot be determined
  • Parse zstd header for extract size with local .img.zst archives

Fastboot and rpiboot

  • Capture INFO/TEXT lines for OEM commands
  • Chunk file_server bulk transfers
  • Resolve cache before fastboot flash
  • Pause drive scan during auto-bootstrap
  • Track naked rpiboot devices separately in the drive list
  • Normalise custom gadget paths so local files can be used

Windows

  • Propagate write error handling through FileOperations
  • Advertise long path, DPI awareness, and UTF-8 codepage
  • Geometric backoff for volume lock; wait for clean completion
  • Uninstaller preserves user preferences; removes cache and customisation data
  • Use secure memory erase for WiFi credentials

macOS

  • Minimum macOS version is now 13
  • Coalesce unaligned writes/reads to /dev/rdisk* (fixes .img.zst EINVAL)
  • Scale release label in create-dmg
  • Use secure memory erase for WiFi credentials

Linux

  • Prefer kreadconfig6 with fallback to kreadconfig5; select via KDE_SESSION_VERSION
  • AppImage: exclude libsystemd, libdbus-1, and libcap for desktop builds
  • Build fixes

Embedded

  • Move scaling choices into C++
  • Deploy vendored tree without AppImage
  • Drop NetworkAccessManagerFactory and OpenSSL
  • create-embedded.sh: support custom ICU runtime libraries

Dependencies

  • Upgrade curl, libarchive, libusb, nghttp2, and xz
  • Single source of truth for curl user-agent
  • Add nghttp2, libusb, and yescrypt to the licence manifest

Translations

  • Updated French, Irish, and Turkish translation dictionaries

Bug fixes

  • Fix CM5 re-provisioning support
  • Always validate stale cached firmware assets
  • Fix rpiboot storage handoff; PAL-ify RSA key fingerprint handling
  • Re-bind RSA key visibility for debug options
  • Prevent ImageWriter double-construction
  • Reliably flag Windows system drives (#1558)
  • Force disk status refresh on write errors (Windows)
  • Prevent mach-port over-release crash on macOS (#1632)
  • Better overflow handling for GPT/MBR partitions and FAT long filenames
  • disk_formatter: handle extremely large sectors_per_fat
  • cachemanager: fix TOCTOU on directory existence check
  • Fix serial-if disabled handling in customisation
  • Fix fastboot command truncation
  • Fix French localisation typo and stray text

Documentation

  • Update os-list schema
  • Prune bmap spec document
  • Update bmap-tools repository URL

PRs

New Contributors

Full Changelog: v2.0.8...v2.0.10

v2.0.9

v2.0.9 Pre-release
Pre-release

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 05 May 16:37

What's changed

  • Pi Connect for Organisations:
    • New wizard flow for registering devices into a Pi Connect organisation
    • On-device key signing via ConnectDeviceRegistrar (HTTPS)
    • Track org enrolment tokens through ImageWriter
    • Register device identity with Connect after a Fastboot flash
  • CM5 / Secure Boot re-provisioning:
    • Rewrite SecureBootProvisioner for in-place re-provisioning
    • New CM5 re-provisioning pipeline in FirmwareManager
    • Add BootloaderImage TLV editor for pieeprom.bin
    • Bootfiles repacking (replaceEntry + writeToFile)
    • Add config-sig, RSA pubkey extraction, bootcode2712 signing
    • Debug toggles for force-secure-boot and signed Fastboot gadget
  • Fastboot:
    • Capture INFO/TEXT lines from OEM commands
    • Fix command truncation
    • Normalise custom gadget paths so local files can be used
    • Chunk file_server bulk transfers
    • Resolve cache before flash; pause drive scan during auto-bootstrap
    • Track naked rpiboot devices separately in the drive list
  • Cloud-init customisation:
    • Drop enable_ssh; use a systemctl runcmd instead
    • Use user: (singular) for user configuration
    • Fix up serial-if disabled handling
  • UI:
    • Reduced-motion option for users sensitive to animation
    • Make AppOptionsDialog scrollable; move Telemetry to the bottom
    • Align Secure Boot step container styling
  • Write reliability:
    • Drop the 512-byte alignment requirement
    • Better overflow handling for GPT, MBR, and FAT partition wrappers
    • Handle extremely large sectors_per_fat in the disk formatter
    • Better handling of long filenames in FAT partitions
    • Use a shared_ptr for the write ringbuffer to fix lifetime issues
    • Parse zstd headers to recover the extract size for local archives
    • Fix a TOCTOU on the cache directory existence check
  • Windows:
    • Advertise long-path, DPI awareness, and UTF-8 codepage support in the manifest
    • Propagate write errors through FileOperations
    • Geometric backoff for volume lock; wait for clean completion
    • Use secure memory erase for Wi-Fi credentials
    • Uninstaller now preserves user preferences while clearing cache and customisation
  • macOS:
    • Use secure memory erase for Wi-Fi credentials
  • Linux:
    • Prefer kreadconfig6 with a fallback to kreadconfig5; select via KDE_SESSION_VERSION
    • Use explicit paths in launchDetached and the suspend inhibitor's search paths
    • Use an explicit path for the embedded reboot command
    • Exclude libsystemd, libdbus-1, and libcap from Linux Desktop AppImages
  • Device telemetry:
    • Introduce reading of device IO limits
  • Licensing:
    • Add nghttp2, libusb, and yescrypt to the bundled licence list
  • i18n: Updated French, Turkish, and Irish translation dictionaries; stray-text fixes in French

PRs

New Contributors

Full Changelog: v2.0.8...v2.0.9

v2.0.8: Bugfixes, Fastboot improvements

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 08 Apr 16:02

What's changed

  • Fastboot:
    • Enumerate storage devices
    • Add mount, unmount, and custom gadget support
    • Rename stage to download
    • Retry on transient USB errors
  • OS Customisation:
    • Don't set any groups, leave it to the OS
    • Use explicit runcmds for passwordless sudo
    • Require active locale selection; no pre-filled defaults
  • UI:
    • Refresh clipboard status as text fields show
  • SSH:
    • Add state machine for handling PuTTY's multiline SSH keys
  • Linux:
    • Explicitly exclude libsystemd
  • Write Operations:
    • Increase watchdog stall timeout to 180s to match the async write timeout
    • Exclude final data sync from write watchdog to avoid false stalls on slow
      cards
  • i18n: Updated French, Slovak translation dictionaries
  • Documentation:
    • Add a screenshot of the interface

PRs

New Contributors

Full Changelog: v2.0.7...v2.0.8

v2.0.7

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 26 Mar 12:06

Release edit:

  • Earlier macOS DMG was built for Apple Silicon only. Replaced Fri 27 March 2026 @ 15:15 GMT

What's Changed

  • chore(release): v2.0.6 by @tdewey-rpi in #1477
  • feat(installer): Add windows installer dark mode support in rpi-imager.iss.in by @rc-chuah in #1480
  • fix(main): Add warning for log paths that are too long by @Ferdinaelectro1 in #1481
  • Add pt-br translation by @eduardoaddad in #1490
  • Update Turkish translations by @Sype0 in #1488
  • Added documentation clarifying the interaction between old versions of Imager and new versions of RPi OS by @lurch in #1497
  • Fix malformed rpi-imager_pt-BR.ts by @lurch in #1499
  • Move the development instructions to a separate CONTRIBUTING.md file by @lurch in #1508
  • QML: fix property name mismatch in ImFileDialog by @wallentx in #1505
  • 2.0.7: Remove legacy mountutils/drivelist, bugfixes by @tdewey-rpi in #1513
  • fix(debian): Add missing GUI library dependencies by @tdewey-rpi in #1517
  • 2.0.7: Improved combobox search, HK & Macau added, don't store experimental options by @tdewey-rpi in #1525
  • 2.0.7: Remove BLKDISCARD, gzip progress bars by @tdewey-rpi in #1528
  • Add "Clear saved customisation" button to App Options by @4RH1T3CT0R7 in #1501
  • fix(cloud-init): Make instance-id durable across reboots by @tdewey-rpi in #1529
  • fix(capital-cities): Update capital city entries and handling for Hong Kong by @tdewey-rpi in #1531
  • fix(ImFileDialog): allow typing/pasting full file paths in open mode by @4RH1T3CT0R7 in #1530
  • fix(ImComboBox): use PlatformHelper for scroll direction in closed ComboBox by @4RH1T3CT0R7 in #1534
  • Fix compile erorr in platformquirks_linux.cpp by @lurch in #1537
  • fix(beep): bundle fallback chime for Linux distros without freedesktop sounds by @4RH1T3CT0R7 in #1535
  • fix(polkit): use /etc/polkit-1/actions for policy on immutable distros by @4RH1T3CT0R7 in #1536
  • fix(wifi): prevent stale WiFi settings from being applied after Skip by @4RH1T3CT0R7 in #1540
  • 2.0.7 rollup 2: Fastboot, rpiboot, compute modules, text scaling, proxy support by @tdewey-rpi in #1548
  • fix(i18n): add missing French translations for saved customisation settings by @Ferdinaelectro1 in #1555
  • chore(.gitignore) : add .idea to .gitignore by @Ferdinaelectro1 in #1552
  • i18n: complete zh-CN translation by @ykla in #1554

New Contributors

Full Changelog: v2.0.6...v2.0.7

v2.0.7-rc2: UI polish, experimental features

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 17 Mar 15:51

What's Changed

  • chore(release): v2.0.6 by @tdewey-rpi in #1477
  • feat(installer): Add windows installer dark mode support in rpi-imager.iss.in by @rc-chuah in #1480
  • fix(main): Add warning for log paths that are too long by @Ferdinaelectro1 in #1481
  • Add pt-br translation by @eduardoaddad in #1490
  • Update Turkish translations by @Sype0 in #1488
  • Added documentation clarifying the interaction between old versions of Imager and new versions of RPi OS by @lurch in #1497
  • Fix malformed rpi-imager_pt-BR.ts by @lurch in #1499
  • Move the development instructions to a separate CONTRIBUTING.md file by @lurch in #1508
  • QML: fix property name mismatch in ImFileDialog by @wallentx in #1505
  • 2.0.7: Remove legacy mountutils/drivelist, bugfixes by @tdewey-rpi in #1513
  • fix(debian): Add missing GUI library dependencies by @tdewey-rpi in #1517
  • 2.0.7: Improved combobox search, HK & Macau added, don't store experimental options by @tdewey-rpi in #1525
  • 2.0.7: Remove BLKDISCARD, gzip progress bars by @tdewey-rpi in #1528
  • Add "Clear saved customisation" button to App Options by @4RH1T3CT0R7 in #1501
  • fix(cloud-init): Make instance-id durable across reboots by @tdewey-rpi in #1529
  • fix(capital-cities): Update capital city entries and handling for Hong Kong by @tdewey-rpi in #1531
  • fix(ImFileDialog): allow typing/pasting full file paths in open mode by @4RH1T3CT0R7 in #1530
  • fix(ImComboBox): use PlatformHelper for scroll direction in closed ComboBox by @4RH1T3CT0R7 in #1534
  • Fix compile erorr in platformquirks_linux.cpp by @lurch in #1537
  • fix(beep): bundle fallback chime for Linux distros without freedesktop sounds by @4RH1T3CT0R7 in #1535
  • fix(polkit): use /etc/polkit-1/actions for policy on immutable distros by @4RH1T3CT0R7 in #1536
  • fix(wifi): prevent stale WiFi settings from being applied after Skip by @4RH1T3CT0R7 in #1540
  • 2.0.7 rollup 2: Fastboot, rpiboot, compute modules, text scaling, proxy support by @tdewey-rpi in #1548

New Contributors

Full Changelog: v2.0.6...v2.0.7-rc2

v2.0.6: Fixup button width calculations, DE translation

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 22 Jan 17:11

What's Changed

  • Update de translations by @rejas in #1468
  • refactor(ImButton): Update implicit width calculation for better cont… by @tdewey-rpi in #1473

Full Changelog: v2.0.5...v2.0.6

v2.0.5

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 20 Jan 16:28

What's Changed

  • all platforms: CLI option added to help on GUI builds
  • macOS:
    • Add dark mode and Liquid Glass icon support with pre-compiled assets
    • Add icon compilation script for regenerating icon assets
  • UI:
    • Enhance update popup with version tracking functionality
    • Improve BaseDialog minimum height for better usability
    • Use indeterminate progressbar for local gzip files without size info
    • Fixup updatePopupRequested trigger
  • Local JSON Helper:
    • Add device capabilities support
    • Add OS capabilities support

PRs

Full Changelog: v2.0.4...v2.0.5

v2.0.4

Choose a tag to compare

@tdewey-rpi tdewey-rpi released this 16 Jan 10:14

What's new

  • Write Robustness:
    • Introduce WriteProgressWatchdog to monitor write progress and detect stalls
    • Implement recovery strategies for async I/O including queue depth reduction
      and sync fallback mechanisms
    • Standardize timeout handling for pending writes across all platforms
    • Add 5-minute emergency timeout as fallback for stalled operations
  • Performance:
    • Enhance recovery event handling and monitoring diagnostics
    • Capture SHA256 hash values in performance profiles for verification diagnostics
  • Image Handling:
    • Add support for parsing .gz files to extract uncompressed size information
    • Improve handling for files larger than 4GB
  • Disk Formatting:
    • Fix FAT32 formatting for large drives (>8GB)
    • Improve root directory handling based on sectors per cluster
  • Bug Fixes:
    • Fix external tools (runuser, xdg-open) failing in AppImage due to
      LD_LIBRARY_PATH conflicts causing PAM module loading errors
    • Improve thread safety for download cancellation
    • Enhance error handling for timeout conditions
    • Use Pathlib to generate file:// URIs in local JSON helper script
    • Use XDG-compliant canberra-gtk-play and PipeWire for audio notifications
      on Linux, fixing beep on Raspberry Pi OS which no longer ships PulseAudio control by default
  • Accessibility:
    • Bypass confirmation dialog timer when screen reader is active
  • Build:
    • Refactor Qt build scripts for improved POSIX compliance and consistency
    • Add macOS-specific optimizations for universal builds

PRs

New Contributors

Full Changelog: v2.0.3...v2.0.4