Unsolved

1 Rookie

 • 

4 Posts

 • 

13 Points

240

August 4th, 2026 20:29

Brightness bug in ubuntu on a dell laptop

# Intel Backlight Not Working on Dell Inspiron 15 (3511) — Ubuntu Linux (Windows Works Fine)

## Hardware
- **Lapmargin: 0; ;margin: 0;">## The Problem
The physical brightness keys are detected correctly — the on-screen GUI slider moves up and down as expected — but the actual screen backlight never changes. It stays fixed at one brightness level no matter what.

**Windows works perfectly on the same machine (dual boot).** Brightness control functions normally there, which confirms the panel, backlight hardware, and physical keyboard hotkeys are all working. This points to the failure being a communication problem specifically between the Linux kernel (`i915`), and Dell's EC/ACPI firmware — not a hardware fault.

## What We've Proven
Writing directly to the hardware register confirms the driver is issuing commands, but the panel ignores them:

```
echo 50 | sudo tee /sys/class/backlight/intel_backlight/brightness
```

The file updates successfully and `cat`ing it back shows the new value, but the physical screen brightness does not change. So this isn't a missing-GUI or broken-hotkey-daemon issue — `i915` is sending the command, but the embedded controller (EC) or PWM/panel line is not acting on it under Linux.

## Troubleshooting Steps Attempted (none have worked)

**1. Kernel parameter tweaks (`/etc/default/grub`, `GRUB_CMDLINE_LINUX_DEFAULT`)**
- `acpi_backlight=native` — forces Intel direct control. *Failed.*
- `acpi_backlight=vendor` — forces Dell's proprietary firmware path; `dell_wmi` and `dell_laptop` modules loaded. *Failed.*
- `acpi_backlight=video` — generic ACPI video driver. *Failed.*
- `acpi_backlight=none` — stripped ACPI backlight entirely; this broke the GUI slider and hotkey detection completely, so it was reverted.

**2. Intel graphics driver tweaks**
- `i915.enable_dpcd_backlight=1` — force DisplayPort Configuration Data (DPCD/AUX) backlight protocol in case the panel uses eDP AUX instead of PWM. *Failed.*
- `i915.enable_psr=0` — disabled Panel Self-Refresh in case it was freezing backlight registers. *Failed.*
- Blacklisted the `xe` module in `/etc/modprobe.d/` and rebuilt `initramfs` to guarantee `i915` had exclusive control (both `i915` and `xe` were showing as loaded). *Failed.*

**3. Hardware / power state resets**
- Disabled Windows Fast Startup and hibernation, to rule out Windows locking ACPI power states before booting Ubuntu. *Failed.*
- Full motherboard power drain (30-second power button hold, unplugged) to clear a potentially stuck Dell Embedded Controller. *Failed.*

**4. Software-level workaround**
- Installed the **Soft Brightness Plus** GNOME extension to bypass the hardware entirely and dim via gamma/software instead. With default settings, it did not visibly dim the screen.

**5. Deeper diagnosis (ACPI table trace + SMI verification)**

Dumped and disassembled the DSDT to trace the actual brightness control path:
```
sudo acpidump -o acpi.dat && acpixtract -a acpi.dat && iasl -d dsdt.dat
```

Findings:
- `_BCM` (Set Brightness) does **not** talk to any graphics register. It packs the brightness value into a buffer and calls `GENS(0x09, BRT3, SizeOf(BRT3))`.
- Since the argument is a Buffer, `GENS` routes to `SMBF`, which writes the value into a memory-mapped region at `SMBA = 0x64513000`, then calls `ASMI()`.
- `ASMI()` writes `0xE0` to I/O port `0xB2` — a genuine **System Management Interrupt (SMI)** trigger. This hands control to the BIOS's SMM (System Management Mode) firmware, which is opaque/binary and identical for both Windows and Linux, since it's firmware, not OS-level code.
- Confirmed with `ls /sys/class/backlight/` that only `intel_backlight` was present (native `i915` PWM/DPCD register control), meaning the SMI-based ACPI path above was never actually being exercised by default. Adding `acpi_backlight=video` to GRUB and rebooting exposed a second device, `acpi_video0`, which **does** route through the `_BCM`/`_BQC`/SMI path above. Writing to it directly (`echo 3 | sudo tee /sys/class/backlight/acpi_video0/brightness`) still did not change the physical screen.
- **Verified the SMI is actually firing** using the CPU's `IA32_SMI_COUNT` MSR (register `0x34`, readable via `rdmsr -p 0 0x34` from `msr-tools`). The count incremented by exactly 1 on every single write to `acpi_video0/brightness` (`0x9f0 → 0x9f1 → 0x9f2`), confirming the ACPI method, the SMI trigger, and the BIOS's SMM handler all execute correctly end-to-end. The backlight still does not change.

**Conclusion: this points to a firmware (BIOS/SMM) bug, not a Linux kernel, driver, or configuration issue.** The full software/ACPI chain — `_BCM` → `GENS` → `SMBF` → `ASMI` → SMI → SMM handler — executes exactly as designed and is confirmed via hardware MSU counter to reach Dell's BIOS firmware code. Whatever the SMM handler does once triggered is not something any OS-side driver, kernel parameter, or workaround can influence. Windows working does not contradict this: Windows very likely uses a separate, non-ACPI path (e.g. Intel's own graphics driver brightness interface) rather than this SMI-based one, so it may simply never exercise this particular (broken) firmware code.

## Current Status / Ask
- Checked BIOS version via `dmidecode -s bios-version`; comparing against Dell's latest available BIOS for this service tag, since this class of bug (SMM handler accepting the correct interrupt but not acting on it) is exactly what firmware updates are typically issued to fix.
- If already on the latest BIOS: filing this with Dell support and/or the kernel/freedesktop ACPI bug trackers, since the exact AML trace and SMI-counter verification above should save whoever picks it up a lot of diagnostic time.
- Open to hearing from anyone with the same laptop (or Tiger Lake Dell Inspiron/Latitude models generally) who has hit this same `_BCM`-via-SMI dead end, especially if a specific BIOS version resolved it.

5 Journeyman

 • 

2K Posts

 • 

7.5K Points

August 5th, 2026 08:37

Hi

If you LIVE boot Debian or OpenSuSE or Mint or Zorin do they have the same problem?

1 Rookie

 • 

4 Posts

 • 

13 Points

August 5th, 2026 11:36

@anne_droid​ 
Hi anne , I only have ubuntu 26lts and windows 11 on my system and don't stable internet to be able to download other linux distributions to test the functionality .
 
Kind regards 

1 Rookie

 • 

4 Posts

 • 

13 Points

August 5th, 2026 22:05

Update: BIOS update tested, software interference ruled out

Updated to the latest available BIOS for this service tag and retested from scratch — still broken.

  • With acpi_backlight=video in GRUB, /sys/class/backlight/ again shows only acpi_video0.
  • Writing to acpi_video0/brightness still does not change the physical screen after the update.

Ruled out software/daemon interference: Switched to a bare virtual terminal (Ctrl+Alt+F3) — no desktop session, no extensions, no daemons running at all — and repeated the write there. Still zero change to the physical backlight with nothing else running that could possibly interfere. Combined with the SMI-counter check from my last post (confirmed via the IA32_SMI_COUNT MSR that the SMI genuinely fires on every write), this rules out GNOME's power daemon, power-profiles-daemon, or any extension as the cause. The full chain — ACPI method → SMI → SMM handler — executes correctly and reaches Dell's firmware every time; the SMM handler itself just isn't acting on it.

Current workaround, for anyone else stuck on this: Using GNOME's Soft Brightness Plus extension to dim via gamma/overlay in the meantime. Worth flagging: it does not reduce power draw. It darkens what's rendered on screen, not the actual backlight LED, which is still burning at whatever level it's stuck at regardless. Fine for eye comfort while waiting, not a battery-life fix.

At this point this looks like a genuine firmware/SMM bug that isn't fixable from the OS side, even on the current BIOS. Still hoping this reaches someone who can look at the SMM handler directly — happy to provide the full DSDT dump or any other diagnostics if useful.

1 Rookie

 • 

4 Posts

 • 

13 Points

August 7th, 2026 08:36

Final Update : Root cause found — kernel regression, not a BIOS/firmware bug
Previous conclusion was wrong — this is not a Dell firmware issue. Apologies for the misdirection in my earlier posts.
After more testing, we found the real cause: a Linux kernel regression introduced somewhere between kernel 7.0.0-22 and 7.0.0-28. Brightness works perfectly on 7.0.0-22 and is completely broken on 7.0.0-28 and 7.0.0-29.

How we confirmed it:
Booted the same Ubuntu ISO used to install the system (which ships with kernel 7.0.0-14) as a live session from USB. Brightness worked perfectly in the live session — same hardware, same BIOS, same panel — which immediately ruled out the BIOS/SMM firmware conclusion from my earlier posts. The only differences between the working live session and the broken installed system were the kernel version and the linux-firmware-intel-graphics package version (0ubuntu2 vs 0ubuntu2.1).
We downgraded linux-firmware-intel-graphics back to 0ubuntu2 and confirmed the DMC firmware blob (tgl_dmc_ver2_12.bin.zst, md5: de018e9fa626be8cf8d388c0bf767410) matched exactly between the working live session and the installed system after downgrade — ruling out the firmware package as the cause.

We then tested kernels individually:
7.0.0-29 — broken
7.0.0-28 — broken
7.0.0-22 — brightness works perfectly
This confirms a kernel regression introduced between 7.0.0-22 and 7.0.0-28 on Ubuntu resolute (26.04), affecting Intel Tiger Lake [Iris Xe] backlight control on the Dell Inspiron 15 3511.

Hardware for reference:
Dell Inspiron 15 3511
Intel Tiger Lake-LP GT2 [Iris Xe Graphics] (device ID 9a49)
Ubuntu 26.04 (resolute), dual boot with Windows
Backlight interface: /sys/class/backlight/intel_backlight
DMC firmware: i915/tgl_dmc_ver2_12.bin (v2.12)

Current workaround: Pinned to kernel 7.0.0-22-generic via apt-mark hold and set it as the default boot entry in GRUB. Brightness is fully working again.

Next step: Filing this as a kernel bug report (ubuntu-bug linux) since this is clearly a regression in the Ubuntu kernel packaging between those two versions, not a Dell firmware issue. Happy to provide full dmesg, ACPI dumps, or SMI counter data from both kernel versions if useful for anyone investigating.

5 Journeyman

 • 

2K Posts

 • 

7.5K Points

August 7th, 2026 10:34

Hi

Much like I said, boot a live ISO, and start from there.

NB: Sometimes in GrUB you get recovery options to earlier kernels to boot with/from, which sometimes (as I know) show a difference.

BCM43142 suffers from a similar fate in 7.0.0.28 but not in 6.17.0.42.

(edited)

1 Rookie

 • 

2 Posts

 • 

9 Points

August 21st, 2026 16:53

@mohammedxmoussa​ Hi, just wanted to say thanks since I had the same behavior on my own laptop (Dell Inspiron 15 7590 with nvidia dGPU). Going back to kernel 7.0.0-22-generic worked like a charm!

I'll keep an eye on future kernel updates.

No Events found!

Top