eGPU sur un MacBook Pro mid-2012 Unibody

La carte graphique Nvidia GeForce GT 650M d’un MacBook Pro mid-2012 (non retina) est franchement obsolète actuellement.

Mais, plutôt que de changer de machine pour avoir une meilleure carte graphique, pourquoi ne pas opter pour un boîtier eGPU ? Surtout que, même si la machine venait à être changée par la suite, le boîtier eGPU serait toujours réutilisable.

Officiellement, seules les machines Thunderbolt 3 supportent les boîtiers eGPU, mais via quelques petites manipulations, détaillées ci-après, les machines plus anciennes sont supportées ! Et la 4K et le HDR fonctionnent !

Matériel utilisé :

  • MacBook Pro mid-2012 15 pouces Unibody (non retina) i7 2.3 Ghz [1]
  • Boîtier eGPU « Razer Core X » [2]
  • Carte graphique AMD à base de RX570 [3]
  • Adaptateur « Thunderbolt 3 » vers « Thunderbolt 2 » [4]
  • Câble « Thunderbolt 2 » [5]
  • Un écran externe (fonctionnel également avec un dongle « fake screen », mais nécessite un logiciel pour déplacer les fenêtres sur le bon écran [6])
  • macOS v10.15.6

Avant d’acheter une carte graphique, il faut vérifier que la carte en question bénéficie d’un pilote pour macOS.

Le boitier Razer Core X a été choisi pour son bon rapport qualité / prix.

Une fois le matériel en place, il faut configurer l’ordinateur pour que la prise en charge soit effective !

Attention, macOS Big Sur (v11 - v10.16) ne supporte plus officiellement les MacBook Pro mid-2012.

Des patches existent pour l’installer et devraient probablement permettre le fonctionnement de l’eGPU (non testé) [7].

Partie logicielle

Désactivation du SIP

L’activation du support eGPU sur cette machine nécessite la désactivation du SIP [8], pour ce faire :

  • Démarrer l’ordinateur en mode restauration (« cmd » + « r » au démarrage, ou via une clef USB d’installation de macOS)
  • Utilitaire => Terminal
  • Taper la commande : csrutil disable
  • Redémarrer l’ordinateur

Attention : désactiver le SIP baisse le niveau de protection du système d’exploitation !

purge-wrangler

L’étape suivante consiste à utiliser le script « purge-wrangler ».

Brancher le boîtier eGPU et vérifiez que l’icône du eGPU est bien présente dans la barre de menu, cela permettra la détection automatique du boîtier et de la carte :

Symbole eGPU
cd ~/Documents
git clone https://github.com/mayankk2308/purge-wrangler.git
cd purge-wrangler
sudo ./purge-wrangler.sh
Purge Wrangler - Étape 1

Une fois le script lancé, taper « 1 ».

Purge Wrangler - Étape 2
Purge Wrangler - Étape 3

Taper puis « Y » (Reboot Now ?) pour redémarrer l’ordinateur.

Attention de bien débrancher le boîtier eGPU pour l’étape suivante « purge-nvda ».

PurgeNVDA

Le MBP est équipé d’une carte intégrée Nvidia qui empêche le fonctionnement de l’eGPU (limitation logicielle liée au mauvais support de la carte Nvidia interne), il faut donc passer par un second script appelé PurgeNVDA qui permettra de désactiver cette carte de façon logicielle.

cd ~/Documents
git clone https://github.com/mayankk2308/purge-nvda.git
cd purge-nvda
sudo ./purge-nvda.sh
Purge Wrangler - Étape 3

Une fois le script lancé, taper « 1 », puis « N » (back to menu).

Taper « 6 », puis « Y » pour redémarrer l’ordinateur :

Purge Nvidia - Étape 1

Rebrancher le boîtier eGPU, qui devrait désormais être complètement fonctionnel !

Informations système

Les résultats de MetalBench

Carte Radeon en Ray tracing :

32 fps / 144 MRays/sec et l’ordinateur est fluide.

Résultats <span class="caps">RX570</span>

Carte Nvidia intégrée en Ray tracing :

9 fps / 8 MRays/sec et l’ordinateur est inutilisable.

Résultats Nvidia

Télécharger l’outil MetalBench.

Quelques limitations

Plusieurs fonctionnalités du MBP ne sont plus disponibles après activation du script purge-nvda :

  • la mise en veille,
  • l’écran interne reste allumé lorsque le capot est fermé,
  • l’utilisation d’un écran externe est impossible via le display port.

La désactivation du patch purge-nvda et un redémarrage du MBP permet de rétablir immédiatement toutes ces fonctionnalités :

cd ~/Documents/purge-nvda
sudo ./purge-nvda.sh -u -rb

Non testé