MacBook Pro 12, A1502 internal keyboard&trackpad not working only using external usb keyboard and mouse

Title: MacBookPro12,1 (A1502) Keyboard/Trackpad Fail on Fedora Live - applespi Aborts with “USB interface already enabled”

I am attempting to dual-boot Fedora Linux on a MacBook Pro 12,1 (Early 2015, A1502). The built-in keyboard and trackpad work perfectly in macOS, but they are completely unresponsive in the Linux live environment. This persists even after an installation

When attempting to force-load the SPI driver subsystem manually:
sudo modprobe intel_lpss intel_lpss_pci spi_pxa2xx_platform spi_pxa2xx_pci applespi

The modules load cleanly without standard errors, but the input devices remain dead. Running sudo dmesg | grep -E "applespi|lpss|spi" reveals this explicit abort message from the driver:
[ 21.703956] applespi spi-APP000D:00: USB interface already enabled
[ 2482.404410] applespi spi-APP000D:00: USB interface already enabled

Looking at the driver source code (applespi.c), this indicates that the ACPI method UIST (USB Interface Status) is returning 1. The driver throws -ENODEV and exits intentionally because it detects that the hardware interface is actively bound to the legacy USB HID emulation layer instead of the true SPI bus.

I have already verified, tested, and definitively ruled out the following variables:

  1. HARDWARE / CABLE IS FINE: The keyboard, trackpad, and backlight work perfectly in macOS, Apple Startup Manager, and the GRUB menu.
  2. OPENCORE INNOCENT: The exact same failure occurs when bypassing OpenCore completely and booting straight from Apple’s native EFI firmware.
  3. KERNEL BUILT-IN ROADBLOCK: The driver intel_lpss_pci is compiled directly into the Fedora kernel core (=y). It cannot be removed or re-probed using rmmod.
  4. TRIED PARAMETERS: Booting with acpi_osi=Linux, acpi_osi=!Darwin, acpi_osi=! acpi_osi="Windows 2015", and intel_lpss_pci.rpm_disabled=1 did not drop the firmware’s legacy USB emulation lock or trigger the SPI handoff.
  5. COLD CYCLE MANEUVERS: Fully draining the system capacitors by keeping the device completely shut down and unplugged from MagSafe for 5+ minutes does not reset the status bit; the firmware persistently loads with UIST=1.

Given that the built-in intel_lpss_pci driver handles early subsystem mapping before applespi can evaluate ACPI switches, how can I force the kernel or ACPI layer to execute the UIEN (USB Interface Enable = 0) and SIEN (SPI Interface Enable = 1) sequence early enough to drop the USB emulation mode?

Are there specific low-level DSDT override overrides, dracut early hook modifications, or undocumented intel_lpss flags that can force the SPI host controller bridge out of this firmware loop on a kernel where the LPSS drivers are built-in?

same for mewhen i switched myacer v nitro v15 to windows 10 the drivers for touchpad only worked inmy bios

I was having the same problem on my MacBook Pro 12,1. I am trying to setup arch, but I think the same fix should apply. It does appear someone is working on this and trying to get it into the mainline kernel but what worked for me was applying a patch to the kernel to make SPI work.

Here is a link to the patch with a script I had written to apply it. You may need to make some adjustments for Fedora.

Full transparency, I used one of OpenCode’s free models to help me get to the bottom of this by looking at a local clone of the linux repo, so if some of the docs seem overly verbose, that’s why. I just haven’t gone through and rewritten everything more succinctly yet.

Additionally, there is an issue where the SPI bus gets locked when the laptop enters S3 sleep. You can see that patch (plus the original) and some more refined helper scripts at this commit:

Howdy! Thanks for dropping this here for us. I will give it a shot and see if I have any luck as I still have not had luck getting it to work. Thank you much Alex!