Nous sommes début 2003, et Apple vient d’annoncer la seconde génération de Power Mac G4 MDD (Mirrored Drive Doors). Apple met en avant sa nouvelle technologie qui permet d’excellents débits, le FireWire 800, et qui est plus rapide que l’USB 2.0. Et pour être certain que le FireWire soit bien mis en avant, Apple ne propose pas d’USB 2.0 dans son Mac… alors même qu’il intègre bien la puce nécessaire. Et ce n’est pas une théorie du complot : l’USB 2.0 est présent et il est possible (en bidouillant un peu) de l’activer.
La présence de la puce USB 2.0 avait bien été détectée à l’époque. Le contrôleur NEC, un D720101F1, est placé sous la carte mère (ce qui n’est pas très accessible) mais certains l’avaient bien remarqué. Sauf que si vous branchez un périphérique USB 2.0 sous Mac OS X (la machine n’accepte pas Mac OS 9), vous serez limités à 12 Mb/s (de l’USB 1.1, donc). Au départ, je pensais qu’Apple avait intégré et désactivé le contrôleur (par exemple sans le câbler), mais ce n’est pas le cas : il y a une limitation artificielle qui force le contrôleur en mode USB 1.1 sous Mac OS X.
Premièrement, quand on va dans les Informations système de Mac OS X, les informations sur le contrôleur indiquent bien que c’est un contrôleur NEC et pas le contrôleur USB intégré dans le southbridge Key Largo. Deuxièmement, le contrôleur USB 2.0 est bien actif quand on démarre sous GNU/Linux. Je passe mes déboires avec ça, ce n’est pas très intéressant, mais en démarrant avec une version 16.04 d’Ubuntu pour PowerPC, on a bien de l’USB 2.0. Je n’ai pas découvert ça tout seul, c’est une personne sur le forum 68KMLA qui l’a vu et j’ai juste vérifié.
Un peu de contexte avant la suite des essais : c’est un truc que j’avais vu il y a une vingtaine d’années, que j’ai laissé en brouillon pendant longtemps. Un jour, j’ai récupéré une carte mère à vil prix pour vérifier la présence du contrôleur. Une fois ce point réglé (il y a bien un contrôleur NEC, le même que celui de pas mal de cartes PCI), j’ai cherché et finalement trouvé un Power Mac G4 MDD avec du FireWire 800 près de chez moi. C’est un Mac qui n’est pas spécialement intéressant au départ, il ne démarre pas sous Mac OS 9, il est moins rapide qu’un Power Mc G5, extrêmement bruyant, et mon modèle a un seul processeur. De plus, la carte graphique avait un problème et affichait des artefacts, mais j’en avais une seconde en stock.
Activer l’USB 2.0
La partie intéressante, c’est qu’il est possible d’activer l’USB 2.0, même si Apple ne voulait pas ça. D’abord, il faut bien la version avec du FireWire 800 : la puce n’est pas présente sur le modèle avec du FireWire 400. Deuxièmement, la modification permet d’accéder à Mac OS 9 sur le Mac, et ça peut être intéressant, mais avec un petit défaut : les prises FireWire fonctionnent mal dans ce cas. Si vous restez sous Mac OS X, ça ne change rien. Je n’ai pas découvert ça tout seul, et pour tout dire, une personne avait même remarqué l’activation de l’USB 2.0 il y a une dizaine d’années sur un forum.
L’idée est de remplacer la BootROM (une partie du firmware) par celle issue du Power Mac G4 MDD FireWire 400. Les deux Mac sont très proches et il démarre avec la vieille BootROM, ce qui permet de prendre en charge Mac OS 9… et d’activer l’USB 2.0. Je peux supposer que la BootROM du modèle FireWire 800 contient un truc qui bride le contrôleur. Attention, c’est irréversible a priori : il n’y a pas de mise à jour de la BootROM pour le modèle FireWire 800.
J’ai utilisé la méthode présentée là, mais il y a une petite erreur dans la commande (un \ en trop). La seconde étape m’a posé pas mal de soucis : je n’ai pas eu le son strident à chaque fois. Pour que ça marche, j’ai éteint le Mac, tiré la prise et ensuite j’ai pressé le bouton. Si vous n’avez pas le long bip, ça ne fonctionnera pas.
• Télécharger le fichier Firmware et le mettre sur une clé USB formatée en FAT32.
• Démarrer le Mac en pressant le bouton jusqu’à ce qu’un long bip survienne.
• Une fois le son émis, il faut lâcher le bouton et presser command + option + O + F pour démarrer dans l’Open Firmware.
• Avec la clé USB dans le port USB du bas (le plus proche du FireWire 400), il faut taper la ligne suivante.
load usb0/disk@1:,Firmware
L’Open Firmware va lire le fichier et vous devriez avoir une réponse suivie d’un OK. Si le fichier n’est pas lu, il faut vérifier la ligne, vérifier la clé USB et éventuellement changer la clé USB de prise (et remplacer usb0 par usb1).
• Enfin, il faut taper go. Si tout se passe bien, vous verrez une barre de progression de type Mac OS 9 en bas de l’écran, qui va prendre quelques dizaines de secondes à se remplir. C’est le moment de prier ou d’acheter un onduleur. Quand elle a fini, le Mac va redémarrer et ouvrir le lecteur optique. Si la barre de progression n’apparaît pas et que le Mac redémarre directement, vous avez probablement raté la seconde étape.
Ensuite, vous devriez voir une BootROM version 4.4.8f2 et plus une version 4.5.7f1.
Il y a une petite différence d’ailleurs : avec la ROM d’origine, Mac OS X ne liste que le contrôleur USB NEC, bridé. Avec la ROM modifié, le bus du southbridge est listé, comme sous Linux. Mais je ne pense pas qu’il est câblé.
Et ça donne quoi ?
Alors, j’ai eu quelques soucis de RAM, mais elle était déjà capricieuse avant la mise à jour. Sinon, le Mac a perdu les réglages de démarrage après la mise à jour. Mais le résultat attendu est là : l’USB 2.0 fonctionne. C’est la même puce que dans les cartes PCI, donc les débits sont corrects pour l’époque, sans plus. Le contrôleur NEC du début des années 2000 a été évidemment largement dépassé depuis. L’intérêt principal, c’est qu’on évite de mettre une carte PCI en plus, et on oublie les soucis de veille de ce que j’ai pu constater. C’est un problème assez courant avec ce Power Mac de ne pas pouvoir passer en veille, surtout avec les cartes USB.
Dans les faits, on passe de moins de 1 Mo/s à 16 Mo/s avec une clé USB correct. Sur un Mac moderne avec un contrôleur rapide, l’USB 2.0 s’approche de 35 Mo/s, mais c’est un peu compliqué sur un Mac de 2003.
Le dernier point, c’est que des bidouilles de l’époque permettaient en théorie d’utiliser la puce USB 2.0 avec des pilotes tiers, mais c’est une mauvaise idée. C’était instable et ça pouvait planter Mac OS X, mais surtout c’est rapidement devenu inutile. Dès qu’Apple a mis des pilotes standardisés dans Mac OS X (vers la fin de vie de Mac OS X Jaguar, a priori), il était vraiment préférable d’utiliser ceux d’Apple.
Mais pourquoi cette limite ?
Honnêtement, plus de vingt ans après, aucune idée. L’hypothèse complotiste, c’est qu’Apple voulait pousser le FireWire 800 et ne pas mettre en avant une technologie qui était performante et très nettement moins onéreuse. Même si Apple a largement pris le chemin de l’USB en 1998, c’était tout de même une technologie plutôt orientée vers les PC. L’hypothèse plus pragmatique, c’est qu’il y a soit un problème matériel que je n’ai pas détecté (possible) ou que – tout simplement – Mac OS X n’était pas prêt. L’USB 2.0 est quand même arrivé assez rapidement dans les Mac, de toute façon, dès juin 2003 dans les Power Mac G5 (le Power Mac G4 MDD FireWire 800 date de janvier 2003). La norme a ensuite été déployée assez rapidement dans le reste de la gamme (PowerBook G4, eMac G4, iMac G4, etc.).

















Je crois que mes MDD sont tous en panne mais je pense qu’il n’y a même pas besoin de flasher le firmware pour activer l’USB 2.
En effet la puce est configurable et la partie USE 2.0 est désactivable. Plusieurs façon d’y procéder:
– soit via une petite ROM à côté de la puce
– soit en allant taper dans les registres PCI de configuration du chipset
Techniquement vu ce qui est présenté je suppose qu’avec un outil de dév adéquat (il y avait un PCI prober sous classic dans les cd de dév, mais sous OS X je sais plus), il est possible de réactiver la partie USB 2 de la puce. À voir si Mac OS X est content devoir un device PCI soudainement apparaître.
Ou alors avec un petit script openFirmware stocké dans la nvram, par contre sans machine fonctionnelle sous la main je serais pas faire ça de tête.
Je verrais ce WE si j’en ai pas une qui fonctionne encore pour faire des essais
Comme la modif se fait dans le bootrom, les versions suivantes de macosX n’ont pas pu débrider l’usb ?