Reconnaissance des cartes PCI grâce aux GFX strings

( 4 Votes )


Méthode

Vous devez avoir à votre disposition:
Gxfutils
Osx86Tools Utility
Un bootloader compatible GFX Strings

Si vous possédez déjà un fichier de GFX Strings, il suffira de mettre les nouvelles valeures à la suite de celles déjà intégrées. Vous pouvez sauter l'étape 1 pour les cartes déjà gérées par vos GFX.




1. Trouver ses cartes PCI


- Lancez une session Terminal et tapez:
ioreg
- Avec la fonction recherche ( pomme + F), recherchez les entrées nommées IOPCI2PCIBridge

-
Sous chaque ligne commençant par IOPCI2PCIBridge vous allez trouver une ligne qui débute de cette manière:
+-o display@0 Retenez uniquement le texte qui se trouve avant l' @. Dans l'exemple ci-dessus, il s'agit de la carte graphique, donc ne retenez que "display"

- Placez GFXUtils sur le bureau puis, dans le terminal, entrez:
cd ~/desktop
./gfxutil -f display

- Vous allez obtenir une ligne qui se présente comme ceci:PciRoot(0x1)/Pci(0xe,0x0)/Pci(0x0,0x0)
- Répétez l'opération pour toutes les entrées que vous trouvez. Vous pouvez également ajouter votre carte son, en recherchant l'entrée AZAL ou HDEF.




2. Créer le fichier XML


- Si votre carte graphique, son et ethernet sont déjà intégrées à un fichier XML (.plist), ajoutez uniquement les entrées suivantes juste en dessous de PciRoot(0x1)/Pci(0xe,0x0)/Pci(0x0,0x0):
<key>AAPL, slot-name</key>
<string>Nom du slot</string>
<key>model</key>
<string>nom du model</string>
<key>device-type</key>
<string>type de périphérique</string>
<key>name</key>
<string>nom de la carte</string>
Le nom du slot reste à votre discrétion. Généralement on utilise "Build-In" pour les ordinateurs portables, et Slot-1, Slot-2... etc pour les tours.

Attention: la seconde entrée, à savoir
<key>name</key>
<string>nom de la carte</string>

ne doit pas être ajoutée pour la carte graphique, au risque de faire planter le système au prochain reboot

- Pour les autres cartes, vous devez créer des entrées complêtes. Voici un exemple générique:
PciRoot(0x1)/Pci(0x1c,0x4)/Pci(0x0,0x0)
<dict>
<key>AAPL, slot-name</key>
<string>Nom du slot</string>
<key>model</key>
<string>nom du model</string>
<key>device-type</key>
<string>type de périphérique</string>
<key>name</key>
<string>nom de la carte</string>

 

Remplissez les valeures par celle trouvées grâce à GFXUtils. Une fois que vous avez tout rempli, convertissez le fichier XML en hex avec GFXUtils.

- Pour ce faire, copier le fichier XML sur le bureau en le renommant in.plist

- Puis vous lancez la conversion:
cd ~/desktop
./gfxutil -i xml -o hex ./in.plist ./out.hex

- Un fichier out.hex apparait sur le bureau, il ne reste plus qu'à en copier le contenu et l'ajouter à com.apple.boot.plist avec Osx86Tools ("add efi strings / boot flag")

 

 

 

3. Retrouver le nom de ses périphériques


Il se peut que vous ne saviez pas à quelles cartes correspondent les entrées trouvées dans ioreg.
Pour les retrouver, il suffit de suivre les indications au dessus, mais en supprimant la clé
        <key>name</key>
<string>nom de la carte</string>
- Une fois les strings ajoutés au boot, rebootez et ouvrez les Informations Système, et allez à Cartes PCI.
- A la ligne "Name", vous allez voir un valeure qui se présente de cette manière: pci1180,8...
-
Ouvrez Osx86Tools Utility puis lancez "view PCI Devices / Vendor ID"
-
Vous trouverez alors les périphériques correspondants aux valeurs qui s'affichent dans les informations système.
- Vous n'avez plus qu'à ajouter la clé ci-dessus dans votre fichier XML et recréer un nouveau fichier HEX dont le contenu sera copié une nouvelle fois avec Osx86Tools Utility à la place de l'ancien.





Fichier XML exemple
 

Commentaires 

 
0 #1 Simon 10-06-2011 17:27
How do you correct the SLot for the video car , i got 2 videocard , and its show them in the same slot instead of slot 1 and Slot 2 i got the 2 video card in slot 1.

Thanks
Kind regards,

Simon
Citer
 
 
0 #2 Thireus 14-08-2011 22:36
Into ioreg you can manually follow the path to the right device:

If you have 2 video cards, you can see two display@??.

Example:

1st Path tree : PCI0@0 --> P0P1@1 --> display@1,6
2nd Path tree : PCI0@0 --> P0P1@12,1 --> display@3

Meaning:

1st card : DevicePath = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x1,0x6)
2nd card : DevicePath = PciRoot(0x0)/Pci(0x12,0x1)/Pci(0x3,0x0)

Another method is to plug only one video card into your computer so that there'll be only one display@?? and gfxutil will be able to find it correctly.

I don't understand why the author of gfxutil did not thought about that...
Citer