Jump to content

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


  • Please log in to reply
26 replies to this topic

#1
ffosilva

ffosilva

    InsanelyMac Protégé

  • Members
  • PipPip
  • 69 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 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. 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.

Attached Files



#2
aliasa_anderson

aliasa_anderson

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 171 posts
A link to efi strings will be very helpful.
If possible ,please add the location of efi file,i mean the directory/path where it resides.

#3
peach-os

peach-os

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPip
  • 1,286 posts
  • Location:lago di constanza
good idea! cool work :( will try it

#4
Cebit

Cebit

    Bipolar Soup

  • Members
  • PipPipPip
  • 128 posts
  • Gender:Male
  • Location:Larisa, Greece
  • Interests:*nix, Music Production, swimming, watching HD movies, Anime
Kudos :(

#5
aliasa_anderson

aliasa_anderson

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 171 posts
Just a quick question:
Shouldn't these settings be detected automatically.Why it is that these devices don't show up in system profiler even they are present in ioreg ?

#6
ffosilva

ffosilva

    InsanelyMac Protégé

  • Members
  • PipPip
  • 69 posts
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.

#7
aliasa_anderson

aliasa_anderson

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 171 posts

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.

#8
ffosilva

ffosilva

    InsanelyMac Protégé

  • Members
  • PipPip
  • 69 posts
Where I say injector I'm talking about create a new injector to add these strings automatically to IORegistry.

#9
peach-os

peach-os

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPip
  • 1,286 posts
  • Location:lago di constanza
doesnt 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 couldnt imagine that it would work this way)

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


could be a small thing I missed :)

#10
ffosilva

ffosilva

    InsanelyMac Protégé

  • Members
  • PipPip
  • 69 posts

doesnt 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 couldnt imagine that it would work this way)

problem was also that ioreg didnt 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.

#11
peach-os

peach-os

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPip
  • 1,286 posts
  • Location:lago di constanza

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 Attached File  7300GTx2UAD.rar   722bytes   221 downloads

thanks :D

#12
ffosilva

ffosilva

    InsanelyMac Protégé

  • Members
  • PipPip
  • 69 posts
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.

Attached Files



#13
peach-os

peach-os

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPip
  • 1,286 posts
  • Location:lago di constanza

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.


Attached File  UAD_PCI.png   27.95KB   481 downloads

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

thank you ! :)

#14
MikeHunt79

MikeHunt79

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 158 posts
  • Gender:Male
  • Location:UK

good idea! cool work :P will try it

I'll give it a whirl also - Another step closer to a real mac :)

#15
BladeRunner

BladeRunner

    InsanelyMac Legend

  • Donators
  • 688 posts
  • Gender:Male
  • Location:New York
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.

#16
Alex HQuest

Alex HQuest

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 184 posts
  • Gender:Male
Attached File  Snapshot_2008_11_09_11_11_36.jpg   92.34KB   543 downloads

Cool, thanks for the tip.

#17
ffosilva

ffosilva

    InsanelyMac Protégé

  • Members
  • PipPip
  • 69 posts
you're welcome. =P

#18
aliasa_anderson

aliasa_anderson

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 171 posts

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 ?

#19
ffosilva

ffosilva

    InsanelyMac Protégé

  • Members
  • PipPip
  • 69 posts
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

#20
sonotone

sonotone

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPip
  • 1,151 posts
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.

Posted Image





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy