- Do not generate "error on writing to disk" error if it is the
result of the write being cancelled.
- Mac: QProcess::execute(cmdline) -> QProcess::execute(cmd, args)
to avoid depreceation warning.
When using image customization with an NVMe drive under RPI OS on a CM4,
the system will prompt non-root users for password when mounting the FAT file system.
(Passwordless mounting does is available for removable storage,
but the NVMe drive qualifies as internal storage instead).
- The mount command we send to udisks2 over dbus2 may timeout
before the user completed the password prompt.
Raise timeout to counter this.
- Print mount error details to console
- On mount error report error mounting in GUI instead of
"/config.txt does not exist" (which happened when mountDevice()
returned empty string)
- Check if config.txt exists on drive letter before proceeding to
write changes. Wait up to 3 seconds if not.
- Force drive letter assignment for portable SSDs and other devices
that pretend to be a fixed drive. (Windows only auto-assigns
drive letters for removable media).
Ref #171
- Adds "hidden" shift+ctrl+X shortcut for eXpert image customization
options.
Allows one to set certain options on RPI OS images, namely:
* disable overscan
* set hostname
* enable ssh and
- set Pi user password if using password authentication
OR
- set authorized_keys
(if running Imager on Linux/Mac this will
have contents of ~/.ssh/id_rsa.pub prefilled)
* configure wifi settings
(if computer running Imager is connected by wifi it will
prefill wifi SSID and if on Windows also PSK).
* set time zone and keyboard layout
Related to feature requests/issues:
Ref #127
Ref #86
Ref #102
Ref #73
Ref #68
Ref #25
Ref #12
- Option Window also allows setting a couple other general settings:
* Adds option for audible notification (beep) when imaging completes.
Closes#46
* Adds option not to eject media when done.
Closes#144
- No longer suspends a number of Windows services during Imaging
(We want Windows to detect the drive and mount it, or we may
not be able to alter files on FAT partition).
There are some user complaints that Imager hangs at "writing 0%"
Mention in the progress status what it is actually doing prior
to writing (e.g. opening storage, blkdiscarding,
zero'ing out MBR, starting download) to help diagnose
potential issues.
Normally the system will prompt the user to allow Imager access
to removable volumes.
Open preferences and ask user to allow Imager manually in a
corner case in which this does not occur.
If WriteFile() returns ERROR_ACCESS_DENIED and registry indicates
CFA is on, tell user rpi-imager (and fat32format) should be added
to the "allowed apps" in the CFA settings.
The moment we write the block containing the partition table
Windows services will start accessing the SD card and write data
to "System volume information" folder.
If others are writing to disk concurrently this may or may not
affect our ability to eject the drive.
Stop StorSvc temporarily between us writing the partition table
(saved for last) and ejecting the SD card, just in case.
Ref #75
For reasons unknown the device write statistics sometimes report
higher numbers than the number of bytes we wrote to the device on
some hardware. Causing write percentage in progressbar text
to exceed 100%
Maximize amount of bytes to what we wrote to the device.
This do will result in unreliable write progress on these devices
(it will then show amount of bytes written to cache instead of
what made it to device yet)
Closes#82
- Qt thinks UNC URLs should look like: file://1.2.3.4/share/file.img
libcurl likes them: file:////1.2.3.4/share/file.img
So correct that.
- Mention it is an unspecified libcurl error if libcurl passes us
an error code with an empty error message string.
Closes#65
Modern CPUs have special instructions to accelerate computing
SHA hashes.
The Qt QCryptographicHash code is standard C, so not taking
advantage of those though.
Outsource the hashing to OpenSSL that does.
Shaves off some seconds during verification stage.
- Use larger buffer size when writing uncompressed files
(was libcurl's default of 16 kb, change it to 128 kb)
- Uncompress the next MB of data, while it is hashing/writing to
disk in seperate thread.