Jump to content

DeviceMergeNub for _DSM style injection


Andy Vandijck
 Share

50 posts in this topic

Recommended Posts

This is an example of using the DeviceMergeNub for injection.

The stock plist injects into an SMBus controller.

In the case of the example it uses

-Vendor ID: 0x8086 (Intel) with vendor-id (<86800000>)

-Device ID: 0x27da with device-id (<da270000>)

And it injects the following values through IOProviderMergeProperties:

-device-id: set to 0x303a (<3a300000>)

-name: set to pci8086,303a

-IOName: set to pci8086,303a

It is possible to inject for any device this way.

It can even match for entire classes if class-code is used instead of vendor-id and device-id.

IORegistryExplorer is handy for looking up the exact device entries.

You need to get the Apple plist editor for editing the Info.plist

 

Download example:

http://rapidshare.com/files/433312133/Devi...eNub_inject.zip

 

Download plist editor:

http://rapidshare.com/files/433312297/Prop...List_Editor.zip

 

Download IORegistryExplorer:

http://rapidshare.com/files/430687772/IORegistryExplorer.zip

 

Sources for DeviceMergeNub:

http://rapidshare.com/files/432918115/DeviceMergeNub.zip

 

Sources and builds for Tiger, Leopard and Snow Leopard:

http://rapidshare.com/files/433496862/Devi...eNub_all_os.zip

Link to comment
Share on other sites

BTW: If anybody is interested in a FireWire injector I can make that too (FireWireMergeNub)

Let me know if that is the case... :)

Link to comment
Share on other sites

can it does something for vaio internal screen problem?(sfep , sny5001)

the most recent topics is: http://www.insanelymac.com/forum/index.php...8556&st=360

i think the users most competent to describe the issue and the advanced and the "problem" are kizwann and funky frank from this topics

thanks if you can take a look and can help

 

hope and wich of success

 

:help::stretcher::fiery::ihw_pop::D:dice::blowup::soldiers::yoji:

Link to comment
Share on other sites

Of course!

What you need? (for FRW400)...

 

Fabio

A little bit of time... ;)

I'll make one tomorrow.... :D

EDIT: I did it today. Look under the New Releases part of the forum ;)

 

I find something strange in IORegistryExplorer.

It seem that all PCI devices are injected by the same infomation.

For example.

post-35058-1290806529_thumb.jpg

post-35058-1290806539_thumb.jpg

 

and I find this in Console.

post-35058-1290807022_thumb.jpg

 

Is the kext cannot be used with natit? :dice:

That's odd... it didn't do that here (I think).

I'll look into it.

 

can it does something for vaio internal screen problem?(sfep , sny5001)

the most recent topics is: http://www.insanelymac.com/forum/index.php...8556&st=360

i think the users most competent to describe the issue and the advanced and the "problem" are kizwann and funky frank from this topics

thanks if you can take a look and can help

 

hope and wich of success

 

:help::stretcher::fiery::ihw_pop::D:yoji::blowup::soldiers::help:

You can use this injector to inject values into the classes of the driver (like the EDID and stuff).

This might be able to help you... ;)

Link to comment
Share on other sites

I find something strange in IORegistryExplorer.

It seem that all PCI devices are injected by the same infomation.

For example.

post-35058-1290806529_thumb.jpg

post-35058-1290806539_thumb.jpg

 

and I find this in Console.

post-35058-1290807022_thumb.jpg

 

Is the kext cannot be used with natit? :P

Sorry, I mixed up the way the USB family does it.

The proper way is the plist attached below....

Info.plist.zip

Link to comment
Share on other sites

Is this kext for snow only?

Yes, it is for Snow only but it properly can be recompiled for Tiger / Leopard.

If you want that I'll build it for you.

Let me know....

Link to comment
Share on other sites

Great. This might be what I am looking for. That is if it comes with source code; I can read/set properties in command line tools already but would like to learn new stuff. Totally different stuff to learn again. Thank you for sharing.

Link to comment
Share on other sites

Is this kext for snow only?

Use the plist attached in one of the replies and get the new sources...

They include builds for Leopard and Tiger

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! :D

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! :)

Yeah, the nice part of DeviceMergeNub is that it is an all purpose generic PCI device + classes injector.

This little devil can do all... :D :D

 

I've got another example.

This one matches on part of the class id.

It's a replacement for HDAEnabler in this case (audio injector).

Info.plist_audio_AppleHDA.zip

Link to comment
Share on other sites

@Anv

 

Andy, this new injector looks very interesting and I would like to try it. However, just a few questions before I jump in.

 

I currently have two PCI-e adapter cards. One has two firewire and three usb ports. The other has four usb ports. While the ports are functional, neither adapter is recognized by the System Profiler. The questions hear are: 1) do I need two copies of the injector to get both adapters recognized of can it be done with one copy and extra Info.plist entries? 2) If I get the adapters recognized would that apply to items plugged into the various ports?

 

I also have a built-in realtek acl888 audio. Currently it is supported by VoodooHDA. Again, not seen by the System Profiller and not supported by the Apple HDA drivers. Could this injector help with either of those issues?

 

And, before I forget, thanks for the effort on this new tool.

Link to comment
Share on other sites

@Anv

 

Andy, this new injector looks very interesting and I would like to try it. However, just a few questions before I jump in.

 

I currently have two PCI-e adapter cards. One has two firewire and three usb ports. The other has four usb ports. While the ports are functional, neither adapter is recognized by the System Profiler. The questions hear are: 1) do I need two copies of the injector to get both adapters recognized of can it be done with one copy and extra Info.plist entries? 2) If I get the adapters recognized would that apply to items plugged into the various ports?

 

I also have a built-in realtek acl888 audio. Currently it is supported by VoodooHDA. Again, not seen by the System Profiller and not supported by the Apple HDA drivers. Could this injector help with either of those issues?

 

And, before I forget, thanks for the effort on this new tool.

1. You must use only one injector but use the apple plist editor to set multiple IOKitPersonalities.

2. The injector performs on PCI devices only, not USB devices (use AppleUSBMergeNub for that).

3. The support will only be there for injecting information for AppleHDA + System Profiler (see picture)

post-100023-1290965666_thumb.png

Link to comment
Share on other sites

1. You must use only one injector but use the apple plist editor to set multiple IOKitPersonalities.

2. The injector performs on PCI devices only, not USB devices (use AppleUSBMergeNub for that).

3. The support will only be there for injecting information for AppleHDA + System Profiler (see picture)

 

Andy,

 

I really appreciate your reply. I will get a copy of AppleUSBMergeNub and give it a try also. I think I have enough info to get started. Again, many thanks.

Link to comment
Share on other sites

Andy,

 

I really appreciate your reply. I will get a copy of AppleUSBMergeNub and give it a try also. I think I have enough info to get started. Again, many thanks.

P.S. AppleUSBMergeNub is standard on every Mac OS X system so you can use legacy kext's for that...

The kext is present under IOUSBFamily.kext/Contents/PlugIns

Link to comment
Share on other sites

Andy, is there any way to inject PCI cards info (for each device) in the section PCI card of System profiler? I think it's only cosmetic but I'd like to try...

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.

Link to comment
Share on other sites

hi andy

 

if you can do it for 10.5 it should be great

 

other things:

for sound i have this 3 cards:

 

 

Realtek High Definition Audio

 

HDAUDIO\FUNC_01&VEN_10EC&DEV_0262&SUBSYS_104D2200&REV_1001

HDAUDIO\FUNC_01&VEN_10EC&DEV_0262&SUBSYS_104D2200

 

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_10EC&DEV_0262&REV_1001

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC&DEV_0262&REV_1001

HDAUDIO\FUNC_01&VEN_10EC&DEV_0262&REV_1001

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_10EC&DEV_0262

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC&DEV_0262

HDAUDIO\FUNC_01&VEN_10EC&DEV_0262

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_10EC

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC

HDAUDIO\FUNC_01&VEN_10EC

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B

HDAUDIO\FUNC_01&CTLR_VEN_8086

HDAUDIO\FUNC_01&GF&VEN_10EC&DEV_0262&SUBSYS_104D2200&REV_1001

HDAUDIO\FUNC_01

 

AVerMedia Hybrid H/W MPEG Card, M115S (DVBT/NTSC/PAL/SECAM)

 

PCI\VEN_1131&DEV_7133&SUBSYS_E8361461&REV_D1

PCI\VEN_1131&DEV_7133&SUBSYS_E8361461

PCI\VEN_1131&DEV_7133&CC_048000

PCI\VEN_1131&DEV_7133&CC_0480

 

PCI\VEN_1131&DEV_7133&REV_D1

PCI\VEN_1131&DEV_7133

PCI\VEN_1131&CC_048000

PCI\VEN_1131&CC_0480

PCI\VEN_1131

PCI\CC_048000

PCI\CC_0480

 

00000008

PCI\VEN_1131&DEV_7133&SUBSYS_E8361461&REV_D1\4&332BEDD2&0&20F0

 

IDT High Definition Audio CODEC

 

HDAUDIO\FUNC_01&VEN_8384&DEV_7664&SUBSYS_104D2200&REV_1002

HDAUDIO\FUNC_01&VEN_8384&DEV_7664&SUBSYS_104D2200

 

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_8384&DEV_7664&REV_1002

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_8384&DEV_7664&REV_1002

HDAUDIO\FUNC_01&VEN_8384&DEV_7664&REV_1002

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_8384&DEV_7664

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_8384&DEV_7664

HDAUDIO\FUNC_01&VEN_8384&DEV_7664

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_8384

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_8384

HDAUDIO\FUNC_01&VEN_8384

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B

HDAUDIO\FUNC_01&CTLR_VEN_8086

HDAUDIO\FUNC_01&GF&VEN_8384&DEV_7664&SUBSYS_104D2200&REV_1002

HDAUDIO\FUNC_01

 

 

do you think i can use the 3 atthe same time with this?

:)

Link to comment
Share on other sites

BTW: If anybody is interested in a FireWire injector I can make that too (FireWireMergeNub)

Let me know if that is the case... :)

Well, that would be a real heip - the onboard firewire A (400) is recognized - the Firewire B (800) PCI card is constantly ignored. My MB: Giga GA 45-DS3.

 

To remove AppleHPET.kext from S/L/E makes the card visible but not working (I want to use a Lexar FW800 cardreader).

 

What infos else are needed? Thanx in advance

Link to comment
Share on other sites

Well, that would be a real heip - the onboard firewire A (400) is recognized - the Firewire B (800) PCI card is constantly ignored. My MB: Giga GA 45-DS3.

 

To remove AppleHPET.kext from S/L/E makes the card visible but not working (I want to use a Lexar FW800 cardreader).

 

What infos else are needed? Thanx in advance

FireWireMergeNub has been created but it is for injecting info in FireWire Devices (use this injector -> DeviceMergeNub -> to inject stuff into the PCI card).

It probably is better to fix the FireWire card from within DSDT in this case (look on the forum, plenty of info on it)

 

hi andy

 

if you can do it for 10.5 it should be great

 

other things:

for sound i have this 3 cards:

 

 

Realtek High Definition Audio

 

HDAUDIO\FUNC_01&VEN_10EC&DEV_0262&SUBSYS_104D2200&REV_1001

HDAUDIO\FUNC_01&VEN_10EC&DEV_0262&SUBSYS_104D2200

 

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_10EC&DEV_0262&REV_1001

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC&DEV_0262&REV_1001

HDAUDIO\FUNC_01&VEN_10EC&DEV_0262&REV_1001

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_10EC&DEV_0262

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC&DEV_0262

HDAUDIO\FUNC_01&VEN_10EC&DEV_0262

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_10EC

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC

HDAUDIO\FUNC_01&VEN_10EC

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B

HDAUDIO\FUNC_01&CTLR_VEN_8086

HDAUDIO\FUNC_01&GF&VEN_10EC&DEV_0262&SUBSYS_104D2200&REV_1001

HDAUDIO\FUNC_01

 

AVerMedia Hybrid H/W MPEG Card, M115S (DVBT/NTSC/PAL/SECAM)

 

PCI\VEN_1131&DEV_7133&SUBSYS_E8361461&REV_D1

PCI\VEN_1131&DEV_7133&SUBSYS_E8361461

PCI\VEN_1131&DEV_7133&CC_048000

PCI\VEN_1131&DEV_7133&CC_0480

 

PCI\VEN_1131&DEV_7133&REV_D1

PCI\VEN_1131&DEV_7133

PCI\VEN_1131&CC_048000

PCI\VEN_1131&CC_0480

PCI\VEN_1131

PCI\CC_048000

PCI\CC_0480

 

00000008

PCI\VEN_1131&DEV_7133&SUBSYS_E8361461&REV_D1\4&332BEDD2&0&20F0

 

IDT High Definition Audio CODEC

 

HDAUDIO\FUNC_01&VEN_8384&DEV_7664&SUBSYS_104D2200&REV_1002

HDAUDIO\FUNC_01&VEN_8384&DEV_7664&SUBSYS_104D2200

 

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_8384&DEV_7664&REV_1002

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_8384&DEV_7664&REV_1002

HDAUDIO\FUNC_01&VEN_8384&DEV_7664&REV_1002

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_8384&DEV_7664

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_8384&DEV_7664

HDAUDIO\FUNC_01&VEN_8384&DEV_7664

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B&VEN_8384

HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_8384

HDAUDIO\FUNC_01&VEN_8384

HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_284B

HDAUDIO\FUNC_01&CTLR_VEN_8086

HDAUDIO\FUNC_01&GF&VEN_8384&DEV_7664&SUBSYS_104D2200&REV_1002

HDAUDIO\FUNC_01

 

 

do you think i can use the 3 atthe same time with this?

-_-

Yes, use IOPCIPrimaryMatch instead of IOPCIClassMatch and make 3 entries (one for each card) under IOKitPersonalities.

Use a different layout-id for each card and patch AppleHDA accordingly (should work)

Hope this helps. :)

Link to comment
Share on other sites

can you do it?

 

cause i use 10.5.8

 

thank you

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... ;)

 

@Andy: Just an idea of course, but wouldn't this be a great addition for Chameleon? I mean to expand the device-properties injection so that we can do this kind of things without a kext. What do you think? Would this be possible?

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

Link to comment
Share on other sites

 Share

×
×
  • Create New...