Linux 7.1 Regression - Screen Brightness on MacBook Pro

More than a few weeks ago, I updated to the Linux kernel 7.1 (from 6.18.x), as a flimsy attempt to solve an unrelated wifi issue (it didn’t solve the wifi issue, haha).

Everything was fine except I noticed that I couldn’t change my screen brightness any more. I can adjust it up and down, but the screen’s brightness actually doesn’t change. I figured this regression would resolve eventually, but I got kinda annoyed and decided to try rolling down to Linux kernel 7.0 instead.

Rolling down to Linux 7.0 restored the screen brightness controls, yay!

Today, however, Manjaro’s rolling update came through and upgraded my kernel to Linux 7.1… I looked at that update and hoped that the screen brightness regression had been resolved but…nope!

So here we are! Manjaro Linux 7.1 and I can only use a phantom brightness control. Weird thing though…I can’t seem to find any other complaints about this on the internet, so I figured I’d start a thread here (given I’m using Manjaro), and hopefully the solution to this regression will emerge.

Does anybody know if the kernel changed something fundamental to the screen brightness, like introducing a new software switch? For example, this fedora post makes me wonder if it’s addressing the same problem, but grubby isn’t a Manjaro thing, and I’m not even sure if acpi_backlight=native is a MacBook thing.

Finding a solution is preferable to the workaround I’ve discovered:

Temporary workaround:

I mentioned the phantom brightness control… so I can adjust the brightness from 0% to 100% and nothing happens, but as I workaround I found that if I dim my ceiling light whilst adjusting the screen brightness higher, it seems like the MacBook’s screen brightness is increasing.

Furthermore, if I reverse my room’s dimmer to make the ceiling light brighter, whilst lowering the screen brightness, it seems like the MacBook’s screen brightness is decreasing.

I hold no responsibility to the risk of your sanity if you choose to use this workaround.

I’ve had issues with HWE (mainline) kernels before; in my case the trackpad not working (reliably). How well does it work with an LTS kernel e.g. linux618? If that works, I’d suggest staying with the LTS series.

It might also help if you provide the output of inxi -zv8. :wink:

It works fine on the LTS kernel (linux618), and it also works fine on linux70.
Of course, I could roll back, but the main problem is that this issue has emerged with linux71 and nobody seems to be talking about it… so hopefully people will be able to find this forum thread when seeking the solution.

I haven’t tried linux72 yet, which might have fixed the problem, perhaps I should give that a try…

New information: I’ve just discovered that the display doesn’t turn off when I close the lid, either (as per my configuration). So the backlight just stays on keeping my keyboard cosy and warm. I guess this means that the backlight is usually turned off through a brightness=0% mechanism, rather than a backlight=disable mechanism, when closing the lid.

❯ inxi -zv8
System:
  Kernel: 7.1.3-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 16.1.1
    clocksource: tsc avail: acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-7.1-x86_64
    root=UUID=927408b6-64c5-4528-8988-3da4e0c034f1 rw quiet splash
    resume=UUID=e27b6c87-4dcb-442b-944e-25b4b1db8440 udev.log_priority=3
  Desktop: KDE Plasma v: 6.6.6 tk: Qt v: N/A info: frameworks v: 6.27.0
    wm: kwin_wayland with: krunner vt: 1 dm: SDDM Distro: Manjaro
    base: Arch Linux
Machine:
  Type: Laptop System: Apple product: MacBookPro14,3 v: 1.0
    serial: <superuser required> Chassis: type: 9 v: Mac-551B86E5744E2388
    serial: <superuser required>
  Mobo: Apple model: Mac-551B86E5744E2388 v: MacBookPro14,3
    serial: <superuser required> uuid: <superuser required> Firmware: UEFI
    vendor: Apple v: 529.140.2.0.0 date: 06/23/2024
Battery:
  ID-1: BAT0 charge: 60.8 Wh (97.9%) condition: 62.2/76.6 Wh (81.1%)
    temp: 30.2 C volts: 12.82 min: 11.49 model: SMP bq20z451 type: Li-ion
    serial: N/A charging: status: full cycles: 182
  Device-1: apple_mfi_fastcharge_1-2 model: N/A serial: N/A charge: N/A
    status: N/A
  Device-2: hid-04:4b:ed:c7:d2:48-battery-144 model: Apple A1657 Mouse
    serial: N/A charge: N/A status: discharging
  Device-3: hid-2c:33:61:e8:c0:78-battery-144 model: Apple A1644 Keyboard
    serial: N/A charge: N/A status: discharging
Memory:
  System RAM: total: 16 GiB available: 15.51 GiB used: 6.37 GiB (41.1%)
  Message: For most reliable report, use superuser + dmidecode.
  Array-1: capacity: 16 GiB slots: 2 modules: 2 EC: None
    max-module-size: 8 GiB note: est.
  Device-1: DIMM0 type: LPDDR3 detail: synchronous size: 8 GiB
    speed: 2133 MT/s volts: curr: 1 width (bits): data: 64 total: 64
    manufacturer: 0x802C part-no: 0x4D5435324C31473332443450472D30393320
    serial: <filter>
  Device-2: DIMM0 type: LPDDR3 detail: synchronous size: 8 GiB
    speed: 2133 MT/s volts: curr: 1 width (bits): data: 64 total: 64
    manufacturer: 0x802C part-no: 0x4D5435324C31473332443450472D30393320
    serial: <filter>
PCI Slots:
  Permissions: Unable to run dmidecode. Root privileges required.
CPU:
  Info: model: Intel Core i7-7700HQ bits: 64 type: MT MCP arch: Kaby Lake
    gen: core 7 level: v3 note: check built: 2018 process: Intel 14nm family: 6
    model-id: 0x9E (158) stepping: 9 microcode: 0xF8
  Topology: cpus: 1x dies: 1 clusters: 4 cores: 4 threads: 8 tpc: 2
    smt: enabled cache: L1: 256 KiB desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB
    desc: 4x256 KiB L3: 6 MiB desc: 1x6 MiB
  Speed (MHz): avg: 800 min/max: 800/3800 scaling: driver: intel_pstate
    governor: powersave cores: 1: 800 2: 800 3: 800 4: 800 5: 800 6: 800 7: 800
    8: 800 bogomips: 44798
  Flags: 3dnowprefetch abm acpi adx aes aperfmperf apic arat
    arch_capabilities arch_perfmon art avx avx2 bmi1 bmi2 bts clflush
    clflushopt cmov constant_tsc cpuid cpuid_fault cx16 cx8 de ds_cpl dtes64
    dtherm dts epb ept ept_ad erms est f16c flexpriority flush_l1d fma fpu
    fsgsbase fxsr ht hwp hwp_act_window hwp_epp hwp_notify ibpb ibrs ida
    intel_pt invpcid lahf_lm lm mca mce md_clear mmx monitor movbe mpx msr
    mtrr nonstop_tsc nopl nx pae pat pbe pcid pclmulqdq pdcm pdpe1gb pebs pge
    pln pni popcnt pse pse36 pti pts rdrand rdseed rdtscp rep_good sdbg sep
    smap smep ss ssbd sse sse2 sse4_1 sse4_2 ssse3 stibp syscall tm tm2
    tpr_shadow tsc tsc_adjust tsc_deadline_timer vme vmx vnmi vpid x2apic
    xgetbv1 xsave xsavec xsaveopt xsaves xtopology xtpr
  Vulnerabilities:
  Type: gather_data_sampling mitigation: Microcode
  Type: ghostwrite status: Not affected
  Type: indirect_target_selection status: Not affected
  Type: itlb_multihit status: KVM: Split huge pages
  Type: l1tf mitigation: PTE Inversion; VMX: conditional cache flushes, SMT
    vulnerable
  Type: mds mitigation: Clear CPU buffers; SMT vulnerable
  Type: meltdown mitigation: PTI
  Type: mmio_stale_data mitigation: Clear CPU buffers; SMT vulnerable
  Type: old_microcode status: Not affected
  Type: reg_file_data_sampling status: Not affected
  Type: retbleed mitigation: IBRS
  Type: spec_rstack_overflow status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: IBRS; IBPB: conditional; STIBP: conditional;
    RSB filling; PBRSB-eIBRS: Not affected; BHI: Not affected
  Type: srbds mitigation: Microcode
  Type: tsa status: Not affected
  Type: tsx_async_abort status: Not affected
  Type: vmscape mitigation: IBPB before exit to userspace
Graphics:
  Device-1: Intel Kaby Lake-H GT2 [HD Graphics 630] vendor: Apple driver: i915
    v: kernel arch: Gen-9.5 process: Intel 14nm built: 2016-20 ports:
    active: none empty: DP-5, DP-6, HDMI-A-1, HDMI-A-2 bus-ID: 00:02.0
    chip-ID: 8086:591b class-ID: 0300
  Device-2: Advanced Micro Devices [AMD/ATI] Baffin [Radeon RX 460/560D /
    Pro 450/455/460/555/555X/560/560X] vendor: Apple driver: amdgpu v: kernel
    arch: GCN-4 code: Arctic Islands process: GF 14nm built: 2016-20 pcie:
    gen: 3 speed: 8 GT/s lanes: 8 ports: active: eDP-1
    empty: DP-1, DP-2, DP-3, DP-4 bus-ID: 01:00.0 chip-ID: 1002:67ef
    class-ID: 0300 temp: 45.0 C
  Display: wayland server: X.org v: 1.21.1.24 with: Xwayland v: 24.1.13
    compositor: kwin_wayland driver: X: loaded: amdgpu,modesetting
    alternate: fbdev,vesa dri: radeonsi,iris gpu: amdgpu display-ID: 0
  Monitor-1: eDP-1 model: Apple Color LCD built: 2015 res: mode: 2880x1800
    hz: 60 scale: 145% (1.45) to: 1986x1241 dpi: 221 gamma: 1.2 chroma: red:
    x: 0.682 y: 0.322 green: x: 0.263 y: 0.690 blue: x: 0.149 y: 0.051 white:
    x: 0.314 y: 0.329 size: 331x207mm (13.03x8.15") diag: 390mm (15.4")
    ratio: 16:10 modes: 2880x1800, 1920x1200, 1920x1080, 1600x1200,
    1680x1050, 1280x1024, 1440x900, 1280x800, 1280x720, 1024x768, 800x600,
    640x480
  API: EGL v: 1.5 hw: drv: intel iris drv: amd radeonsi platforms: device: 0
    drv: iris device: 1 drv: radeonsi device: 2 drv: swrast gbm: drv: iris
    surfaceless: drv: iris wayland: drv: radeonsi x11: drv: radeonsi
  API: OpenGL v: 4.6 vendor: amd mesa v: 26.1.4-arch1.1 glx-v: 1.4
    direct-render: yes renderer: AMD Radeon RX Graphics (radeonsi polaris11 ACO
    DRM 3.64 7.1.3-1-MANJARO) device-ID: 1002:67ef memory: 1.95 GiB
    unified: no display-ID: :1.0
  API: Vulkan v: 1.4.350 layers: 6 device: 0 type: discrete-gpu name: AMD
    Radeon RX Graphics (RADV POLARIS11) driver: mesa radv v: 26.1.4-arch1.1
    device-ID: 1002:67ef surfaces: N/A device: 1 type: integrated-gpu
    name: Intel HD Graphics 630 (KBL GT2) driver: mesa intel v: 26.1.4-arch1.1
    device-ID: 8086:591b surfaces: N/A
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor wl: wayland-info
    x11: xdpyinfo, xprop, xrandr
Audio:
  Device-1: Intel 100/C230 Series Family HD Audio driver: snd_hda_intel
    v: kernel alternate: snd_soc_avs bus-ID: 00:1f.3 chip-ID: 8086:a170
    class-ID: 0403
  Device-2: Advanced Micro Devices [AMD/ATI] Baffin HDMI/DP Audio [Radeon
    RX 550 640SP / 560/560X] driver: snd_hda_intel v: kernel pcie: gen: 3
    speed: 8 GT/s lanes: 8 bus-ID: 01:00.1 chip-ID: 1002:aae0 class-ID: 0403
  API: ALSA v: k7.1.3-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: PipeWire v: 1.6.7 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Broadcom BCM43602 802.11ac Wireless LAN SoC vendor: Apple
    driver: brcmfmac v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    bus-ID: 03:00.0 chip-ID: 14e4:43ba class-ID: 0280
  IF: wlan0 state: up mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: noprefixroute scope: link
  Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
  WAN IP: <filter>
Bluetooth:
  Message: No bluetooth data found.
Logical:
  Message: No logical block device data found.
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 931.84 GiB used: 508.95 GiB (54.6%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Apple model: SSD SM1024L
    size: 931.84 GiB block-size: physical: 4096 B logical: 4096 B
    speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter> fw-rev: CXS5EA0Q
    temp: 29.9 C scheme: GPT
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 345.17 GiB size: 338.69 GiB (98.12%)
    used: 200.85 GiB (59.3%) fs: ext4 dev: /dev/nvme0n1p2 maj-min: 259:2
    label: Manjaro uuid: 927408b6-64c5-4528-8988-3da4e0c034f1
  ID-2: /boot/efi raw-size: 500 MiB size: 498.9 MiB (99.78%)
    used: 1.4 MiB (0.3%) fs: vfat dev: /dev/nvme0n1p4 maj-min: 259:4
    label: GNU Grub uuid: 9DEA-ED48
  ID-3: /home/<filter>/OneDrive raw-size: N/A size: 1.03 TiB
    used: 468.5 GiB (44.4%) fs: fuse.rclone remote: OneDrive:
  ID-4: /mnt/macOS raw-size: 565.69 GiB size: 565.69 GiB (100.00%)
    used: 308.09 GiB (54.5%) fs: apfs dev: /dev/nvme0n1p1 maj-min: 259:1
    label: N/A uuid: a774c8a3-cdef-4e95-8705-cc71903e033d
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default) zswap: yes
    compressor: zstd max-pool: 20%
  ID-1: swap-1 type: partition size: 20 GiB used: 0 KiB (0.0%) priority: -1
    dev: /dev/nvme0n1p3 maj-min: 259:3 label: N/A
    uuid: e27b6c87-4dcb-442b-944e-25b4b1db8440
Unmounted:
  Message: No unmounted partitions found.
USB:
  Hub-1: 1-0:1 info: hi-speed hub with single TT ports: 16 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Device-1: 1-3:2 info: Apple Apple Mobile Device [Recovery Mode]
    type: <vendor specific> driver: N/A interfaces: 2 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 power: 500mA
    chip-ID: 05ac:1281 class-ID: fe01 serial: <filter>
  Hub-2: 2-0:1 info: super-speed hub ports: 8 rev: 3.0
    speed: 5 Gb/s (596.0 MiB/s) lanes: 1 mode: 3.2 gen-1x1 chip-ID: 1d6b:0003
    class-ID: 0900
  Hub-3: 3-0:1 info: hi-speed hub with single TT ports: 2 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Hub-4: 4-0:1 info: super-speed hub ports: 2 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1 chip-ID: 1d6b:0003
    class-ID: 0900
  Hub-5: 5-0:1 info: hi-speed hub with single TT ports: 2 rev: 2.0
    speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002
    class-ID: 0900
  Hub-6: 6-0:1 info: super-speed hub ports: 2 rev: 3.1
    speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1 chip-ID: 1d6b:0003
    class-ID: 0900
Sensors:
  System Temperatures: cpu: 61.0 C mobo: N/A gpu: amdgpu temp: 46.0 C
  Fan Speeds (rpm): N/A
Repos:
  Packages: pm: pacman pkgs: 1588 libs: 418 tools: pamac,yay pm: flatpak
    pkgs: 0
  Active pacman repo servers in: /etc/pacman.d/mirrorlist
    1: https://mirrors2.manjaro.org/stable/$repo/$arch
    2: https://mirror.truenetwork.ru/manjaro/stable/$repo/$arch
    3: https://southfront.mm.fcix.net/manjaro/stable/$repo/$arch
    4: https://distrohub.kyiv.ua/manjaro/stable/$repo/$arch
    5: https://mirror.vinehost.net/manjaro/stable/$repo/$arch
    6: https://ipng.mm.fcix.net/manjaro/stable/$repo/$arch
    7: https://mirror.telepoint.bg/manjaro/stable/$repo/$arch
    8: https://ftp.gwdg.de/pub/linux/manjaro/stable/$repo/$arch
Processes:
  CPU top: 5 of 329
  1: cpu: 13.1% command: thunderbird pid: 1319 mem: 871.6 MiB (5.4%)
  2: cpu: 7.2% command: kwin_wayland pid: 747 mem: 386.7 MiB (2.4%)
  3: cpu: 7.2% command: firefox pid: 1318 mem: 637.2 MiB (4.0%)
  4: cpu: 6.1% command: firefox pid: 3491 mem: 706.1 MiB (4.4%)
  5: cpu: 5.9% command: spotify pid: 2782 mem: 328.5 MiB (2.0%)
  Memory top: 5 of 329
  1: mem: 871.6 MiB (5.4%) command: thunderbird pid: 1319 cpu: 13.1%
  2: mem: 706.1 MiB (4.4%) command: firefox pid: 3491 cpu: 6.1%
  3: mem: 637.2 MiB (4.0%) command: firefox pid: 1318 cpu: 7.2%
  4: mem: 568.7 MiB (3.5%) command: firefox pid: 4154 cpu: 2.6%
  5: mem: 494.4 MiB (3.1%) command: plasmashell pid: 965 cpu: 2.5%
Info:
  Processes: 329 Power: uptime: 15m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 6.13 GiB services: org_kde_powerdevil,
    power-profiles-daemon, upowerd Init: systemd v: 261 default: graphical
    tool: systemctl
  Compilers: clang: 22.1.6 gcc: 16.1.1 Shell: Zsh v: 5.9.1
    running-in: konsole inxi: 3.3.41

I tried installing linux72 (7.2.0-rc2-1-MANJARO), and the issue persists with linux72 as well. So the regression is introduced in linux71 and persists in linux72.

So here’s the wild thing… linux70 is no longer an option for me to roll back to, so weird!

❯ sudo mhwd-kernel -l
available kernels:
   * linux61
   * linux612
   * linux618
   * linux66
   * linux71
   * linux72
   * linux61-rt
   * linux612-rt
   * linux66-rt

This is the tool I used to install linux70 in the first place! Yikes!
Is there an override or way for me to get it back?

Edit: Rolling back to linux70

Thankfully, I was able to find that I still had linux70 in the pacman cache, as shown:

❯ ls /var/cache/pacman/pkg/ | grep -E "linux70|linux70-headers"
linux70-7.0.13-1-x86_64.pkg.tar.zst
linux70-7.0.13-1-x86_64.pkg.tar.zst.sig
linux70-headers-7.0.13-1-x86_64.pkg.tar.zst
linux70-headers-7.0.13-1-x86_64.pkg.tar.zst.sig

From here, I was able to downgrade back to Linux 7.0.13:

❯ sudo pacman -U /var/cache/pacman/pkg/linux70-7.0.13-1-x86_64.pkg.tar.zst  /var/cache/pacman/pkg/linux70-headers-7.0.13-1-x86_64.pkg.tar.zst
loading packages...
resolving dependencies...
looking for conflicting packages...
:: linux70-headers-7.0.13-1 and linux-headers-meta-7.1-1 are in conflict. Remove linux-headers-meta? [y/N] y
:: linux70-7.0.13-1 and linux-meta-7.1-1 are in conflict. Remove linux-meta? [y/N] y

As you can see from the last two lines, I had to remove the conflicting linux-meta packages. Hooray!

I’m not sure if pacman also updates the grub when installing a new kernel, but I did this anyway just in case:

❯ sudo update-grub

I can’t find the article right now but I read in the last week something about Kernel 7.2 (I think - it may have been KDE 6.8) including some driver or change that is like adaptive brightness that hasn’t been enabled until now.

I know you weren’t on 7.2 but perhaps it was a related change as I’m pretty sure it related to Mac machines.

Keep in mind that that kernel is EOL and the last version was 7.0.14.

The lid not turning off is actually the bigger clue here imo — that plus the brightness tells you it’s probably an ACPI or power management thing, not just a backlight driver tweak. Might be worth checking if there’s a new acpi_* kernel param you need to set, or if something in your firmware changed. And yeah, 7.2 would be worth testing if you have time, just to see if the earlier changes they mentioned actually landed a fix.