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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user