iMac Mid-2010 (iMac11,2, Radeon HD 4670): no brightness control and black screen after suspend — both root-caused, both fixed

Ubuntu Version

Ubuntu 24.04 LTS Flavors

Desktop Environment (if applicable)

XFCE

Problem Description

@90ninety — good news on both of your iMac Mid-2010 threads, which auto-closed before anyone had an answer: “Backlight staying on & no brightness control” (iMac Mid 2010 Backlight staying on & No brightness control) and “Monitor off after resuming from suspend” (Imac Mid 2010, monitor off after resuming from suspend AMD GPU). Same machine here (iMac11,2, Clarkdale i3-540, RV730 / Mobility Radeon HD 4670), same two symptoms, now understood. This is a solution post rather than a question.

1. No brightness control / backlight ignores the hotkeys. The firmware exposes an ACPI backlight device (acpi_video0) that is a dummy on this board — it accepts values and nothing happens — and because it exists, the radeon driver skips registering its own backlight (dmesg says “Skipping radeon atom DIG backlight registration”). Fix: add acpi_backlight=native to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub, run sudo update-grub, reboot. You get radeon_bl1 (0–255) driving the real PWM; the hotkeys and the slider work immediately.

2. Black screen after waking from suspend (machine is up, Caps Lock works, screen dark). The eDP panel power-sequencer register in the GPU (MMIO 0x7b0c on the RV730) is set by Apple’s EFI at boot and cleared by S3 resume (and by radeon GPU resets). Nothing in the driver restores it, so the panel stays unpowered while everything else runs. Writing the boot-time value back (0x00010201) lights the panel within ~3 s. A 10-line root-only workaround (a systemd-sleep hook), the measurements, and the bisect that found the register are in the upstream report: https://gitlab.freedesktop.org/drm/amd/-/issues/5719 — that’s also where a kernel-side fix will be tracked.

One more thing worth checking on these iMacs under Linux: the SMC gets no fan policy, so all three fans sit at their minimum; my HDD was at 56 °C. Fan floors can be set through /sys/devices/platform/applesmc.768/fan*_min.

Happy to answer questions here.

Relevant System Information

Apple iMac11,2 (Mac-F2238AC8), Intel Core i3-540, AMD RV730/M96-XT Mobility Radeon HD 4670 [1002:9488] (radeon KMS, 256 MB VRAM), internal eDP 1920x1080 panel, EFI boot. Linux Mint 22.3 (Ubuntu 24.04 base), kernel 7.0.0-30-generic HWE, Mesa 25.2.8, X11. Kernel cmdline: quiet splash acpi_backlight=native

Error Messages / Logs

Before the fix (default acpi_backlight):
radeon 0000:01:00.0: [drm] Skipping radeon atom DIG backlight registration
After adding acpi_backlight=native:
[drm] radeon atom DIG backlight initialized (-> /sys/class/backlight/radeon_bl1)

After a GPU-lockup reset with the panel dark (same register cleared):
[drm:radeon_dp_link_train_cr [radeon]] ERROR displayport link status failed
[drm:radeon_dp_link_train_cr [radeon]] ERROR clock recovery failed

Register 0x7b0c: 0x00010201 while lit (cold boot, before suspend, even with DPMS off) vs 0x00100200 after S3 resume / after GPU reset.

What I’ve Tried

Ruled out (no effect): xset dpms force on, xrandr --output eDP --off/–auto (full modeset), restarting the compositor, backlight PWM to max via radeon_bl1, restoring the DC_GPIO_PWRSEQ and GPIOPAD registers that resume also clears. Worked: writing 0x00010201 back to MMIO 0x7b0c after resume (and after GPU resets) — verified over a dozen resumes; bisected by replaying the post-resume register values on a lit panel (goes dark) and restoring them (lights).

Moved to Lounge > Tips & Tricks

Thanks for sharing with the community, much appreciated.

And welcome to Ubuntu Discourse :slight_smile:

1 Like