Repository navigation
Support pre-GCN AMD GPUs and BCM4321 wireless - #10936
alkevintan wants to merge 6 commits into
Conversation
The 2007-2008 iMacs and MacBooks ship a BCM4321, which the wl driver covers alongside the BCM4360 and BCM4331 already matched here. Fold the id checks into one grep so the list stays readable at five ids. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AUboE7GBC75XXqJC1pYUSk
RADV only drives GPUs bound to amdgpu. Pre-GCN cards stay on radeon, where vulkan-radeon still installs radeon_icd.json and every device enumeration fails with VK_ERROR_INCOMPATIBLE_DRIVER. That stray ICD is all omarchy-hw-vulkan looks for, so it answered yes on machines with no working Vulkan, and omarchy-voxtype-install enabled GPU acceleration off the back of it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AUboE7GBC75XXqJC1pYUSk
hyprsunset sends its temperature to Hyprland as a colour transform matrix over hyprland-ctm-control-v1, and aquamarine submits a CTM only on the DRM atomic path. A driver without atomic modesetting accepts the request and drops it, so hyprctl answers ok, the temperature reads back, and the panel never changes. radeon is the one such driver still in use; on a Radeon HD 2400 it logs "crtc doesn't support CTM". omarchy-hw-nightlight answers no only when every DRM card is on radeon: a machine with another GPU may be driving its display from that one, and hiding a working feature is worse than leaving a broken one visible. The menu uses it to drop the row, and the toggle refuses up front rather than running its retry loop and claiming a success nobody can see. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AUboE7GBC75XXqJC1pYUSk
Resolves the two conflicts: the nightlight menu row keeps its omarchy-hw-nightlight guard beside quattro's new Herdr Theme Sync row, and fix-bcm43xx.sh keeps the wider id match while dropping linux-headers, which quattro now treats as a base-system guarantee for DKMS drivers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hardware setup reads sysfs from the installer's kernel. An ISO booted with nomodeset leaves a GCN card unbound, and requiring amdgpu then dropped vulkan-radeon from a machine that boots the installed system on amdgpu. Skip only when an AMD GPU is on radeon and none is on amdgpu, which is the case the change is for. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Codex Medium <noreply@openai.com>
14e4:4353 is BCM43224, which wl does drive, so the test called it unsupported and would fail the day the installer adds it. BCM4350 (14e4:43a3) is a brcmfmac card wl must never be pulled in for. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Codex Medium <noreply@openai.com>
|
| # and this command would claim success over a panel that never changed. Say so | ||
| # instead. The menu hides this row on such hardware; this covers the keybind, | ||
| # the CLI, and anything reading --status. | ||
| if ! omarchy-hw-nightlight; then |
There was a problem hiding this comment.
On a radeon-only machine, this guard blocks the CLI toggle, but the bar indicator calls the QML nightlight service directly. That service still sends the temperature to Hyprland and marks nightlight as enabled. Clicking the indicator therefore reports success even though the panel does not change. The same capability check needs to cover the bar’s control path.
Knowledge Base Used: Hardware profiles and device controls
| if [[ $vendor == "AMD" ]] && amd_gpu_only_on_radeon; then | ||
| echo "Skipping vulkan-radeon: AMD GPU is on the radeon driver, which RADV cannot drive" | ||
| continue |
There was a problem hiding this comment.
Upgrades still install unusable Vulkan
On a radeon-only machine, this hardware pass skips vulkan-radeon, but the quattro upgrade and its hardware backfill migration still install it for any AMD display device. The skip also leaves an already-installed package in place. Those machines can therefore retain or acquire the unusable ICD, so the Vulkan probe can still report support where there is no working Vulkan device.
Knowledge Base Used: Install stages and package sets
|
The classification is unsettled, so this round stopped before testing anything. Two models classify items for the queue, and they disagree on this one. Claude Opus 5.5 reads it as a hardware compatibility fix: Omarchy installs on these machines and then leaves them with no Wi-Fi, with a Vulkan probe that answers yes on a GPU RADV cannot drive, and with a nightlight toggle that reports success while doing nothing. Codex Medium reads it as an enhancement that adds support for hardware the installer never covered. Both readings fit part of the change. The BCM4321 ids are new hardware support, and the Vulkan and nightlight changes fix wrong behaviour on hardware Omarchy already installs on. An item gets no class label until the two agree, so I removed Nothing ran on a worker this round. Here is what was read against
omabot added three commits to this branch in earlier rounds:
Whatever class it gets, the GPU and Wi-Fi behaviour can only be confirmed on real hardware. A worker VM has neither a radeon GPU nor a BCM4321, so a stubbed sysfs tree would only show that the detection does what it says. #10910 and #13532 also edit |
Three hardware fixes found while bringing Omarchy up on a 2007 iMac (iMac7,1 — Core 2 Duo, Radeon HD 2400 XT / RV610, BCM4321). All three affect any pre-GCN AMD machine, not just Apple hardware.
Verified on the machine itself against the stock Arch packages —
hyprland 0.56.2-2,aquamarine 0.15.0-2,mesa 26.2.2. Hyprland does run on this GPU: it falls back to a GLES 3.0 context and to the legacy DRM interface, and holds 60 Hz at 1680x1050 with blur and shadows on. These three fixes are what stood between that and a clean install.1.
broadcom-wl-dkmsfor BCM4321fix-bcm43xx.shmatched only14e4:43a0and14e4:4331. The 2007–2008 iMacs and MacBooks ship a BCM4321 (14e4:4328, also4329/432a), which thewldriver covers alongside the two already listed. Without it the machine installs with no wireless at all.Folded the id checks into a single
grep -qEso the list stays readable at five ids.2. Skip
vulkan-radeonon pre-GCN AMD GPUsRADV only drives GPUs bound to
amdgpu. On aradeon-driven cardvulkan-radeonstill installsradeon_icd.json, and enumeration then fails:That stray ICD is all
omarchy-hw-vulkanlooks for, so it answered yes on a machine with no working Vulkan — andomarchy-voxtype-installrunsvoxtype setup gpu --enableoff the back of that check. Not installing the ICD on hardware RADV cannot drive makes the probe honest again.3. Hide nightlight where the GPU cannot apply a CTM
hyprsunsetsends its temperature to Hyprland as a colour transform matrix overhyprland-ctm-control-v1, and aquamarine submits a CTM only on the DRM atomic path —impl/Legacy.cppnever does. Onradeon, Hyprland logs:The request is accepted and dropped, so
hyprctl hyprsunset temperature 4000returnsok, the value reads back as4000, the shell's nightlight state flips to "on" — and the panel never changes. Screenshots taken at 6500K and 4000K were identical. It is a silent no-op rather than an error, which is the part worth fixing.omarchy-hw-nightlightanswers no only when every DRM card is onradeon, so a machine that also has an atomic-capable GPU keeps the feature. The menu drops the row, andomarchy-toggle-nightlightrefuses up front rather than running its retry loop and reporting a success nobody can see.This is the most opinionated of the three. It hides a UI element based on driver-name inference, because there is no shell-visible way to ask whether a CRTC exposes a CTM property. Happy to drop this commit and land only 1 and 2 if you would rather handle it differently.
Testing
New test files:
test/shell.d/broadcom-wifi-test.sh— 3 assertions, including a regression guard for BCM4360/BCM4331test/shell.d/vulkan-hardware-test.sh— 4 assertions (radeon skips, amdgpu still installs, unbound driver skips, Intel unaffected)test/shell.d/nightlight-hardware-test.sh— 5 assertions, including the mixed-GPU and empty-tree casestest/shell.d/nightlight-test.shgains a stub for the new capability probe plus 2 assertions for the unsupported path; its existing 14 assertions still pass.Full
./test/shellon Linux / bash 5.2: 20 failures before and after, against a clean clone ofquattro(the 20 are missingmagickandluain my environment, not related to these changes)../test/cliis unchanged.One note for anyone running these on a Mac:
install/hardware/vulkan.shneeds bash 5, sincedeclare -Asilently drops the AMD entry under the bash 3.2 that ships with macOS. The test invokes"$BASH"rather thanbashfor that reason.🤖 Generated with Claude Code
https://claude.ai/code/session_01AUboE7GBC75XXqJC1pYUSk