Skip to content

Instantly share code, notes, and snippets.

@65c22
Last active August 1, 2023 14:39
Show Gist options
  • Star 19 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 65c22/3fd7dfc8604d75e01f16c8ba8e872bd3 to your computer and use it in GitHub Desktop.
Save 65c22/3fd7dfc8604d75e01f16c8ba8e872bd3 to your computer and use it in GitHub Desktop.
Tutoriel - Installer Atmosphère sur votre Nintendo Switch

Tutoriel - Comprendre et utiliser le CFW Atmosphère sur Nintendo Switch (+bonus)

Atmosphère est un CFW (Custom FirmWare - Logiciel modifié) opensource avec un développement très active. Son nom n'a pas été choisi par hazard, effet les developpeurs ont découpés le code en plusieurs couches (comme celle de l'atmosphère), vous n'allez pas tout comprendre mais vous allez pouvoir retenir les quelques features les plus importantes pour une utilisation lambda.

Les couches d'Atmosphère

  • Fusée - le custom bootloader, c'est la première couche lors de l'amorçage du CFW, elle permet le chargement des fichiers KIPs, le chargement d'un kernel personalisé... La configuration de ce composant se situe dans le fichier atmosphere/BCT.ini

  • Exosphère - le custom secure monitor, c'est une réplimentation complète de la TrustZone du firmware de la Switch, permettant la récuperation d'une multitude d'informations pour les Homebrews par exemple.

  • Stratosphère - les custom modules, cette couche se décline en plusieurs module système:

    le loader system module (sa configuration se situe dans le fichier atmosphere/loader.ini) ce module réimplemente toutes les fonctionnalités du loader original de Nintendo en plus d'y ajouter des fonctionnalités dont l'Homebrew Loader qui se situe dans atmosphere/hbl.nsp permettant par la suite le chargement des Homebrew dans l'applet Album du système en maintenant la touche R de la console au moment de lancer l'applet (afin de pouvoir toujours utiliser Album). On y retrouve un chargement des sysmodules personalisés (que vous ajoutez vous même) dans le dossier atmosphere/titles, il s'occupe de charger un fichier exefs.nsp. En plus de ça, un support complet du patching des contenus NSO, pour résumer vous allez pouvoir rajouter par exemple les sigpatches permettant par la suite de jouer à des backups de jeux

    on retrouve un autre module système permettant de créer des rapports de crash en cas de problème et bien d'autres choses comme le process manager, le service manager, le fs.mitm ou Atmosphère s'occupe à chaque fois de réimplementer les fonctionnalités originales et en y ajoutant des fonctionnalités personalisées. Je vais pas tout vous décrire sinon on en aurrait pour la journée mais sachez que c'est Stratosphère qui rend le chargement des Homebrew, des sigpatches (si vous les utilisez), des sysmodules tiers possibles.

Et c'est tout ? Non, toutes ces fonctionnalités sont les premières à avoir débarquer sur AMS (Atmosphère) lors de sa première release officiel la 0.7.0, entre temps les développeurs ont rajoutés beaucoup de choses et ils ont prévus beaucoup de choses pour la version 1.0, pas encore sortie à ce jour.

  • Sept - c'est un composant rajouté à partir du firmware 7.0 de la Nintendo Switch, c'est un payload se situant dans le dossier sept à la racine de la carte SD. Si votre Switch est en 7.0 ou superieur, il est obligatoire de l'utiliser, il se lance après Fusée avec un jolie splash screen Sept by Atmosphère, Sept permet de résoudre le problème de dérivation des clés à partir de la 7.0, Nintendo qui s'y prend tant bien que mal pour casser les CFW.

  • Troposphère - Elle est executé dans la partie final d'AMS au niveau d'Horizon OS (l'OS de la Switch que vous avez l'habitude d'utiliser), elle est présente mais ne sert pas à grand chose pour le moment. On verra comme les devs pourront l'exploiter.

  • emuMMC - C'est un composant assez récent, implémenté par à partir de la 0.9.0, il permet de faire des emuNAND avec un système de redirection, ce n'est pas tout à fait une couche d'Atmosphère mais ça reste un composant tout de même. Vous pouvez avoir une NAND sur votre carte SD et l'executer avec l'emuMMC.

Et il existe aussi des couches qui seront rajoutés dans le futur:

  • Mesosphère - Un kernel customisé et on en sait pas plus que ça puisque c'est au point mort pour le moment

  • Thermosphère - Un support EL2 Emunand support avec hyperviseur pour faire des emuNAND, ça se présentera comme une alternative à l'emuMMC quand ça sera disponible

Voilà vous comprenez désormais mieux ce CFW loin d'être terminé mais parfaitement utilisable.

Comment lancer Atmosphère

Bon c'est bien beau tout ça mais est-ce que ma Switch est compatible, comment ça se met en place, de quoi j'ai besoin ? On va voir tout ça

Pour lancer Atmosphère, nous utilisons un payload, c'est l'essence même de cette scène de modding Switch. Le payload se présente comme un très petit fichier .BIN que vous devez injecter dans votre console pour pouvoir lancer divers choses, dans notre cas ce payload se nomme fusee-primary.bin et il permet de lancer Fusée, la première couche d'AMS et les autres suivent (il existe d'autre façon de lancer AMS, avec Hekate notamment...).

Pour pouvoir injecter un payload, il nous faut un point d'entrée, il en existe plusieurs à ce jour:

  • Fusée Gelée - c'est la GROSSE faille du modding Switch, c'est une faille materiel situé au niveau du processeur de la console (le Tegra X1), comme elle est materiel elle a un très gros avantage: Nintendo ne peut pas la patcher avec une MAJ du Firmware. Pour contrer cette faille Nintendo a commencé à produire des consoles patchés à partir de Juin 2018, vous pouvez vous rendre sur le site https://ismyswitchpatched.com/ et y saisir le numéro de série de votre console dessus afin de vérifier si elle est pachée, si c'est le cas il faudra se reporter à d'autres failles (logiciels) mais bien plus limité pour le moment.

    Comment ça s'utilise ? L'utilisation de Fusée Gelée se déroule comme ceci:

    • Mettre la console en mode RCM
    • Injecter un payload via le port USB

    C'est quoi le mode RCM ? Le mode RCM est un mode spéciale dans laquel on peut mettre la Switch, il y en a d'autres le Boot Stock quand vous allumez votre console avec le bouton POWER et que l'OS de la Switch se lance, un mode de récuperation qui s'execute en maintenant les touches POWER V- et V+ de sa console à partir duquel on peut mettre à jour le FW ou rénitialiser la console. Mais il y a un autre mode appellé RCM, qui est normalement utilisé par les équipes de Nintendo mais dans lequel les hackers ont pu trouvé une faille permettant d'injecter n'importe quoi à partir d'un appareil externe (les fameux payloads).

    La manipulation pour mettre sa console en mode RCM est assez spéciale, il faut éteindre sa console, faire court-circuiter deux PINs dans le rail du Joy-Con droit et allumer la console en maintenant la touche V+ enfoncée. C'est la partie du court-circuit qui est assez spéciale, il y a plusieurs façon de faire: le trombonne (pas pratique), le jig RCM (petit outil en plastique très pratique), modifier son JoyCon Droit (irreversible), le pucage (couteux et on doit démonter la console etc.). Je vous laisse choisir mais le jig RCM reste le plus simple, le moins couteux et on ne modifie pas la console.

    A quoi ressemble le mode RCM ? Le mode RCM se décrit par un écran éteint, vous save que vous êtes en RCM quand il ne passe rien sur la Switch.

    Ensuite il faut injecter un payload à partir d'un ordinateur, d'un téléphone ou d'un dongle (très pratique) branché à votre Switch, après injection l'ordinateur n'est plus nécessaire jusqu'à que vous éteignez votre console.

    Il vous faut pour résumer: une Switch (non patché), un moyen de rentrer en RCM, un cable USB-C, un appareil pour réaliser l'injection.

    Les logiciels à installer sur vos appareils pour faire l'injection:

    • Windows: TegraRCMSmash (ligne de commande), TegraRCMGui (graphique)
    • Linux: fusee-launcher (ligne de commande et c'est d'ailleurs l'implémentation originale de la faille).
    • macOS: fusee-launcher
    • Android: Rekado

    Ou vous pouvez utiliser un dongle comme le RCMLoader One

  • Deja vu: Rien de concret pour l'instant mais ça devrait être exploitable jusqu'à la 7.0.1 (la 8.0 patche completement Deja Vu mais si vous n'êtes pas passer à la 8.1, il y a encore une possibilité de downgrade en 7.0.1)

  • Nereba: Une faille warmboot qui s'execute pendant que votre console est allumé (Fusée Gelée étant une faille Coldboot donc démarrage à froid), elle permettra pour les personnes possédant encore des consoles avec un FW 1.0 d'executer des payloads fusée rendant l'utilisation des CFW possibles, à partir de là vous pouvez mettre en place un emunand que vous mettrez à jour vers la dernière version du FW pour pouvoir jouer aux derniers jeux. Nereba ne resout pas le problème des consoles patchés car aucune console patchés n'a été vendu en 1.0.

  • Caffeine: Exploit très interessant permettant au console sur tournant sur les firmware 2.0.0-3.0.0 et 4.0.0-4.1.0 de lancer des payloads fusée. Elle peut rendre possible le hack des console patchés comme ces dernières peuvent exister en 4.1.0.

Toutes les failles logiciels que j'ai cité plus haut peuvent être aisement utilisé avec PegaScape https://pegascape.sdsetup.com/

Voilà pour résumer les principaux exploits.

Télécharger Atmosphère

Atmosphère est un CFW opensource que vous pouvez télécharger librement sur le Github du projet (https://github.com/Atmosphere-NX/Atmosphere/releases), il est par défaut fournit avec le payload fusee-primary.bin pour l'execution, l'Homebrew Launcher et l'Homebrew Menu.

Voici la structure une fois décompressée:

  • atmosphere - Ce dossier contient le CFW

  • atmosphere/BCT.ini - Ce fichier permet de configurer les composants internes à Fusée, Exosphère et Stratosphère, vous pouvez par exemple activé les patches NOGC permettant de désactiver le lecteur de cartouche de la console (depend situation).

  • atmosphere/hbl.nsp - C'est l'Homebrew Launcher pour pouvoir lancer les Homebrew

  • atmosphere/loader.ini - A partir de ce fichier vous pouvez par exemple modifier la touche pour aller dans l'HBMenu à partir de l'applet Album.

  • atmosphere/system_settings.ini - de la configuration pour AMS

  • sept - Contient Sept, utile seulement si vous utilisez un FW en 7.0+

  • hbmenu.nro - C'est un homebrew (extension .NRO) qui fait office de menu pour les Homebrew

  • switch - Ce dossier contiendra vos Homebrew, c'est dans ce dossier que l'HBMenu va par défaut.

Je vais pas vous expliquer tout le reste (sinon c'est trop long).

Compiler Atmosphère

Cette partie est reservée aux utilisateurs experimentés souhaitant pouvoir utiliser un build plus récent d'Atmosphère, donc il faudra passer par la casse self-build.

Pré-réquis:

  • Un ordinateur sous macOS ou GNU/Linux (Windows devrait fonctionner avec les MSYS et compagnie mais j'ai jamais utilisé donc je saurrais pas vous dire)

  • Devkitpro avec la partie A64 surtout, les Switch Tools, libnx (je conseille de le compiler vous même celui-ci).

  • Git

a) On récupere le code source d'Atmosphère et les sous-modules

git clone https://github.com/Atmosphere-NX/Atmosphere
cd Atmosphere
git submodule update --init --recursive

b) On définie la variable d'environnement du path de devkitpro

export DEVKITPRO=/path/to/devkitpro

Vous pouvez définie la variable d'environnement à d'autre endroit comme au début du Makefile, dans /etc/environment ou dans votre bashrc/zshrc.

c) On lance la compilation

make

d) On genère le build

make dist

e) On nettoie

make clean

Vous avez un dossier out dans lequel se trouve:

  • votre build nommée, dans le nom vous avez le commit du build
  • le payload fusee-primary.bin

Vous pouvez ajouter l'Homebrew Launcher (https://github.com/switchbrew/nx-hbloader) hbl.nsp à mettre dans le dossier atmosphere et l'Homebrew Menu (https://github.com/switchbrew/nx-hbmenu) hbmenu.nro à mettre à la racine dans l'archive.

Installer Atmosphère

Pour pouvoir utiliser tout ça, vous mettez tout le contenu de l'archive à la racine d'une carte SD formatté en FAT32 ou en exFAT (si vous avez installé le driver exFAT) et vous lancer AMS en y injectant le payload fusee-primary.bin à l'aide d'une des méthodes cité plus haut.

Vous allez voir les différents écrans d'AMS se succéder et s'y tout se passe bien vous arrivé sur Horizon OS (le nom de l'OS de la Switch rappellez-vous). Et voilà !

Alors qu'est ce qui est changé ? Premièrement, en vous rendant dans les Paramètres de votre console puis sur l'onglet des informations une nouvelle information apparait, la version d'Atmosphère, par exemple: 8.0.1 (AMS 0.9.1). Et la grosse nouvautée, c'est l'Homebrew Menu, maintenez la touche R (modifiable) de votre console enfoncé et lancer l'application Album, au lieu d'arriver dans l'application Album de base vous arrivez dans l'Homebrew Menu ou on ne voit que un seul Homebrew "Reboot to payload" qui permet juste de redemarrer votre console.

En parlent de redemarrage, sachez que l'option "Redemarrer" de l'OS de la Switch est modifié par AMS pour redemarrer directement sur le payload. Vous pouvez modifier ce paramètre pour redemarrer en OFW (Official Firmware) ou en RCM pour injecter d'autre payload.

Les Homebrew indispensables

Je vous explique plus ce qu'est un Homebrew, maintenant que vous avez Atmosphère vous êtes en mesure de les utiliser. Les Homebrew sur Switch sont au format .NRO et sont placés dans le dossier switch/ Je vous fait une liste des Homebrew indispensables:

  • Checkpoint - Il permet d'exporter vos sauvegarder sur votre SD puis de les restaurer, l'interface est très simple d'utilisation.

  • ChoiDuJourNX - Cet utilitaire permet de mettre à jour sa console (et même faire les downgrade si votre nombre d'efuses le permet) à partir de packages firmware que vous pouvez télécharger ou faire vous même, le tout en OFFLINE.

  • ftpd - Permet de lancer un serveur FTP sur sa console pour faire des transferts de fichier via le reseau.

  • nxdumptool - Outil très complet pour le dump de cartouche de jeu.

  • Goldleaf - C'est mon Title Installer préféré avec une interface très travaillée, il permet donc d'installer des jeux, des updates, des DLC...

  • NX-Shell - Explorateur de fichier, on peut aussi naviguer dans les partitions de la NAND de la console, on peut supprimer des fichiers...

  • nxmtp - Aucune MAJ, code non opensource mais permet de brancher sa Switch à son ordinateur pour transferer des fichiers avec le protocole MTP. A voir dans le futur pour le développement.

@Aube33
Copy link

Aube33 commented Dec 18, 2020

Il y'a une faute vers cette ligne :

A quoi ressemble le mode RCM ? Le mode RCM se décrit par un écran éteint, vous savez que vous êtes en RCM quand il ne passe rien sur la Switch.

@alinovitch
Copy link

peut on installer des emulateur comme snes 9X

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment