Jump to content

DeviceMergeNub for _DSM style injection


Andy Vandijck
 Share

50 posts in this topic

Recommended Posts

Yes, it should be possible.

 

You need to inject the following:

AAPL,slot-name (the name of the slot of the device e.g. PCI-0)

device_type (the type of the device e.g. ethernet)

model (the model of the device e.g. Atheros AR8132 Fast Ethernet Network Adapter

 

NOTE: AAPL,slot-name must be unique for each device.

You can use multiple IOKitPersonalities entries for it and all of the above can use type string.

Hi Andy! I tried to insert in info.plist the values for injecting PCI cards spec (Ethernet in this case) in the homonymous section of System Profiler. I put the kext in extra/extensions, and at reboot I got KP. I upload my info.plist... Could you look at it please? Before trying your kext I read this post http://www.insanelymac.com/forum/index.php?showtopic=134842

I'd like to obtain the same thing with your kext if it's possible...

Thanks for your work and sorry for my English....

Info.plist.zip

Link to comment
Share on other sites

Allready done.

Download the DeviceMergeNub_all_os.zip package, navigate within it to build/Release Leopard and use one of the posted plists.

It'll work... :)

 

 

I believe somebody did that allready (but it only works for the device itself, not the driver classes since they attach after boot)

 

thanks

Link to comment
Share on other sites

Hi Andy! I tried to insert in info.plist the values for injecting PCI cards spec (Ethernet in this case) in the homonymous section of System Profiler. I put the kext in extra/extensions, and at reboot I got KP. I upload my info.plist... Could you look at it please? Before trying your kext I read this post http://www.insanelymac.com/forum/index.php?showtopic=134842

I'd like to obtain the same thing with your kext if it's possible...

Thanks for your work and sorry for my English....

I don't understand how modify info.plist only for this injection in PCI cards...

Link to comment
Share on other sites

I don't understand how modify info.plist only for this injection in PCI cards...

Try using /S/L/E instead of /E/E.

Make sure you use IOPCIPrimaryMatch to match the device you wish to inject.

Link to comment
Share on other sites

Try using /S/L/E instead of /E/E.

Make sure you use IOPCIPrimaryMatch to match the device you wish to inject.

Thanks for your patience Andy but I don't understand. I'm a newbie on plist editor... could you modify the info.plist I attach in this post with the exactly string?. I tried but I had no luck.. Sorry and thanks

Info_1_2.plist.zip

Link to comment
Share on other sites

It is pity that modifying vendor id and device id doesn't make kext driver loaded.

But,I don't need natit anymore.

By injecting information,I got my graphic card enabled and make my wireless look like an AirPort Extreme Card.

 

post-35058-1290950503_thumb.jpg

 

Good job,Andy! :angel:

 

Could you please post your plist. I'm curious how you got your graphic card working as I get a kernel panic each time I try it this way.

Thx!

 

harbri

Link to comment
Share on other sites

Could you please post your plist. I'm curious how you got your graphic card working as I get a kernel panic each time I try it this way.

Thx!

 

harbri

 

Ohh.....yes,go ahead.

This info.plist is for GMA 950(27AE) graphic and lots more infomation for my HP mini 2140.

 

Info.plist.zip

Link to comment
Share on other sites

Ohh.....yes,go ahead.

This info.plist is for GMA 950(27AE) graphic and lots more infomation for my HP mini 2140.

OMG! Very impressive. Please, can you upload your .ioreg (from IORegistryExplorer) Please Please Please jejeje. Thanks.

Link to comment
Share on other sites

Andy, just two words, what is the difference of the project from old Natit?

Check the source.

It is based on AppleUSBMergeNub (which is a generic USB injector).

Link to comment
Share on other sites

Sorry,Andy.

 

I think I find a method to inject information to ACPI,PCI and USB by using built-in AppleUSBMergeNub.kext.

If someone interesting in,I offer my info.plist and ioreg file.

 

ioreg_info.zip

can you offer also some more explanations on how you did it?

I'm looking at the info plist and it looks very interesting, but also there is a lot of stuff that i don't understand...

Link to comment
Share on other sites

can you offer also some more explanations on how you did it?

I'm looking at the info plist and it looks very interesting, but also there is a lot of stuff that i don't understand...

Idem... I'm also interested, as I wrote a few post ago, to inject only info on PCI card section in System Profiler for each card i have (ex Ethernet, Firewire, Audio etc...), just cosmetic.... Thanks

Link to comment
Share on other sites

can you offer also some more explanations on how you did it?

I'm looking at the info plist and it looks very interesting, but also there is a lot of stuff that i don't understand...

 

I also join Scrax in his request for more info, I'd also love to know how you did it.

Thx!

 

harbri

Link to comment
Share on other sites

Let me test my understanding here...

 

In theory, this is an editable kext that matches/edits/modifies/adds information to hardware profiles. I have a GMA965 / X3100 laptop with random EDID detection issues. The only fix so far has been a per-OS manual install of a Display Override, to force the EDID. It sounds as though maybe I could make a kext which does the job instead. If all that is true, a few questions- would it work from E/E, or need to be in S/L/E? In a dual boot 10.5/10.6 setup, would there need to be two versions of the kext in E/E, and would they conflict? Can anyone give a quick example of how this could be written/implemented? Many thanks in advance.

Link to comment
Share on other sites

For example,my device "APCI0003" is lack some keys that AppleACPIACAdepter cannot loaded.

So I make a legacy kext and add some infomation just like the following picture.

You can inject keys,values or parameters by refering real MAC's ioreg.

It can inject number,data and even a dictionary tree into almost everywhere you want.

We cannot loading kexts by overwriting device's name or ID.

But,we can activate devices like graphic card by inject keys.

You will find how to inject USB device by refering info.plist in AppleUSBMergeDevice.kext and other PCI or ACPI devices by refering it's kexts.

 

post-35058-1292032909_thumb.png

Link to comment
Share on other sites

  • 6 months later...

Thanks to Andy for this tool.

I've played with this and added some new functionality. Hope this is ok. If not, please write and I'll remove it.

 

Added ability to do the injection only if some parent node in a chain (up to the root) is matched by given criteria. It's possible to specify IOAnyParentMatch dictionary (inside personality dictionary) with some standard matching keys, and then injection will happen only if there is a parent node (the whole path up to the root is searched) that can be matched with these. If IOAnyParentMatch is not specified, then it behaves like original DeviceMergeNub - does the injection.

 

Supported keys inside IOAnyParentMatch:

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

* IOPropertyMatch - dictionary with 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)

 

It's made as a new kext DeviceMergeNubAPM.kext.

 

It was made for fun and to check if it is possible to inject Protocol Characteristics (Connection Internal or External) for specific controller, and it seems it is (I'll post a new thread about this). I do not know if there are other cases where this can be used.

 

Source code:

DeviceMergeNubAPM.zip

 

Example kext that sets grey (internal) icons for drives on specified controllers:

DeviceMergeNubAPM.kext.zip

Link to comment
Share on other sites

  • 1 month later...

Andy Vandijck

 

 

Can you please make a PLIST to allow some broadcom wireless to inject correct values instead of "Third Party Wireless" being shown in System Profiler. This way, we dont need to flash the firmware in Linux.

 

Thanks :)

Link to comment
Share on other sites

  • 4 months later...
 Share

×
×
  • Create New...