Fixes

OmaBoot? Live runs real Omarchy, plus a few fixes stock Omarchy doesn't have yet, so a Mac that needs one can still be tested. Each one acts only on the hardware it's for, and only in the live system: nothing is written to your Mac.

A report lists the fixes that took effect on the Mac. On DoesItOmarchy.com, the results they change still count for the configuration, marked with OmaBoot? <fix> and linked here. In the console, catalog fixes shows which fixes the catalog lists for the Mac and whether each took effect.

Where each fix lives

From what you see down to the firmware. A fix that spans levels is listed at each; its main level is in violet.

  1. DesktopOmarchy's own settings: Hyprland, the apps, the look.none
  2. System serviceServices, hooks and rules that run outside the kernel: systemd, udev.03lid wake fix
  3. Driver settingsWhich drivers load, and their options (modprobe.d).02applesmc keyboard backlight fix04Thunderbolt 3 USB wake fix
  4. New driverA driver the kernel Omarchy ships doesn't have.none
  5. Driver patchA change to a driver Omarchy ships, rebuilt for its exact kernel.01radeon panel clock fix02applesmc keyboard backlight fix
  6. KernelA change to the kernel itself.none
  7. Boot optionsOptions the boot menu passes to the kernel.01radeon panel clock fix
  8. FirmwareThe Mac's own firmware and its settings. OmaBoot? never changes them.never touched
01

radeon panel clock fix

omaboot.radeon-imac10-1-panel-clock
Lives in
  • Driver patchradeon, rebuilt for both kernels
  • Boot optionsradeon.dpm=0 radeon.pcie_gen2=0 radeon.uvd=0, on the iMac10,1 only

Without itOn the 21.5-inch iMac (Late 2009) with the Radeon HD 4670, the built-in screen splits into distorted parts as soon as radeon takes over. The only way to a picture is nomodeset, with no acceleration and nothing for the display tests to judge.

What it changes

Corrects the built-in panel's clock in radeon's in-memory copy of the video BIOS's panel table: the BIOS says 108 MHz, the panel's EDID 138.5 MHz. Without it, the screen splits into distorted parts unless the Mac boots with nomodeset. It never writes the ROM. OmaBoot? Live also boots this Mac with radeon.dpm=0 radeon.pcie_gen2=0 radeon.uvd=0, as the install fix does: with radeon's defaults the GPU locks up under load.

How it works

The patched radeon checks everything before it changes anything: the GPU must be 1002:9488 with subsystem 106b:00b6, the panel 1920×1080 with an EDID that says 138.5 MHz, and the video BIOS's panel table a version 1.2 table that says 108 MHz. Only then does it correct the clock in its in-memory copy of the table and set the panel's colour format (RGB888, FPDI), keeping the table's dual-link, dithering and spread-spectrum settings.

The boot menu adds radeon.dpm=0 radeon.pcie_gen2=0 radeon.uvd=0 when the Mac's model is iMac10,1. They're harmless on the iMac10,1 with the GeForce 9400M, which doesn't use radeon.

Where it acts

Hardware
The 21.5-inch iMac10,1 with the Radeon HD 4670. It acts only on GPU 1002:9488 with subsystem 106b:00b6 driving a 1920×1080 panel, so every other Mac runs stock radeon.
Devices
pci:1002:9488 subsystem 106b:00b6
In OmaBoot? Live
Both kernels, Omarchy's standard kernel and the T2 kernel, carry the patched radeon. Every other GPU, and every other Mac, gets radeon exactly as Omarchy ships it.

What a run shows

How a run shows it
The module logs “iMac LVDS test: ATOM panel clock 108000 -> 138500 kHz” when it corrects the table. OmaBoot? Live looks for that line, and lists the fix only when it finds it.
Results it can change
Internal display at native resolution, Discrete GPU acceleration
Leaves alone
The video BIOS ROM, and everything else on the Mac: the change lives in the driver's memory and is gone at the next restart.
Tested on
iMac (21.5-inch, Late 2009) [iMac10,1]

Where it comes from

Since
OmaBoot? dev 1d36b14
Upstream
omarchy-vintage-intel-imac-fix 0d5a406a31 (patches/panel-encoder-combined.patch)
Source
builder/omaboot/patches/0002-radeon-imac10-1-panel-clock.patch the patchbuilder/omaboot/build-modules.sh builds radeon for each kernel on the image, once an unpatched rebuild has matched the shipped module byte for bytebuilder/omaboot/grub-live-entries.cfg the iMac10,1 boot options

This fix on DoesItOmarchy.com

02

applesmc keyboard backlight fix

omaboot.applesmc-led-container-of
Lives in
  • Driver patchapplesmc, rebuilt for the T2 kernel
  • Driver settingsthe official live system's applesmc blacklist, removed
Applies to

Every Mac with a keyboard backlight, without a T2 chip

62 configurations on 60 Macs, 2006–2017 · tested on 1MacBook Pro 42 · MacBook Air 14 · MacBook 4

Show all 60 Macs

MacBook Pro

MacBook Air

MacBook

Without itOn a Mac without a T2 chip whose SMC has a keyboard-backlight key, the T2 kernel's applesmc crashes while it starts. Without applesmc there are no fan readings, no light sensor and no keyboard backlight, and Omarchy's official live system doesn't load it at all.

What it changes

Fixes an oops while applesmc starts on Macs whose SMC has a keyboard-backlight key: t2linux patch 3001 takes the SMC's data from the backlight's LED device, which doesn't hold it. A one-line container_of fix. With it, fans, the light sensor and the keyboard backlight work in a live boot.

How it works

t2linux's applesmc patches add keyboard-backlight support. Patch 3001's brightness function takes the SMC's data from the LED device, which holds the LED, not the SMC. Registering the LED sets its brightness straight away, so applesmc writes through a bad pointer before it has finished starting. The fix takes the SMC's data with container_of, as the patch's own work function already does: one line.

With the fixed module on the image, OmaBoot? Live drops the official live system's applesmc blacklist, so applesmc loads as it does on an installed Omarchy.

Where it acts

Hardware
Macs without a T2 chip whose SMC has a keyboard-backlight key, booted on OmaBoot?'s T2 kernel (linux-t2), which carries the t2linux applesmc patches. Other Macs load it without harm.
In OmaBoot? Live
The T2 kernel (linux-t2), which carries t2linux's patches. T2 Macs start it; any Mac starts it with “T2 kernel” under “OmaBoot? Live: more options…”. Other Macs start Omarchy's standard kernel, whose applesmc doesn't have the bug and stays as Omarchy ships it.

What a run shows

How a run shows it
OmaBoot? Live lists it when applesmc was loaded from the image's updates/ folder and registered the keyboard backlight (smc::kbd_backlight), the step that crashed without it.
Tests
The fan, light sensor and keyboard backlight tests need applesmc. Without it, they end as not tested (live limit).
Results it can change
Keyboard backlight, Ambient light sensor, Fans respond to load
Leaves alone
Everything but that one line of applesmc.
Tested on
MacBook Air (13-inch, Mid 2012) [MacBookAir5,2]
iMac (21.5-inch, Late 2009) [iMac10,1]
iMac (Retina 5K, 27-inch, 2017) [iMac18,3]

Where it comes from

Since
OmaBoot? dev 1d36b14
Upstream
t2linux kernel patches
Not upstream yet: a pull request to t2linux is planned.
Source
builder/omaboot/patches/0001-applesmc-led-container_of.patch the patchbuilder/omaboot/build-modules.sh finds the t2linux patch set the image's T2 kernel was built with, checks that an unpatched rebuild matches the shipped module, then builds the fixed one

This fix on DoesItOmarchy.com

03

lid wake fix

omaboot.lid-wake-closed-only
Lives in
  • System serviceomaboot-lid-wake, a systemd-sleep hook
Applies to

Every Mac with a lid, from 2009

73 configurations on 70 Macs, 2009–2020 · tested on 1MacBook Pro 46 · MacBook Air 17 · MacBook 7

Show all 70 Macs

MacBook Pro

MacBook Air

MacBook

Without itOn the MacBook Air (13-inch, Mid 2012), a sleep that starts with the lid open, such as Suspend from the menu or an idle suspend, is woken by the lid a few seconds in, though nobody touched it.

What it changes

Arms the lid's wake only for a sleep that starts with the lid closed. On these Macs the lid's wake is a bit in the embedded controller, set before every sleep, so a sleep that starts with the lid open (Suspend from the menu, an idle suspend) is woken by the lid a few seconds in. A small systemd-sleep hook turns the lid's wake off in /proc/acpi/wakeup for such a sleep and back on after it; a sleep from closing the lid still wakes when it opens. OmaBoot? Live's sleep test naps once with the stock setting and, if the lid woke it, once more with the fix.

How it works

The lid's ACPI wake method (_PSW) sets a wake-on-lid-open bit in the embedded controller, and Linux calls it before every sleep. With the lid already open, the controller wakes the Mac almost at once.

A small systemd-sleep hook, omaboot-lid-wake, runs before and after every sleep on a Mac. Before a sleep that starts with the lid open, it turns the lid's wake off in /proc/acpi/wakeup, and after the sleep it turns it back on. A sleep that starts with closing the lid is left alone, so opening the lid still wakes the Mac.

Where it acts

Hardware
Mac laptops whose lid wake goes through the embedded controller: the lid's ACPI _PSW sets a wake-on-lid-open bit. Found on the MacBook Air (13-inch, Mid 2012); every other Mac laptop whose ACPI tables were checked has the same pattern (8 models from 2009 to 2019, MacBook Pro and MacBook Air, in public hardware probes). It does nothing on a Mac without a lid, or when the lid is closed.
In OmaBoot? Live
Every sleep through systemd (Suspend, an idle suspend) in OmaBoot? Live, on a Mac with a lid, with either kernel.

What a run shows

How a run shows it
The sleep test puts the kernel to sleep directly, without systemd, so it applies the fix itself: it naps once with the stock setting and, if the lid woke it, once more with the fix. When the second nap sleeps the full time, the result is supported with the lid wake fix, and the report lists it.
Results it can change
Sleep and wake
Leaves alone
Everything but the lid's wake setting, which it changes in memory for one sleep and sets back after.
Tested on
MacBook Air (13-inch, Mid 2012) [MacBookAir5,2]

Where it comes from

Since
OmaBoot? dev 327b2e3
Upstream
Omarchy (Apple hardware fixes in install/hardware/apple)
Not upstream yet: a proposal to Omarchy's Apple hardware fixes is planned.
Source
builder/omaboot/sleep/omaboot-lid-wake the hook

This fix on DoesItOmarchy.com

04

Thunderbolt 3 USB wake fix

omaboot.thunderbolt3-usb-awake
Lives in
  • Driver settingsruntime power management off for the Thunderbolt 3 chip's USB controller, during the USB-C test

Without itOn the 2017 iMacs, a USB 3 stick plugged into either USB-C port isn't seen at all: there isn't a line about it in the kernel log. USB 2 devices, such as an iPhone on a Lightning cable, still work.

What it changes

Keeps the Thunderbolt 3 chip's USB controller awake while OmaBoot? Live's USB-C test runs. On a Mac, Linux doesn't take the PCIe wake signal (PME) that powers the idle controller back up, so a USB 3 device plugged into a USB-C port is never seen; USB 2 devices are, through the Mac's main USB controller. When the test has waited 15 seconds with nothing seen while the controller sleeps, it turns the controller's runtime power management off (power/control on) and puts it back after the test. On an installed system, the kernel option pcie_ports=native does the same.

How it works

On these Macs, the USB 3 lines of the USB-C ports run to a USB controller inside the Thunderbolt 3 chip, and their USB 2 lines to the Mac's main controller. When nothing is plugged in, Linux powers the Thunderbolt 3 controller down.

Plugging a device in raises a PCIe wake signal (PME), which should power the controller back up. On a Mac, Linux skips the firmware handshake (_OSC) that would hand it that signal and takes every PCIe service but this one, so nothing answers the signal and the device waits unseen.

The USB-C test checks the controller's power state. When it has slept through 15 quiet seconds, the test sets the controller's power/control to on, which wakes it, and a device already in a port shows up within a second. When the test ends, the setting goes back to what it was.

Where it acts

Hardware
Intel Macs from 2016 to 2020 with Intel's Thunderbolt 3 chips (Alpine Ridge, Titan Ridge), whose USB-C ports' USB 3 lines run to the chip's own USB controller. It acts only while that controller is runtime-suspended, and only in the USB-C test.
Devices
pci:8086:15b5, pci:8086:15b6, pci:8086:15c1, pci:8086:15d4, pci:8086:15db, pci:8086:15e9, pci:8086:15ec, pci:8086:15f0
In OmaBoot? Live
Only in the USB-C test, with either kernel, and only after 15 seconds with nothing seen while a Thunderbolt 3 USB controller is asleep. The rest of the live system leaves the controller's power management as Omarchy has it.

What a run shows

How a run shows it
The test's output gets a violet FIX line, “OmaBoot? Thunderbolt 3 USB wake fix in use”, and Boot asks for the plug again. In the report, each port seen afterwards is marked “seen once the Thunderbolt 3 USB controller was kept awake”, and a pass that rests on such a port goes in as partial, with the fix listed.
Results it can change
USB-C / Thunderbolt 3 ports (USB data)
Leaves alone
Everything but that one controller's runtime power setting, which it changes in memory for one test and sets back after.
Tested on
iMac (Retina 5K, 27-inch, 2017) [iMac18,3]

Where it comes from

Since
OmaBoot? dev de06dfb
Upstream
ACPI: PCI: take native PME control on Apple machines (Linux patch, September 2026)
Not merged yet. Until it is, pcie_ports=native on the kernel command line has the same effect: confirmed on an iMac (Retina 5K, 27-inch, 2017), whose USB-C stick then came up at 5 Gb/s.
Source
boot-live: internal/handson/ports.go the USB-C test, which applies the fix itself

This fix on DoesItOmarchy.com

Where fixes really happen

A fix here is a stopgap. The lasting fix lands upstream, where every Mac gets it: the Linux kernel, t2linux, or Omarchy itself. Once it ships in Omarchy, OmaBoot? Live drops its own copy, and a new report shows the result without the fix. Where each fix comes from and where it's heading is on DoesItOmarchy.com's fixes page.