omarchy icon indicating copy to clipboard operation
omarchy copied to clipboard

Keyboard MacBook 12" / 8, 1 2015

Open crazed-developer opened this issue 3 months ago β€’ 31 comments

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

crazed-developer avatar Sep 30 '25 04:09 crazed-developer

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

joelgaff avatar Sep 30 '25 17:09 joelgaff

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!!

crazed-developer avatar Sep 30 '25 18:09 crazed-developer

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.

joelgaff avatar Sep 30 '25 21:09 joelgaff

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

crazed-developer avatar Sep 30 '25 22:09 crazed-developer

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?...

joelgaff avatar Sep 30 '25 22:09 joelgaff

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. πŸ‘‹

jaggy avatar Oct 01 '25 01:10 jaggy

This issue was being tracked here, but was closed in error: #1954

coopenstein avatar Oct 01 '25 03:10 coopenstein

@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

jaggy avatar Oct 01 '25 03:10 jaggy

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.

joelgaff avatar Oct 01 '25 04:10 joelgaff

Yesterday evening I stumbled over this, which worked perfectly fine for me:

https://gist.github.com/wey-gu/0996ef17742dc5002eccea9391b62e9f

DonMilon avatar Oct 01 '25 14:10 DonMilon

@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

joelgaff avatar Oct 01 '25 15:10 joelgaff

i have macbook pro 13 2019 t2 a2159 and when iso boot, dont work keyboard. Please help

voody77 avatar Oct 02 '25 21:10 voody77

Can confirm, I am on a A2141 MBP 2019 Intel. I get the same issue on installation, keyboard does not work.

leecrosdale avatar Oct 05 '25 17:10 leecrosdale

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

equivalent avatar Oct 19 '25 20:10 equivalent

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

jasondill avatar Oct 19 '25 23:10 jasondill

@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 avatar Oct 20 '25 00:10 jpumfrey

@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.

jaggy avatar Oct 20 '25 00:10 jaggy

@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 ?

equivalent avatar Oct 20 '25 07:10 equivalent

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 avatar Oct 21 '25 19:10 equivalent

@equivalent macbook 12 2015 doesn't have T2 chip

meceo avatar Oct 22 '25 11:10 meceo

@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

equivalent avatar Oct 23 '25 09:10 equivalent

βœ… 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-HERE with your actual PARTUUID
  • Use 2 spaces for indentation (makes it nested under /+Omarchy)
  • Place it ABOVE //Snapshots so it's the first option

Step 6: Reboot and test

sudo reboot

At the boot menu:

  1. Enter disk encryption password (if you set one)
  2. Select "Omarchy" from menu
  3. Select "Omarchy 6.16.3" (should be first option)
  4. 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:

  1. Select "Omarchy"
  2. Hit Enter
  3. 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)
  • applespi driver 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 applespi driver 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 avatar Oct 25 '25 19:10 tinybluedev

@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.

jpumfrey avatar Oct 25 '25 20:10 jpumfrey

@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:

  1. The Pop!_OS kernel DOES work - we have it running on Omarchy right now with full keyboard/trackpad functionality. Zero SPI timeouts, clean modeswitch done in dmesg.

  2. 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.

  3. 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
  4. 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"
  5. 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
  • applespi driver 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:

  1. During Omarchy install: You'll still need external keyboard (Pop kernel isn't in the installer). Boot the installed system, THEN add Pop kernel.

  2. 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).

  3. 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! Γ°ΒŸΒšΒ€

tinybluedev avatar Oct 25 '25 21:10 tinybluedev

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

crazed-developer avatar Oct 25 '25 21:10 crazed-developer

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.

ryanrhughes avatar Oct 26 '25 02:10 ryanrhughes

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?

maxsz avatar Oct 29 '25 20:10 maxsz

Dear omarchy team, if you make this happen I will put an omarchy sticker on top of the apple logo!

cerrsys avatar Nov 08 '25 08:11 cerrsys

+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.

avocade avatar Nov 17 '25 18:11 avocade

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.

jdlopez-cereal avatar Nov 28 '25 03:11 jdlopez-cereal