Releases: raspberrypi/rpi-imager
Releases · raspberrypi/rpi-imager
v2.0.8: Bugfixes, Fastboot improvements
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
- Screenshot by @nafanz in #1559
- Improve french translation by @martignoni in #1560
- Added a state machine for handling PuTTY's multiline SSH keys by @bjepson in #1574
- 2.0.8: Bugfixes, fastboot improvements by @tdewey-rpi in #1582
- Update Slovak translation. by @jose1711 in #1571
- 2.0.8: GH templates, changelog by @tdewey-rpi in #1583
- fix(stall): Relax thresholds, don't count final sync as stallable. by @tdewey-rpi in #1584
New Contributors
Full Changelog: v2.0.7...v2.0.8
v2.0.7
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
- @rc-chuah made their first contribution in #1480
- @Ferdinaelectro1 made their first contribution in #1481
- @eduardoaddad made their first contribution in #1490
- @Sype0 made their first contribution in #1488
- @wallentx made their first contribution in #1505
- @4RH1T3CT0R7 made their first contribution in #1501
Full Changelog: v2.0.6...v2.0.7
v2.0.7-rc2: UI polish, experimental features
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
- @rc-chuah made their first contribution in #1480
- @Ferdinaelectro1 made their first contribution in #1481
- @eduardoaddad made their first contribution in #1490
- @Sype0 made their first contribution in #1488
- @wallentx made their first contribution in #1505
- @4RH1T3CT0R7 made their first contribution in #1501
Full Changelog: v2.0.6...v2.0.7-rc2
v2.0.6: Fixup button width calculations, DE translation
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
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
- Add capabilities to create_local_json by @tdewey-rpi in #1458
- v2.0.5: Update dialog fixed, macOS icon variants fixed by @tdewey-rpi in #1465
Full Changelog: v2.0.4...v2.0.5
v2.0.4
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
- Fix external tools (runuser, xdg-open) failing in AppImage due to
- 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
- Use Pathlib to generate file:// URIs, instead of creating them manually by @lurch in #1423
- fix(DiskFormatter): Large drive handling (>8GB) by @tdewey-rpi in #1451
- feat(ImageWriter): Add support for parsing .gz files for size informa… by @tdewey-rpi in #1452
- fix(asyncio): Fix behaviour with misbehaving storage devices by @tdewey-rpi in #1453
- chore(release): v2.0.4 by @tdewey-rpi in #1454
- Update rpi-imager_ca.ts by @xeanhort in #1424
- v2.0.4: Capture Sha256 verification hashes in performance profiles by @tdewey-rpi in #1456
- update korean translate by @RuffaloLavoisier in #1430
New Contributors
Full Changelog: v2.0.3...v2.0.4
2.0.3: Performance, bugfixes
✨ 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
✨ 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
xhostand properXAUTHORITYhandling - Install scalable SVG icon instead of fixed-size PNG for better HiDPI support
Windows
- Migrate file dialogs from legacy
GetOpenFileNameAPI to modernIFileDialogCOM 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_formatfield 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_SYNCflag 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
- 2.0.2: Refinement by @tdewey-rpi in #1314
- Romanian translation added by @valimaties in #1350
- Update Portuguese translation by @hugok79 in #1353
- Translate strings into French by @martignoni in #1323
- Czech translation added by @walken11 in #1375
New Contributors
- @valimaties made their first contribution in #1350
- @walken11 made their first contribution in #1375
Full Changelog: v2.0.1...v2.0.2
v2.0.0: A new Imager
Headline
What if we just changed...everything*?
https://www.raspberrypi.com/news/a-new-raspberry-pi-imager/
*(311 changed files with 79,315 additions and 17,156 deletions, to be more accurate)
What's Changed
- New UI
- New installer for Windows
- New back-end writing algorithms
- New download algorithms
- Accessbility annotations throughout
- Raspberry Pi Connect integration
- Keyboard navigation
- Enhanced guardrails
- New CLI-only package
- So, so much more.
New Contributors
- @paulober made their first contribution in #1181
- @mhalano made their first contribution in #1204
- @Omikorin made their first contribution in #1218
Full Changelog: v1.9.6...v2.0.0
v2.0.0-rc4: Accessibility, Open WiFi, rpi-connect Windows fixes
What's Changed
- Update to new imager 2.0 json spec by @paulober in #1248
- Fix wifi country decoding and cloud-init netcfg for public networks by @paulober in #1249
- feat(ifAndFeaturesStep+cloudinit): Add 1-Wire support by @paulober in #1256
- fix(IfAndFeaturesStep): Update focus group handling for gadget confirmation dialog by @paulober in #1257
- Fix rpi-connect cb by adding Qt IPC and single-instance on Windows by @paulober in #1253
- feat(DoneStep): Add interfaces and features to done summary by @paulober in #1258
- fix(WifiStep): Update hidden ssid setting restoring by @paulober in #1259
- fix(ImOptionButton): Update broken references + improve accessibility by @paulober in #1260
- fix(RepositoryDialog): Dynamic retrieval of default repo URL by @paulober in #1261
- feat(WifiStep): Open/Secure Wi-Fi mode UI separation by @paulober in #1265
- Update Georgian translation by @NorwayFun in #1264
- i18n: Hebrew translation update by @yarons in #1254
- Update german translation (again) by @rejas in #1245
Full Changelog: v2.0.0-rc3...v2.0.0-rc4