docs: correct the firmware split — graphics needs a Windows blob too

I had this wrong. The claim that accelerated graphics works on the firmware
Fedora ships does not survive contact with the device tree.

Fedora does package an sdm845/a630_zap.mbn, which is what led me astray, but
that is the generic Snapdragon 845 zap shader. The C630's node in
sdm850-lenovo-yoga-c630.dts names qcom/sdm850/LENOVO/81JL/qcdxkmsuc850.mbn
specifically — model-signed, present only in the machine's Windows partition.
Until it is supplied the display is unaccelerated.

Also add qcslpi850.mbn and qcvss850.mbn, which were missing entirely, and
attribute the sensor hub to slpi_pas rather than cdsp_pas. The list is now
every firmware-name property in the mainline device tree rather than a
recollection of forum posts, so it should be complete: eight files, not five.

WiFi and Bluetooth are unaffected — ath10k WCN3990 including wlanmdsp.mbn is
genuinely redistributable and genuinely shipped.

Add a section on locating the blobs on an old backup, for the case where
Windows is long gone from the machine.

Only comments changed in config/packages/base.pkgs, so the package set hashes
identically and the staged base stays valid.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWRjNJMistCy6ngXH5aJLS
This commit is contained in:
2026-07-27 12:51:01 +03:00
parent d168df0977
commit 3762f13d8b
6 changed files with 90 additions and 37 deletions

View File

@@ -10,27 +10,66 @@ installs them:
| Package | Files | Enables |
|---|---|---|
| `qcom-firmware` | `qcom/a630_gmu.bin`, `qcom/a630_sqe.fw`, `qcom/sdm845/a630_zap.mbn` | Adreno 630 — accelerated graphics via freedreno |
| `atheros-firmware` | `ath10k/WCN3990/hw1.0/{firmware-5.bin,board-2.bin,wlanmdsp.mbn}` | WiFi and Bluetooth |
| `qcom-firmware` | `qcom/a630_gmu.bin`, `qcom/a630_sqe.fw` | The generic half of the Adreno 630 — necessary but not sufficient |
So graphics and networking work on a freshly written image with no extra steps.
Networking therefore works on a freshly written image. Graphics does not: see
below.
## What has to come off the Windows partition
The SDM850's DSP and display firmware is signed against per-model keys. Nobody
can redistribute it, and it exists on your machine only inside its Windows
install:
These are signed against per-model keys, so nobody can redistribute them and
they exist on your machine only inside its Windows install. The list is not a
guess — it is every `firmware-name` property in the mainline device tree,
`arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts`:
| File | Enables |
|---|---|
| `qcadsp850.mbn` | Audio DSP — speakers, microphone |
| `qccdsp850.mbn` | Compute DSP — sensor hub, so lid switch, accelerometer, auto-rotate |
| `qcdxkmsuc850.mbn` | Display/UEFI secure code |
| `qcdsp1v2850.mbn`, `qcdsp2850.mbn` | Modem DSP stages |
| `ipa_fws.elf` | IPA — needed by the modem path |
| File | Device tree node | Lost without it |
|---|---|---|
| `qcdxkmsuc850.mbn` | `gpu_zap_shader` | **Accelerated graphics** |
| `qcadsp850.mbn` | `adsp_pas` | Audio — speakers, microphone |
| `qcslpi850.mbn` | `slpi_pas` | Sensor hub — lid switch, accelerometer, auto-rotate |
| `qccdsp850.mbn` | `cdsp_pas` | Compute DSP offload |
| `qcvss850.mbn` | `venus` | Hardware video decode |
| `qcdsp1v2850.mbn` | `mss_pil` | Modem, stage 1 |
| `qcdsp2850.mbn` | `mss_pil` | Modem, stage 2 |
| `ipa_fws.elf` | `ipa` | IPA datapath, needed by the modem |
They belong under `/lib/firmware/updates/qcom/sdm850/LENOVO/81JL/`.
The GPU one is worth calling out, because it is easy to assume otherwise:
Fedora does ship an `sdm845/a630_zap.mbn`, but that is the generic
Snapdragon 845 zap shader and **not** what this device asks for. The C630's
device tree names `qcom/sdm850/LENOVO/81JL/qcdxkmsuc850.mbn` specifically, so
until you supply it you get an unaccelerated display.
Each file is independent, so a partial recovery is still worth having —
`qcdxkmsuc850.mbn` on its own buys you working graphics.
## Finding them on a backup
If Windows is long gone from the machine but you kept a copy of the files, one
search catches all eight, since seven share a suffix:
```sh
find /mnt/backup -type f \
\( -iname 'qc*850.mbn' -o -iname 'ipa_fws.elf' -o -iname 'bdwlan*.bin' \) \
-printf '%10s %p\n'
```
They originally lived in `C:\Windows\System32\DriverStore\FileRepository\`, in
directories named `qcdx850.inf_arm64_*` and `qcadsp*.inf_arm64_*`. If the loose
files turn up nothing, look for those directories wholesale:
```sh
find /mnt/backup -type d -iname 'qc*.inf_arm64_*'
```
Expect a few hundred KB to a few MB each. `file` reports them as `data` — they
are signed Qualcomm MBN containers, not ELF, apart from `ipa_fws.elf`.
Lenovo does not appear to publish a driver package for the 81JL containing
these, so an old backup or a surviving Windows partition are the only routes.
## Extracting them
The image ships Fedora's `qcom-firmware-extract`. Run it once: