Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

cdf

macrumors 68020
Original poster
Jul 27, 2012
2,258
2,587
It is well known that macOS sees PCI drives in a cMP as external. In the past, there have been several attempts to fix this annoyance, typically through codeless kexts and driver patches. However, these approaches are far from perfect.

Codeless kexts affect the properties of all (even non-PCI) drives. We therefore have to settle for calling all drives SATA or PCI. Patches can be dangerous, especially if applied to critical kexts. After system updates, these modifications can prevent the system from booting. There are also bootloader approaches, but these are better suited for hacks and not real Macs.

The problem is not just cosmetic. Improperly identified drives can cause issues for Boot Camp Assistant and the macOS installer.

I am currently working on an actual kext that addresses the problem. The kext simply changes the pertinent properties of PCI drives so that they can be seen as internal. So far, the approach works nicely with the 256 GB Apple SSUBX and the 240 GB Kingston HyperX Predator, the drives which I possess. This is how the drives now appear, for example, under Storage in About this Mac:

Internal.png

If there is interest in the community for the kext, I will make it available. However, to support other drives, particularly NVMe ones, I would need the names of PCI drives reported in System Information:

Devices.png

And, of course, some brave testers. Let me know if you're interested!

Current device list: Innie should now work with any SATA (AHCI) or NVMe drive.

Please refer to Post #9 for the kext and installation instructions.
 
Last edited:
Thank you for your hard work, It's much appreciated by many in the Mac community. I personally have a mix of all these drive types and in fact boot from NVMe. Personally for my part, I have no need or issue with the default behavior of macOS identities assigned to the various drive types. Many people do however, and I'm sure this thread will soon be expanding with comments from users who need a change in drive-type identifier assignments.

Once again, community support outshines that of the OEM. Please continue the good work that you are doing.
 
I use a bootable NVME drive (thanks again @tsialex) and would like to test but I am a "complete kext newbie" so I need a good guide ;-)

Great. For now I need to build up a list of devices for testing. Just go to the Apple () menu > About this Mac > System Report... > NVMExpress (or SATA/SATA Express) and respond with the name of your device (see the second image in the first post), something perhaps like "Samsung SSD 960 EVO 250GB."
 
  • Like
Reactions: Catzjes
Great. For now I need to build up a list of devices for testing. Just go to the Apple () menu > About this Mac > System Report... > NVMExpress (or SATA/SATA Express) and respond with the name of your device (see the second image in the first post), something perhaps like "Samsung SSD 960 EVO 250GB."

Thanks for the pointer, here you go :)

Screen Shot 2018-09-10 at 22.02.36.png
 
Awesome work! I've got a WD Black 500GB NVMe drive (the 2018 version that has much better performance). Here's how it's identified in System Profiler:

WDS500G2X0C-00L350
 
  • Like
Reactions: dabotsonline
AHCI blade:

SAMSUNG MZHPU512HCGL-00000:



Capacity: 512,11 GB (512.110.190.592 bytes)

Model: SAMSUNG MZHPU512HCGL-00000
 
With the Amfeltec Squid I have:

Generic AHCI Controller
Kingston SHPM2280P2/960G

Generic SATA Express Controller
SAMSUNG MZHPV256HDGL-00000

Generic SATA Express Controller
SAMSUNG MZHPV512HDGL-00000
 
The latest version of Innie is 1.3.0:


Making PCIe drives appear internal with Innie

You will need:
Download the latest release version. The uncompressed folder contains the file Innie.kext.​

Installation
  1. Boot into macOS with SIP disabled.
  2. For macOS Catalina or later, enter sudo mount -uw / in terminal. You may need to authorize this.
  3. Copy Innie.kext to /Library/Extensions. You may need to authorize this.
  4. Enter the following commands in terminal:
    Code:
    sudo chmod -R 755 /Library/Extensions/Innie.kext
    sudo chown -R root:wheel /Library/Extensions/Innie.kext
    sudo touch /Library/Extensions
    sudo kextcache -update-volume /
  5. Wait for the last command to complete.
  6. For macOS Big Sur, approve the installation in System Preferences > Security & Privacy.
  7. Reboot.
If all goes well, your drive will now be seen as internal.

Legacy instructions

These instructions apply to Innie 1.2.1 and earlier. For these versions, Innie is a Lilu plugin.

You will need:

Lilu
Download the latest release version. The uncompressed folder contains the file Lilu.kext.​
Innie (see also attached to this post)​
Download version 1.2.1 or earlier. The uncompressed folder contains the file Innie.kext.​

Installation
  1. Disable SIP.
  2. Control-click on Lilu.kext and select "Show Package Contents." You will see the folder "Contents." Open it.
  3. In Contents, create a new folder called "Plugins" (exactly like this, but without quotation marks, of course). This is where Innie will go.
  4. Copy Innie.kext into the Plugins folder.
  5. For macOS Catalina or later, enter sudo mount -uw / in terminal. You may need to authorize this.
  6. Now copy Lilu.kext to /Library/Extensions. You may need to authorize this.
  7. Enter the following commands in terminal:
    Code:
    sudo chmod -R 755 /Library/Extensions/Lilu.kext
    sudo chown -R root:wheel /Library/Extensions/Lilu.kext
    sudo touch /Library/Extensions
    sudo kextcache -update-volume /
  8. Wait for the last command to complete.
  9. For macOS Big Sur, approve the installation in System Preferences > Security & Privacy.
  10. Reboot.
 

Attachments

  • 1.0.9 (DEBUG).zip
    10.6 KB · Views: 2,520
  • 1.2.0 (RELEASE).zip
    8.6 KB · Views: 2,162
Last edited:
Thanks cdf. Does SIP have to stay disabled in order to use Innie (clever name btw!)? Or can it be re-enabled after installing the kext?
 
Thanks cdf. Does SIP have to stay disabled in order to use Innie (clever name btw!)? Or can it be re-enabled after installing the kext?

Once the kext installed, SIP can indeed be re-enabled.
 
May I know if the intension for this project is to only provide fix for PCIe SSD, or including SATA SSD on PCIe cards?
 
where is Innie?

Not to worry it's coming. I'm currently building up the device list. Check post #9 later.

May I know if the intension for this project is to only provide fix for PCIe SSD, or including SATA SSD on PCIe cards?

I initially wrote the kext for my Apple SSUBX drive, and it works great. It also works for my Kingston HyperX Predator. These are AHCI disks on simple PCI adapters. After some testing here, we will be able to see if the kext can handle other disks, even NVMe ones. This is the intention right now. However, if the effectiveness of the approach can be proven, we can certainly try other cases.
 
Last edited:
  • Like
Reactions: h9826790
I have a:

SAMSUNG MZVPV256HDGL-00000

NVMe blade!

Thank you for that project! If that will work, my system is complete. Haha.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.