Jump to content
  • Announcements

    • Allan

      Forum Rules   04/13/2018

      Hello folks! As some things are being fixed, we'll keep you updated. Per hour the Forum Rules don't have a dedicated "Tab", so here is the place that we have our Rules back. New Users Lounge > [READ] - InsanelyMac Forum Rules - The InsanelyMac Staff Team. 
Sign in to follow this  

Yet another Orange/Silver Internal/External icons solution - seems to work

1 post in this topic

Recommended Posts

I've played a bit with Internal and External disk protocol injection (orange or silver disk icons). IOAHCIBlockStorageInjector (and similar kexts) inject those data, but it injects the same for all disks. I wanted to see if this can be done separately for each controller and/or individual port. It seems it can.


I did not test it too much, so I would not say "it works", but rather "seems to work".


Injector used is DeviceMergeNubAPM.kext, some details and src here:



which is slightly modified version of DeviceMergeNub.kext by Andy Vandijck, more here:



How it works:


DeviceMergeNub can hook into device/driver nub specified in it's Info.plist IOKitPersonalities/some personality/IOProviderClass and during probe can inject data specified under the IOKitPersonalities/some personality/IOProviderMergeProperties/* into that device/driver nub.

By adding Protocol Characteristics dict with Physical Interconnect Location=Internal or =External inside IOProviderMergeProperties and by specifying IOProviderClass=IOAHCIDevice or =IOBlockStorageDevice inside Info.plist it will inject Internal or External which will be used by OSX. So far this works, but again just for all drives.


DeviceMergeNubAPM extends DeviceMergeNub with ability to limit injection only if some parent node of the device/driver nub in IORegistry IOService plane meets specified criteria. This can be done by specifying IOKitPersonalities/some personality/IOAnyParentMatch dictionary which accepts some standard matching keys (IONameMatch …). With this it is possible to inject Physical Interconnect Location=Internal for one controller and Physical Interconnect Location=External for another.


Supported keys inside IOAnyParentMatch:

* IONameMatch - can be string or array or dictionary with standard names (SAT0 or pci8086,1c02 …)

* IOPropertyMatch - dictionary with parent's properties to match (all listed must match)

* IOLocationMatch - string (1F,2)

* IOPathMatch - string path to node in IOService plane (IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/SAT0@1F,2)




In order to try it, you'll need to:

- remove IOAHCIBlockStorageInjector (and similar kexts that do Internal/External injection)

- modify DeviceMergeNubAPM's Info.plist:

.....* change or add personalities (for example - one personality for each controller)

.....* specify controller with IOAnyParentMatch/IONameMatch=pci8086,1c02 (set to your name from IORegistry)

.....* specify Internal or External in IOProviderMergeProperties/Protocol Characteristics/Physical Interconnect Location

- install it in /Extra/Extensions or in /S/L/E, fix permissions etc. (for example with KextWizard from http://www.insanelymac.com/forum/index.php?showtopic=253395)

- restart


It's possible to specify Internal or External for each port. This needs unique port names in IORegistry (if not, must be changed in DSDT). Check attached example plist.






Some Info.plist examples:


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Posts

    •   Thank you Baio77. Here is my CLOVER folder and the Hack info. 
            For Some Reason I can't upload my CLOVER folder. But here you can download...
      https://www.dropbox.com/s/vjprxs1idtj9pt7/CLOVER.zip?dl=0     Thank you again!!!   HackInfo_Report.zip
    • The brightness is NOT from Sierra, in my signature you find tools with which to give info on your system .....
      Post Hack Info and the clover folder ......
      Only in this way can I help you ......
    • Few more minutes to go before going live again with https://OSXLatitude.com
          So you can lock this topic again @Allan Hopefully for a bit longer than a couple of weeks this time hehe.
    • ok, I am having a weird glitch with my Primary bios after modding it myself. can I get some help getting a Clean osmosis modded (for High Sierra and beyond) Bios Image?   https://www.gigabyte.com/us/Motherboard/GA-Z87X-UD5-TH-rev-1x#support-dl   the version I have always stuck with was F4, because the F5d.  I use a custom iMac 14,2 configuration that has been stable, the issues I have with stability come from not being able to get Access to the Bios, and prior to my attempt to mod it has been stable with up to High Sierra using clover, and up to Sierra with my very very old Ozmosis 894m F4 rom. I am not opposed to installing Ozmosis on the EFI Partition, But Gigabyte locked the Bios loading .efi Files, there is no shell to Force it to load HFS+ or APFS drivers.   so what I am asking for is assistance ether unlocking a Shell for my Bios, or getting a bios with the APFS, HFS+, and Ozmosis related files in it.   thanks again for everyones assistance. HBP
    •     Install from fresh again. This time without Tony Tools, follow some guide in this topic. Install IntelHD kexts as usual in S/L/E and thats it. Everything works again, except for backlight, I never could have this work, also got heating problem and when boots apple logo dissapears from like 5 seconds and then appear the login window... Any ideas on any of this????