Keyboard MacBook 12" / 8, 1 2015
System details
Apple Macbook 12" 2015
What's wrong?
Hi,
In Omarchy 3.0.2, this file was edited: https://github.com/basecamp/omarchy/blob/master/install/config/hardware/fix-apple-spi-keyboard.sh
I understand to add support for the keyboard on the Apple Macbook 12" 2015 / 8,1
But during install, keyboard does not work. So can not go through the menus.
Hope somebody can help, i would like to repurpose this computer as a spare for trips.
Kind regards Steffen Otto Jensen
Hey @crazed-developer - I think this may be due to not including the intel_lpss_pci module for MacBook8,1 models. I added a hotfix PR for this: https://github.com/basecamp/omarchy/pull/2116.
If you know how, see if by adding the intel_lpss_pci module to the fix-apple-spi-keyboard.sh file at line 8, so It looks like the below code, fixes this for you:
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform spi_pxa2xx_pci)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
I would love to do a quick test, but not sure how..
My best guess is to clone the repo, edit the file as you say, and then some how build the iso, and create a new install usb from the iso just built?
should i run install.sh for this ?
Thanks for your efforts!!
I think if you just find the fix-apple-spi-keyboard.sh file on your machine, and edit it, that should be all you need (maybe a rebot after editing it).
in Alacritty or whatever terminal you're using, run this command:
nvim ~/.local/share/omarchy/install/config/hardware/fix-apple-spi-keyboard.sh
This should open the file in Neovim. Then edit line 8 to be:
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform spi_pxa2xx_pci)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
Essentially we want to just add the 'intel_lpss_pci' bit to the MODULES list.
The reboot, and see if that fixes the issue.
I have been unable to even install the operating system, as after booting the installation media, I have no keyboard to traverse the installation menu.
So still on a very old macOS in the machine
Ahhh, I see. I'm not sure of the fix off the top of my head, but will see if I can discover anything. Maybe someone else can chime in with any advice, too?...
Hey there! To help out with this issue, I set up a fresh Omarchy on a MacBook 12" 2015 and added intel_lpss_pci that didn't seem to do the trick.
I checked the dmesg logs and it says
applespi spi-APP000D:00: SPI transfer timed out
applespi spi-APP000D:00: Error reading from device: -110
Let me know if you need any more commands run to test it out. π
This issue was being tracked here, but was closed in error: #1954
@joelgaff I don't know much about compatibility and drivers much but I've been using PopOS on my Macbook 12" and there the keyboard and trackpad works. Same with Linux Mint. Not sure if that helps in any way.
I also dug in a bit with the error and found this kernel issue that was reported earlier this year that possibly caused issues.
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2107976
Thanks for testing @jaggy! This is good to know, and just what I was looking to find out. I'll dig into that error log later and see if I can find anything helpful in there.
Thanks for pointing that out @coopenstein - there's obviously something happening that we haven't nailed down in the current fixes. There were some fixes on similar Mac models in 3.0.2, but again, we didn't cover this part it looks like.
Yesterday evening I stumbled over this, which worked perfectly fine for me:
https://gist.github.com/wey-gu/0996ef17742dc5002eccea9391b62e9f
@DonMilon what's the model identifier (is it a MacBook8,1?). If so the solution to this may be here: https://github.com/basecamp/omarchy/pull/1959
i have macbook pro 13 2019 t2 a2159 and when iso boot, dont work keyboard. Please help
Can confirm, I am on a A2141 MBP 2019 Intel. I get the same issue on installation, keyboard does not work.
I'm trying to install Omarchy 3.1 on Macbook Air 2019 i5 model (A2179) On first step of the instalation (choose keyboard layout) the keyboard doesnt work. Itried same USB drive on lenovo laptop and keyboard (& the entire instalation) worked
Just a heads up... I tried installing using the latest 3.1 iso on a macbook8,1 and the keyboard and trackpad still doesn't work. I have to use an external keyboard and trackpad with the laptop. Still seeing the following error:
applespi spi-APP000D:00: SPI transfer timed out
applespi spi-APP000D:00: Error reading from device: -110
@equivalent @jasondill I've spent dozens and dozens of hours over the past few years trying to get the built-in Apple SPI keyboard and trackpad working on the MacBook 8,1 across multiple distros, including Arch. You name it, I've tried it. Reports of it being fixed in mainline are bogus (at least for our models which are extra finicky).
At this point, my best advice is to use an external keyboard and mouse or install a distro such as Linux Mint or Pop!_OS (both Ubuntu-based), where the SPI drivers still function with some patching. It's not ideal, but it will save you a lot of frustration going down the same roads I have.
The issue seems to stem from a kernel regression in newer versions. The hardware worked correctly on older Ubuntu builds but remains broken in mainline and Arch-based kernels despite countless DKMS rebuilds and config tweaks.
The likelihood of someone with the time, knowledge, and one of these older MacBooks to test and fix it is, unfortunately, getting smaller. I'm hopeful that Omarchy's growing popularity might help draw the right attention, as this issue is getting more visibility than ever. Itβs not on the Omarchy team to fix a kernel-level regression, but I really appreciate that theyβre still trying to help where they can.
If anyone does manage to get native input working on recent kernels, please share the details here. I'd be genuinely happy to be proven wrong.
@jpumfrey btw, just to note here, I've used my MacBook 8,1 on both latest releases of Mint and PopOS and the keyboard and the trackpad are working there out of the box. It's the speakers that were broken there.
So I'm not quite sure if the issue is kernel related and Mint and PopOS are just using earlier kernel builds or something.
I haven't played around downgrading the kernel version on Arch or to what version to to confirm any leads.
@jpumfrey thank you for sharing your experience, I wanted to jump in that rabit hole but thanks to your insight I see this would be hours wasted. By any chance did you stumble upon any bug report to Linux kenel that we all can +1 ?
So I investigated deeper into this and it all seems to be due to T2 chip
There is a "Linux for T2" initiative that maintains patches for Linux Apple T2-based devices
- https://t2linux.org
- https://github.com/t2linux
among other things these lovely folks do is they maintain patched ISO images (for Arch, Ubuntu...) The solution would be to install their patched ISO of Arch Linux and then follow the Manual installation steps to install Omarchy.
Have fun weekend everyone π
@equivalent macbook 12 2015 doesn't have T2 chip
@meceo oh sorry my comment was related to my Macbook Air 2019 i5 model (A2179) [comment] and several others that were discussing T2 models (https://github.com/basecamp/omarchy/issues/2099#issuecomment-3419934240)
my appologies for the confusion
β SOLUTION: MacBook 12" 2015 (MacBook8,1) Keyboard/Trackpad Fix for Omarchy
Tested and Verified: 2025-10-25 02:30 AM Omarchy Version: 3.1.3 Hardware: Apple MacBook 12" 2015 (MacBook8,1)
π― TL;DR - The Fix
Problem: Keyboard/trackpad don't work during install or after boot on Omarchy
Root Cause: Arch Linux kernel has CONFIG_PWM_LPSS=m (loadable module), should be =y (built-in)
Solution: Install Pop!_OS kernel 6.16.3 on Omarchy (has PWM built-in)
Result: β
Keyboard and trackpad work perfectly!
π¬ What's Actually Broken
The fix-apple-spi-keyboard.sh script in Omarchy adds the required SPI modules to initramfs, BUT the underlying issue is kernel compilation configuration, not module loading order.
Arch Linux kernels (6.8, 6.12, 6.17) compile PWM as modules:
CONFIG_PWM_LPSS=m β Loadable module
CONFIG_PWM_LPSS_PCI=m β Loadable module
CONFIG_PWM_LPSS_PLATFORM=m β Loadable module
Ubuntu/Pop!_OS kernels compile PWM built-in:
CONFIG_PWM_LPSS=y β Built into kernel
CONFIG_PWM_LPSS_PCI=y β Built into kernel
CONFIG_PWM_LPSS_PLATFORM=y β Built into kernel
Why this matters: PWM (Pulse Width Modulation) controls keyboard power delivery and backlight. The applespi driver tries to communicate with the keyboard during hardware probing, but if PWM isn't initialized yet, the device has no power and all SPI transfers timeout with error -110 (ETIMEDOUT).
Even loading PWM modules in early initramfs is too late - the kernel probes SPI devices before module initialization completes.
π Complete Fix - Step by Step
You'll need:
- External USB keyboard (for installation and initial setup)
- Pop!_OS 22.04 ISO: https://pop-iso.sfo2.cdn.digitaloceanspaces.com/22.04/amd64/intel/58/pop-os_22.04_amd64_intel_58.iso
- Access to another Linux machine to extract the kernel
Step 1: Install Omarchy normally (with external keyboard)
Nothing special here - just install Omarchy 3.1.3 as usual using your external USB keyboard.
Step 2: Extract Pop!_OS kernel (on another machine)
# Mount Pop!_OS ISO
sudo mkdir -p /mnt/popos
sudo mount -o loop pop-os_22.04_amd64_intel_58.iso /mnt/popos
# Extract kernel
sudo unsquashfs -d /tmp/pop-rootfs /mnt/popos/casper/filesystem.squashfs \
'boot/vmlinuz-*' \
'usr/lib/modules/6.16.3-76061603-generic/*'
# Package for transfer
cd /tmp/pop-rootfs
sudo tar czf ~/pop-kernel-macbook.tar.gz \
boot/vmlinuz-6.16.3-76061603-generic \
usr/lib/modules/6.16.3-76061603-generic/
Step 3: Transfer to MacBook
# Copy to MacBook (via SCP or USB stick)
scp ~/pop-kernel-macbook.tar.gz yourmacbook:/tmp/
# SSH into MacBook (with external keyboard)
ssh yourmacbook
Step 4: Install Pop!_OS kernel on Omarchy
# Extract kernel and modules
cd /
sudo tar xzf /tmp/pop-kernel-macbook.tar.gz
# Move kernel to /boot
sudo cp boot/vmlinuz-6.16.3-76061603-generic /boot/
# Move modules to /lib/modules
sudo cp -r usr/lib/modules/6.16.3-76061603-generic /lib/modules/
# Generate initramfs for Pop kernel
sudo mkinitcpio -k 6.16.3-76061603-generic \
-g /boot/initramfs-6.16.3-76061603-generic.img
Step 5: Add boot entry to Limine
Get your PARTUUID from existing entry:
grep PARTUUID /boot/limine.conf | head -1
Add Pop kernel entry inside the /+Omarchy section, ABOVE //Snapshots:
sudo nano /boot/limine.conf
Find the /+Omarchy section and add this entry RIGHT AFTER the order-priority=50 line:
/+Omarchy
comment: Omarchy
comment: machine-id=YOUR-MACHINE-ID-HERE order-priority=50
//omarchy-6163
comment: Omarchy 6.16.3
protocol: linux
kernel_path: boot():/vmlinuz-6.16.3-76061603-generic
module_path: boot():/initramfs-6.16.3-76061603-generic.img
kernel_cmdline: quiet splash cryptdevice=PARTUUID=YOUR-UUID-HERE:root root=/dev/mapper/root zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs
//Snapshots
comment: Selecting any snapshot to boot into it.
...
IMPORTANT:
- Replace
YOUR-UUID-HEREwith your actual PARTUUID - Use 2 spaces for indentation (makes it nested under /+Omarchy)
- Place it ABOVE
//Snapshotsso it's the first option
Step 6: Reboot and test
sudo reboot
At the boot menu:
- Enter disk encryption password (if you set one)
- Select "Omarchy" from menu
- Select "Omarchy 6.16.3" (should be first option)
- Keyboard and trackpad should work!
β Verification
After booting, verify it's working:
uname -r
# Should show: 6.16.3-76061603-generic
# Check for SPI errors (should be clean)
sudo dmesg | grep applespi
# Expected output:
# [1.2s] applespi spi-APP000D:00: Received corrupted packet (crc mismatch)
# [1.2s] applespi spi-APP000D:00: modeswitch done.
# (No timeout errors)
# Verify both devices registered
cat /proc/bus/input/devices | grep "Apple SPI"
# Should show:
# N: Name="Apple SPI Keyboard"
# N: Name="Apple SPI Touchpad"
π§ Optional: Make Pop kernel auto-boot
Note: This is tricky because Limine's default_entry counting is complex with nested menus. The safest approach is to just manually select it from the menu each boot. It's the first option in the Omarchy menu, so just:
- Select "Omarchy"
- Hit Enter
- It defaults to "Omarchy 6.16.3"
If you want to experiment with auto-boot, you can try adjusting default_entry at the top of /boot/limine.conf, but be careful - setting it wrong can make the system unbootable (requiring manual boot entry editing).
π§ Technical Details
Why Arch kernels fail:
- PWM modules control keyboard backlight and power delivery
- Arch compiles these as loadable modules (load during boot)
applespidriver probes hardware BEFORE PWM modules finish initializing- SPI transfers timeout because device has no power
Why Pop!_OS kernel works:
- PWM compiled directly into kernel (available immediately)
- Device is powered when
applespidriver initializes - Clean SPI communication, keyboard works
The fix-apple-spi-keyboard.sh script helps but isn't enough - it loads modules in initramfs, but timing is still too late. The only real solution is PWM compiled into the kernel.
π Long-term Fix for Omarchy
For @basecamp/omarchy maintainers:
To fix this properly in Omarchy itself, the Arch Linux kernel package would need to be rebuilt with:
CONFIG_PWM_LPSS=y
CONFIG_PWM_LPSS_PCI=y
CONFIG_PWM_LPSS_PLATFORM=y
This would make MacBook 12" 2015 keyboards work out of the box. Alternatively, Omarchy could ship with an Ubuntu LTS kernel for MacBook builds.
Tested on:
- Hardware: Apple MacBook 12" 2015 (MacBook8,1)
- Omarchy: 3.1.3
- Pop Kernel: 6.16.3-76061603-generic
- Date: 2025-10-25
Hope this helps others with the same issue! π
@tinybluedev If this actually works, I won't know whether to celebrate or cry after wasting so much of my life on this issue over the last few years.
I've spent the past week tracing the interrupt path where I am rebuilding modules, probing IRQ tables, and verifying that IRQ 30 is advertised in ACPI but never actually mapped or requested by applespi. I've been compiling a full report for kernel.org to document that behaviour and confirm the unmapped device/IRQ theory.
So I truly appreciate your time in finding a solution.
I'll test your method at my earliest opportunity and report back with results.
@tinybluedev If this actually works, I won't know whether to celebrate or cry after wasting so much of my life on this issue over the last few years.
I've spent the past week tracing the interrupt path where I am rebuilding modules, probing IRQ tables, and verifying that IRQ 30 is advertised in ACPI but never actually mapped or requested by applespi. I've been compiling a full report for kernel.org to document that behaviour and confirm the unmapped device/IRQ theory.
So I truly appreciate your time in finding a solution.
I'll test your method at my earliest opportunity and report back with results.
I completely feel you on this - I spent 6+ hours last night on this exact issue and went through probably 30 different failed attempts before cracking it. The IRQ mapping rabbit hole is real, but I think you might be chasing the wrong layer.
Quick heads up before you test:
-
The Pop!_OS kernel DOES work - we have it running on Omarchy right now with full keyboard/trackpad functionality. Zero SPI timeouts, clean
modeswitch donein dmesg. -
The IRQ stuff you're debugging is a symptom, not the cause. The real issue is that the SPI controller never gets responses from the keyboard because PWM (which controls power delivery) isn't initialized when applespi probes the device.
-
Expected behavior when it works:
- One "corrupted packet (crc mismatch)" on first init (normal)
- "modeswitch done" message
- No timeout errors
- Both keyboard AND touchpad devices register
- Keyboard backlight control available at
/sys/class/leds/spi::kbd_backlight
-
If it DOESN'T work for you:
- Check
uname -r- make sure you're actually booting the Pop kernel (6.16.3-76061603-generic) - Verify in Limine menu you selected the Pop kernel entry, not the Arch one
- Check
lsmod | grep applespi- module should load automatically - Run
dmesg | grep applespi- should see "modeswitch done", NOT "SPI transfer timed out"
- Check
-
Common gotcha: The Limine boot entry needs proper indentation (2 spaces) to nest under
/+Omarchy. If indentation is wrong, it might not show in the menu or won't boot.
About your IRQ investigation:
Your kernel.org report might still be valuable because there could be a SECOND bug in the IRQ mapping on top of the PWM timing issue. But for getting your keyboard working NOW, the Pop kernel bypass is the fastest path.
The fact that the keyboard works in bootloader (GRUB/Limine) proves the hardware and IRQ routing are fundamentally functional - the issue is Linux's initialization sequence breaking it.
Why this solution works:
Pop!_OS (and Ubuntu/Mint) compile PWM directly into the kernel instead of as loadable modules. This means:
- PWM initializes during early kernel boot
- Keyboard power is available BEFORE hardware probing
applespidriver finds a powered, responsive device- SPI communication succeeds
When PWM is a module (Arch default), it loads during the module loading phase, which happens AFTER device probing has already started. Too late.
Testing tips:
-
During Omarchy install: You'll still need external keyboard (Pop kernel isn't in the installer). Boot the installed system, THEN add Pop kernel.
-
After install: The Pop kernel makes the keyboard work for normal use, but you'll still need external keyboard to unlock disk encryption on boot (that happens before kernel loads).
-
Verification it's working: The moment you see the desktop/login screen, try the built-in keyboard. If it works, you're golden.
Let me know if you hit any issues or if you want the pre-extracted kernel package (saves you the ISO extraction step). After years of fighting this, you deserve a win.
Also - if you DO end up filing that kernel.org report about IRQ mapping, I'd be interested to read it. There might be a deeper bug we haven't hit yet.
Good luck! Γ°ΒΒΒ
Iβm happy to hear work are progressing on the issue.
Today I installed Ubuntu 25.10, install process worked perfectly. Have keyboard and trackpad.
But but but however⦠during install I opted in for disk encryption, so I have to type in the password very early in the boot process. I presume before kernel loads, and I did not have keyboard at this stage.
Just a caveat to maybe think about, may apply to arch / omarchy too
The issue here is that the t2 kernel needs to be utilized during the ISO install. This had been working previously but at some point, got broken to where the ISO image is booting using the standard linux kernel.
We include both kernels in the packaging so that we can install the correct one for the user but need to ensure the ISO itself utilizes the t2 patched one so it works for these Macs.
The fix will be somewhere in the configs and build process for https://github.com/omacom-io/omarchy-iso if someone wants to take some swings at this.
I've just tested the Pop kernel workaround on my 12" MacBook and can confirm that the keyboard and trackpad are now working. As far as I can tell this would need to be fixed in the upstream Arch kernel, right?
Dear omarchy team, if you make this happen I will put an omarchy sticker on top of the apple logo!
+1 would be great to have my old 2015 MacBook 12" usable again with Omarchy, too slow for macOS π Currently have to plug in both a USB keyboard and mouse to work on it, a bit less than laptop:y.
I also tested the Pop kernel on my 2015 Macbook 12" Retina. Worked fine until I would suspend. The keyboard and trackpad stopped working again everytime. Fortunately, I found a solution here, I only had to edit logins.conf, sleep.conf, and limine. Keyboard and trackpad works with no issues so far.