Chameleon v2 acte VI: l'injection graphique



Nouvelle fonctionnalité arrivée avec la RC2, l'injection graphique permet de faire reconnaître une grande variété de cartes graphiques Nvidia par Os X.

Dans son principe de fonctionnement, le bootloader fait un dump complet du Vbios (bios vidéo ou ROM) de la carte graphique, le patch à la volée puis injecte les bonnes informations au registre du système.



Activer l'injection graphique


Rien de plus simple: dans votre fichier com.apple.Boot.plist ( Le dossier Extra ), ajoutez cette entrée:
<key>GraphicsEnabler</key>
<string>y</string
Notez qu'au passage, si vous avez d'autres dev-props (strings) dans votre fichier com.apple.Boot.plist, ceux-ci ne seront plus pris en compte par Chameleon si vous activez cette fonction. Pensez également à supprimer les injecteurs/entrées DSDT pour votre carte graphique.




Voir ce que est injecté


Pour vérifier les informations envoyées par Chameleon, vous allez avoir besoin de GFXUtil, que vous pourrez trouver dans cet article: Les GFX-Strings: méthodes et applications

Dans un premier temps, il faut récupérer les Dev-props dans un fichier. Ouvrez terminal et entrez:
ioreg -lw0 -p IODeviceTree | grep device-properties > out.hex
Dans votre dossier de départ, ouvrez le fichier nommez "out.hex", puis supprimez tout ce qui ne se trouve pas entre < et > (en gros, ne gardez que les chiffres.sans les < >)

Copiez l'application gfxutil dans votre dossier de départ, puis envoyez ces commandes au terminal pour convertir le hex en plist:
cd ~/
./gfxutil -i hex -o xml ./out.hex ./out.plist

Et voilà, vous avez maintenant un joli fichier out.plist qui vous permettra de voir ce qui est injecté.




Corriger l'injection


Pour le moment, cette fonctionnalité souffre d'un petit problème, qui est que Chameleon injecte systématiquement ses dev-props dans PciRoot(0x0)
Donc, si chez vous l'injection ne fonctionne pas, c'est peut-être parce que le chemin de votre carte graphique commence par PciRoot(0x1)

Pour en être certain, toujours avec gfxutil et le terminal, entrez:
./gfxutil -f display
Si le DevicePath commence par PciRoot(0x1), cela veut dire que Chameleon envoi les infos au mauvais endroit.
Pour y remédier, il va falloir aller faire un tour dans votre DSDT (à lire: Injecter les périphériques de votre ordinateur grâce au DSDT)

Une fois votre DSDT créé et décompilé, ouvrez-le et partez à la quête de l'entrée: Device (PCI0)
Quelques lignes en-dessous, vous devriez trouver la ligne suivante:
Name (_UID, One)
Modifiez la de manière suivante:
Name (_UID, Zero)
Si vous avez bien tout suivi, vous aurez compris que vous êtes en train de modifier la racine du DevicePath (0x1 en 0x0) afin d'aider chameleon à trouver votre carte graphique.

Compilez votre DSDT, rebootez, et vérifiez avec gfxutil si le changement s'est bien effectué. Dans ce cas, tout devrait fonctionner.

Si vous avez toujours des problèmes de reconnaissance, je vous conseil d'aller faire un tour dans les sources de Chameleon, et d'ouvrir le fichier situé dans I386/libsaio/nvidia.c histoire de vérifier si vous y retrouvez votre DeviceID.
 

Commentaires 

 
0 #1 10-08-2009 11:48
Chez moi, la RC2 me pète le bureau avec un écran noir et plein de carré blanc de taille aléatoire. Pas de Nvidia mai une radeon HD4970...
En changeant juste le fichier boot avec la RC1, ça marche.
Bizarre ?!
Citer
 
 
0 #2 woodbox 08-09-2009 10:04
Grâce à vos articles, j'ai actuellement un DSDT patché qui marche bien pour ma Nvidia 8800GT. Y a t'il une amélioration apportée par cette méthode? Comment décririez vous les avantages respectifs de ces deux solutions (DSDT/injection dans Chameleon)?

Merci pour cet excellent site qui est tout simplement exceptionnel par la qualité de ses tutos.
Citer
 
 
0 #3 02-10-2009 10:28
Comme woodbox, j'aimerai savoir qu'elle est l'intérêt de l'injection graphique grâce a chameleon par rapport au simple ajout des EFI string dans le com.apple.boot.plist.
Je vous remercie également pour tous vos excellents tutoriaux, longue vie à darwinx86.
Citer
 
 
+1 #4 Trauma 02-10-2009 15:16
Salut à vous deux,

L'avantage de l'injection automatique de Chameleon c'est que comme son nom l'indique elle est automatique. Elle est sensée définir des valeurs importantes tel que le NVCAP automatiquement , et donc éviter des erreurs. Si vous avez déjà un string qui fonctionne parfaitement, alors vous ne tirerez aucun avantage de cette méthode.

Au sujet du DSDT et de device-properties :

  • Les deux méthodes fonctionnent parfaitement.
  • L'avantages du DSDT est, qu'en plus de sa fonction première, qui est de gérer les fonctions ACPI, il peut aussi injecter des informations pour périphériques PCI dans le registre. En résumé on gère ACPI et injection de "device-properties" au seins d'un même fichier.
  • L'avantage de l'utilisation de l'injection des device-properties via chameleon est qu'il injecte le srting de device-properties au même endroit que l'EFI le fait sur les vrais Macs. Donc a part la source de l'injection le résultat est identique. Le DSDT lui injecte les infos directement dans le registre des périphériques PCI concernés.


Schématiquement ça donne çà :

Chameleon>string>device-properties>registre du périphérique>driver du périphérique.

Chameleon>DSDT>registre du périphérique>driver du périphérique.

Si on veut faire les choses dans les regles de l'art je pense qu'il faut utiliser le DSDT pour les fix ACPI et le string pour l'injection.

J'espere avoir été clair.
Citer
 
 
0 #5 03-10-2009 01:49
Bon beh j'ai testé le GraphicsEnabler de Chameleon avec une 8800 GT 512Mo et ça ne fonctionne pas (malgré changement du DevicePath), je me retrouve avec une carte de 32 Mo qui n'est plus reconnu du tout. J'ai testé cela car mon écran à du mal a trouver la sorti DVI du coup il scanne et m'affiche parfois de la neige. Je pensais à un problème de NVCAP ( DVI/DVI pour moi). Pas de chance.
Merci pour ta réponse trauma
Citer
 
 
0 #6 08-10-2009 10:34
Le GraphicsEnabler de Chameleon marche apparemment conjointement au DSDT, car après modification de celui ci, carte graphique reconnu sans injection des device-properties, pour l'instant pas de neige à l'écran comme cité plus haut ==> à confirmer après plusieurs jours. grâce à un mix entre le DSDT que j'ai créé, et plusieurs autre trouvé sur le net mon hackintosh est quasi 100% fonctionnel reste la suspension d'activité automatique et un ICH10 au lieu de ICH9 ( ça change rien il me semble). A plus et merci à toute la communauté des hackintosher (+++ aux développeurs comme font un bouleau énorme)

PS au Webmaster : le site semble extrêmement lent et à quelque problème de base de données semble t-il, attention je ne me plaint pas je le signale c'est tout. Et je ne vois pas l'utilité de Joomunity (lourd pour Joomla).
Je ferais bientôt un don promis
Citer
 
 
0 #7 sonotone 08-10-2009 10:53
Joomunity a été supprimé, et la lenteur et les erreurs de bases de données sont liés à un hébergement trop cheap.
Citer