- MacBook Pro 11,3 (Mid 2014, 15" Retina)
- NVIDIA GeForce GT 750M (Kepler, GK107M)
- Intel Iris Pro 5200 (NOT usable - see GPU Switching section)
- Fedora 42, Kernel 6.17.11
- nvidia-470xx (legacy driver - last to support Kepler GPUs)
- Installed from RPM Fusion
This causes display corruption (scanlines, freezing) on this hardware. The legacy 470 driver has buggy kernel modesetting. X11 mode without KMS works fine.
Fedora defaults to Wayland, so X11 session files aren't installed by default:
sudo dnf install gnome-session-xsession -yWithout this, GDM crashes with "no session desktop files installed".
The gpu-switch tool sets an EFI variable, but this MacBook's firmware ignores it.
The Intel Iris Pro 5200 cannot be activated - you're stuck with NVIDIA.
sudo dnf install akmod-nvidia-470xx xorg-x11-drv-nvidia-470xx -y
sudo akmods --forcesudo dnf install gnome-session-xsession -ysudo tee /etc/modprobe.d/blacklist-nouveau.conf << 'EOF'
blacklist nouveau
options nouveau modeset=0
EOFsudo dracut --forcesudo sed -i 's/#WaylandEnable=false/WaylandEnable=false/' /etc/gdm/custom.confOr manually edit /etc/gdm/custom.conf and set WaylandEnable=false under [daemon].
The nvidia driver package should automatically add nouveau blacklist parameters.
Verify in /boot/loader/entries/*.conf:
rd.driver.blacklist=nouveau,nova_core modprobe.blacklist=nouveau,nova_core
IMPORTANT: Remove nvidia-drm.modeset=1 if present - it causes display corruption.
sudo rebootSystem should boot directly to GDM login screen and work normally.
Location: /boot/loader/entries/
The default Fedora entry should work after setup. Just ensure nvidia-drm.modeset=1 is NOT present.
Create /boot/loader/entries/e4c9eb67a49b4f6589818fd24e2520ce-6.17.11-terminal.conf:
title Fedora Linux - Terminal Mode (6.17.11)
version 6.17.11-terminal
linux /vmlinuz-6.17.11-200.fc42.x86_64
initrd /initramfs-6.17.11-200.fc42.x86_64.img
options root=UUID=3d31d415-6b43-470b-b73b-5fc906931e3b ro rootflags=subvol=root rd.driver.blacklist=nouveau,nova_core modprobe.blacklist=nouveau,nova_core systemd.unit=multi-user.target vconsole.font=latarcyrheb-sun32 video=1280x800
grub_users $grub_users
grub_arg --unrestricted
grub_class fedora
This boots to a text console (readable on Retina display). Useful for troubleshooting.
From terminal mode, you can run startx to start GNOME manually.
This MacBook has dual GPUs, but the firmware ignores the switching EFI variable.
The gpu-switch tool is installed at /usr/local/bin/gpu-switch:
sudo gpu-switch -d # Attempt switch to nvidia (dedicated)
sudo gpu-switch -i # Attempt switch to Intel (integrated)
sudo rebootOn this specific MacBook Pro 11,3, Intel switching does not work. The firmware always boots with NVIDIA regardless of the EFI variable setting.
Once booted into GNOME:
lsmod | grep nvidia # Should show nvidia, nvidia_modeset, nvidia_drm
ls /dev/nvidia* # Should show nvidia0, nvidiactl, nvidia-modeset
grep NVIDIA /var/log/Xorg.0.log # Should show NVIDIA driver active- Boot from Fedora Live USB
- Mount and chroot into system
- Check/remove
nvidia-drm.modeset=1from boot entries - Rebuild grub if needed:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo dnf install gnome-session-xsession -yRemove nvidia-drm.modeset=1 from kernel parameters.
SELinux issue. Either:
- Add
selinux=0to kernel parameters, or - Run
sudo setenforce 0after boot via SSH
May happen during driver issues. Should stabilize once X is running properly.
- GDM login screen
- GNOME desktop on X11
- Full GPU acceleration
- External displays (via DisplayPort/HDMI)
- Suspend/resume (requires
xorg-x11-drv-nvidia-470xx-powerpackage)
- GDM may briefly show garbled/fuzzed display before rendering correctly. This is normal - without nvidia-drm.modeset, X11 handles display init rather than the kernel.
- First app launches may be slow (e.g., Firefox) as GPU acceleration initializes. Subsequent launches are faster.
- Occasional compositor glitches - GPU-accelerated web content (WebGL, PWAs in GNOME Web) can sometimes cause visual corruption (scanlines, missing alpha channel). Fix by restarting GNOME Shell:
Alt+F2→r→ Enter.
- Wayland (nvidia-470 doesn't support it well)
- Intel GPU switching (firmware ignores it)
- nvidia-drm.modeset=1 (causes display corruption)
- nvidia-smi (limited on this GPU)
sudo dnf remove akmod-nvidia-470xx xorg-x11-drv-nvidia-470xx nvidia-settings-470xx
sudo rm /etc/modprobe.d/blacklist-nouveau.conf
sudo dracut --force
sudo rebootNote: nouveau has stability issues on this GPU (random crashes, CTXSW_TIMEOUT errors). The proprietary driver is more stable despite the setup complexity.
/etc/modprobe.d/blacklist-nouveau.conf- nouveau blacklist/etc/gdm/custom.conf- WaylandEnable=false/boot/loader/entries/*.conf- kernel parameters (remove nvidia-drm.modeset=1)
akmod-nvidia-470xx- kernel module builderxorg-x11-drv-nvidia-470xx- X11 drivergnome-session-xsession- X11 session files for GDMxorg-x11-drv-nvidia-470xx-power- suspend/resume support (preserves GPU memory)
- Fedora Live USB - for chroot recovery
/usr/local/bin/gpu-switch- GPU switching (doesn't work but installed)- Terminal mode boot entry - for troubleshooting without graphics
- Lid close - Suspends reliably on any power state
- Battery auto-suspend - Works (default 15 min idle timeout)
- Manual suspend -
systemctl suspendworks
- AC auto-suspend - System suspends but immediately wakes due to firmware bug
The MacBook Pro 11,3 firmware has a known issue with ACPI GPE17 (General Purpose Event). This interrupt fires constantly (~700k+ times) and triggers spurious wakes from S3 sleep.
Attempted fixes that don't work:
- Disabling ACPI wake sources (XHC1, P0P2, etc.) - still wakes
- Disabling GPE17 and other GPEs - causes system lockup on resume
- RTC alarm wasn't the cause
Recommended workaround: Disable AC auto-suspend in GNOME settings:
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'# AC: disabled (firmware wake bug)
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
# Battery: suspend after 15 min
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'suspend'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 900If AC auto-suspend is desired, xidlehook can monitor X11 idle time directly and call
systemctl suspend. This bypasses GNOME's power management and may behave differently.
Not yet tested.
- TLP 1.7.0 - Installed and active, handles laptop power optimization
- Sleep mode -
s2idle [deep]available, deep (S3) is the default - NVIDIA power services - Installed via
xorg-x11-drv-nvidia-470xx-power:nvidia-suspend.service- saves GPU state before suspendnvidia-resume.service- restores GPU state after resumenvidia-hibernate.service- saves GPU state before hibernateNVreg_PreserveVideoMemoryAllocations=1- kernel module parameter
Resume may take a moment as the GPU state is restored - this is normal.
If suspend stops working after updates:
# Check nvidia power services are installed
rpm -q xorg-x11-drv-nvidia-470xx-power
# Check PreserveVideoMemoryAllocations is enabled
cat /proc/driver/nvidia/params | grep Preserve
# Check suspend logs
journalctl -b -1 | grep -iE "suspend|resume|nvidia|PM:"
# Check GPE interrupt counts (GPE17 should be high but enabled)
grep -r . /sys/firmware/acpi/interrupts/gpe* 2>/dev/null | grep -v ":0$" | sort -t: -k2 -rn | head -5