Jump to content
ffosilva

[HOWTO] Show PCI Cards on System Profiler - using EFI strings

27 posts in this topic

Recommended Posts

Hi people! Sorry for my bad english, I'm brazilian... but see below if you understand anything. =P

Requeriments:
- gfxutil;
- knowledge about making efi strings;
- ioreg
- Some patience.

First you need to collect the DevicePath for each PCI Card. Using ioreg (type ioreg in Terminal) with gfxutil is easy. Search for each 'IOPCI2PCIBridge' (or similar) on your ioreg output and see if it have any device connected to it. If it exists, you can make it visible on System Profiler. On this guide I'll show to you what I did to show my JMicron Built-in Controller.

On the first picture, you see that on marked IOPCI2PCIBridge that I have 2 devices connected to it. JMB0@0 and JMB1@0,1. JMB0 you see that it's a AHCI Controller and JMB1 IDE Controller part, but I don't wanna IDE, only AHCI (remember, you can do it with every PCI devices connected to IOPCI2PCIBridge). Run 'gfxutil -f DEVICE', and as you see, on device i don't put @xxx, only what I see before @. If you have 'JMB0@0' on ioreg do 'gfxutil -f JMB0'. If you have 'pci1106,3044@0' on ioreg do 'gfxutil -f pci1106,3044'. After using 'gfxutil -f DEVICE' as explained before you get DevicePath.

On your EFI Strings file, add a entry of your device. For example, I'm showing what I did with my JMB0 device.

<key>PciRoot(0x1)/Pci(0x1c,0x3)/Pci(0x0,0x0)</key>
<dict>
<key>AAPL,slot-name</key>
<string>Built In</string>
<key>model</key>
<string>Gigabyte GBB363 SATA-II RAID Controller</string>
<key>device_type</key>
<string>AHCI Controller</string>
</dict>

As you see I have 3 entrys. On first 'AAPL_slot-name', type slot name that you wanna see. On RAID controler I typed Built In, but you can use what you want. i.e Slot-I, Slot-A, Hamburger, Pizza... =)

On second 'model' you change Card Name and 'device_type' you set Type that appear on PCI Cards screen.

I'm not good making how to, but I'm leaving a System Profiler screenshot and my EFI Strings plist to you see what I did. Remember that DevicePath are differents for each machine.

Important: on display cards or network cards you don't need to set 'model' or 'device_type', only AAPL,slot-name. On display cards model and device_type are set by standard (device_type as 'display' and model as card name). On ethernet device_type as 'Ethernet Controller', but you can set model. It doesn't work with AZALIA or HDEF.

If you already use any PCI device on efi strings, you need only add these keys on existing string, not making a new one. i.e: if you use efi-strings for graphics card, only add AAPL,slot-name key, and not create a new entry only for it.

post-57183-1225872936_thumb.png

post-57183-1225872956_thumb.png

post-57183-1225873036_thumb.png

efistrings.txt

Share this post


Link to post
Share on other sites
Advertisement

It doesn't show up in system profiler because AppleSMBIOS search for 'AAPL,slot-name' key on pci cards, but doesn't find it. I think in a near future we can make a 'injector' that reads 'ioreg' out and inject efi code of each card automatically.

 

aliasa_anderson: you make these mods on efi strings, search for it on netkas forums.

Share this post


Link to post
Share on other sites
It doesn't show up in system profiler because AppleSMBIOS search for 'AAPL,slot-name' key on pci cards, but doesn't find it. I think in a near future we can make a 'injector' that reads 'ioreg' out and inject efi code of each card automatically.

 

aliasa_anderson: you make these mods on efi strings, search for it on netkas forums.

 

Thanks ffosilva.I will look at netks.org.

 

One more question since you may have come across it ,if we use injectors for getting devices work,will this method break them.

 

For eg i use nvinject for nvidia go 7400 and for Conexant HD audio i use AppleAzalia.

Now in ioreg i can see devices like vga@,HDEF@ etc in IOPCI2PCIBridge but none is displayed in system profiler under "PCI devices" tab.

 

Please Help.

Thanks once again.

Share this post


Link to post
Share on other sites

doesn´t work for me. because your guide is not really clear for me I tried it several ways:

 

1. wrote a plist with the pci roots and settings for my two graphic cards and my uad pci card.

created one hex file with gfxutil.

 

2. created seperate hex files for the graphic cards and the pci card. merged the two hex files.

(this is how I understood your instructions, but couldn´t imagine that it would work this way)

 

problem was also that ioreg didn´t give me the pci root for the card. efistudio did it flawless.

 

 

could be a small thing I missed :)

Share this post


Link to post
Share on other sites
doesn´t work for me. because your guide is not really clear for me I tried it several ways:

 

1. wrote a plist with the pci roots and settings for my two graphic cards and my uad pci card.

created one hex file with gfxutil.

 

2. created seperate hex files for the graphic cards and the pci card. merged the two hex files.

(this is how I understood your instructions, but couldn´t imagine that it would work this way)

 

problem was also that ioreg didn´t give me the pci root for the card. efistudio did it flawless.

could be a small thing I missed :)

 

Sorry If i'm not clear! Well, you don't need to make two files for efi strings (and merge it), you make only one as you see in my example.

 

If you want send to me your graphics card efi-string and I'll patch it for you.

Share this post


Link to post
Share on other sites
Sorry If i'm not clear! Well, you don't need to make two files for efi strings (and merge it), you make only one as you see in my example.

 

If you want send to me your graphics card efi-string and I'll patch it for you.

 

 

here is the plist 7300GTx2UAD.rar

 

thanks :D

Share this post


Link to post
Share on other sites
you did some mistakes as opened a dictionary and don't closed and puttet <key>AAPL.slot-name</key> instead <key>AAPL,slot-name</key>. Try these now.

 

post-120974-1226162305_thumb.png

 

:P I knew it was something small like that - shouldn´t edit such files during the night.

 

thank you ! :)

Share this post


Link to post
Share on other sites

Very nice. Thanks for sharing.

 

Since I already had the efi strings for my ethernet card and nvidia display card, all I needed to do was add the following:

 

		<key>AAPL,slot-name</key>
	<string>Slot-1</string>

 

to my working gfxutil plist at the top of each section and generate a new hex string. Replaced the device string in com.apple.boot.plist and reboot.

 

Many thanks.

Share this post


Link to post
Share on other sites
It doesn't show up in system profiler because AppleSMBIOS search for 'AAPL,slot-name' key on pci cards, but doesn't find it. I think in a near future we can make a 'injector' that reads 'ioreg' out and inject efi code of each card automatically.

 

aliasa_anderson: you make these mods on efi strings, search for it on netkas forums.

 

 

Hi ffosilva,

 

I think I have the answer to my own question.

 

If have a correctly compiled DSDT and i use chameleon with DSDT override feature,i should be able to see these devices in system profiler without manual work.

 

What do you think ?

Share this post


Link to post
Share on other sites

Adding name _SUN to each PCI lane reference in DSDT does this work, but you'll don't see detailed information about cards, you still need to add 'model' to see correct cards name.

 

This thread is about doing it using EFI strngs, and not DSDT. DSDT is another way. =P

Share this post


Link to post
Share on other sites

Thanks for this, useless but i like it ;)

 

Just two adds:

 

- If a name is not specified (like pci1180,8...), in the .plist file, we can add:

 <key>name</key>
<string>your card</string>

- Some ioreg entries aren't clear about some hardware, so LSPCI (osx86tools provide it) is usefull to find controller's names.

 

PS: don't use a custom name for graphics.

 

post-115331-1229446684.png

Share this post


Link to post
Share on other sites

Xcuse if I sound very very silly! :D

 

I'm new in EFI Strings.

I following your guide.

the thing is that I want to add the Specifications Names of each PCI card.

 

Like my Texas Instruments 5 in 1 card reader, my Airport Card and PCI bridges.

 

But I dont know where can I inject the EFI Strings that I've generated.

I think that I need to add it to my "com.apple.boot.plist"

 

 

Here is a copy of my com.apple.boot.plist:

 

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>Kernel</key>

<string>mach_kernel</string>

<key>Timeout</key>

<string>1</string>

<key>Kernel Flags</key>

<string>-f arch=i386</string>

<key>EthernetBuiltIn</key>

<string>y</string>

<key>GraphicsEnabler</key>

<string>y</string>

<key>PciRoot</key>

<string>1</string>

<key>PciRoot(0x0)/Pci(0x1e,0x0)/Pci(0x9,0x2)</key>

<dict>

<key>AAPL,slot-name</key>

<string>Built In</string>

<key>model</key>

<string>Texas Instruments 5 in one Card Reader</string>

</dict>

</dict>

</plist>

 

 

Thanks

 

P.D Here is a pic:

4864103164_0b65debc5b.jpg

Share this post


Link to post
Share on other sites

I got it, I inject the EFI Strings on different locations.

 

For my Airport Extreme Card - I add the Strings on AppleBrcm4311.kext

For my Texas Instrument Card Reader - I add the Strings on IOSDHCIBlockDevice.kext

 

Here is it:

4864317880_8b35edc6b3.jpg

Share this post


Link to post
Share on other sites

Can someone explain to a newbie how to Do this install? Im really lost. I also am using a Belkin PCI Wireless Card F5D7000 on my hackintosh snow leopard machine. So do i download those 2 files above and just do an install? or can anyone make simple instructions to follow? thanks and really need it! ;)

Share this post


Link to post
Share on other sites

Hi people! Sorry for my bad english, I'm brazilian... but see below if you understand anything. =P

 

Requeriments:

- gfxutil;

- knowledge about making efi strings;

- ioreg

- Some patience.

 

First you need is discover the DevicePath for each PCI Card. Using ioreg (type ioreg in Terminal) with gfxutil is easy. Search for each 'IOPCI2PCIBridge' (or similar) on your ioreg output and see if it have any device connected to it. If have, you can make it visible on System Profiler.

 

 

You insert in system profiler internal devices? I think, it not right, only slot-inserted cards must displayed in PCI Card info.

(sorry for my english, i'm russian )

Share this post


Link to post
Share on other sites

I agree...but it doesn't matter, but as the first post says you can place any information there (hamburger, pizza, each PCI device could be a line from your favorite Haiku), it makes no difference. Like Sonotone said it's useless, why make up rules about something that's useless in the first place.

thanks and really need it!

Nobody "really needs" this. It's 100% cosmetic, it will not make any difference to functionality. If your wireless card doesn't work, this will not make it work or help make it work, not even the slightest bit.

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

  • Recently Browsing   0 members

    No registered users viewing this page.

×