Hackintosh Skylake : USB El Capitan, Sierra

b) construire un kext assez basique, en t'inspirant de la fin des méthodes de fjlagd et de Macbidouille (le principe est le même pour les deux, sauf que Macbidouille renomme le contrôleur XHCI en XHC pour éviter tout conflit avec un éventuel injecteur d'Apple).

En fait, le patch pour renomme XHCI en XHC, c'est pas pour éviter un éventuel conflit avec un injecteur Apple, c'est pour les cas où le contrôleur est défini comme tel dans certaines DSDT.

L'injecteur d'Apple, c'est celui-ci : /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBXHCIPCI.kext (parce que oui, Apple se sert elle aussi d'un injecteur pour ses propres Mac, marrant non :hilarious: ?) et lui, il va chercher un XHC1.
 
Dernière édition:
  • J’aime
Réactions: Barijaona et gradou
Fonctionne parfaitement avec Sierra, mais pas avec El Capitan, pourtant même SMBIOS, mêmes réglages, bizarre, non ?
Affaire à suivre...
 
Tu l'as installé où finalement ? Dans L/E, S/L/E ou EFI/CLOVER/kexts/10.11 et EFI/CLOVER/kexts/10.12 (auquel cas, il faudrait plutôt le mettre dans Other qui est commun à toutes les versions d'OS X) ?

Si tu permets, je voudrais essayer une version légèrement différente de l'injecteur pour voir…
 
  • J’aime
Réactions: gradou
Tu l'as installé où finalement ? Dans L/E, S/L/E ou EFI/CLOVER/kexts/10.11 et EFI/CLOVER/kexts/10.12 (auquel cas, il faudrait plutôt le mettre dans Other qui est commun à toutes les versions d'OS X) ?

Si tu permets, je voudrais essayer une version légèrement différente de l'injecteur pour voir…
Je l'ai mis dans les deux 10.11 et 10.12 (et dans les deux EFI) pour qu'il soit disponible depuis partout mais t'as raison, le plus simple c'est de le mettre dans "other"...
 
Si tu permets, je voudrais essayer une version légèrement différente de l'injecteur pour voir…

Bon, et ben avec ton kext polyzargone, TOUT FONCTIONNE PARTOUT : El Capitan, Sierra !!!

:up::up: BRAVO:up::up: et merci :happy:

(Je vais revérifier la version de Barijoana avec 10.11); revérification faite, elle fonctionne (!!!!!), :merci:j'avais dû m---er quelque part... m'enfin !!

Je te remercie de m'avoir poussé à ouvrir ce sujet parce que vos réalisations vont, je crois, rendre service à nombre d'entre nous. :merci::merci:

Maintenant j'ai cependant une requête pour que la fête soit complète : celle que vous contribuiez tous les deux à l'autonomie des Hackintosheurs en voie de "développement" !!

Pour ma part j'avais utilisé une méthode et des outils qui ne m'ont pas permis d'aller au bout :(
Pourriez vous l'un et l'autre nous expliquer comment vous avez procédé (à moins qu'il ne s'agisse de secrets de fabrication !!!!) ? Et puis aussi, pour satisfaire les curieux : c'est quoi la différence entre les 2 versions ?

Mais encore merci !!!

Ai je des renseignements à vous fournir ?
 
Dernière édition:
  • J’aime
Réactions: chenoguera
:jawdrop: wow, les nouvelles de la nuit sont assez fantastiques ! Je n'ai pas bâti un seul hackintosh de ma vie, mais j'ai déjà l'impression de commencer à comprendre deux ou trois choses essentielles !

Sauf que je ne suis pas sûr de tout comprendre ! @polyzargone, je suis preneur d'explications sur ton kext, car les valeurs numériques que j'y trouve ne correspondent pas à la copie d'écran fournie par @gradou : http://forums.macg.co/attachments/dpci-capture-png.110545/

Pour ma part, je n'ai pas grand mérite, car en partant de ladite copie d'écran et des adresses de port, je n'ai fait qu'appliquer la déclaration de ports qu'a découvert fljagd (qui au départ n'arrivait pas à faire marcher l'USB3 de sa carte X99), en y ajoutant le renommage de XHC1 à XHC évoqué chez macbidouille.

La seule vrai nouveauté, c'est la suppression de tout ce qui faisait référence à EHCI, car je me suis dit que dans un contexte Skylake, ça ne servait à rien ou risquait de mettre le bazar.

Concernant plus particulièrement le renommage de contrôleurs/ports, ma compréhension de la chose est celle qui est décrite dans la partie Summary de ce guide chez Tonymac. En traduisant et en simplifiant pour notre cas :
  • le DSDT contient des informations sur les ports USB intégrés et les ports des hubs USB intégrés
  • le DSDT peut être erroné
  • Apple a peut-être trouvé des erreurs DSDT dans des produits Apple, donc ils mis en place un mécanisme pour remplacer les DSDT (les injecteurs de port)
  • Les injecteurs de port Apple sont basés sur les noms ACPI des contrôleurs et sur le SMBIOS
  • Les injecteurs de port Apple vont remplacer votre DSDT (que celui-ci soit correct ou non) si les critères correspondent
  • Renommer les contrôleurs pour éviter une correspondance peut être un moyen d'éviter les injecteurs de port Apple, ce qui fait que le système retombe sur le DSDT (qui peut cependant être lui même erroné)
  • Après le renommage de ports, si le DSDT fournit des détails erronés sur la topologie des ports USB, on peut créer un injecteur de port comme Apple l'a fait pour ses propres ordinateurs
 
Pour ma part, je n'ai pas grand mérite, car en partant de ladite copie d'écran et des adresses de port, je n'ai fait qu'appliquer la déclaration de ports qu'a découvert fljagd (qui au départ n'arrivait pas à faire marcher l'USB3 de sa carte X99), en y ajoutant le renommage de XHC1 à XHC évoqué chez macbidouille.

J'avais essayé aussi la méthode flagd, sauf que ça n'avait pas fonctionné. Comment as tu fait, avec quels outils pour, à partir des éléments fournis sur les adresses des ports et de la copie d'écran PCI-list, fabriquer le kext ?
Pourrais tu faire un p'tit tuto là dessus ? :merci::merci::merci:
 
Pour compléter les explications sur mon kext, les noms de ports sont ceux qui figurent d'origine dans le fichier SSDT-5.aml de EFI/CLOVER/ACPI/origin : HS01 à HS14 (USB2), SS01 à SS10 (USB3) et USR1 à USR2 (USB3.1)

Pour répondre à gradou : si tu regardes le contenu du kext, celui-ci est pratiquement vide, il ne contient qu'un Info.plist. Je suis juste parti du modèle pour X99 de fjlagd et je l'ai édité avec PlistEdit Pro, en adaptant les IDs des contrôleurs AHCI et USB 3.0 xHCI.

Plutôt qu'un tutorial, je vais poster le kext sur Github avec des explications détaillées.
À la réflexion, les différents usages du mot injecteur rendent le rôle du kext ambigu : je vais sans douter changer le nom du kext. (Z170X_USBEnabler ?)
 
Pour répondre à gradou : si tu regardes le contenu du kext, celui-ci est pratiquement vide, il ne contient qu'un Info.plist. Je suis juste parti du modèle pour X99 de fjlagd et je l'ai édité avec PlistEdit Pro, en adaptant les IDs des contrôleurs AHCI et USB 3.0 xHCI.
Plutôt qu'un tutorial, je vais poster le kext sur Github avec des explications détaillées.
À la réflexion, les différents usages du mot injecteur rendent le rôle du kext ambigu : je vais sans douter changer le nom du kext. (Z170X_USBEnabler ?)

Oui, c'est bien comme nom, tu nous diras quand t'auras fait ça sur Github (un p'tit lien).
 
Dernière édition par un modérateur:
Oui, c'est bien comme nom, tu nous diras quand t'auras fait ça sur Github (un p'tit lien).

Ce ne sera pas pour tout de suite, car je préfère attendre ma machine pour vérifier/compléter les explications. En attendant, considère toi comme mon bêta-testeur !
 
Testeur, je veux bien, mais ballot, non alors !! o_O
 
Est-ce que l'explication graphique ci-après des valeurs que j'ai reporté dans pListEdit est un peu plus claire ?
  • Identifiants des périphériques PCI

PlistEdit et DPCI Manager.webp

  • Adresses des ports

Liste des ports identifiés et PlistEdit.webp

Compares ce que j'ai fait avec ce qu'a fait @fljagd avec sa X99 et tu comprendras que l'on reste dans la même logique. Sauf que je n'ai que du XHCI et pas de EHCI.
 
  • J’aime
Réactions: gradou
Je l'ai mis dans les deux 10.11 et 10.12 (et dans les deux EFI) pour qu'il soit disponible depuis partout mais t'as raison, le plus simple c'est de le mettre dans "other"...

Deux dossiers EFI ? Hmm… Non :p. C'est inutile voire même problématique.

Quelque soit le nombre de version d'OS X que tu utilises sur ton Hack, un seul dossier EFI pour les gérer est largement suffisant.

C'est (encore) une autre raison de ne pas utiliser MultiBeast puisque si on place les kexts dans EFI/CLOVER/kexts/10.x ou Other et non pas dans le L/E ou S/L/E de chaque partition OS X, on peut parfaitement gérer chaque OS individuellement avec ses propres kexts et ses propres patchs.

Ex :

Sur ma H97-HD3, j'ai actuellement 4 versions d'OS X : Mavericks, Yosemite, El Capitan et Sierra (et 1 Windows + 1 Linux).

Je n'ai qu'un seul dossier EFI/CLOVER sur mon disque El Capitan et je mets les kexts communs à tous dans Other et ceux qui sont spécifiques dans 10.9, 10.10, 10.11 et 10.12. J'ai donc ces 3 kexts dans 10.11 et 10.12 (je n'ai rien de spécifique dans 10.9 et 10.10) :

• FakePCIID_XHCIMux.kext
• FakePCIID.kext
• USB_Injector.kext

Et le reste dans Other :

• AppleALC.kext
• FakeSMC.kext
• RealtekRTL8111.kext

Idem pour le config.plist : je n'en utilise qu'un avec des Kernel and Kexts Patches spécifiques à chaque version (le cas échéant) + des patchs communs (comme le TRIM par exemple).

C'est donc beaucoup plus simple à gérer et ça me permet de brancher n'importe quel disque équipé d'OS X sans avoir à installer Clover à chaque fois sur chaque disque. Ainsi, l'année prochaine, je n'aurais qu'à ajouter un dossier 10.13 dans EFI/CLOVER/kexts et éventuellement, des patchs spécifiques à ce nouvel OS (pour faire sauter la limite de l'USB par exemple même si personnellement, je n'en ai pas besoin) et c'est tout.

Dans le même ordre idée, si j'installe OS X sur un disque externe, je n'ai qu'à le brancher et mon Clover situé sur la partition EFI El Capitan se chargera de le démarrer. C'est très pratique quand il s'agit de tester des bêtas par exemple ;).

Bref, revenons à nos moutons :p

Pourriez vous l'un et l'autre nous expliquer comment vous avez procédé (à moins qu'il ne s'agisse de secrets de fabrication !!!!) ? Et puis aussi, pour satisfaire les curieux : c'est quoi la différence entre les 2 versions ?

Le secret, c'est d'abord d'utiliser les bons outils :

• MaciASL pour tout le bazar avec les fichiers ACPI
• IORegistry Explorer pour repérer/vérifier que ce qu'on trafique avec le bootloader, les DSDT/SSDT ou les kexts est bien appliqué
• PlistEdit Pro pour faire mumuse avec les fichiers .plist (il y en a quasiment partout et pour tout dans OS X)
• Du temps et beaucoup de patience :p

Personnellement, si je devais te donner un point de départ, je dirais que la maîtrise de PlistEdit Pro (y a un outil similaire dans XCode mais faut se coltiner les 3,80 Go de téléchargement) est essentielle.

Elle te sera bien plus utile que la compréhension de MaciASL et de la norme ACPI (c'est vraiment hardcore comme truc). Mais si tu te sens à l'aise ou curieux d'en apprendre plus, alors fonce car si tu arrives à piger comment ça marche, tu peux faire des merveilles avec ça !

Pour l'injecteur en question, tu avais déjà fait le plus gros du boulot et en fait, il te suffisait "simplement" de modifier les valeurs de l'injecteur de fjlagd pour qu'elles correspondent à tes adresses de ports (elles étaient incorrectes dans la version qu'il t'a fourni).

Donc si c'était à refaire ou si c'était pour une autre carte-mère, il faudrait là aussi commencer par identifier les ports/adresses avec IORegistry Explorer + USBInjectAll.kext + patch Clover pour faire sauter la limite et ensuite, éditer l'info.plist et mettre ses propres valeurs HSxx/SSxx avec les bonnes adresses.

C'est ça le tuto
;).

Sauf que je ne suis pas sûr de tout comprendre ! @polyzargone, je suis preneur d'explications sur ton kext, car les valeurs numériques que j'y trouve ne correspondent pas à la copie d'écran fournie par @gradou : http://forums.macg.co/attachments/dpci-capture-png.110545/[

(…)

Pour répondre à gradou : si tu regardes le contenu du kext, celui-ci est pratiquement vide, il ne contient qu'un Info.plist. Je suis juste parti du modèle pour X99 de fjlagd et je l'ai édité avec PlistEdit Pro, en adaptant les IDs des contrôleurs AHCI et USB 3.0 xHCI.

En ce qui concerne les différences entre les deux versions :

Même si je doute un peu que ça ait changé grand chose, je ne suis pas parti sur l'injecteur de fjlagd (qui contient un champ "IntelC610/X99SeriesAHCI" dont je ne m'explique pas la présence) mais en me basant sur /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBXHCIPCI.kext.

Je n'ai conservé que les champs "AppleUSBXHCIxxxxx" dans IOKitPersonalities et je les ais tout simplement copier/coller à la place de ce qu'il y avait dans l'injecteur de fjlagd et de @Barijaona tout en conservant le champ iMac17,1-XHC avec les adresses définies par @gradou et intégrées par @Barijaona.

Du coup, je n'ai pas utilisé les IDs des contrôleurs AHCI (pourquoi faire ? C'est l'USB qui nous intéresse ici) ni des contrôleur USB 3.0 XHCI. Par conséquent, l'injecteur ne se fie qu'à ce qui est défini dans la DSDT.

Ça me semble plus cohérent et plus propre mais encore une fois, je ne suis pas certain que ça ait changé quoique ce soit puisque tu nous dis que finalement, la version de @Barijaona a fonctionné.

Cela étant, le kext v2 est normalement plus en adéquation avec le propre injecteur d'Apple, l'AppleUSBXHCIPCI.kext qu'il est sensé remplacer. Et donc, je pense qu'il devrait se comporter exactement pareil. Moins on s'éloigne de ce qu'Apple propose en standard, plus on a de chance d'éviter des comportements inattendus.

Pour l’anecdote; c'est comme ça que j'ai résolu un problème de manque d'alimentation des ports USB 2 de mon portable (genre le Finder qui se plaint que le périphérique n'est pas assez alimenté alors que c'est une simple clé USB). Il manquait tout simplement des champs dans l'injecteur ;).
 
Dernière édition:
  • J’aime
Réactions: gradou
Est-ce que l'explication graphique ci-après des valeurs que j'ai reporté dans pListEdit est un peu plus claire ?
  • Identifiants des périphériques PCI
  • Adresses des ports
Compares ce que j'ai fait avec ce qu'a fait @fljagd avec sa X99 et tu comprendras que l'on reste dans la même logique. Sauf que je n'ai que du XHCI et pas de EHCI.

Tu noteras que l'identifiant PCI A12F est déjà présent dans l'info.plist de l'AppleUSBXHCIPCI.kext dans IOKitPersonalities > AppleUSBXHCISPT1 mais pas dans IOKitPersonalities > AppleUSBXHCILPTH comme c'est le cas dans l'injecteur de fjlagd ;).
 
@ "chef" polyzargone :

Non, mais mes OS 10.11 et 10.12 sont sur des disques différents (et non sur des partitions du disque) : that's the reason why j'ai deux efi, et puis j'aime bien (par habitude) démarrer en sélectionnant le disque souhaité via le bios. Il n'y a que pour windows 10 que je navigue dans le menu clover (dispo avec la temporisation du disque El Capitan)... Mais pour le disque Sierra, je n'ai pas mis de temporisation, donc pas de menu clover. tout ça c'est un peu ma soupe, mais j'en conviens c'est pas le plus simple... mais j'm'en va étudier de près ce que tu préconises qui m'a l'air bien, bien propre !!

Comme j'ai été un bon élève (lol) j'ai fait un kext pour ma Z170-M Plus... et ça marche... parce que j'ai seulement adapté avec Xcode votre Kext pour la Z170X...

Bon, je vais regarder le tuto (vous êtes déchainés les mecs !!!, J'arrive plus à suivre avec vous deux, mais quel PIED !!!!) Faudrait peut-être faire un peu la sieste parce qu'on va finir sur les genoux, nous autres !!- en parlant de pied-)

@ "chef" Barijaona :
Ils sont très explicites tes tableaux et on voit bien la manip, une question cependant : c'est quel info.plist que t'édites avec Plistedit pro (qu'est pas gratuit, c'est pour ça que je préfère XCode
 
Dernière édition:
Non, mais mes OS 10.11 et 10.12 sont sur des disques différents (et non sur des partitions du disque)

:hilarious:

Non mais j'avais bien compris que c'était des disques différents ! Moi c'est pareil, mes OS X sont sur des disques différents (sauf Mavericks et Yosemite qui se partage le même). Mais ça ne change strictement rien à l'affaire :). Ce que je veux dire, c'est que c'est inutile d'avoir des Clover partout dans chaque partition EFI de chaque disque.

M'enfin, comme tu dis, c'est ta soupe :P !

c'est quel info.plist que t'édites avec Plistedit pro

Celui de l'injecteur de fjlagd j'imagine ? Après, on va pas se mentir et personne ici n'a créé les injecteurs :P. Ils viennent tous plus ou moins de ;).
 
J'suis convaincu j'vais boire ma soupe et en préparer une meilleure à ta sauce, j'ai regardé ça pose en effet aucun pb et c'est bien plus simple !!

Et un kext pour ASUS Z170M-Plus, bon d'accord c'était pas le plus compliqué à faire avec la matière que vous aviez fournie !!

https://www.dropbox.com/s/8cw9dsn35l1g845/AsusZ170M_Injector.kext.zip?dl=0

Ayé, j'ai pigé avec l'édition de l'info.plist de l'x99_injector.kext : merci pour toutes ces explications, ça s'éclaircit sérieusement et, je l'espère, pour ceux qui s'intéressent au sujet !!
 
Dernière édition:
Et un kext pour ASUS Z170M-Plus, bon d'accord c'était pas le plus compliqué à faire avec la matière que vous aviez fournie !!

https://www.dropbox.com/s/8cw9dsn35l1g845/AsusZ170M_Injector.kext.zip?dl=0

Ayé, j'ai pigé avec l'édition de l'info.plist de l'x99_injector.kext : merci pour toutes ces explications, ça s'éclaircit sérieusement et, je l'espère, pour ceux qui s'intéressent au sujet !!

En fait, le plus long et le plus pénible, c'est surtout d'identifier les ports et les adresses. Ensuite, c'est pas si compliqué que ça en à l'air :P.

En revanche, je serais d'avis de partir sur la v2 pour créer son propre injecteur parce que la version X99_Injector.kext, il lui manque des trucs et je n'ai toujours pas compris pourquoi il y était question d'AHCI…