openSUSE on the 2015 Apple 12 Inch Retina MacBook

For anyone who is interested, I tested openSUSE on Apple’s new 2015 12 inch Retina MacBook today. There seem to be surprisingly few Google search results describing anyone attempting to install any distribution of Linux on the new 12 inch Retina MacBook. After quite extensive searching, the only reference to anyone else trying Linux on the new MacBook was someone trying Arch Linux. That report noted that with the live edition of Arch Linux, the MacBook was able to boot from USB into Linux, but that the built-in keyboard, trackpad, and Broadcom 802.11ac adapter did not function. Other information that I came across seemed to suggest that using the newest kernel version possible might provide for a better likelihood of the Broadcom 802.11ac adapter being supported. Here is the link I saw:

https://bbs.archlinux.org/viewtopic.php?id=195924

Therefore, I attempted to install the newest build of openSUSE Tumbleweed, with the 4.0 Linux kernel. In attempting to do so, I had a very similar experience to what I had read about with Arch Linux, which is that openSUSE was able to boot into the installation program, and everything seemed to work fine, except for the built-in keyboard, trackpad, and Broadcom 802.11ac wireless adapter. I attempted to temporarily get around these issues during the install process by using an Apple USB-C to USB-A adapter with an ordinary powered USB hub plugged into it, and plugging my openSUSE Tumbleweed USB installation flash drive, an Apple USB keyboard, a Logitech USB optical mouse, and an Apple USB Ethernet adapter into the USB hub. This seemed to work perfectly fine, and allowed me to proceed with my install. However, I was, unfortunately, not able to get much further than that, because once it was time to partition the disk, I found that openSUSE only recognized the SanDisk USB thumb drive that I was using as my installation media, and did not recognize the built-in Apple SSD at all.

According to the system information in Mac OS X Yosemite, the SSD appears to be a NVMe (Non-Volatile Memory Express) SSD. It is important to note that other people who may wish to try Linux with their new 12 inch Retina MacBooks might have a slightly different experience than me, as my MacBook was custom ordered to have the upgraded 1.3 GHz processor and 500 GB SSD, which is larger than the default SSD, so would be a different chip than a default build of this MacBook that is not custom ordered would have. I explored this further by also attempting to boot the Ubuntu Live distribution, and found that it had exactly the same result and did not recognize my SSD at all. I next created a GParted Live USB stick and booted from that, and GParted was also unable to recognize my SSD at all. After that, I created a Live openSUSE Tumbleweed bootable USB stick, and booted with that; it also failed to recognize the SSD, but otherwise ran great and was quite stable and enjoyable to use on the new MacBook. So, it would appear that out of openSUSE, Ubuntu, and GParted (appeared to be built off of Debian during the boot process), so far no Linux distribution has been able to recognize my SSD.

Interestingly, when installing Windows 8.1, the Bootcamp drivers provided by Apple are installed last, after the Windows disk partitioning and installation have already taken place, yet Windows was able to recognize the drive and I was able to create and format an NTFS partition using the Windows installation software. I did not use the Apple provided Bootcamp utility to create the Windows partition in Mac OS X, as I initially tried that, and it was a complete mess, requiring hours of time to reinstall OS X and fix everything. The Windows 8.1 installation program also seemed to have no difficulty recognizing the built-in keyboard or trackpad even before the Bootcamp drivers were installed at the end of Windows installation.

After seeing the device ID of the Broadcom adapter in the new MacBook, it seems unlikely that there currently is a Linux driver available for it, based upon what I have read. From what I have read about the model of Broadcom BCM4360 in this MacBook, there are 2 currently known device IDs, 14E4:4360 and 14E4:43A0, and 14E4:43A0 is supported by the wl Linux driver and the 14E4:4360 is not supported by any Linux driver. However, my MacBook has a new device ID that is not one of those 2 IDs that I read about, and is not mentioned in anything I have read about this chip before, which is 14e4:43a3.

I have posted this information mostly just to get the conversation started about getting Linux onto this model of MacBook, and to get some specific and detailed information about this hardware out into the open, so that others wishing to try Linux on this new MacBook have something to look at to see what works, what doesn’t work, and find some hopefully useful information about the hardware components that aren’t currently working, in hopes that, over time, perhaps people can figure out a way to get Linux fully functioning on this new model of MacBook. If anyone has any ideas or suggestions to get any of this non-working hardware working, please post them.

SSD Information from Mac OS X Yosemite:

NVMExpress:

    Apple SSD Controller:
        APPLE SSD AP0512H:
          Capacity: 500.28 GB (500,277,788,672 bytes)
          TRIM Support: Yes
          Model: APPLE SSD AP0512H
          Revision: 5.841.01
          Link Width: x4
          Link Speed: 5.0 GT/s
          Detachable Drive: No
          BSD Name: disk0
          Partition Map Type: GPT (GUID Partition Table)
          Removable Media: No
          S.M.A.R.T. status: Not Supported
    | | | |     +-o AppleNVMeController  <class AppleNVMeController, id 0x100000200, registered, matched, active, busy 0 (213 ms), retain 11>    | | | |       | {
    | | | |       |   "IOClass" = "AppleNVMeController"
    | | | |       |   "IOPolledInterface" = "AppleNVMeControllerPolledAdapter is not serializable"
    | | | |       |   "IOMaximumSegmentByteCountRead" = 0x1000
    | | | |       |   "IOMaximumSegmentByteCountWrite" = 0x1000
    | | | |       |   "IOReportLegendPublic" = Yes
    | | | |       |   "IOProviderClass" = "IOPCIDevice"
    | | | |       |   "Physical Interconnect Location" = "Internal"
    | | | |       |   "IOPowerManagement" = {"ChildrenPowerState"=0x3,"MaxPowerState"=0x3,"CurrentPowerState"=0x3,"CapabilityFlags"=0x8000,"ChildProxyPowerState"=0x3,"DriverPowerState"=0x0}
    | | | |       |   "IOMaximumSegmentCountRead" = 0x40
    | | | |       |   "Model Number" = "APPLE SSD AP0512H"
    | | | |       |   "IOProbeScore" = 0x0
    | | | |       |   "IOMaximumSegmentCountWrite" = 0x40
    | | | |       |   "Serial Number" = "C02519600RKFV40AZ"
    | | | |       |   "NVMe Revision Supported" = "1.01"
    | | | |       |   "IOPCIPauseCompatible" = Yes
    | | | |       |   "Physical Interconnect" = "PCI-Express"
    | | | |       |   "Chipset Name" = "SSD Controller"
    | | | |       |   "Controller Characteristics" = {"Low Power Mode"=Yes,"Preferred IO Size"=0x40000}
    | | | |       |   "IOMatchCategory" = "IODefaultMatchCategory"
    | | | |       |   "CFBundleIdentifier" = "com.apple.iokit.IONVMeFamily"
    | | | |       |   "Vendor Name" = "Apple"
    | | | |       |   "IOMinimumSegmentAlignmentByteCount" = 0x4
    | | | |       |   "Firmware Revision" = "5.841.01"
    | | | |       |   "IOPCITunnelCompatible" = Yes
    | | | |       |   "IOReportLegend" = ({"IOReportChannels"=((0x4e564d6520507772,0x400020002,"NVMe Power States")),"IOReportGroupName"="NVMe","IOReportChannelInfo"={"IOReportChannelUnit"=0x100007600000001}})
    | | | |       |   "IOUnitName" = "disk"
    | | | |       |   "IOPCIClassMatch" = "0x01800200&0xffffff00"
    | | | |       | }
    | | | |       | 
    | | | |       +-o IONVMeBlockStorageDevice@1  <class IONVMeBlockStorageDevice, id 0x100000203, registered, matched, active, busy 0 (213 ms), retain 15>
    | | | |         | {
    | | | |         |   "IOCFPlugInTypes" = {"AA0FA6F9-C2D6-457F-B10B-59A13253292F"="NVMeSMARTLib.plugin"}
    | | | |         |   "NamespaceUUID" = 0x39300101365b4
    | | | |         |   "IOPowerManagement" = {"CapabilityFlags"=0xc040,"MaxPowerState"=0x3,"ActivityTickles"=0xeb8c,"IdleTimerPeriod"=0x3a98,"DevicePowerState"=0x3,"TimeSinceLastTickle"=0x47f,"DriverPowerState"=0x2,"IdleTimerElapsedTime"=0x1144,"CurrentPowerState"=0x3}
    | | | |         |   "NamespaceID" = 0x1
    | | | |         |   "IOUnit" = 0x1
    | | | |         |   "ThermalThrottlingSupported" = Yes
    | | | |         |   "IOReportLegend" = ({"IOReportGroupName"="NVMe","IOReportChannels"=((0x5469657230204257,0x180000001,"Tier0 BW Scale Factor"),(0x5469657231204257,0x180000001,"Tier1 BW Scale Factor"),(0x5469657232204257,0x180000001,"Tier2 BW Scale Factor"),(0x5469657233204257,0x180000001,"Tier3 BW Scale Factor")),"IOReportChannelInfo"={"IOReportChannelUnit"=0x0},"IOReportSubGroupName"="BW Limits"},{"IOReportGroupName"="NVMe","IOReportChannels"=((0x546f742054696d65,0x180000001,"Total time elapsed"),(0x5469657230202020,0x180000001,"Tier0 T$
    | | | |         |   "device-type" = "Generic"
    | | | |         |   "IOReportLegendPublic" = Yes
    | | | |         |   "SSDThermalThrottlingInfo" = 0x64646464
    | | | |         |   "Protocol Characteristics" = {"Physical Interconnect"="PCI-Express","Physical Interconnect Location"="Internal"}
    | | | |         |   "Device Characteristics" = {"Serial Number"="C02519600RKFV40AZ","Medium Type"="Solid State","Product Name"="APPLE SSD AP0512H","Vendor Name"="","Product Revision Level"="5.841.01"}
    | | | |         |   "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes}
    | | | |         |   "NVMe SMART Capable" = Yes
    | | | |         | }
    | | | |         | 
    | | | |         +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x100000207, registered, matched, active, busy 0 (213 ms), retain 8>
    | | | |           | {
    | | | |           |   "IOPropertyMatch" = {"device-type"="Generic"}
    | | | |           |   "IOProbeScore" = 0x0
    | | | |           |   "IOProviderClass" = "IOBlockStorageDevice"
    | | | |           |   "IOClass" = "IOBlockStorageDriver"
    | | | |           |   "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
    | | | |           |   "Statistics" = {"Operations (Write)"=0x468a,"Latency Time (Write)"=0x0,"Bytes (Read)"=0x4ce2a200,"Errors (Write)"=0x0,"Total Time (Read)"=0x4f114e40d,"Retries (Read)"=0x0,"Latency Time (Read)"=0x0,"Errors (Read)"=0x0,"Total Time (Write)"=0x562f7d63d,"Bytes (Write)"=0x17804000,"Operations (Read)"=0xf68c,"Retries (Write)"=0x0}
    | | | |           |   "IOMatchCategory" = "IODefaultMatchCategory"
    | | | |           |   "IOGeneralInterest" = "IOCommand is not serializable"
    | | | |           | }
    | | | |           | 
    | | | |           +-o APPLE SSD AP0512H Media  <class IOMedia, id 0x100000208, registered, matched, active, busy 0 (213 ms), retain 11>
    | | | |             | {
    | | | |             |   "Removable" = No
    | | | |             |   "Content" = "GUID_partition_scheme"
    | | | |             |   "Whole" = Yes
    | | | |             |   "Leaf" = No
    | | | |             |   "BSD Name" = "disk0"
    | | | |             |   "Ejectable" = No
    | | | |             |   "Preferred Block Size" = 0x1000
    | | | |             |   "IOMediaIcon" = {"IOBundleResourceFile"="Internal.icns","CFBundleIdentifier"="com.apple.iokit.IOStorageFamily"}
    | | | |             |   "BSD Minor" = 0x0
    | | | |             |   "IOGeneralInterest" = "IOCommand is not serializable"
    | | | |             |   "Writable" = Yes
    | | | |             |   "BSD Major" = 0x1
    | | | |             |   "Size" = 0x747ae14000
    | | | |             |   "IOBusyInterest" = "IOCommand is not serializable"
    | | | |             |   "Open" = Yes
    | | | |             |   "Content Hint" = ""
    | | | |             |   "BSD Unit" = 0x0
    | | | |             | }
    | | | |             | 
    | | | |             +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000209, registered, matched, active, busy 0 (0 ms), retain 6>
    | | | |             |   {
    | | | |             |     "IOClass" = "IOMediaBSDClient"
    | | | |             |     "IOMatchCategory" = "IOMediaBSDClient"
    | | | |             |     "IOProbeScore" = 0x7530
    | | | |             |     "IOProviderClass" = "IOMedia"
    | | | |             |     "IOResourceMatch" = "IOBSD"
    | | | |             |     "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
    | | | |             |   }
    | | | |             |   
    | | | |             +-o IOGUIDPartitionScheme  <class IOGUIDPartitionScheme, id 0x10000020c, !registered, !matched, active, busy 0 (2 ms), retain 9>
    | | | |               | {
    | | | |               |   "IOProbeScore" = 0xfa0
    | | | |               |   "IOPropertyMatch" = {"Whole"=Yes}
    | | | |               |   "IOMatchCategory" = "IOStorage"
    | | | |               |   "IOClass" = "IOGUIDPartitionScheme"
    | | | |               |   "IOProviderClass" = "IOMedia"
    | | | |               |   "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
    | | | |               |   "Content Mask" = "GUID_partition_scheme"
    | | | |               | }
    | | | |               | 
    | | | |               +-o EFI System Partition@1  <class IOMedia, id 0x100000238, registered, matched, active, busy 0 (0 ms), retain 9>
    | | | |               | | {
    | | | |               | |   "Removable" = No
    | | | |               | |   "Content" = "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"
    | | | |               | |   "Whole" = No
    | | | |               | |   "Leaf" = Yes
    | | | |               | |   "BSD Name" = "disk0s1"
    | | | |               | |   "Ejectable" = No
    | | | |               | |   "Preferred Block Size" = 0x1000
    | | | |               | |   "Base" = 0x6000
    | | | |               | |   "BSD Minor" = 0x1
    | | | |               | |   "IOGeneralInterest" = "IOCommand is not serializable"
    | | | |               | |   "Writable" = Yes
    | | | |               | |   "UUID" = "BF84B405-EA94-49EE-899B-ABEB19F4749A"
    | | | |               | |   "Partition ID" = 0x1
    | | | |               | |   "BSD Major" = 0x1
    | | | |               | |   "Size" = 0x12c00000
    | | | |               | |   "IOBusyInterest" = "IOCommand is not serializable"
    | | | |               | |   "Open" = No
    | | | |               | |   "Content Hint" = "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"
    | | | |               | |   "BSD Unit" = 0x0
    | | | |               | | }
    | | | |               | | 
    | | | |               | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000023c, registered, matched, active, busy 0 (0 ms), retain 6>
    | | | |               |     {
    | | | |               |       "IOClass" = "IOMediaBSDClient"
    | | | |               |       "IOMatchCategory" = "IOMediaBSDClient"
    | | | |               |       "IOProbeScore" = 0x7530
    | | | |               |       "IOProviderClass" = "IOMedia"
    | | | |               |       "IOResourceMatch" = "IOBSD"
    | | | |               |       "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
    | | | |               |     }
    | | | |               |     



SSD Information from Windows 8.1:

Apple APPLE SSD AP0512 SCSI Disk Device

C:\Windows\system32\DRIVERS\disk.sys
C:\Windows\System32\drivers\EhStorClass.sys
C:\Windows\System32\drivers\partmgr.sys
Apple Solid State Drive Device

C:\Windows\system32\DRIVERS\AppleSSD.sys

SSD Information from openSUSE Tumbleweed Live:

Linux linux.site 4.0.4-2-desktop #1 SMP PREEMPT Thu May 28 13:46:40 UTC 2015 (ad54361) x86_64 x86_64 x86_64 GNU/Linux

34: PCI 300.0: 0180 Storage controller  [Created at pci.328]
  Unique ID: svHJ.Whhgvr9iouA
  Parent ID: QSNP.Z8D8+bz+t96
  SysFS ID: /devices/pci0000:00/0000:00:1c.4/0000:03:00.0
  SysFS BusID: 0000:03:00.0
  Hardware Class: storage
  Model: "Apple Storage controller"
  Vendor: pci 0x106b "Apple Inc."
  Device: pci 0x2001 
  SubVendor: pci 0x106b "Apple Inc."
  SubDevice: pci 0x2001 
  Revision: 0x01
  Memory Range: 0xc1500000-0xc1501fff (rw,non-prefetchable)
  Module Alias: "pci:v0000106Bd00002001sv0000106Bsd00002001bc01sc80i02"
  Config Status: cfg=no, avail=yes, need=no, active=unknown
  Attached to: #28 (PCI bridge)
28: PCI 1c.4: 0604 PCI bridge (Normal decode)  [Created at pci.328]
  Unique ID: QSNP.Z8D8+bz+t96
  SysFS ID: /devices/pci0000:00/0000:00:1c.4
  SysFS BusID: 0000:00:1c.4
  Hardware Class: bridge
  Model: "Intel PCI bridge"
  Vendor: pci 0x8086 "Intel Corporation"
  Device: pci 0x9c98 
  SubVendor: pci 0x8086 "Intel Corporation"
  SubDevice: pci 0x7270 
  Revision: 0xe3
  Driver: "pcieport"
  IRQ: 16 (no events)
  Module Alias: "pci:v00008086d00009C98sv00008086sd00007270bc06sc04i00"
  Driver Info #0:
    Driver Status: shpchp is active
    Driver Activation Cmd: "modprobe shpchp"
  Config Status: cfg=no, avail=yes, need=no, active=unknown

Broadcom 802.11ac Wi-Fi Information from Mac OS X Yosemite:

<0000008200000000000000c10000008200000000000000c10000000000005000000000c20000000000000000000000c2000000000000000000000000000000000000008100000000000000000000008100000000000000000000000000000000>    | | | | |   "IOPCIExpressLinkCapabilities" = 0x3323c12
    | | | | |   "IOPCIConfigured" = Yes
    | | | | |   "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/RP03@1c0002"
    | | | | |   "revision-id" = <e3000000>
    | | | | |   "IOPCIExpressLinkStatus" = 0x7011
    | | | | |   "IOPCIExpressCapabilities" = 0x142
    | | | | |   "pcidebug" = "0:28:2(1:1)"
    | | | | |   "IOName" = "pci-bridge"
    | | | | |   "#size-cells" = <02000000>
    | | | | |   "reg" = <00e2000000000000000000000000000000000000>
    | | | | |   "IOPCIExpressSlotCapabilities" = 0x14b200
    | | | | | }
    | | | | | 
    | | | | +-o IOPP  <class IOPCI2PCIBridge, id 0x1000001e6, registered, matched, active, busy 0 (312 ms), retain 8>
    | | | |   | {
    | | | |   |   "IOProbeScore" = 0xffffffffffffff9c
    | | | |   |   "CFBundleIdentifier" = "com.apple.iokit.IOPCIFamily"
    | | | |   |   "IOProviderClass" = "IOPCIDevice"
    | | | |   |   "IOClass" = "IOPCI2PCIBridge"
    | | | |   |   "IOMatchCategory" = "IODefaultMatchCategory"
    | | | |   |   "IOPCIClassMatch" = "0x06040000&0xffff0000"
    | | | |   |   "IOPowerManagement" = {"ChildrenPowerState"=0x2,"CapabilityFlags"=0x2,"CurrentPowerState"=0x2,"MaxPowerState"=0x3}
    | | | |   | }
    | | | |   | 
    | | | |   +-o ARPT@0  <class IOPCIDevice, id 0x100000192, registered, matched, active, busy 0 (312 ms), retain 11>
    | | | |     | {
    | | | |     |   "assigned-addresses" = <1000018200000000000040c100000000008000001800018200000000000000c10000000000004000>
    | | | |     |   "IOInterruptSpecifiers" = (<1200000007000000>,<0800000000000100>)
    | | | |     |   "IOReportLegend" = ({"IOReportGroupName"="Interrupt Statistics (by index)","IOReportChannels"=((0x496e747200010000,0x140000001,"               First Level Interrupt Handler Count"),(0x496e747200010001,0x140000001,"              Second Level Interrupt Handler Count"),(0x496e747200010002,0x140000001,"        First Level Interrupt Handler Time (MATUs)"),(0x496e747200010003,0x140000001,"   Second Level Interrupt Handler CPU Time (MATUs)"),(0x496e747200010004,0x140000001,"Second Level Interrupt Handler System Time (MATUs)")),"IO$
    | | | |     |   "class-code" = <00800200>
    | | | |     |   "IODeviceMemory" = (({"address"=0xc1400000,"length"=0x8000}),({"address"=0xc1000000,"length"=0x400000}))
    | | | |     |   "IOReportLegendPublic" = Yes
    | | | |     |   "IOPowerManagement" = {"ChildrenPowerState"=0x2,"CurrentPowerState"=0x2,"CapabilityFlags"=0x2,"ChildProxyPowerState"=0x2,"MaxPowerState"=0x3}
    | | | |     |   "subsystem-vendor-id" = <6b100000>
    | | | |     |   "built-in" = <00>
    | | | |     |   "pci-aspm-default" = 0x3
    | | | |     |   "acpi-device" = "IOACPIPlatformDevice is not serializable"
    | | | |     |   "IOPCIMSIMode" = Yes
    | | | |     |   "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController")
    | | | |     |   "name" = <706369313465342c3433613300>
    | | | |     |   "IOChildIndex" = 0x1
    | | | |     |   "device-id" = <a3430000>
    | | | |     |   "vendor-id" = <e4140000>
    | | | |     |   "acpi-pmcap-offset" = 0x48
    | | | |     |   "IOPCIResourced" = Yes
    | | | |     |   "compatible" = <706369313036622c31333100706369313465342c3433613300706369636c6173732c303238303030004152505400>
    | | | |     |   "IOPCIExpressLinkCapabilities" = 0x46dc11
    | | | |     |   "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/RP03@1c0002/ARPT@0"
    | | | |     |   "subsystem-id" = <31010000>
    | | | |     |   "revision-id" = <05000000>
    | | | |     |   "IOPCIExpressLinkStatus" = 0x1011
    | | | |     |   "IOPCIExpressCapabilities" = 0x2
    | | | |     |   "pcidebug" = "1:0:0"
    | | | |     |   "IOName" = "pci14e4,43a3"
    | | | |     |   "acpi-wake-type" = 0x2
    | | | |     |   "reg" = <000001000000000000000000000000000000000010000102000000000000000000000000008000001800010200000000000000000000000000004000>
    | | | |     |   "IOPCIPMCSState" = 0x0
    | | | |     | }
    | | | |     | 
    | | | |     +-o AirPort_Brcm4360  <class AirPort_Brcm4360, id 0x1000001f3, registered, matched, active, busy 0 (4 ms), retain 14>
    | | | |       | {
    | | | |       |   "IOClass" = "AirPort_Brcm4360"
    | | | |       |   "IOActiveMedium" = "00000080"
    | | | |       |   "mDNS_KEY" = "2009-07-30"
    | | | |       |   "TruePowerOff" = Yes
    | | | |       |   "mDNS_Keepalive" = Yes
    | | | |       |   "IOMinPacketSize" = 0x40
    | | | |       |   "IOPowerManagement" = {"CapabilityFlags"=0xf000,"MaxPowerState"=0x2,"CurrentPowerState"=0x2}
    | | | |       |   "IOProviderClass" = "IOPCIDevice"
    | | | |       |   "IOLinkStatus" = 0x3
    | | | |       |   "APChipRev" = 0x5
    | | | |       |   "IOVendor" = "Apple"
    | | | |       |   "APFeatures" = 0x1
    | | | |       |   "IOProbeScore" = 0x3a2
    | | | |       |   "IOPacketFilters" = {"IONetworkFilterGroup"=0x113,"IOEthernetDisabledWakeOnLANFilterGroup"=0x0,"IOEthernetWakeOnLANFilterGroup"=0x1}
    | | | |       |   "APTAPD" = 0x1
    | | | |       |   "IOMediumDictionary" = {"00000080"={"Index"=0x0,"Type"=0x80,"Flags"=0x0,"Speed"=0xa7d8c0}}
    | | | |       |   "IONameMatch" = ("pci14e4,43ba","pci14e4,43a3","pci14e4,43a0","pci14e4,4331","pci14e4,4353")
    | | | |       |   "IOMACAddress" = <a8667f0841be>
    | | | |       |   "IOMatchCategory" = "IODefaultMatchCategory"
    | | | |       |   "CFBundleIdentifier" = "com.apple.driver.AirPort.Brcm4360"
    | | | |       |   "IOFirmwareVersion" = "Broadcom BCM43xx 1.0 (7.15.166.24.3)"
    | | | |       |   "IONameMatched" = "pci14e4,43a3"
    | | | |       |   "IOModel" = "Wireless Network Adapter (802.11 a/b/g/n/ac)"
    | | | |       |   "IOSelectedMedium" = "00000080"
    | | | |       |   "IOMaxPacketSize" = 0x5ee
    | | | |       |   "IOLinkSpeed" = 0x4d7c6d00
    | | | |       |   "IOFeatures" = 0x8
    | | | |       | }
    | | | |       | 
    | | | |       +-o en0  <class AirPort_Brcm4360_Interface, id 0x100000240, registered, matched, active, busy 0 (3 ms), retain 11>
    | | | |       | | {
    | | | |       | |   "IOMaxTransferUnit" = 0x5dc
    | | | |       | |   "IOInterfaceState" = 0x3
    | | | |       | |   "IOPrimaryInterface" = Yes
    | | | |       | |   "IONetworkData" = {"IOOutputQueueStatsKey"={"Size"=0x2c,"Data"=<0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000>,"Access Types"=0x9},"IONetworkStatsKey"={"Size"=0x14,"Data"=<fb0e000000000000fe0c00000000000000000000>,"Access Types"=0x9},"IOEthernetStatsKey"={"Size"=0xd8,"Data"=<00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000$
    | | | |       | |   "IO80211Channel" = 0x24
    | | | |       | |   "IO80211Band" = "5 GHz"
    | | | |       | |   "IO80211ChannelBandwidth" = 0x50
    | | | |       | |   "IOControllerEnabled" = Yes
    | | | |       | |   "IOActivePacketFilters" = {"IONetworkFilterGroup"=0x13,"IOEthernetWakeOnLANFilterGroup"=0x0}
    | | | |       | |   "IO80211DriverVersion" = "Broadcom BCM43xx 1.0 (7.15.166.24.3)"
    | | | |       | |   "IORequiredPacketFilters" = {"IONetworkFilterGroup"=0x13,"IOEthernetWakeOnLANFilterGroup"=0x0}
    | | | |       | |   "IOMediaAddressLength" = 0x6
    | | | |       | |   "IOInterfaceUnit" = 0x0
    | | | |       | |   "IO80211Locale" = "FCC"
    | | | |       | |   "IOInterfaceFlags" = 0x8863
    | | | |       | |   "IOInterfaceType" = 0x6
    | | | |       | |   "IOMediaHeaderLength" = 0xe
    | | | |       | |   "IOInterfaceExtraFlags" = 0x2008c0
    | | | |       | |   "IOBuiltin" = Yes
    | | | |       | |   "IOMulticastAddressList" = <3333ff14bb943333000000fb01005e0000fb01005e0000013333ffa5037f3333000000013333ff0841be010393df0b92>
    | | | |       | |   "IO80211CountryCode" = "US"
    | | | |       | |   "BSD Name" = "en0"
    | | | |       | |   "IO80211HardwareVersion" = "vendorid: 0x14e4 deviceid: 0x43a3 radiorev: 0x2d2069 chipnum: 0x4350 chiprev: 0x5 corerev: 0x30 boardid: 0x131 boardvendor: 0x106b boardrev: 0x1175 driverrev: 0x70fa618 ucoderev: 0x0 bus: 0x1 "
    | | | |       | |   "IO80211ChannelFrequency" = 0x143c
    | | | |       | |   "IO80211RSNDone" = Yes
    | | | |       | |   "IOLocation" = ""
    | | | |       | |   "IOInterfaceNamePrefix" = "en"
    | | | |       | | }
    | | | |       | | 
    | | | |       | +-o IONetworkStack  <class IONetworkStack, id 0x100000230, registered, matched, active, busy 0 (0 ms), retain 9>
    | | | |       |   | {
    | | | |       |   |   "IOProbeScore" = 0x0
    | | | |       |   |   "CFBundleIdentifier" = "com.apple.iokit.IONetworkingFamily"
    | | | |       |   |   "IOProviderClass" = "IOResources"
    | | | |       |   |   "IOClass" = "IONetworkStack"
    | | | |       |   |   "IOMatchCategory" = "IONetworkStack"
    | | | |       |   |   "IOUserClientClass" = "IONetworkStackUserClient"
    | | | |       |   |   "IOResourceMatch" = "IOBSD"
    | | | |       |   | }
    | | | |       |   | 
    | | | |       |   +-o IONetworkStackUserClient  <class IONetworkStackUserClient, id 0x100000272, !registered, !matched, active, busy 0, retain 5>
    | | | |       |       {
    | | | |       |         "IOUserClientCreator" = "pid 53, configd"
    | | | |       |       }
    | | | |       |       
    | | | |       +-o AirPort_Brcm4360_P2PInterface  <class AirPort_Brcm4360_P2PInterface, id 0x1000002fb, registered, matched, active, busy 0 (0 ms), retain 8>
    | | | |       |   {
    | | | |       |     "IOMACAddress" = <>
    | | | |       |     "BSD Name" = "p2p0"
    | | | |       |     "IO80211VirtualInterfaceRole" = "P2P Device"
    | | | |       |   }
    | | | |       |   
    | | | |       +-o AirPort_Brcm4360_P2PInterface  <class AirPort_Brcm4360_P2PInterface, id 0x100000310, registered, matched, active, busy 0 (0 ms), retain 8>
    | | | |           {
    | | | |             "IOMACAddress" = <>
    | | | |             "BSD Name" = "awdl0"
    | | | |             "IO80211VirtualInterfaceRole" = "AirLink"
    | | | |           }
    | | | |           
    | | | +-o RP04@1C,3  <class IOPCIDevice, id 0x100000193, registered, matched, active, busy 0 (568 ms), retain 11>
    | | | | | {
    | | | | |   "acpi-device" = "IOACPIPlatformDevice is not serializable"
    | | | | |   "IOPCIExpressLinkCapabilities" = 0x4323c12
    | | | | |   "class-code" = <00040600>
    | | | | |   "subsystem-vendor-id" = <7f000000>
    | | | | |   "vendor-id" = <86800000>
    | | | | |   "IOName" = "pci-bridge"
    | | | | |   "IOPCIPMCSState" = 0xb
    | | | | |   "#size-cells" = <02000000>
    | | | | |   "IOPCIExpressSlotCapabilities" = 0x1cb200
    | | | | |   "IOPMPCIConfigSpaceVolatile" = No
    | | | | |   "pcidebug" = "0:28:3(2:2)"
    | | | | |   "IOPCIExpressLinkStatus" = 0x7012
    | | | | |   "pci-aspm-default" = 0x2
    | | | | |   "IODTPersist" = <>
    | | | | |   "IOInterruptControllers" = ("io-apic-0")
    | | | | |   "reg-ltrovr" = <0004000000000000>
    | | | | |   "IOPCIConfigured" = Yes
    | | | | |   "IOPCIExpressCapabilities" = 0x142
    | | | | |   "built-in" = <00>
    | | | | |   "IOPCIResourced" = Yes
    | | | | |   "IOPowerManagement" = {"ChildrenPowerState"=0x0,"CurrentPowerState"=0x0,"CapabilityFlags"=0x0,"ChildProxyPowerState"=0x2,"MaxPowerState"=0x3}
    | | | | |   "ranges" = 

Broadcom 802.11ac Wi-Fi Information from Windows 8.1:

Broadcom 802.11ac Network Adapter
C:\Windows\system32\bcmihvsrv64.dll
C:\Windows\system32\bcmihvui64.dll
C:\Windows\system32\DRIVERS\BCMWL63a.SYS
C:\Windows\system32\drivers\vwifibus.sys

Broadcom 802.11ac Wi-Fi Information from openSUSE Tumbleweed:

32: PCI 100.0: 0280 Network controller  [Created at pci.328]
  Unique ID: VCu0.sBksH+ngQH8
  Parent ID: hoOk.VUR84O9zm26
  SysFS ID: /devices/pci0000:00/0000:00:1c.2/0000:01:00.0
  SysFS BusID: 0000:01:00.0
  Hardware Class: network
  Model: "Broadcom Network controller"
  Vendor: pci 0x14e4 "Broadcom"
  Device: pci 0x43a3 
  SubVendor: pci 0x106b "Apple Inc."
  SubDevice: pci 0x0131 
  Revision: 0x05
  Memory Range: 0xc1400000-0xc1407fff (rw,non-prefetchable)
  Memory Range: 0xc1000000-0xc13fffff (rw,non-prefetchable)
  Module Alias: "pci:v000014E4d000043A3sv0000106Bsd00000131bc02sc80i00"
  Config Status: cfg=no, avail=yes, need=no, active=unknown
  Attached to: #26 (PCI bridge)
26: PCI 1c.2: 0604 PCI bridge (Normal decode)  [Created at pci.328]
  Unique ID: hoOk.VUR84O9zm26
  SysFS ID: /devices/pci0000:00/0000:00:1c.2
  SysFS BusID: 0000:00:1c.2
  Hardware Class: bridge
  Model: "Intel PCI bridge"
  Vendor: pci 0x8086 "Intel Corporation"
  Device: pci 0x9c94 
  SubVendor: pci 0x8086 "Intel Corporation"
  SubDevice: pci 0x7270 
  Revision: 0xe3
  Driver: "pcieport"
  IRQ: 18 (no events)
  Module Alias: "pci:v00008086d00009C94sv00008086sd00007270bc06sc04i00"
  Driver Info #0:
    Driver Status: shpchp is active
    Driver Activation Cmd: "modprobe shpchp"
  Config Status: cfg=no, avail=yes, need=no, active=unknown

Keyboard and Trackpad Information from Mac OS X Yosemite:

Apple Internal Keyboard / Trackpad:


  Product ID:    0x0272
  Vendor ID:    0x05ac (Apple Inc.)
  Version:    6.22
  Serial Number:    D3H5094U7M1FT9FAQ6BS
  Manufacturer:    Apple Inc.
  Location ID:    0x01000000
    | | | +-o SPI1@15,4  <class IOPCIDevice, id 0x10000019a, registered, matched, active, busy 0 (94 ms), retain 11>    | | | | | {    | | | | |   "assigned-addresses" = <10ac00820000000000a081c10000000000100000>
    | | | | |   "gspi-pin-cs" = <5700000000000000>
    | | | | |   "IOInterruptSpecifiers" = (<1500000007000000>)
    | | | | |   "class-code" = <00800c00>
    | | | | |   "IODeviceMemory" = (({"address"=0xc181a000,"length"=0x1000}))
    | | | | |   "IOPowerManagement" = {"ChildrenPowerState"=0x2,"CurrentPowerState"=0x2,"CapabilityFlags"=0x2,"ChildProxyPowerState"=0x2,"MaxPowerState"=0x3}
    | | | | |   "subsystem-vendor-id" = <86800000>
    | | | | |   "built-in" = <00>
    | | | | |   "acpi-device" = "IOACPIPlatformDevice is not serializable"
    | | | | |   "IOInterruptControllers" = ("io-apic-0")
    | | | | |   "gspi-pin-miso" = <5a00000000000000>
    | | | | |   "vendor-id" = <86800000>
    | | | | |   "device-id" = <e69c0000>
    | | | | |   "gspi-pin-mosi" = <5900000000000000>
    | | | | |   "gspi-pin-clk" = <5800000000000000>
    | | | | |   "name" = <706369383038362c3963653600>
    | | | | |   "compatible" = <706369383038362c3963653600706369636c6173732c306338303030005350493100>
    | | | | |   "IOPCIResourced" = Yes
    | | | | |   "gspi-sysclk-period" = <0a00000000000000>
    | | | | |   "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/SPI1@150004"
    | | | | |   "subsystem-id" = <e69c0000>
    | | | | |   "revision-id" = <03000000>
    | | | | |   "IOPCIPMCSState" = 0x0
    | | | | |   "pcidebug" = "0:21:4"
    | | | | |   "IOName" = "pci8086,9ce6"
    | | | | |   "reg" = <00ac00000000000000000000000000000000000010ac000200000000000000000000000000100000>
    | | | | |   "gspi-channel-number" = <0100000000000000>
    | | | | | }
    | | | | | 
    | | | | +-o AppleIntelLpssGspi@1  <class AppleIntelLpssGspi, id 0x1000001c6, registered, matched, active, busy 0 (91 ms), retain 9>
    | | | |   | {
    | | | |   |   "IOProbeScore" = 0x64
    | | | |   |   "CFBundleIdentifier" = "com.apple.driver.AppleIntelLpssGspi"
    | | | |   |   "IOProviderClass" = "IOPCIDevice"
    | | | |   |   "IOClass" = "AppleIntelLpssGspi"
    | | | |   |   "IOMatchCategory" = "IODefaultMatchCategory"
    | | | |   |   "IOPCIMatch" = "0x9c048086&0xff0cffff"
    | | | |   |   "IOKitDebug" = 0x0
    | | | |   |   "HasPCIPowermanagement" = "true"
    | | | |   |   "IOPowerManagement" = {"ChildrenPowerState"=0x1,"CapabilityFlags"=0x2,"CurrentPowerState"=0x1,"MaxPowerState"=0x1}
    | | | |   |   "registerServiceTime" = 0x3b1b20c9
    | | | |   | }
    | | | |   | 
    | | | |   +-o AppleIntelLpssSpiController@1  <class AppleIntelLpssSpiController, id 0x1000001cd, registered, matched, active, busy 0 (90 ms), retain 9>
    | | | |     | {
    | | | |     |   "IOClass" = "AppleIntelLpssSpiController"
    | | | |     |   "CFBundleIdentifier" = "com.apple.driver.AppleIntelLpssSpiController"
    | | | |     |   "IOProviderClass" = "AppleIntelLpssGspi"
    | | | |     |   "kNotificationIntelLpssDmac" = "true"
    | | | |     |   "IOPowerManagement" = {"ChildrenPowerState"=0x1,"CapabilityFlags"=0x2,"CurrentPowerState"=0x1,"MaxPowerState"=0x1}
    | | | |     |   "IOProbeScore" = 0x64
    | | | |     |   "Stats" = {"MmioDpxMultiRequest"=0xb8,"CSCtlIntFalseSucces"=0x34b8,"SetPowerStateSuccess"=0x1,"MmioDpxMultiError"=0x0,"DmaDpxErrorCalcTime"=0x0,"CSCtlExtFalseError"=0x0,"CSCtlExtFalseSucces"=0x1b,"CSCtlIntFalseOffline"=0x0,"MmioDpxWordSuccess"=0x0,"CSCtlExtFalseOffline"=0x0,"PollTimeout"=0x0,"DmaDpxRequest"=0x34b8,"DmaDpxErrorWait"=0x0,"CSCtlExtTrueError"=0x0,"DmaDpxErrorSetWm"=0x0,"DmaDpxError"=0x0,"TransfersError"=0x0,"ResetSuccess"=0x0,"DmaDpxStart"=0x34b8,"PollHist"=(0x34b8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x$
    | | | |     |   "addMatchingNotificationDmacTime" = 0x3b2a6571
    | | | |     |   "IOMatchCategory" = "IODefaultMatchCategory"
    | | | |     |   "addMatchingNotificationGspiTime" = 0x3b2aa8f7
    | | | |     |   "fMaxCompletionTime" = "10000000"
    | | | |     |   "IOKitDebug" = 0x0
    | | | |     |   "kNotificationIntelLpssGspi" = "true"
    | | | |     |   "matchingMsec" = 0x7d00
    | | | |     |   "OSBundleEnableKextLogging" = 0x6
    | | | |     | }
    | | | |     | 
    | | | |     +-o AppleIntelLpssSpiDevice@0  <class AppleIntelLpssSpiDevice, id 0x1000001d5, registered, matched, active, busy 0 (90 ms), retain 7>
    | | | |       | {
    | | | |       |   "spiDeviceId" = 0x1000000
    | | | |       |   "compatible" = <6170706c652d7370692d746f706361736500>
    | | | |       | }
    | | | |       | 
    | | | |       +-o AppleHSSPIController  <class AppleHSSPIController, id 0x1000001d6, registered, matched, active, busy 0 (68 ms), retain 9>
    | | | |         | {
    | | | |         |   "IOProbeScore" = 0x0
    | | | |         |   "CFBundleIdentifier" = "com.apple.driver.AppleHSSPISupport"
    | | | |         |   "IOProviderClass" = "AppleIntelSPIDevice"
    | | | |         |   "IOClass" = "AppleHSSPIController"
    | | | |         |   "IOMatchCategory" = "IODefaultMatchCategory"
    | | | |         |   "IONameMatch" = "apple-spi-topcase"
    | | | |         |   "IOUserClientClass" = "AppleHSSPIControllerUserClient"
    | | | |         |   "IONameMatched" = "apple-spi-topcase"
    | | | |         |   "boot-args" = 0x0
    | | | |         |   "LocationID" = 0x1000000
    | | | |         |   "IOPowerManagement" = {"ChildrenPowerState"=0x1,"DevicePowerState"=0x2,"CurrentPowerState"=0x2,"CapabilityFlags"=0x8000,"MaxPowerState"=0x2}
    | | | |         | }
    | | | |         | 
    | | | |         +-o Apple Internal Keyboard / Trackpad  <class AppleHSSPIDevice, id 0x1000001fa, registered, matched, active, busy 0 (68 ms), retain 28>
    | | | |           | {
    | | | |           |   "SPI Serial" = "D3H5094U7M1FT9FAQ6BS"
    | | | |           |   "ProtocolVersion" = 0x11
    | | | |           |   "SPI Vendor Name" = "Apple Inc."
    | | | |           |   "idProduct" = 0x272
    | | | |           |   "IOPowerManagement" = {"CapabilityFlags"=0x10000,"MaxPowerState"=0x2,"ActivityTickles"=0x0,"DevicePowerState"=0x0,"IdleTimerPeriod"=0xbb8,"TimeSinceLastTickle"=0x6817,"ChildrenPowerState"=0x1,"DriverPowerState"=0x1,"CurrentPowerState"=0x1}
    | | | |           |   "idVendor" = 0x5ac
    | | | |           |   "bcdDevice" = 0x622
    | | | |           |   "LocationID" = 0x1000000
    | | | |           |   "SPI Product Name" = "Apple Internal Keyboard / Trackpad"
    | | | |           | }
    | | | |           | 
    | | | |           +-o Device Management  <class AppleHSSPIInterface, id 0x1000001fc, registered, matched, active, busy 0 (33 ms), retain 8>
    | | | |           | | {
    | | | |           | |   "bcdDevice" = 0x622
    | | | |           | |   "wMaxInputPacketLength" = 0x10
    | | | |           | |   "idProduct" = 0x272
    | | | |           | |   "bInterfaceSubClass" = 0x0
    | | | |           | |   "wMaxControlRequestPacketLength" = 0x200
    | | | |           | |   "wMaxOutputPacketLength" = 0x0
    | | | |           | |   "LocationID" = 0x1000000
    | | | |           | |   "bInterfaceProtocol" = 0x0
    | | | |           | |   "SPI Product Name" = "Apple Internal Keyboard / Trackpad"
    | | | |           | |   "idVendor" = 0x5ac
    | | | |           | |   "bInterfaceNumber" = 0x0
    | | | |           | |   "bInterfaceClass" = 0x3
    | | | |           | | }
    | | | |           | | 
    | | | |           | +-o AppleHSSPIHIDDriver  <class AppleHSSPIHIDDriver, id 0x100000204, registered, matched, active, busy 0 (30 ms), retain 12>
    | | | |           |   | {
    | | | |           |   |   "IOClass" = "AppleHSSPIHIDDriver"
    | | | |           |   |   "Transport" = "SPI"
    | | | |           |   |   "BootProtocol" = 0x0
    | | | |           |   |   "bInterfaceProtocol" = 0x0
    | | | |           |   |   "MaxInputReportSize" = 0x5
    | | | |           |   |   "IOProviderClass" = "AppleHSSPIInterface"
    | | | |           |   |   "Product" = "Apple Internal Keyboard / Trackpad"
    | | | |           |   |   "IOPowerManagement" = {"CapabilityFlags"=0x10000,"MaxPowerState"=0x2,"ActivityTickles"=0x0,"IdleTimerPeriod"=0xbb8,"DevicePowerState"=0x0,"DriverPowerState"=0x1,"CurrentPowerState"=0x1}
    | | | |           |   |   "DeviceUsagePairs" = ({"DeviceUsagePage"=0xff00,"DeviceUsage"=0xb})
    | | | |           |   |   "IOProbeScore" = 0xea60
    | | | |           |   |   "MaxOutputReportSize" = 0x1
    | | | |           |   |   "ReportDescriptor" = <0600ff090ba1010600ff090b150026ff00750896040085e08122c0>
    | | | |           |   |   "IOUserClientClass" = "IOHIDLibUserClient"
    | | | |           |   |   "bInterfaceSubClass" = 0x0
    | | | |           |   |   "bInterfaceClass" = 0x3
    | | | |           |   |   "IOCFPlugInTypes" = {"7DDEECA8-A7B4-11DA-8A0E-0014519758EF"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin","FA12FA38-6F1A-11D4-BA0C-0005028F18D5"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin"}
    | | | |           |   |   "CountryCode" = 0x0
    | | | |           |   |   "VersionNumber" = 0x622
    | | | |           |   |   "VendorID" = 0x5ac
    | | | |           |   |   "IOMatchCategory" = "IODefaultMatchCategory"
    | | | |           |   |   "CFBundleIdentifier" = "com.apple.driver.AppleHSSPIHIDDriver"
    | | | |           |   |   "bInterfaceNumber" = 0x0
    | | | |           |   |   "PrimaryUsage" = 0xb
    | | | |           |   |   "LocationID" = 0x1000000
    | | | |           |   |   "ExtendedData" = (0x3010000,0x3020000,0x3030000,0x3040000,0x3b00000,0x3b10000,0x3b20000,0x3b30000,0x3b60000)
    | | | |           |   |   "Elements" = ({"ReportID"=0x0,"ElementCookie"=0x1,"CollectionType"=0x1,"Type"=0x201,"Elements"=({"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0xff00,"Max"=0xff,"IsArray"=No,"Min"=0x0,"Type"=0x1,"Size"=0x20,"Flags"=0x22,"ReportID"=0xe0,"Usage"=0xb,"ReportCount"=0x4,"Unit"=0x0,"HasNullState"=No,"IsNonLinear"=No,"HasPreferredState"=No,"ReportSize"=0x8,"ScaledMin"=0x0,"IsWrapping"=No,"ScaledMax"=0xff,"ElementCookie"=0x2},{"UnitExponent"=0x0,"IsRelative"=No,"DuplicateIndex"=0x0,"UsagePage"=0xff00,"Max"=0xff,"IsArray"$
    | | | |           |   |   "ProductID" = 0x272
    | | | |           |   |   "PrimaryUsagePage" = 0xff00
    | | | |           |   |   "ReportInterval" = 0x1f40
    | | | |           |   |   "IOGeneralInterest" = "IOCommand is not serializable"
    | | | |           |   |   "MaxFeatureReportSize" = 0x1
    | | | |           |   |   "InputReportElements" = ({"ReportID"=0xe0,"ElementCookie"=0x7,"Size"=0x28,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"=0x28,"Usage"=0x0})
    | | | |           |   | }

Keyboard and Trackpad Information from Windows 8.1:

Apple SPI Keyboard
C:\Windows\system32\DRIVERS\AppleSPIKeyboard.sys
C:\Windows\System32\Drivers\mshidkmdf.sys
C:\Windows\system32\WdfCoInstaller01011.dll
HID Keyboard Device
C:\Windows\system32\DRIVERS\kbdclass.sys
C:\Windows\system32\DRIVERS\kbdhid.sys
Apple SPI Trackpad
C:\Windows\system32\DRIVERS\AppleSPITrackpad.sys
C:\Windows\System32\Drivers\mshidkmdf.sys
C:\Windows\system32\WdfCoInstaller01011.dll
HID-compliant mouse
C:\Windows\system32\DRIVERS\mouclass.sys
C:\Windows\system32\DRIVERS\mouhid.sys

Keyboard and Trackpad Information from openSUSE Tumbleweed:

No information found

lub997,

I too have been struggling with installing any form of Linux of my new 12" 2015 MacBook 8,1 (1.2Ghz/8GB/512GB) and, like you - I have tried a Gparted (USB ISO) for partitioning, Ubuntu 15.04 (kernel 3.19-based), Fedora 22 (kernel 4.0-based) and have had exactly the same experience as you describe (zero support for the solid-state disk, keyboard, trackpad, Wi-Fi card, brightness settings etc). I can further attest to the ability of Yosemite 10.10.2 Boot Camp Assistant created Windows 8.1 USB media being able to utilise the majority of the above (i.e. the mouse and keyboard are functional on the first installation step/screen etc). Interestingly, I haven’t had much luck trying to inject these drivers into the Windows 10 Insider Preview (build 10074) boot.wim and install.wim files (having mounted the ISO first):

g:\sources\dism.exe /mount-wim /wimfile:h:\install.wim /index:1 /mountdir:h:\mount
g:\sources\dism.exe /image:h:\mount /add-driver /driver:h:\drivers /recurse /forceunsigned
g:\sources\dism.exe /unmount-wim /mountdir:h:\mount /commit

…where g:\ denotes the location where I’d mounted the installation media and h:\ denotes the logical volume where the source is being mounted.

I also echo your comments regarding there seemingly being no information on this noble pursuit.

Hopefully someone more skilled can reply shortly with some miracle cure so we can all run around with triple-boot killer-notebooks! :wink:

John

I am “happy” to see that I am not the only one with SSD troubles when installing Linux on a Macbook. It was particularly interesting to read you lub997. I have a 11" Macbook air. Like you I did not bought the basic CPU, I have choosen the 2.2Ghz core I7 with 8GB RAM and a 128GB SSD.
Under OSX the system information windows says there is an NVMExpress controller: APPLE SSD AP0128H.
I tried to install some distro like Ubuntu or Fedora with 4.0 kernels with no success. I was guessing it was related with this SSD controller so I contacted the Linux maintainer of the NVME system. He asked me to run a sudo lspci -vvvxxxxs 04:00.0

[liveuser@localhost ~]$ sudo lspci -vvvxxxxs 04:00.0
04:00.0 Mass storage controller: Apple Inc. Device 2001 (rev 01) (prog-if 02)
Subsystem: Apple Inc. Device 2001
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 256 bytes
Interrupt: pin A routed to IRQ 0
Region 0: Memory at c1300000 (64-bit, non-prefetchable) [size=8]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [70] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <4us, L1 <32us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 5GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
Capabilities: [148 v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
00: 6b 10 01 20 06 00 10 00 01 02 80 01 40 00 00 00
10: 04 00 30 c1 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 6b 10 01 20
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 01 00 00
40: 01 50 03 00 08 00 00 00 00 00 00 00 00 00 00 00
50: 05 70 86 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 10 00 02 00 82 8b e8 07 10 28 19 00 42 cc 44 00
etc…

He explained to me that into this line : 00: 6b 10 01 20 06 00 10 00 01 02 80 01 40 00 00 00, the three bytes “02 80 01” means “other Mass Storage”. If there where "02 08 01"it would claim to be an NVMe device. This may be an hardware bug. We tryed to find a solution to this by forcing Linux to recognise the SSD.This is how we proceeded (from a live cd), but please keep in my that it may hurt the data on your SSD…

$ sudo modprobe nvme
$ ls /sys/bus/pci/drivers/nvme/
bind module new_id remove_id uevent unbind

echo “106b 2001” > /sys/bus/pci/drivers/nvme/new_id

In my case it did not worked : With Fedora the whole system just freezed and I was only able to restart the system (no data loss on the SSD). With Ubuntu I had this error :
nvme 0000:04:00.0: Minimum device page size (134217728) too large for host (4096)

If someone could also try and see what it gives… Any feedback or error could help us to solve the issue.[/size]

I agree with jgrossholtz’s approach of forcing the nvme driver to recognise the device using the new_id. But I get the same result on my macbook 12", using kernel’s up to 4.2rc4.

If I were a betting man I’d say this was a byte order bug. “Minimum device page size (134217728)” … if you flip the word 134217728 becomes 2048. As 2048 < 4096 and the driver would be happy, and might just work from then on? A quick google shows the error is probably generated around the code in this patch?:
http://lists.infradead.org/pipermail/linux-nvme/2014-June/001003.html
But I’m far to rusty a programmer to suggest a fix…
Hopefully this might ‘click’ with someone - I hope I’ve not just come up with a red herring. Happy to test anyone’s patch…

Actually, after looking at the patch in the cold light of day, I’m not sure it is relevant, but it does say it was tested on a sparc (big endian IIRC).

Hello denverthedragon (cool name btw !!)

For now I don’t think anyone is really working on the issue. There is a discussion on the nvme linux mailing list. Where I will post your idea about byte flipping. Please have a look there.

By the way, how have you been able to test with the latest Linux 4.2 rc if you cannot install linux ?

Thanks for posting on the mailing list. I’ll have a read through it.

As for the install:
I installed linux (Ubuntu) to a USB stick on my desktop (which uses UEFI), booted into it and installed the latest kernel. Then when you plug it into the mac and hold alt you get the boot to EFI option and -presto- it boots into Linux. Later today I’ll try with the latest kernel and hopefully my keyboard and trackpad will work.

Baby steps… :slight_smile:

Ok, here’s a strange thing: Grub sees the contents of the macbook hard disk just fine! I can list files in the partitions perfectly ok. So how do I tell what type of drive grub sees the SSD as?

Out of curiosity I tried using the ahci driver instead of nvme, but no joy (error -22).

My apologies for not running Arch but I hope you’ll forgive me as there’s not many other places on the Internet tracking Linux installation on the 2015 MacBook (Retina) far as I’m aware.
I thought I’d just chime in mention that I’ve just tried installing a ‘daily’ Ubuntu GNOME; ‘Wily Werewolf’ (15.10 x64, 20150814) with kernel 4.2rc6 as well as the release version of Ubuntu GNOME ‘Vivid Vervet’ (15.04 x64) in conjunction with kernel 4.2rc6 and 4.2rc7 but none of these combinations (to the best of my knowledge) have out-of-the-box driver support for the trackpad and/or keyboard as I was hoping.
It’s entirely possible I’ve overlooked some module which may need loading etc so I’d welcome any suggestions to this effect (I’ve tried a couple but to no avail). Further, I’m equally happy posting (or emailing) any kernel/syslogs (or other diagnostics) should anyone want them.
John

Further to my last post I’ve also compiled a custom 4.2rc7 kernel which I believe includes the patch that ‘rockinchado’ previously pointed to for the trackpad etc (https://github.com/torvalds/linux/commit/dbe08116b87cdc2217f11a78b5b70e29068b7efd).

Unfortunately, it hasn’t had any noticeable effect - although, I would welcome other peoples comments having tried this themselves (as I might not be loading modules correctly etc). I’m out of ideas - anyone else?

John