Jump to content
sonotone

[OH-TOUX] GFX Strings

95 posts in this topic

Recommended Posts

dernière mise à jour: 16/07/2008

De la Théorie...

 

 

l'EFI, kesako?

Comme vous le savez tous, l'émulation de l'EFI (Extensible Firmware Interface) a fait récemment son entrée dans le monde d'OSX86, changeant radicalement la donne puisque qu'il est désormais possible de faire fonctionner son Pc avec le Noyau officiel d'Apple ("vanilla") (Ainsi que la plupart des extensions natives), laissant croire au système d'exploitation que celui-ci fonctionne bel et bien sur un vrai firmware Apple . L'EFI est une couche supplémentaire plus évoluée et amenée à remplacer le Bios de nos PC, un logiciel intermédiaire entre les micrologiciels (firmware) de votre matériel et le système d'exploitation.

Ainsi finalisé par Netkas, PC EFI s'appuie sur une version modifiée du DarwinBootloader ("fake" EFI implémenté au bootloader-132 d'Apple, projet pour booter sur des machines X86 non EFI) qui permet d'émuler des données "EFI" entre autre à partir du BIOS et permet ainsi à OSX de traiter certaines données du Bios comme des informations produites par les véritables tables EFI des Macs.

Par exemple, les informations provenant de votre bios, une fois interfacées au travers de l'émulation, permettent à OSX d'identifier le modèle de votre carte mère, votre batterie...

 

Sur un vrai Mac ça donne ça:

EFI-3-juin-04.jpg

Pour nous, en gros, entre le Firmware et l'EFI (émulé et lancé par le bootloader) vient se loger le Bios

 

 

Des injecteurs aux GFX Strings.

Reste que le problème de la reconnaissance des périphériques persite: en effet, la plupart du hardware PC ne fonctionnent "naturellement' pas sous OSX puisque qu'Apple ne développe uniquement les "drivers" (les fameux ".kext") embarqués dans leurs machines. Vous trouverez toujours des pilotes compatibles Mac chez certains fabricants de Hardware, Mais puisque Apple à pris le parti de proposer des machines totalement intégrées, ceux-ci correspond bien souvent à du matériel pro/semi-pro relativement éloigné des préoccupations du plus grand nombre.

Et là vous vous dites "chouette, je m'en vais de ce pas m'acheter la dernière carte graphique Nvidia embarqué par les nouveaux Imac pour m'éclater avec Exposé". Oui, mais vous risquez d'être déçus... car il vous faudra malgré tout passer par ce que l'on nomme des "Injecteurs".(Titan, Natit, NVInject...etc).

 

Contrairement à ce que l'on peut penser, ceux-ci ne sont pas à proprement parler des "drivers", mais des "extensions du noyau permettant de forcer l'utilisation des extensions Apple pour gérer les cartes graphiques ATI/NVIDIA en "injectant" les registres manquants - qui sont chargés par les modules EFI en temps normal dans un Mac Intel, ou par les registres NVRAM contenus dans la ROM (BIOS) de la carte graphique pour les Mac PowerPC". (je cite Gotoh).

Et il en va de même avec les cartes sons: Le très fameux AppleHDA patcher, en plus de modifier le kext d'origine, apporte également dans sa musette l'injecteur ALCInject sans qui Cindy Sanders resterait désespérément muette sur votre ordi préféré.

L'indéniable avantage de ces injecteurs est, vous l'aurez compris, de faire fonctionner plus ou moins correctement l'audio ou l'image en orientant ces registres vers les bonnes extensions permettant au noyau de les charger au démarrage de la machine.

 

C'est à ce niveau que les GFX Strings entrent en scène. En effet, depuis la version 8.0 de l'émulation EFI (mais aussi chameleon, projet open sources), il est possible d'introduire ce qui est nommé des "pluggables strings", qui sont une longue suite de chiffres HEX (contenant des "binaires" transmissibles à des (micro) applications, en l'occurrence ici, l'EFI. Aïe, ma tête...).

Ces propriétés peuvent correspondre à des périphériques Hardware, et, si elles sont intégrées au Bootloader, sont chargées par le noyau car identifiées en tant que matériel par l'EFI émulé, et se passent donc des Injecteurs du système d'exploitation. Les drivers Apple/ Patchés n'ont alors plus qu'à faire leur boulot habituel.

 

Et là, vous allez me dire, à quoi ça sert?

Dans certains cas, les injecteurs, aussi utiles soient-ils, posent des problèmes de détection et ne permettent pas une bonne (ou pas du tout) détections de certains hardware lors du chargement des périphériques. Passer par ces "pluggables strings" peut ainsi résoudre certain problèmes liés aux injecteurs.

NB: GFX Strings se substituent donc aux injecteurs, mais en aucun cas aux drivers. De plus, ils ne peuvent faire reconnaître un périphérique qui ne peux l'être. Je m'explique par deux exemples.

 

1: OSX, depuis la 10.5.2, supporte les Nvidia 8xxx (dispose donc des kexts appropriés); mais la votre n'est pas reconnue, même via Nvinject. Vous pouvez alors créer un string permettant sa reconnaissance, mais il vous sera impossible de la faire fonctionner sur une 10.5.0 (puisqu'il n'y a pas les drivers Apple appropriés).

2: Vous avez créé un "string" pour votre carte audio, mais il vous faut tout de même un AppleHDA.kext (driver son) patché, car l'original d'Apple ne supporte pas votre carte.

Pigé?

 

 

 

 

...A la pratique

 

UPDATE: Vous pouvez également utiliser EFI Studio, par Inside, pour la creation des strings:

http://forum.netkas.org/index.php/topic,64.60.html

 

Bon alors avant tout, toutes les cartes graphiques/audio ne sont pas supportées. Comme j'ai un peu la flemme de tout passer en revue, je vous invite à aller voir:

 

NVidia: http://forum.netkas.org/index.php/topic,55.0.html

ATI: http://forum.netkas.org/index.php/topic,61.0.html

Intel GMA: http://forum.netkas.org/index.php/topic,58.0.html

 

Vous devez également avoir installé soit:

- La dernière version de l'émulation EFI (v8.0): http://alex.upsidedown.free.fr/OSX86/EFI/pc_efi_v80.zip

- Chameleon (préférez ce dernier, il peut être réinstallé par dessus pc_efi): http://chameleon. osx86 .hu

 

Normalement, les dernières 10.5.2 embarquent le PC EFI V8.0 d'office. Pour savoir si vous avez l'EFI d'installé, ouvrer Terminal et tapez:

ioreg -p IODeviceTree -b -n efi | grep "efi" -C 4

 

Si vous avez cette ligne "name" = <"efi"> , c'est tout bon.

 

Ensuite, vous avez besoin d'un boite à outils pour créer vos propres fichiers HEX:

http://www.mediafire.com/?mwbzvm14j3z

Celle-ci contient un modèle pour la video, un modèle pour le son+la video, Gfxutil, IORegistryExplorer et Property List Editor (pack mis à jour). (ces exemples viennent de ma configuration EP35-DS3R + Gigabyte 8600GT)

 

Attention: Vous ne devez choisir que l'un des deux chapitres qui suivent. Si vous ne désirez que la video, contentez-vous du premier chapitre "Vidéo"; si vous voulez tenter Vidéo et Son, suivez uniquement la deuxième partie intitulée "Son et Vidéo" (un seul fichier .plist fera l'affaire)

 

 

I: La video

 

1-Placez gfxutil et le contenu du dossier "video" sur votre bureau

2-Ouvrer terminal et tapez:

cd ~/desktop
	./gfxutil -f display

Vous allez obtenir une ligne qui se présente comme ceci:

PciRoot(0x1)/Pci(0xe,0x0)/Pci(0x0,0x0)

3-Ouvrez le fichier "in.plist" avec l'éditeur de texte et remplacer la ligne qui correspond avec celle du terminal sans toucher aux balises <key>.

Tout en bas du fichier "in.plist", vous allez trouver une ligne comme ceci:

<string>NVIDIA GeForce 8600GT</string>

4- Vous pouvez spécifier le modèle de votre carte video entre les balises "string".

5- Sauvegardez le tout en .plist et en vérifiant bien que vous n'êtes pas en RTF (voir menu "format") avec textedit.

6- Maintenant retournez au terminal et tapez ce qui suit:

./gfxutil -i xml -o hex ./in.plist ./out.hex

Un fichier nommé out.hex devrait apparaître sur votre bureau.

7- Aller dans Bibliothèque/Preferences/SystemConfiguration et faites précieusement une sauvegarde du fichier com.apple.boot.plist (c'est le fichier qui va être modifié par l'ajout du contenu du fichier "out.hex)"

8- Retour une dernière fois au terminal, pour y taper:

sudo nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

en dessous des lignes:

 

<key>Timeout</key>

<string>5</string>

 

Ajouter ce qui suit:

<key>device-properties</key>

<string>Copier ici le contenu de out.hex</string>

 

Comme c'est écrit, ouvrez le fichier out.hex avec textedit et copier son contenu entre les balises "string"

 

Update: Vous pouvez également disposer de la résolution native au lancement en ajoutant, après votre string:

<key>Graphics Mode</key>

<string>1680x1050x32</string>

 

Les valeur entre les balises string correspondent à la résolution native de votre écran.

 

Une fois la manoeuvre terminé, faite un "control+o" suivit "d'entrée" afin de sauvegarder le fichier, et un "control+x" pour fermer la session.

 

9- Enfin, aller dans Système/Bibliothèque/Extensions/ et supprimez (ou mettez en lieu sûr) votre injecteur (NVInject.kext/Natit.kext...), ainsi que le cache des extensions (Système/Bibliothèque/Extensions.mkext)

 

Rebootez et croisez les doigts de pieds...

 

 

 

II: Son et Video

 

1-Placez gfxutil et le contenu du dossier "son et video" sur votre bureau.

2- Suivez l'exemple au dessus jusqu'à l'étape 4

3- Dans terminal, tapez:

cd ~/desktop
	./gfxutil -f AZAL

Vous allez obtenir également une ligne de ce genre: PciRoot(0x0)/Pci(0x1b,0x0).

Dans le fichier "in.plist", la partie dédiée au son est la suivante:

<key>rom-revision</key>

<string>0x32323033</string>

</dict>

<key>PciRoot(0x1)/Pci(0x1b,0x0)</key>

<dict>

<key>PinConfigurations</key>

<string></string>

<key>built-in</key>

<string>0x00</string>

<key>layout-id</key>

<string>0x0000000c</string>

<key>revision-id</key>

<string>0x00000002</string>

<key>subsystem-id</key>

<string>0x0000a002</string>

<key>subsystem-vendor-id</key>

<string>0x00001458</string>

<key>vendor-id</key>

<string>0x00008086</string>

 

Remplacez la ligner en rouge par celle obtenue dans le terminal.

 

-4 Maintenant ouvrez "IORegistryExplorer" et allez jusqu'à la ligne intitulée "AZAL@ ..."

 

C'est là qu'il faut se concentrer: Il faut changer les valeurs en bleu par celles ce que vous lisez dans IORegistryExplorer, mais vous devez les lire de droite à gauche tout en conservant l'ordre à l'intérieur des couples de chiffres (0x ne compte pas)

ex: Une valeur <d8 07 00 00> devient 0x000007d8 dans votre "in.plist". Certaines valeurs seront identiques à celle de ce modèle, regardez bien comment ça fonctionne pour le pas faire de bêtises.

 

Une fois les modifications apportées, reprenez à partir de l'étape 6 de la partie "Video". Il vous sera également nécessaire de supprimer du répertoire des extensions les injecteurs ALCInject.kext, AppleAzaliaAudio.kext, AppleAC97.kext...

 

Rebooter et croisez les doigts en plus des doigts de pieds.

 

 

CONCLUSION:

 

Ce que les Strings ne peuvent faire:

- Rendre votre PC plus sexy (ou alors inquiétez vous)

- Transformer le Plomb en Or: Votre entrée audio le fonctionne pas? Il est improbable qu'elle fonctionne après.

- Avoir une résolution native et le petit son au démarrage (toujours pas)

- Accélérer très significativement votre système (Certains notent des améliorations ou des baisse de performances, à vous de voir...)

 

Ce que les Strings peuvent faire:

- Diminuer le temps de boot (le mien se lance 3 fois plus vite)

- Vous donner l'impression de faire un pas de plus vers un vrai mac (plus besoin des injecteurs)

- Résoudre certains bugs (problèmes de shutdown, reboot, de son qui saccade... dans la mesure ou ceux-ci peuvent être générés uniquement pas les injecteurs concernés)

- Permet de supporter du matériel avant que certains patchs voient le jour.

 

Détails techniques et dernières versions:

http://forum.netkas.org/index.php/topic,64.0.html

http://forum.netkas.org/index.php/topic,104.0.html

 

Page web de David Elliott (à l'origine du PC-EFI, page à lire absolument):

http://tgwbd.org/darwin/index.html

 

 

 

 

 

Appendice 1: Corriger la taille de la RAM Vidéo (VRAM)

-Une fois vos Strings en place, il est possibe que a quantité de RAM de votre carte graphique ne soit pas correctement reconnue par le système. Afin de corriger ça, il va vous falloir créer une entrée dans votre fichier in.plist.

-Ouvrez votre fichier in.plist avec Property List Editor (qui se trouve dans la 'boite à outils').

-Dépliez "root", puis dépliez la première entrée (commençant par PciRoot...)qui apparaît dans l'arborescence (seuls ceux qui utilisent video+son verront deux entrée)

-Une fois à l'intérieur de PciRoot..., cliquez sur "New Sibling".

Nommez-la:

VRAM,totalsize

-Dans la colonne "Class", choisissez "DATA"

-La colonne "VALUE" va correspondre à la quantité de VRAM de votre carte. Voici les Valeurs:

<00000008> - 128Mb

<00000010> - 256Mb

<00000014> - 320Mb

<00000020> - 512Mb

<00000028> - 640Mb

<00000030> - 768Mb

 

Insérez uniquement ce qui est en gras (et de manière à ce quil n'y ait pas de doublons des < et >

Sauvegardez et reprenez là où vous en étiez.

Voilà à quoi ça devrait ressembler pour une carte avec 640MB:

vramtd3.png

Vous pouvez aussi faire d'une pierre deux coup, et changer le NVCAP (pour le support du dual screen, du VGA...)

Vous trouverez tout ce dont vous avez besoin sur le Forum de Gotoh (bon, c'est un peu le bordel mais on fini par trouver):

http://nvinject.free.fr/forums/

 

 

Appendice 2: Retrouver QE/CI après la mise à jour 10.5.3

Il est possible que, même avec les GFX Strings, votre carte graphique ne supporte plus QE/CI à la suite de la mise à jour des drivers vidéos de la 10.5.3.

Dans ce cas, plutôt que de repasser avec par un injecteur, vous pouvez éditer votre fichier in.plist afin de retrouver l'accélération graphique.

 

1- Ouvrez votre fichier in.plist déjà configuré avec Property List Editor

2- Déployer l'arborescence et cliquez sur "new child"

3- Nommez le IOProbeScore avec la class Number et la valeur 0

4- sauvegardez et exportez votre fichier et suivez la prodécure expliqué plus haut pour intégrer les strings à votre fichier com.apple.boot.plist

updateha1.png

 

PS: Si vous voyez de grosses sottises, ou des détails à ajouter, n'hésitez pas à proposer des corrections!!

Share this post


Link to post
Share on other sites
Advertisement
Excellent tuto. J'ai essayé à ça marche impec. Merci.

Content que ça marche pour toi!

Et merci pour vos merci, fallait que quelqu'un s'y colle de toute façon... Si vous avez des remaques ou des suggestions, faites vous plaisir!

Share this post


Link to post
Share on other sites

En essayant la commande " ./gfxutil -f AZAL" j'obtient "DevicePath not found!"

 

Donc petite précision pour les personnes n'utilisant pas "Azalia Audio" il faut modifier la ligne suivante:

cd ~/desktop
./gfxutil -f AZAL

par (exemple, j'utilise AC97)

cd ~/desktop
./gfxutil -f AC97

 

Et dans IORegistryExplorer rechercher AC97@ et non AZAL@ :P

 

Enfaîte ça dépend des kexts que vous utilisez pour le sons, à vous d'adapter selon ce que vous avez choisis pour faire fonctionné le son.

Share this post


Link to post
Share on other sites

ca a redémaaré mais maintenant ,il est marqué que j'ai une 8600gt avec 256 de ram alors que j'ai une 8800gtx 756 de ram, j'ai du faire une fausse note....? pourtant j'ai suivi le tuto a la lettre..ya moyen de réparer?

Share this post


Link to post
Share on other sites

Cooooool merci pour ton tuto !!!!

Ca marche du premier coup pour ma 8600GT :-)

 

Je vais regarder pour l'audio & la video !

Question : il n'y a rien d'autre à supprimer en rapport avec la video et nvinject ? J'ai juste supprimé nvinject.

 

A+

Share this post


Link to post
Share on other sites

ou c'est normal qu'il me repère cela? je comprend aps trop la phase ou faut changer remplacer par le nom de sa carte entre les strings....car je met ma 8800gtx j'enregsitre en fichier text comme c'est mis mais le fichier sert a quoi apres?

Share this post


Link to post
Share on other sites
Petite précision pour les personnes n'utilisant pas "Azalia Audio" il faut modifier la ligne suivante:

cd ~/desktop
./gfxutil -f AZAL

par (exemple, j'utilise AC97)

cd ~/desktop
./gfxutil -f AC97

 

Et dans IORegistryExplorer rechercher AC97@ et non AZAL@ :P

 

très bien, j'update la chose!

Share this post


Link to post
Share on other sites

Bravo,

 

C'est un super TUTO, il est très clair. Merci BCP !!!

Perso j'avais déja fais un "string" pour ma x1950 Pro.

 

Malgrès çà ton tuto clarifie pas mal de points importants !!!!

Si je l'avais eu plus tôt j'aurais gagné du temps!!!

 

Je vais tester le string pour l'audio et aussi pour mon controleur Sil3132, juste pour voir.

 

Merci A+

Share this post


Link to post
Share on other sites

Génial, j'ai refait ca marche nickel, il me remet 8800gtx (dans le tuto j'avais compris qu'il fallait enregsitrer en txt, jai refait en enregistrant normallement) mais il est mis que je n'est que 256 de ram dans les infos...ya moyen de changer cela? dans le in je crois pas...

Share this post


Link to post
Share on other sites

Re,

 

Je viens d'essayer de rajouter ma carte réseau : une ALC883.

J'ai suivi le tuto, par contre je n'ai pas le champ layout-id dans IORegistryExplorer. Donc j'ai laissé celui par défaut.

Résultat ca ne fonctionne pas pour le son, j'en ai plus :rolleyes:

 

Une idée ?

 

Merci à tous

 

EDIT : heu si j'ai bien le layout-id et le bon, mais pas de son...

Share this post


Link to post
Share on other sites
Génial, j'ai refait ca marche nickel, il me remet 8800gtx (dans le tuto j'avais compris qu'il fallait enregsitrer en txt, jai refait en enregistrant normallement) mais il est mis que je n'est que 256 de ram dans les infos...ya moyen de changer cela? dans le in je crois pas...

Si, je crois qu'il faut créer une entrée pour la ram dans le fichier plist. Alors tente avec ça:

 

En dessous de

 

<key>NVPM</key>

<data>

AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

</data>

 

Ajoute ceci:

<key>VRAM,totalsize</key>

[s]<string>0x28000000</string>[/code[/s]]

Je ne suis pas sûr du chiffre, mais tu peux toujours vérifier à l'aide d'IORegistryExplorer, (selectionne IODeviceTree). Tu vas dans [b]NVDA, Display[/b]-... et cherche l'entrée [b]VRAM-memsize[/b].

Recopie la bonne valeur comme expliqué dans le tuto, et retente le coup.

Share this post


Link to post
Share on other sites

Petite question, j'ai la 10.5.2 de zephyroth rev2 (Donc Amd) avec l'efi v8 d'installé,cela s'applique t'il pour notre architecture ?

 

Sinon superbe tuto ;)

Share this post


Link to post
Share on other sites

moi la video ca marche mais avec l'audio ca ma tout bousillé, j'ai plus de son :excl: quelque serait me mettre le lien pour le alc 889? j'avais le son en analogique et digital je ne retrouve plus ce patch qui est sur le disk de kalyway...maintenant je vois une différence de vitesse avec le driver video au démarrage...pour le son ca ne marche pas...pournvda display, la mesize en 768 de ram il faut rajouter: <00 00 00 18 00 00 00 30>

Share this post


Link to post
Share on other sites

regarde sur ce post sniperfox : http://forum.netkas.org/index.php/topic,104.0.html

Il faut que tu regardes avec lspci (lspci -nn) pour ta carte son et que tu la cherches dans IORegistryExplorer.

J'ai suivi la technique, je n'ai plus de son après :) Peut être qu'il faut patcher AppleHDA (si ca ne l'ai pas dans Kalyway 10.5.2) ?

Si qqun arrive à faire marcher ca sur du ALCXXX, faites nous un signe.

 

Merci

Share this post


Link to post
Share on other sites
Petite question, j'ai la 10.5.2 de zephyroth rev2 (Donc Amd) avec l'efi v8 d'installé,cela s'applique t'il pour notre architecture ?

 

Sinon superbe tuto :)

Normalement pas de problème avec des procos amd.

Au niveau du son, c'est une AL889a qui est embarqué sur ma carte mère, donc logiquement l'exemple est taillé pour cette carte... Une petite chose, je pense que c'est mieux de créer des GFX-Strings sur un seul et même fichier .plist: J'avais commencé par faire séparément son et video en les collant bout à bout, mais ça n'a pas marché. En tout cas, vérifiez bien que vous n'avez pas fait d'erreur dans l'ordre des chiffres, pensez à retirer les injecteurs... recommencez en prenant votre temps...

Share this post


Link to post
Share on other sites

J'essayais justement de comprendre ce qu'était exactement le EFI et les GFX strings.

Super tuto !! Merci ! :)

Share this post


Link to post
Share on other sites
regarde sur ce post sniperfox : http://forum.netkas.org/index.php/topic,104.0.html

Il faut que tu regardes avec lspci (lspci -nn) pour ta carte son et que tu la cherches dans IORegistryExplorer.

J'ai suivi la technique, je n'ai plus de son après :) Peut être qu'il faut patcher AppleHDA (si ca ne l'ai pas dans Kalyway 10.5.2) ?

Si qqun arrive à faire marcher ca sur du ALCXXX, faites nous un signe.

 

Merci

 

c'est bon, j'ai pas trop le temps de passer ma journée a chercher,je suis aps non plus uen bete en informatique..je vais simplement remettre le patch son comme à l'instal.. mais je ne le trouve pas...c'est chiant j'espere que je v pas devoir tout réinstaller.. c'est dommage car pour la video ca marche..pour l'audio j'ai suivi le tuto a la lettre mais bon...

 

si quelqu'un a reussit a faire marcher du ALC 889 qu(il détaille sa manipulation merciii

Share this post


Link to post
Share on other sites

Bravo Sonotone ! Très courageux de ta part.

Ca va mieux la tête ?

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.

×