Skip to content

Releases: raspberrypi/rpi-imager

v2.0.10

19 Jun 14:35

Choose a tag to compare

(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

05 May 16:37

Choose a tag to compare

v2.0.9 Pre-release
Pre-release

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

08 Apr 16:02

Choose a tag to compare

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

26 Mar 12:06

Choose a tag to compare

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

17 Mar 15:51

Choose a tag to compare

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

22 Jan 17:11

Choose a tag to compare

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

20 Jan 16:28

Choose a tag to compare

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

16 Jan 10:14

Choose a tag to compare

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

2.0.3: Performance, bugfixes

22 Dec 19:23

Choose a tag to compare

✨ Features

Performance

  • Implement bottleneck detection and real-time progress updates showing network, decompression, or write-bound status
  • Add detailed write timing breakdown for hypothesis testing and performance analysis
  • Skip periodic sync when direct I/O is enabled to improve throughput
  • Enhance async I/O support and configuration options across all platforms

Networking

  • Implement comprehensive network monitoring across all platforms to detect connectivity changes and automatically retry OS list fetching
  • Add automatic fallback and retry logic when network connection is restored
  • Introduce CurlFetcher and CurlNetworkConfig for improved network operations with better error handling
  • Add CA certificate bundle detection for AppImage compatibility on Linux distributions with non-standard CA paths
  • Enable file:// protocol support in curl configuration for local repository testing

Custom Repositories

  • Add rpi-imager:// URI scheme for deep-linking to custom OS repositories (e.g., rpi-imager://open?repo=https://example.com/repo.json)
  • Register .rpi-imager-manifest file type association on macOS (UTI), Windows (registry), and Linux (MIME)
  • Show custom repository host in window title bar with punycode encoding to prevent IDN homograph attacks
  • Add confirmation dialog with security delay for remote repository URLs

Drive Handling

  • Detect and handle counterfeit storage devices that may hang during I/O operations
  • Add timeout mechanism for critical operations like BLKDISCARD and writing to the end of the device
  • Add debug option to skip end-of-device operations for users with problematic cards
  • Add support for NVMe over Fabrics (BusTypeNvmeof) bus type on Windows
  • Enhance storage bus type recognition and device classification
  • Improve drive filtering and system identification logic on Linux

User Interface

  • Add sticky language preference that remembers user selection across sessions
  • Enhance title display with offline status indication in the main window
  • Improve text wrapping and marquee scrolling throughout the UI
  • Make DebugOptionsDialog height responsive to window size

Customisation

  • Enhance WiFi configuration for open networks using key_mgmt=NONE
  • Refine cloud-init user data and network configuration generation
  • Add initFormat parameter to CLI setImageCustomisation call

Windows

  • Enhance uninstallation to clean up old installation directories and registry entries left by previous installers
  • Improve user prompts during install/uninstall for detecting previous installations

CLI

  • Add note about using the --repo flag to load local os_list_local.json files
  • Fix error message displayed when CLI build is run without sudo
  • Use ANSI escape sequences for _clearLine for better terminal compatibility

🐛 Bug Fixes

  • Fix language selection on Desktop not persisting correctly
  • Fix button layout for permission warning dialog
  • Fix async write IDs overlapping with cancellation markers
  • Fix async cache hash not resetting on open, ensuring fresh computation
  • Fix unmounting logic and error handling during write operations
  • Fix hardware and software capability checks for case insensitivity
  • Fix display of customRepoHost in repository dialogs
  • Fix translation of permissions-message dialog (strings were being translated too early)
  • Fix macOS build configuration

🌍 Internationalisation

  • Updated Spanish translation
  • Updated Czech translation
  • Updated French translation (multiple updates)
  • Updated Russian translation
  • Updated Portuguese translation
  • Add new translations and error messages for multiple languages

📦 Dependencies

  • Update bundled library versions
  • Update timezone data version
  • Update capital cities database

2.0.2: Bugfixes & UI fixes

10 Dec 17:00

Choose a tag to compare

✨ Features

Performance

  • Add direct I/O bypass for Linux (O_DIRECT), macOS (F_NOCACHE), and Windows (FILE_FLAG_NO_BUFFERING) to reduce memory pressure during writes
  • Add zero-copy ring buffer for data transfer between download and write threads, reducing CPU overhead
  • Add asynchronous cache file writer to overlap download and disk I/O operations
  • Dynamically adjust write queue depth based on available system memory, tuned for more aggressive performance
  • Add sequential read hints (FADV_SEQUENTIAL, F_RDAHEAD) during verification for better prefetching
  • Track detailed performance metrics for network, decompression, and write phases
  • Use Windows IOCTLs (IOCTL_DISK_DELETE_DRIVE_LAYOUT) for faster disk preparation instead of diskpart
  • Add performance data analysis tool for debugging slow writes (Press CTRL + SHIFT + P, save the JSON, attach to a new Issue).

Drive Handling

  • Switch drive polling from fixed 1-second interval to adaptive mode (fast during selection, paused during writes)
  • Fix NVMe namespace detection on Linux to correctly identify NVMe drives by parsing /sys/class/nvme/
  • Suppress Windows "Insert a disk" error dialog when accessing empty removable drives
  • Fix macOS APFS volume handling to correctly identify child partitions
  • Allow virtual disks to be treated as 'system' drives on Windows & Linux (macOS was supported from 2.0.0)

User Interface

  • Add password field component with show/hide toggle button
  • Add type-to-search in combo boxes with backspace support to delete characters
  • Add Enter key to open combo box dropdown when focused
  • Show device and OS names with tooltips when text is truncated
  • Restructure countdown timer before write confirmation dialog can be accepted
  • Fix bottom padding in write confirmation dialog
  • Reintroduce multiple SSH key support

Accessibility

  • Add proper focus order and keyboard navigation for screen readers across all dialogs
  • Move accessibility description properties to centralized form label component

macOS

  • Add file type filter popup to native save dialogs (matching Finder behavior)
  • Request location permission asynchronously to avoid blocking the UI when detecting WiFi networks
  • Add dark mode, tinted and clear Liquid Glass icon variants using Icon Composer for proper menu bar appearance

Linux

  • Fix X11 authorization when running AppImage as root via xhost and proper XAUTHORITY handling
  • Install scalable SVG icon instead of fixed-size PNG for better HiDPI support

Windows

  • Migrate file dialogs from legacy GetOpenFileName API to modern IFileDialog COM interface
  • Fix file dialog filter string requiring double-null termination
  • Fix scroll direction on ImComboBox

Customization

  • Allow SSH public key authentication without requiring a username/password to be set
  • Fix missing user creation block when not enabling SSH

Networking

  • Add automatic fallback from HTTP/2 to HTTP/1.1 after repeated failures
  • Log HTTP protocol version used on successful downloads
  • Skip error dialogs when user cancels download mid-transfer
  • Properly close file handles when operations are cancelled

Other

  • Add file logging support (--log-file command line argument)
  • Re-use ring buffer memory for SHA256 verification instead of allocating new buffers
  • Validate init_format field in OS list JSON and log warnings for invalid entries
  • Extract clean version string (X.Y.Z) for telemetry instead of full build string
  • Add privilege escalation support for elevatable application bundles

🐛 Bug Fixes

  • Fix SSH key file dialog filter on Windows (was passing list instead of string)
  • Fix Italian translation inconsistencies
  • Fix icon installation path for Linux desktop integration
  • Fix cloud-init user-data generation for Pi Connect configuration
  • Remove O_SYNC flag from file operations (was causing unnecessary performance penalty)

🌍 Internationalization

  • Add Romanian translation
  • Add Italian translation
  • Add Czech translation
  • Updated Russian translation
  • Updated French translation
  • Update translations for new MacFile and NativeFileDialog strings
  • Add en-US translation

🎨 Icons

  • New Windows and Linux application icons
  • macOS icon with light/dark mode variants
  • Add scripts to regenerate platform icons from source SVG

What's Changed

New Contributors

Full Changelog: v2.0.1...v2.0.2