| QCOM-FIRMWARE-EXTRACT(8) | System Administration | QCOM-FIRMWARE-EXTRACT(8) | 
NAME¶
qcom-firmware-extract - extract Qualcomm Snapdragon X firmware from a local Windows install and package it for Debian/Ubuntu
SYNOPSIS¶
qcom-firmware-extract [-d PATH]
DESCRIPTION¶
qcom-firmware-extract mounts a Windows system partition (BitLocker or plain NTFS), locates Qualcomm DSP firmware files under Windows/System32/DriverStore/FileRepository and builds a Debian package that installs those files into /lib/firmware/updates/qcom/<device> . It then installs the package and updates the initramfs so the firmware is available on next boot.
Device selection is automatic: the script reads /proc/device-tree/model and maps known device models to the appropriate firmware directory.
Unless -d is supplied, the script searches NVMe devices, decrypts a BitLocker volume (read-only) via dislocker when needed, or mounts the first plain NTFS partition it finds, also read-only.
The generated package is named:
and declares Breaks/Replaces/Conflicts against qcom-x1e-firmware-extracted to avoid file collisions.
Upon successful creation, the script installs the package with apt-get and runs:
Finally, it prints a message reminding you to reboot.
OPTIONS¶
- -d PATH
- Use an explicit search path instead of mounting a Windows partition. This should point at the Windows DriverStore FileRepository directory that contains the firmware files, e.g.: /mnt/Windows/System32/DriverStore/FileRepository
SUPPORTED DEVICES¶
The following models are recognized (by exact or prefix match of /proc/device-tree/model as shown):
- Acer Swift 14 AI (SF14-11) -- x1e80100/ACER/SF14-11
- ASUS Vivobook S 15 -- x1e80100/ASUSTeK/vivobook-s15
- ASUS Zenbook A14 (UX3407QA[, LCD|, OLED]) -- x1p42100/ASUSTeK/zenbook-a14
- ASUS Zenbook A14 (UX3407RA) -- x1e80100/ASUSTeK/zenbook-a14
- Dell Inspiron 14 Plus 7441 -- x1e80100/dell/inspiron-14-plus-7441
- Dell Latitude 7455 -- x1e80100/dell/latitude-7455
- Dell XPS 13 9345 -- x1e80100/dell/xps13-9345
- HP EliteBook 6 G1q* -- x1p42100/hp/elitebook-6-g1q
- HP EliteBook Ultra G1q -- x1e80100/hp/elitebook-ultra-g1q
- HP Omnibook X 14 -- x1e80100/hp/omnibook-x14
- Lenovo ThinkPad T14s Gen 6 -- x1e80100/LENOVO/21N1
- Lenovo Yoga Slim 7x -- x1e80100/LENOVO/83ED
- Microsoft Surface Laptop 7 (13.8 inch | 15 inch) -- x1e80100/microsoft/Romulus
- Samsung Galaxy Book4 Edge -- x1e80100/SAMSUNG/galaxy-book4-edge
If your device is not listed, the script aborts with an error. Extend the case statement to add support.
RUNTIME BEHAVIOUR¶
- Creates a temporary workspace under /tmp/fwfetch.* and ensures cleanup on exit.
- Mounts BitLocker volumes read-only using dislocker(1) to a loopback file, then mounts via ntfs-3g read-only; plain NTFS partitions are mounted read-only directly.
- Copies the newest matching firmware files among:
- Installs to /lib/firmware/updates/qcom/<device_path> with mode 0644.
- Builds a Debian package using dpkg-deb and installs it with apt-get (noninteractive, reinstall, fix dependencies).
- Runs update-initramfs -kall -u to include firmware in all installed kernels.
REQUIREMENTS¶
The following tools must be available (typically from Debian/Ubuntu repositories):
EXIT STATUS¶
Returns 0 on success. Non-zero on error. Because the script uses set -e , unexpected command failures cause immediate exit; on failure it prints the log from its temporary directory.
FILES¶
- /proc/device-tree/model
- Used to detect the current device model.
- Windows/System32/DriverStore/FileRepository
- Default search root on the Windows partition for firmware files.
- /lib/firmware/updates/qcom/<device>
- Destination for installed firmware files.
- /tmp/fwfetch.XXXXXXX/LOG
- Build and install log captured during execution.
EXAMPLES¶
Extract and package firmware by automatically locating and mounting the Windows partition:
Use a pre-mounted or copied DriverStore directory:
SECURITY¶
The script mounts any discovered Windows partition read-only and decrypts BitLocker volumes via dislocker in read-only mode. Verify you are extracting firmware from a trusted Windows installation.
LIMITATIONS¶
- Only searches NVMe devices (e.g. nvme0n1). Systems using SATA/eMMC are not scanned automatically; use -d.
- Only the listed devices are supported out of the box.
- Assumes an arm64 Debian/Ubuntu target with initramfs-tools present.
SEE ALSO¶
dislocker(1), mount.ntfs(8), dpkg-deb(1), update-initramfs(8)
AUTHORS¶
Script: Tobias Heider and contributors. Manpage: generated for operational use by administrators.
COPYRIGHT¶
This script packages firmware extracted from a local Windows installation. Respect the firmware's license terms and your local laws/policies before redistribution.
| 2025-08-24 | qcom-firmware-extract |