Atmosphère: Unterschied zwischen den Versionen

Aus WiiDatabase Wiki
Zur Navigation springenZur Suche springen
K (Schützte „Atmosphère“: Seite mit hohem Traffic ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt)))
 
(106 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 15: Zeile 15:


Atmosphère v0.8.5 fügte Cheat-Support hinzu.<ref>[https://wiidatabase.de/atmosphere-v0-8-5-mit-cheat-support/ Atmosphère v0.8.5 mit Cheat-Support]</ref> Seit v0.9.0 wird ein [[#EmuMMC|EmuMMC]] unterstützt.<ref>[https://wiidatabase.de/atmosphere-v0-9-0-mit-experimentellem-emunand/ Atmosphère v0.9.0 mit experimentellem EmuNAND]</ref>.
Atmosphère v0.8.5 fügte Cheat-Support hinzu.<ref>[https://wiidatabase.de/atmosphere-v0-8-5-mit-cheat-support/ Atmosphère v0.8.5 mit Cheat-Support]</ref> Seit v0.9.0 wird ein [[#EmuMMC|EmuMMC]] unterstützt.<ref>[https://wiidatabase.de/atmosphere-v0-9-0-mit-experimentellem-emunand/ Atmosphère v0.9.0 mit experimentellem EmuNAND]</ref>.
Seit der v0.17.0 wird [[Mariko]] offiziell unterstützt.<ref>[https://wiidatabase.de/atmosphere-v0-17-0-unterstuetzt-mariko Atmosphère v0.17.0 unterstützt Mariko]</ref>
Eine Vorabversion der 1.0.0 erschien am 07. September 2021.<ref>[https://wiidatabase.de/atmosphere-v1-0-0-pre-release/ Atmosphère v1.0.0 (Pre-Release)]</ref> Die finale 1.0.0 erschien am 09. September 2021.


== Komponenten ==
== Komponenten ==
Atmosphère zielt darauf ab, fast alle System-Komponenten der Switch zu reimplementieren und dabei zu erweitern. Sie heißen dabei:
Atmosphère zielt darauf ab, alle System-Komponenten der Switch zu reimplementieren und dabei zu erweitern.
* '''Fusée''': Bootloader, verifiziert und startet Exosphère und Package2 (Kernel/FIRM-Systemmodule) und patcht diese, falls nötig.
 
** '''Sept''': Payload zur Schlüsselableitung auf allen Firmware-Versionen >= [[Nintendo-Switch-Firmware 7.0.0#Technische Informationen|7.0.0]]. Ein Teil von sept ist signiert/verschlüsselt, weshalb es ohne Keys nicht möglich ist, sept selbstständig zu bauen.
=== Hauptkomponenten ===
* {{Anker|Fusee}}'''Fusée''': Bootloader, verifiziert und startet Exosphère und Package2 (Kernel/FIRM-Systemmodule) und patcht diese, falls nötig.
* '''Exosphère''': TrustZone mit eigenem Secure Monitor.
* '''Exosphère''': TrustZone mit eigenem Secure Monitor.
* '''Thermosphère''': EmuMMC, lädt den MMC von der SD-Karte um so eine getrennte Umgebung für bspw. Homebrew zu schaffen.
* '''Thermosphère''': EmuMMC, lädt den MMC von der SD-Karte um so eine getrennte Umgebung für bspw. Homebrew zu schaffen.
* {{Anker|Stratosphere}}'''Stratosphère''': Eigene Systemmodule mit neuen Features und zur Erweiterung bestehender.
* {{Anker|Stratosphere}}'''Stratosphère''': Eigene Systemmodule mit neuen Features und zur Erweiterung bestehender.
** '''ams_mitm''': Neues Systemmodul zum on-the-fly Patchen von Dateien und Titeln.
*** '''bpc_mitm''': Ermöglicht das [[#Reboot-Payload|Neustarten in einen Payload]] (bspw. wieder Atmosphère) und das vollständige Herunterfahren, wenn AutoRCM aktiviert ist (siehe [[AutoRCM#Herunterfahren]]). Überschreibt den [https://switchbrew.org/wiki/PCV_services#bpc bpc PCV-Service] von Nintendo.
*** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/fs_mitm.md fs_mitm]''': Kann Dateien von Titeln mit denen auf der SD-Karte ersetzen, auch bekannt als "'''LayeredFS'''".
*** {{Anker|hid_mitm}}'''hid_mitm''': Mit der [[Nintendo-Switch-Firmware 9.0.0|Firmware 9.0.0]] wurden die HID-Komponenten für Controller so sehr geändert, dass libnx (die Bibliothek zum Bauen von Switch-Homebrews) keine Controller-Eingaben mehr erkennt. Dieses Problem wurde zwar in neueren libnx-Versionen behoben, allerdings müssen Homebrews mit der neuen libnx-Version neu gebaut werden. Da nicht jede Homebrew sofort aktualisiert wird/werden kann, wurde als Übergang ein temporäres Modul eingeführt, welches das Problem behebt.<ref>[https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.9.4 Atmosphère v0.9.4]</ref> Da es somit nicht mehr möglich ist, das HID-Modul selbst zu überschreiben, wird dieser Workaround in Zukunft entfernt. Mit Atmosphère v0.10.2 wurde es per Standard deaktiviert.<ref>[https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.10.2 Atmosphère v0.10.2]</ref> Siehe auch [[#enable_deprecated_hid_mitm|enable_deprecated_hid_mitm]]. Sollte es in Zukunft entfernt werden, wird SciresM aber einen separaten Download anbieten.<ref>https://arch.b4k.co/vg/thread/276990665/#277109730 "If it's ever removed (and I don't actually have plans to do so, I just wanted to explicitly reserve that right), I will publish a hid-compat-mitm sysmodule on my personal GitHub that can be used as a standalone.
Don't worry, I don't want to leave people without an option. It just kinda sucks that people not using it are paying memory costs equivalent to the whole sm sysmodule."</ref>
*** '''ns_mitm''': Ermöglicht die Verwendung von Web-Applets im Homebrew Menu, wenn eine Anwendung überschrieben wird, da diese erst prüfen, ob es HTML-Inhalte in der Anwendung gibt.
*** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/set_mitm.md set_mitm]''': Verändert die Anzeige der Systemversion ([https://switchbrew.org/wiki/Settings_services#GetFirmwareVersion GetFirmwareVersion]) ([[:Datei:Atmosphere Systemversion.jpg|siehe Bild]]) und liest weitere Einstellungen aus einer INI-Datei. Dabei wird der [https://switchbrew.org/wiki/Settings_services System-Settings-Service] abgefangen.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/boot.md boot]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/Boot boot]"; initialisiert die Hardware und startet das System.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/boot.md boot2]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/Boot2 boot2]"; lädt weitere Prozesse.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/creport.md creport]''': Generiert Absturzberichte auf der SD-Karte und verhindert das Senden dieser an Nintendo
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/cheats.md dmnt]''': Cheat-Code-Support, inklusive Kompatibilität zu [[SX OS|Gateshark]]. "dmnt" steht dabei für "Debug Monitor".
** '''eclct.stub''': Deaktiviert weitere [https://switchbrew.org/wiki/System_Settings#eclct Telemetrie-Dienste] von Nintendo.
** '''[[#erpt|erpt]]''': Reimplementiert Nintendos [https://switchbrew.org/wiki/Error_Upload_services Error Report Service] und verhindert das Anlegen von Crash Reports im MMC
** '''[[#fatal|fatal]]''': Reimplementiert Nintendos [https://switchbrew.org/wiki/Fatal_services fatal] und zeigt einen umfangreichen Fehlerbildschirm bei einem fatalen (deshalb der Name) Absturz an. Auch kann die Konsole mit den Lautstärketasten direkt neu gestartet werden.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/loader.md loader]''': Reimplementiert Nintendos "[https://switchbrew.org/wiki/Loader_services loader]" und ermöglicht das Ersetzen von Dateien im ExeFS, das Patchen von NSOs, sowie [[#Button Overrides|Button Overrides]] (bspw.: "R" gedrückt halten, während ein Spiel startet, startet das Homebrew Menu mit vollem RAM-Zugriff).
** '''ncm''': Reimplementierung von [https://switchbrew.org/wiki/NCM_services Nintendos Content Manager].
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/pm.md pm]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/Process_Manager_services Process Manager]", gibt u.a. mehr Speicher für Systemmodule frei.
** '''ro''': Reimplementierung von Nintendos [https://switchbrew.org/wiki/RO_services RO-Services].
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/modules/sm.md sm]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/Services_API Service Manager]". Dieser ist für Entwickler interessant, da so u.a. ein eigener MitM-Service registriert werden kann. Patcht per Standard auch "smhax"<ref>[https://switchbrew.org/wiki/Switch_System_Flaws#FIRM-package_System_Modules Switch System Flaws#FIRM-package System Modules] unter "Service access control bypass"</ref><ref>[https://wiidatabase.de/switch-firmware-3-0-1-fixt-grossen-bug-update-nicht-empfohlen/ Switch-Firmware 3.0.1 fixt "großen Bug" – Update nicht empfohlen]</ref> auf der Firmware < [[Nintendo-Switch-Firmware 3.0.1|3.0.1]].
** '''spl''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/SPL_services Secure Platform Services]".
* '''Mesosphère''': Reimplementierung von Nintendos Kernel.
* '''Mesosphère''': Reimplementierung von Nintendos Kernel.
* '''Troposphère''': HorizonOS-Patches für Applikationen. Dies ist noch nicht in Atmosphère implementiert.<ref>https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/troposphere.md</ref>
* '''Troposphère''': HorizonOS-Patches für Applikationen. Dies ist noch nicht in Atmosphère implementiert.<ref>https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/troposphere.md</ref>
==== Systemmodule ====
{| class="wikitable" border="1" width="100%"
|-
! Name
! Beschreibung
! Reimplementiert
! Erweiterungen/Änderungen
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ams_mitm.md ams_mitm]'''
| Neues Systemmodul zum on-the-fly Patchen von Dateien und Titeln
|
|
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/boot.md boot]'''
| Initialisiert die Hardware und startet das System.
| [https://switchbrew.org/wiki/Boot boot]
| Atmosphère zeigt seinen eigenen schwarz/weißen Bootscreen und Akku-Icons an.
|-
| {{Anker|boot2}}'''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/boot2.md boot2]'''
| Lädt alle weiteren Module nach dem Start.
| [https://switchbrew.org/wiki/Boot2 boot2]
| Mithilfe von [[#Flags|Flags]] lassen sich eigene Systemmodule direkt nach dem Start ausführen.
|-
| {{Anker|creport}}'''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/creport.md creport]'''
| Dient der Verwaltung von Absturzberichten.
| [https://switchbrew.org/wiki/Creport creport]
| Generiert Absturzberichte auf der SD-Karte und verhindert das Senden dieser an Nintendo. Außerdem wird bei einem Absturz ein Screenshot erstellt (nur auf >= 10.0.0).
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/dmnt.md dmnt]'''
| Stellt einen Debug-Monitor zur Verfügung. "dmnt" steht für "Debug Monitor".
| [https://switchbrew.org/wiki/Debug_Monitor_services dmnt]
| Cheat-Code-Support, inklusive Kompatibilität zu [[SX OS|Gateshark]].
|-
| {{Anker|eclct_stub}}'''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/eclct.stub.md eclct.stub]'''
| Sammelt Fehlerberichte.
| [https://switchbrew.org/wiki/System_Settings#eclct eclct]
| Diese Reimplementation ist ein Stub und verhindert das Senden weiterer Telemetrie-Daten an Nintendo.
|-
| [[#erpt|erpt]]
| Verwaltet Fehlerberichte.
| [https://switchbrew.org/wiki/Error_Report_services erpt]
| Verhindert das Anlegen von berichten im MMC und leitet diese stattdessen auf die SD-Karte weiter.
|-
| [[#fatal|fatal]]
| Verwaltet Absturzberichte.
| [https://switchbrew.org/wiki/Fatal_services fatal]
| Zeigt einen umfangreichen Fehlerbildschirm bei einem fatalen (deshalb der Name) Absturz an. Auch kann die Konsole mit den Lautstärketasten direkt neu gestartet werden.
|-
| [[#htc|htc]]
| Host-Ziel-Verbindung bspw. zum Remote-Zugriff auf die SD-Karte.
| [https://switchbrew.org/wiki/TMA_services htc]
|
|-
| {{Anker|jpegdec}}'''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/jpegdec.md jpegdec]'''
| Dient der Dekodierung von JPEGs in Verbindung mit den [https://switchbrew.org/wiki/Capture_services Capture-Services]
| [https://switchbrew.org/wiki/Jpegdec_services jpegdec]
| Erlaubt zwei Sessions anstatt einer, damit Homebrews JPEGs per Software parallel zum OS dekodieren können.
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/loader.md loader]'''
| Erstellt Prozesse von ausführbaren NSOs und kontrolliert ihre Zugriffe
| [https://switchbrew.org/wiki/Loader_services loader]
| Ermöglicht das [[#ExeFS|Ersetzen von Dateien im ExeFS]], das [[#NSO-Patches|Patchen von NSOs]], sowie [[#Overrides|Button Overrides]] (bspw.: "R" gedrückt halten, während ein Spiel startet, startet das Homebrew Menu mit vollem RAM-Zugriff).
|-
| lm
| Stellt Logging-Dienste für einige Anwendungen und Spiele bereit.
| [https://switchbrew.org/wiki/Log_services lm]
| Logging auf die SD-Karte. Der LogManager ist aufgrund des erhöhten Speicherbedarfs standardmäßig deaktiviert, kann aber [[#enable_log_manager|aktiviert werden]].
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ncm.md ncm]'''
| Dient der Verwaltung von Inhalten (bspw. NAND-Speicherständen). "ncm" steht für "Nintendo Content Manager".
| [https://switchbrew.org/wiki/NCM_services ncm]
|
|-
| {{Anker|pgl}}[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/pgl.md pgl]
| Startet Programme; nur ab [[Nintendo-Switch-Firmware 10.0.0|10.0.0]] vorhanden. "pgl" steht für "Program Launcher".
| [https://switchbrew.org/wiki/PGL_services pgl]
| Atmosphères Reimplementation ist ebenfalls nur ab 10.0.0 verfügbar und wurde (noch) nicht zurückportiert.
|-
| [https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/pm.md pm]
| Verwaltet Ressourcenlimits und überwacht laufende Prozesse. "pm" steht für "Process Manager".
| [https://switchbrew.org/wiki/Process_Manager_services pm]
| Der APPLET Speicher-Pool wurde um 24 MiB gesenkt und gibt diesem somit dem SYSTEM-Pool zurück. Damit lassen sich mehr Custom-Systemmodule ausführen.
|-
| {{Anker|ro}}'''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ro.md ro]'''
| Lädt dynamische Bibliotheken und wurde mit der [[Nintendo-Switch-Firmware 3.0.0|Firmware 3.0.0]] eingeführt.
| [https://switchbrew.org/wiki/RO_services ro]
| Portiert die Funktionalitäten auf < 3.0.0 zurück, bei denen noch "loader" zuständig war. Ermöglicht außerdem [[#NRO-Patches|NRO-Patches]].
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/sm.md sm]'''
| Verwaltet Dienste. "sm" steht für "Service Manager".
| [https://switchbrew.org/wiki/Services_API sm]
| Dieser ist für Entwickler interessant, da so u.a. ein eigener MitM-Service registriert werden kann. Patcht standardmäßig auch "smhax"<ref>[https://switchbrew.org/wiki/Switch_System_Flaws#FIRM-package_System_Modules Switch System Flaws#FIRM-package System Modules] unter "Service access control bypass"</ref><ref>[https://wiidatabase.de/switch-firmware-3-0-1-fixt-grossen-bug-update-nicht-empfohlen/ Switch-Firmware 3.0.1 fixt "großen Bug" – Update nicht empfohlen]</ref> auf der Firmware < [[Nintendo-Switch-Firmware 3.0.1|3.0.1]].
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/spl.md spl]'''
| Ist u.a. für kryptographische Operationen notwendig. "spl" steht für "Secure Platform".
| [https://switchbrew.org/wiki/SPL_services spl]
|}
===== ams_mitm =====
Das Systemmodul '''ams_mitm''' fügt einige neue Funktionen hinzu, die in mehrere Teile aufgegliedert sind.
{| class="wikitable" border="1" width="100%"
|-
! Name
! Beschreibung
|-
| '''bpc_mitm'''
| Ermöglicht das [[#Reboot-Payload|Neustarten in einen Payload]] (bspw. wieder Atmosphère) und das vollständige Herunterfahren, wenn AutoRCM aktiviert ist (siehe [[AutoRCM#Herunterfahren]]). Überschreibt den [https://switchbrew.org/wiki/PCV_services#bpc bpc PCV-Service] von Nintendo.
|-
| '''dns_mitm'''
| Manipuliert DNS-Abfragen und kann frei konfiguriert werden (siehe [[#dns_mitm]]).
|-
| '''fs_mitm'''
| Kann Dateien von Titeln mit denen auf der SD-Karte ersetzen, auch bekannt als "'''LayeredFS'''".
|-
| '''ns_mitm'''
| Ermöglicht die Verwendung von Web-Applets im Homebrew Menu, wenn eine Anwendung überschrieben wird, da diese erst prüfen, ob es HTML-Inhalte in der Anwendung gibt.
|-
| '''set_mitm'''
| Verändert die Anzeige der Systemversion ([https://switchbrew.org/wiki/Settings_services#GetFirmwareVersion GetFirmwareVersion]) ([[:Datei:Atmosphere Systemversion.jpg|siehe Bild]]) und liest weitere Einstellungen aus einer INI-Datei. Dabei wird der [https://switchbrew.org/wiki/Settings_services System-Settings-Service] abgefangen.
|-
|}


=== Ordnerstruktur ===
=== Ordnerstruktur ===
Die Inhalte in ''(kursiven Klammern)'' dienen der Erklärung
Die Inhalte in ''(kursiven Klammern)'' dienen der Erklärung
{{Pre|SD-Karte
{{Pre|SD-Karte
&#124;  fusee-primary.bin ''(Payload, der an die Switch gesendet werden muss, um den Bootprozess einzuleiten)''
&#124;  fusee.bin ''(Payload, der an die Switch gesendet werden muss, um den Bootprozess einzuleiten, separater Download)''
&#124;  hbmenu.nro  ''(Homebrew Menu)''
&#124;  hbmenu.nro  ''(Homebrew Menu)''
&#124;
&#124;
+---atmosphere
+---atmosphere
&#124;  &#124;  fusee-mtc.bin
&#124;  &#124;  fusee-secondary.bin ''(Signierter/verschlüsselter Fusée-Teil)''
&#124;  &#124;  hbl.nsp ''(Homebrew Loader, der das Homebrew Menü lädt)''
&#124;  &#124;  hbl.nsp ''(Homebrew Loader, der das Homebrew Menü lädt)''
&#124;  &#124;  reboot_payload.bin ''([[#Reboot-Payload|Reboot-Payload]], Kopie von fusee-primary, wird bei einem Neustart ausgeführt)
&#124;  &#124;  package3 ''(Signierter/verschlüsselter Fusée-Teil)''
&#124;  &#124;  reboot_payload.bin ''([[#Reboot-Payload|Reboot-Payload]], Kopie von fusee.bin, wird bei einem Neustart ausgeführt)
&#124;  &#124;  stratosphere.romfs ''([[#Systemmodule|Atmosphères Systemmodule]], waren früher im "contents"-Ordner)
&#124;  &#124;
&#124;  &#124;
&#124;  +---config ''(Konfigurationsdateien)''
&#124;  +---config ''(Konfigurationsdateien)''
&#124;  &#124;      BCT.ini  ''([[#BCT.ini|Einstellungen für Exosphère, Stratosphère und fusee-primary]])''
&#124;  &#124;
&#124;  &#124;
&#124;  +---config_templates ''(Konfigurationstemplates, müssen in "config" kopiert werden)'''
&#124;  +---config_templates ''(Konfigurationstemplates)''
&#124;  &#124;      override_config.ini ''([[#Button Overrides|Button-Overrides]])''
&#124;  &#124;      exosphere.ini  ''([[#exosphere.ini|Einstellungen für Exosphère]])''
&#124;  &#124;      override_config.ini ''([[#Overrides|Overrides]])''
&#124;  &#124;      stratosphere.ini  ''([[#stratosphere.ini|Einstellungen für Stratosphère und fusee-primary]])''
&#124;  &#124;      system_settings.ini ''([[#System Settings|Atmosphère-Einstellungen]])''
&#124;  &#124;      system_settings.ini ''([[#System Settings|Atmosphère-Einstellungen]])''
&#124;  &#124;
&#124;  &#124;
&#124;  +---contents ''(Ordner für fs_mitm, ersetzt Inhalte in Anwendungen/Modulen, Ordnerinhalte nachfolgend gekürzt)''
&#124;  +---flags ''([[#Flags|Flags]])''
&#124;  &#124;  +---010000000000000D ''([[#Cheats|dmnt]])''
&#124;  &#124;  &#124;
&#124;  &#124;  +---010000000000002B ''([[#erpt|erpt]])''
&#124;  &#124;  &#124;
&#124;  &#124;  +---0100000000000008 ''(boot2)''
&#124;  &#124;  &#124;
&#124;  &#124;  +---0100000000000032 ''(eclct.stub)''
&#124;  &#124;  &#124;
&#124;  &#124;  +---0100000000000034 ''([[#fatal|fatal]])''
&#124;  &#124;  &#124;
&#124;  &#124;  +---0100000000000036 ''(creport)''
&#124;  &#124;  &#124;
&#124;  &#124;  \---0100000000000037 ''(ro)''
&#124;  &#124;
&#124;  &#124;
&#124;  +---fatal_errors ''(Fehlerreports von fusee-primary)''
&#124;  +---fatal_errors ''(Fehlerreports von fusee-primary)''
&#124;  +---hbl_html ''(Zum Starten von Web-Applets)''
&#124;  +---hbl_html ''(Zum Starten von Web-Applets)''
&#124;  &#124;
&#124;  &#124;
&#124;  \---kip_patches ''([[#KIP-Patches|KIP-Patches]])''
&#124;  \---kip_patches ''([[#KIP-Patches|KIP-Patches]], nicht mehr unterstützt)''
&#124;
+---sept ''(sept)''
&#124;
&#124;
\---switch ''(Ordner für Homebrews)''
\---switch ''(Ordner für Homebrews)''
        daybreak.nro ([[#Daybreak|Daybreak]]-Applikation zur Installation von System-Updates)
         reboot_to_payload.nro ''(Startet /atmosphere/reboot_payload.bin)''
         reboot_to_payload.nro ''(Startet /atmosphere/reboot_payload.bin)''
}}
}}


== Installation ==
== Installation ==
Um Atmosphère zu "installieren" muss lediglich die Release-ZIP auf die SD-Karte entpackt werden. Für die meisten Nutzer werden auch noch die [https://wiidatabase.de/switch-downloads/hacks/signatur-patches/ Signatur-Patches] empfohlen. Die ''fusee_primary.bin'' muss anschließend gestartet werden, bspw. über [https://wiidatabase.de/switch-downloads/exploits/fusee-gelee/ Fusée Gelée].
Um Atmosphère zu "installieren" muss lediglich die Release-ZIP auf die SD-Karte entpackt werden. Die ''fusee.bin'' muss anschließend gestartet werden, bspw. über [https://wiidatabase.de/switch-downloads/exploits/fusee-gelee/ Fusée Gelée] oder (auf [[Mariko|Mariko-Geräten]]) per Modchip.


== Features ==
== Features ==
Zeile 104: Zeile 198:
Letztere Möglichkeit ist nicht empfohlen, da das Homebrew Menu sonst im "Applet-Modus" gestartet wird und nicht den vollen Arbeitsspeicher zur Verfügung stehen hat. Allerdings ist es somit möglich, Homebrews aufzurufen, während ein Spiel läuft (bspw. [https://wiidatabase.de/switch-downloads/switch-tools/screen-nx/ screen-nx] um Screenshots hochzuladen oder [https://wiidatabase.de/switch-downloads/switch-tools/edizon/ EdiZon] um Cheats zu erstellen).
Letztere Möglichkeit ist nicht empfohlen, da das Homebrew Menu sonst im "Applet-Modus" gestartet wird und nicht den vollen Arbeitsspeicher zur Verfügung stehen hat. Allerdings ist es somit möglich, Homebrews aufzurufen, während ein Spiel läuft (bspw. [https://wiidatabase.de/switch-downloads/switch-tools/screen-nx/ screen-nx] um Screenshots hochzuladen oder [https://wiidatabase.de/switch-downloads/switch-tools/edizon/ EdiZon] um Cheats zu erstellen).


Die Tasten-Kombination lässt sich in der "<code>/atmosphere/config/override_config.ini</code>" festlegen, siehe [[#Button Overrides|Button Overrides]].
Die Tasten-Kombination lässt sich in der "<code>/atmosphere/config/override_config.ini</code>" festlegen, siehe [[#Overrides|Button Overrides]].


=== Button Overrides ===
=== Overrides ===
Mithilfe der Button Overrides (Knopfüberschreibungen) ist es möglich, das Überschreibverhalten des Homebrew Menus zu konfigurieren. So kann bspw. eingestellt werden, dass das Homebrew Menu gestartet werden soll, wenn "Y" gedrückt wird, während das Album gestartet wird.
Mithilfe der Overrides ist es möglich, das Verhalten für Atmosphère für bestimmte Anwendungen zu ändern. Mit den Button Overrides (Knopfüberschreibungen) kann bspw. das Überschreibverhalten des Homebrew Menus konfiguriert werden. So kann bspw. eingestellt werden, dass das Homebrew Menu gestartet werden soll, wenn "Y" gedrückt wird, während das Album gestartet wird.


Mithilfe der [https://wiidatabase.de/switch-downloads/switch-tools/kosmos-toolbox/ Kosmos Toolbox] lassen sich die Button Overrides grafisch direkt auf der Konsole bearbeiten.
Mit der [https://wiidatabase.de/switch-downloads/switch-tools/hekate-toolbox/ Hekate Toolbox] lassen sich die Button Overrides grafisch direkt auf der Konsole bearbeiten.


Zuerst muss die "<code>/atmosphere/config_templates/override_config.ini</code>" nach "<code>/atmosphere/config/</code>" kopiert und mit einem Texteditor geöffnet werden. Die Datei ist folgendermaßen aufgebaut:
Zuerst muss die "<code>/atmosphere/config_templates/override_config.ini</code>" nach "<code>/atmosphere/config/</code>" kopiert und mit einem Texteditor geöffnet werden. Die Datei ist folgendermaßen aufgebaut:
Zeile 125: Zeile 219:
| {{TitleID}}
| {{TitleID}}
| <code>010000000000100D</code>
| <code>010000000000100D</code>
| Legt einen Titel fest, für den die nachfolgende Tasten-Konfiguration gelten soll (in dem Beispiel das Album), um das Homebrew Menu zu starten.
| Legt einen Titel fest, für den die nachfolgende Konfiguration gelten soll (in dem Beispiel das Album).
|-
|-
| <code>override_key_0</code>
| <code>override_key_0</code>
Zeile 131: Zeile 225:
| <code>R</code>
| <code>R</code>
| Knopf, der gedrückt gehalten (oder nicht gehalten) werden soll, um das Homebrew Menu zu starten. In dem Beispiel muss "R" gedrückt gehalten werden, während das Album aufgerufen wird.
| Knopf, der gedrückt gehalten (oder nicht gehalten) werden soll, um das Homebrew Menu zu starten. In dem Beispiel muss "R" gedrückt gehalten werden, während das Album aufgerufen wird.
|-
| <code>override_address_space_0</code>
| <code>39_bit</code>, <code>36_bit</code> oder <code>32_bit</code>
| <code>39_bit</code>
|  Adressraum für den Homebrew Launcher für diesen Titel.<br>
'''Standard:''' <code>39_bit</code>
|-
|-
| <code>program_id_1</code>
| <code>program_id_1</code>
| {{TitleID}}
| {{TitleID}}
| <code>0100E95004038000</code>
| <code>0100E95004038000</code>
| Legt einen weiteren Titel fest, für den die nachfolgende Tasten-Konfiguration gelten soll (in dem Beispiel Xenoblade Chronicles 2) um das Homebrew Menu zu starten.
| Legt einen weiteren Titel fest, für den die nachfolgende Konfiguration gelten soll (in dem Beispiel Xenoblade Chronicles 2).
|-
|-
| <code>override_key_1</code>
| <code>override_key_1</code>
Zeile 142: Zeile 242:
| Knopf, der gedrückt gehalten (oder nicht gehalten) werden soll, um das Homebrew Menu zu starten. In dem Beispiel darf "ZL" '''nicht''' gedrückt gehalten werden, während Xenoblade Chronicles 2 aufgerufen wird. Wird die Taste dennoch gehalten, wird das Spiel aufgerufen.
| Knopf, der gedrückt gehalten (oder nicht gehalten) werden soll, um das Homebrew Menu zu starten. In dem Beispiel darf "ZL" '''nicht''' gedrückt gehalten werden, während Xenoblade Chronicles 2 aufgerufen wird. Wird die Taste dennoch gehalten, wird das Spiel aufgerufen.
|-
|-
| colspan="4" | Bis zu acht verschiedene Konfigurationen werden unterstützt (<code>program_id_0</code> bis <code>program_id_7</code> bzw. <code>override_key_0</code> bis <code>override_key_7</code>). Wenn "<code>program_id_0</code>" nicht gesetzt ist, sondern nur "<code>override_key_0</code>" bezieht sich die Konfiguration aufs Album. "<code>_0</code>" kann auch weggelassen werden.
| <code>override_address_space_1</code>
| Siehe oben
| <code>39_bit</code>
|  Siehe oben
|-
| colspan="4" | Bis zu acht verschiedene Konfigurationen werden unterstützt (<code>program_id_0</code> bis <code>program_id_7</code> bzw. <code>override_key_0</code> bis <code>override_key_7</code> und <code>override_address_space_0</code> bis <code>override_address_space_7</code>). Wenn "<code>program_id_0</code>" nicht gesetzt ist, sondern nur "<code>override_key_0</code>" bezieht sich die Konfiguration aufs Album. "<code>_0</code>" kann auch weggelassen werden.
|-
|-
| <code>override_any_app</code>
| <code>override_any_app</code>
Zeile 155: Zeile 260:
'''Merkhilfe''': "Starte das Homebrew Menu wenn Y gedrückt gehalten wird"
'''Merkhilfe''': "Starte das Homebrew Menu wenn Y gedrückt gehalten wird"
|-
|-
| {{Anker|override_key_album}}<code>override_key</code>
| <code>override_any_app_address_space</code>
| [[#Tasten|Taste]]
| <code>39_bit</code>, <code>36_bit</code> oder <code>32_bit</code>
| <code>R</code>
| <code>39_bit</code>
| Bestimmt, welcher Knopf gedrückt (oder nicht gedrückt) gehalten werden soll, um [[#LayeredFS|LayeredFS]] (Mods) zu aktivieren. Wird in dem Beispiel "X" gedrückt gehalten, wird LayeredFS für diesen Titel deaktiviert. Ist bspw. nur "ZL" eingestellt, werden Mods nur aktiviert, wenn "ZL" gedrückt gehalten wird.<br>
| Adressraum für den Homebrew Launcher für jeden Titel.<br>
'''Merkhilfe''': "Aktiviere LayeredFS, wenn X nicht gedrückt gehalten wird"
'''Standard:''' <code>39_bit</code>
|-
|-
| <code>path</code>
| <code>path</code>
Zeile 267: Zeile 372:
| (De-)aktiviert den Telemetrie-Upload zu Nintendo.<br>
| (De-)aktiviert den Telemetrie-Upload zu Nintendo.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert
|-
! colspan="4" | [usb]
|-
! Config-Key
! Wert
! Beispiel
! Erklärung
|-
| {{Anker|usb30_force_enabled}}<code>usb30_force_enabled</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>u8!0x0</code>
| (De-)aktiviert USB-3.0-Superspeed für Homebrews.<br>
<code>0x0</code> = System-Standard (deaktiviert), <code>0x1</code> = aktiviert
|-
|-
! colspan="4" | [ro]
! colspan="4" | [ro]
Zeile 279: Zeile 397:
| <code>u8!0x0</code>
| <code>u8!0x0</code>
| Weist "ro" an, NROs nicht streng zu überprüfen. Darunter fallen Signatur, die Programm-ID und der Typ.<ref>https://github.com/Atmosphere-NX/Atmosphere/blob/48b0b2fc46c7331ba3cb9b297475db9e0d82cd66/stratosphere/ro/source/impl/ro_nrr_utils.cpp#L48</ref><br>
| Weist "ro" an, NROs nicht streng zu überprüfen. Darunter fallen Signatur, die Programm-ID und der Typ.<ref>https://github.com/Atmosphere-NX/Atmosphere/blob/48b0b2fc46c7331ba3cb9b297475db9e0d82cd66/stratosphere/ro/source/impl/ro_nrr_utils.cpp#L48</ref><br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert
|-
! colspan="4" | [lm]
|-
! Config-Key
! Wert
! Beispiel
! Erklärung
|-
| {{Anker|enable_sd_card_logging}}<code>enable_sd_card_logging</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>u8!0x1</code>
| (De-)aktiviert das Logging auf die SD-Karte.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert
|-
| {{Anker|sd_card_log_output_directory}}<code>sd_card_log_output_directory</code>
| String
| <code>str!atmosphere/binlogs</code>
| Konfiguriert den Pfad, in dem Logs gespeichert werden
|-
! colspan="4" | [erpt]
|-
! Config-Key
! Wert
! Beispiel
! Erklärung
|-
| {{Anker|disable_automatic_report_cleanup}}<code>disable_automatic_report_cleanup</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>u8!0x1</code>
| Wenn aktiviert, werden automatisch alle "erpt_reports" auf der SD-Karte gelöscht, wenn mehr als 1000 Stück vorhanden sind.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert
|-
|-
Zeile 325: Zeile 474:
| <code>0x0</code> oder <code>0x1</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x0</code>
| <code>0x0</code>
| (De-)aktiviert das Lesen der [https://switchbrew.org/wiki/Calibration CAL0-Partition] für Homebrews (enthält u.a. wichtige konsolenspezifische Schlüssel).<br>
| (De-)aktiviert das Lesen der [https://switchbrew.org/wiki/Calibration PRODINFO-Partition] für Homebrews (enthält u.a. wichtige konsolenspezifische Schlüssel).<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.<br>
|-
|-
Zeile 335: Zeile 484:
'''Diese Einstellung ist experimentell und kann mit Datenverlust einhergehen!''' Das bloße Aktivieren dieser Option leitet noch keine Speicherstände um - dies geschicht per Flags auf Titel-basis, siehe [[#Speicherstand-Redirection|Speicherstand-Redirection]].
'''Diese Einstellung ist experimentell und kann mit Datenverlust einhergehen!''' Das bloße Aktivieren dieser Option leitet noch keine Speicherstände um - dies geschicht per Flags auf Titel-basis, siehe [[#Speicherstand-Redirection|Speicherstand-Redirection]].
|-
|-
| {{Anker|enable_deprecated_hid_mitm}}<code>enable_deprecated_hid_mitm</code>
| {{Anker|enable_am_debug_mode}}<code>enable_am_debug_mode</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x0</code>
| Mit dieser Einstellung wird der "DebugModeFlag" für den [https://switchbrew.org/wiki/Applet_Manager_services Applet Manager] aktiviert.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.
|-
| {{Anker|enable_dns_mitm}}<code>enable_dns_mitm</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x1</code>
| <code>0x1</code>
| Aktiviert den hid_mitm-Workaround für alte Homebrews (siehe [[#hid_mitm|Komponente -> Stratosphère -> hid_mitm]]).<br>
| Mit dieser Einstellung wird [[#dns_mitm|dns_mitm]] aktiviert.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.
'''Diese Einstellung wird in Zukunft entfernt!'''
|-
| {{Anker|add_defaults_to_dns_hosts}}<code>add_defaults_to_dns_hosts</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x1</code>
| Stellt Atmosphères Standard-HOSTS-Datei einer eigenen voran, die Telemetrie blockiert. Die [https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/features/dns_mitm.md#atmosph%C3%A8re-defaults Standard-Einträge] können auf GitHub gefunden werden.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.
|-
| {{Anker|enable_dns_mitm_debug_log}}<code>enable_dns_mitm_debug_log</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x0</code>
| Aktiviert den Debug-Log von dns_mitm in <code>/atmosphere/logs/dns_mitm_debug.log</code>.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.
|-
| {{Anker|enable_htc}}<code>enable_htc</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x0</code>
| Aktiviert Atmosphères [[#htc|Reimplementierung von htc]] (Host-Target Connection).<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.
|-
| {{Anker|enable_log_manager}}<code>enable_log_manager</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x0</code>
| Aktiviert Atmosphères Reimplementierung des Log-Managers. Wenn [[#enable_htc|enable_htc]] auf <code>0x1</code> steht, ist dieser immer aktiviert.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.
|-
| {{Anker|enable_standalone_gdbstub}}<code>enable_standalone_gdbstub</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x1</code>
| Aktiviert Atmosphères experimentellen Standalone GDB-Stub zum Debuggen. Dies geschieht auf Port 22225 ([https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.3 mehr dazu]).<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.
|-
| {{Anker|enable_external_bluetooth_db}}<code>enable_external_bluetooth_db</code>
| <code>0x0</code> oder <code>0x1</code>
| <code>0x1</code>
| Synchronisiert die Datenbank der verbundenen Bluetooth-Controller auf die SD-Karte in den Pfad <code>SD://atmosphere/bluetooth_devices.db</code>, damit diese zwischen einem Sys- und EmuMMC angeglichen werden kann.<br>
'''Achtung:''' Ist das Feature aktiviert, eine Datenbank mit mehr als 10 Controllern gespeichert und eine Firmware < 13.0.0 wird gebootet, wird die Datenbank auf 10 Controller gekürzt.<br>
<code>0x0</code> = deaktiviert, <code>0x1</code> = aktiviert.
|-
|-
! colspan="4" | [hbloader]
! colspan="4" | [hbloader]
Zeile 357: Zeile 548:
| Unsigned 64-Bit Integer (<code>0x0</code> bis <code>0xFFFFFFFFFFFFFFFF</code>)
| Unsigned 64-Bit Integer (<code>0x0</code> bis <code>0xFFFFFFFFFFFFFFFF</code>)
| <code>u8!0x8600000</code>
| <code>u8!0x8600000</code>
| Kontrolliert, wie viel Speicher anderen Applets zur Verfügung stehen soll, während Homebrews im Applet-Modus ausgeführt werden. Hiermiet ist es bspw. möglich, das Tastatur- oder Web-Applet neben einer Homebrew ohne Absturz laufen zu lassen. Der Standard-Wert sind ca. 140 MB.<br>
| Kontrolliert, wie viel Speicher anderen Applets zur Verfügung stehen soll, während Homebrews im Applet-Modus ausgeführt werden. Hiermit ist es bspw. möglich, das Tastatur- oder Web-Applet neben einer Homebrew ohne Absturz laufen zu lassen. Der Standard-Wert sind ca. 140 MB.<br>
Hat keinen Effekt, wenn <code>applet_heap_size</code> nicht auf <code>0x0</code> steht!
Hat keinen Effekt, wenn <code>applet_heap_size</code> nicht auf <code>0x0</code> steht!
|-
|-
|}
|}


=== BCT.ini ===
=== {{Anker|BCT.ini}}stratosphere.ini ===
Mit der "<code>/atmosphere/config/BCT.ini</code>" ([https://switchbrew.org/wiki/BCT '''B'''oot '''C'''onfiguration '''T'''able]) lassen sich Einstellungen festlegen, die beim Start des Systems geladen werden müssen und während der Laufzeit nicht verändert werden dürfen. Sie sollten nur von erfahrenen Usern geändert werden!<ref>[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/fusee/BCT.md BCT.md]</ref>
Mit der "<code>/atmosphere/config/stratosphere.ini</code>" (früher "<code>BCT.ini</code>" für ([https://switchbrew.org/wiki/BCT '''B'''oot '''C'''onfiguration '''T'''able]) lassen sich Einstellungen festlegen, die beim Start des Systems geladen werden müssen und während der Laufzeit nicht verändert werden dürfen. Sie sollten nur von erfahrenen Usern geändert werden!<ref>[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/features/configurations.md#stratosphereini configurations.md, Abschnitt "stratosphere.ini"]</ref>
 
Zuvor muss die stratosphere.ini aus "<code>/atmosphere/config_templates/stratosphere.ini</code>" kopiert werden.


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! colspan="4" | [stage1]
! colspan="4" | [stratosphere]
|-
|-
! Config-Key
! Config-Key
Zeile 374: Zeile 567:
! Erklärung
! Erklärung
|-
|-
| {{Anker|stage2_path}}<code>stage2_path</code>
| {{Anker|nogc}}<code>nogc</code>
| String
| <code>0</code> oder <code>1</code>
| <code>atmosphere/fusee-secondary.bin</code>
| <code>1</code>
| Pfad zum Stage2-Payload.
| Erzwingt das (De-)Aktivieren der NoGC-Patches, welche das Aktualisieren der GameCard-Treiber-Firmware ([https://switchbrew.org/wiki/Gamecard_ASIC LOTUS3]) verhindern. Dadurch lassen sich auch keine GameCards starten.<br>
|-
<code>0</code> = NoGC-Patches erzwungen deaktiviert, <code>1</code> = NoGC-Patches erzwungen aktiviert<br>
| {{Anker|stage2_mtc_path}}<code>stage2_mtc_path</code>
Es gibt keinen Standardwert - Atmosphère versucht standardmäßig selbst mithilfe der Anzahl der gebrannten GameCard-FUSES herauszufinden, ob ein NoGC-Patch notwendig ist.
| String
|}
| <code>atmosphere/fusee-mtc.bin</code>
 
| Pfad zum Stage2-MTC-Payload.
=== exosphere.ini ===
|-
Mit der "<code>/exosphere.ini</code>" lässt sich das Verhalten von Atmosphères Secure Monitor anpassen.<ref>https://github.com/Atmosphere-NX/Atmosphere/blob/prodinfo_memes/config_templates/exosphere.ini</ref> Die INI muss vorher aus "<code>/atmosphere/config_templates/exosphere.ini</code>" kopiert werden. Früher befanden sich diese Einstellungen in der BCT.ini.
| {{Anker|stage2_addr}}<code>stage2_addr</code>
 
| Hexadezimal
{| class="wikitable" border="1"
| <code>0xF0000000</code>
| ?
|-
| {{Anker|stage2_entrypoint}}<code>stage2_entrypoint</code>
| Hexadezimal
| <code>0xF0000000</code>
| ?
|-
| {{Anker|custom_splash}}<code>custom_splash</code>
| String
| <code>/atmosphere/bootlogo.bmp</code>
| Ermöglicht einen eigenen Bootsplash. Das Bild muss eine BMP mit einer Größe von 1280x720 Pixeln sein, welches 90° gegen den Uhrzeigersinn gedreht wurde (sodass die Auflösung am Ende 720x1280 beträgt). Zudem muss es als 32-Bit ARGB exportiert werden - dies ist bspw. mit [https://www.gimp.org/ GIMP] möglich.
|-
! colspan="4" | [exosphere]
|-
! Config-Key
! Config-Key
! Wert
! Wert
Zeile 409: Zeile 587:
| <code>0</code> oder <code>1</code>
| <code>0</code> oder <code>1</code>
| <code>1</code>
| <code>1</code>
| Signalisiert dem Kernel, dass der Debugging-Mode aktiv ist.<br>
| Signalisiert dem Kernel, dass der Debugging-Mode aktiv ist. Wenn der Debug-Mode deaktiviert ist, wird eventuell der Debugger in zukünftigen Atmosphère-Versionen nicht mehr funktionieren.<br>
<code>0</code> = Debug-Mode deaktiviert, <code>1</code> = Debug-Mode aktiviert (Standard)
<code>0</code> = Debug-Mode deaktiviert, <code>1</code> = Debug-Mode aktiviert (Standard)
|-
|-
Zeile 430: Zeile 608:
<code>0</code> = PMU-Register-Zugriff deaktiviert (Standard), <code>1</code> = PMU-Register-Zugriff aktiviert
<code>0</code> = PMU-Register-Zugriff deaktiviert (Standard), <code>1</code> = PMU-Register-Zugriff aktiviert
|-
|-
| {{Anker|target_firmware}}<code>target_firmware</code>
| {{Anker|blank_prodinfo_sysmmc}}<code>blank_prodinfo_sysmmc</code>
| Integer
| <code>0</code> oder <code>1</code>
| <code>6</code>
| <code>0</code>
| Erzwingt das Laden von Atmosphère, wenn die Firmware-Erkennung fehlschlägt. ''Dies ermöglicht kein Downgrade!''<br>
| Wenn diese Option aktiviert ist, wird die [https://switchbrew.org/wiki/Calibration PRODINFO-Partition] mit wichtigen Hardware-Keys und -Zertifikaten "pseudo-gelöscht", sodass das System keine validen Keys und keine Seriennummer mehr erkennt. Es ist nicht bekannt, ob es sicher ist, dies zu nutzen, da diese Informationen eventuell an anderer Stelle vom System gecached werden. '''Die eigentliche PRODINFO-Partition wird hierbei nicht angerührt!''' ''Auch bekannt als "Incognito".''
Eine Liste gültiger Werte findet sich [https://github.com/Atmosphere-NX/Atmosphere/blob/master/libraries/libvapours/include/vapours/ams/ams_target_firmware.h auf GitHub].
 
'''Achtung:''' Ab der Firmware 17.0.0 [[Nintendo-Switch-Firmware_17.0.0#Fatal_Error_mit_aktiviertem_PRODINFO-Blanking|führt die Aktivierung zu einem "Fatal Error"]], wenn die Konsole mit dem Internet verbunden wird.
 
<code>0</code> = Deaktiviert (Standard), <code>1</code> = Aktiviert
|-
| {{Anker|blank_prodinfo_emummc}}<code>blank_prodinfo_emummc</code>
| <code>0</code> oder <code>1</code>
| <code>0</code>
| Gleiches wie oben, nur für den EmuMMC.
 
'''Achtung:''' Ab der Firmware 17.0.0 [[Nintendo-Switch-Firmware_17.0.0#Fatal_Error_mit_aktiviertem_PRODINFO-Blanking|führt die Aktivierung zu einem "Fatal Error"]], wenn die Konsole mit dem Internet verbunden wird.
 
<code>0</code> = Deaktiviert (Standard), <code>1</code> = Aktiviert
|-
|-
! colspan="4" | [stratosphere]
| {{Anker|allow_writing_to_cal_sysmmc}}<code>allow_writing_to_cal_sysmmc</code>
| <code>0</code> oder <code>1</code>
| <code>0</code>
| Ermöglicht den Schreibzugriff auf die [https://switchbrew.org/wiki/Calibration PRODINFO-Partition] für Homebrews. Ohne ein sicheres Backup ist das Aktivieren nicht empfohlen, weshalb ein verschlüsseltes Backup im MMC angelegt und jedes Mal verifiziert wird. Schlägt dies fehl, wird der Schreibzugriff weiterhin blockiert. '''Im EmuMMC ist das Schreiben auf die PRODINFO-Partition immer erlaubt.'''
<code>0</code> = Deaktiviert (Standard), <code>1</code> = Aktiviert
|-
|-
! Config-Key
| {{Anker|log_port}}<code>log_port</code>
! Wert
| <code>0</code> bis <code>3</code>
! Beispiel
| <code>0</code>
! Erklärung
| Kontrolliert, welcher UART-Port für das Logging verwendet werden soll.<br>
<code>0</code> = UART-A (Standard), <code>1</code> = UART-B, <code>2</code> = UART-C, <code>3</code> = UART-D
|-
|-
| {{Anker|nogc}}<code>nogc</code>
| {{Anker|log_baud_rate}}<code>log_baud_rate</code>
| <code>0</code> oder <code>1</code>
| <code>0</code> bis <code>115200</code>
| <code>1</code>
| <code>0</code>
| Erzwingt das (De-)Aktivieren der NoGC-Patches, welche das Aktualisieren der GameCard-Treiber-Firmware ([https://switchbrew.org/wiki/Gamecard_ASIC LOTUS3]) verhindern. Dadurch lassen sich auch keine GameCards starten.<br>
| Kontrolliert die [[w:Symbolrate|Symbolrate]], mit der die Logs auf dem eingestellten UART-Port übertragen werden soll.<br>
<code>0</code> = NoGC-Patches erzwungen deaktiviert, <code>1</code> = NoGC-Patches erzwungen aktiviert<br>
<code>0</code> wird als 115200 (Standard) behandelt
Es gibt keinen Standardwert - Atmosphère versucht standardmäßig selbst mithilfe der Anzahl der gebrannten GameCard-FUSES herauszufinden, ob ein NoGC-Patch notwendig ist.
|-
|-
| {{Anker|enable_ncm}}<code>enable_ncm</code>
| {{Anker|log_inverted}}<code>log_inverted</code>
| <code>0</code> oder <code>1</code>
| <code>0</code> oder <code>1</code>
| <code>0</code>
| <code>0</code>
| Aktiviert Atmosphères eigene NCM-Reimplementierung, die sich u.a. um die Verwaltung von NAND-Speicherständen kümmert. Aus diesem Grund ist dieses Modul zuerst Opt-In, bis es später für jeden aktiviert wird.<br>
| Gibt an, ob der Logging UART-Port invertiert ist.<br>
<code>0</code> = Custom NCM deaktiviert (Standard), <code>1</code> = Custom NCM aktiviert<br>
<code>0</code> = Nein (Standard), <code>1</code> = Ja
|
|}
|}


Zeile 513: Zeile 708:
| <code>pt</code>
| <code>pt</code>
| Portugiesisch
| Portugiesisch
|-
| <code>pt-BR</code>
| Brasilianisches Portugiesisch
|-
|-
| <code>ru</code>
| <code>ru</code>
Zeile 559: Zeile 757:


=== Cheats ===
=== Cheats ===
Atmosphère unterstützt Action-Replay-artige Cheats und ist kompatibel zu [[SX OS|Gateshark]]-Codes. Eine umfangreiche Dokumentation zum Erstellen von Cheats kann im [https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/cheats.md Atmosphère GitHub] gefunden werden. Cheats müssen als Textdatei an folgendem Ort auf der SD-Karte platziert werden:
Atmosphère unterstützt Action-Replay-artige Cheats und ist kompatibel zu [[SX OS|Gateshark]]-Codes. Eine umfangreiche Dokumentation zum Erstellen von Cheats kann im [https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/features/cheats.md Atmosphère GitHub] gefunden werden. Cheats müssen als Textdatei an folgendem Ort auf der SD-Karte platziert werden:


<code>/atmosphere/contents/{{TitleID}}/cheats/<abbr title="Build-ID des Spiels in Hexadezimal">''BUILD-ID''</abbr>.txt</code>
<code>/atmosphere/contents/{{TitleID}}/cheats/<abbr title="Build-ID des Spiels in Hexadezimal">''BUILD-ID''</abbr>.txt</code>


Die Build-ID des Spiels ist dazu da, Cheats für bestimmte Spiele-Versionen zu unterschieden. [https://github.com/WerWolv/EdiZon/releases EdiZon v4] zeigt bspw. die Build-ID des Spiels an. Fertige Cheats lassen sich per EdiZon oder direkt [https://github.com/WerWolv/EdiZon_CheatsConfigsAndScripts/tree/master/Cheats#atmosph%C3%A8re-cheats auf GitHub herunterladen].
Die Build-ID des Spiels dient dazu, Cheats für bestimmte Spiele-Versionen zu unterschieden. [https://github.com/WerWolv/EdiZon/releases EdiZon v4] zeigt bspw. die Build-ID des Spiels an. Fertige Cheats lassen sich per EdiZon oder direkt [https://github.com/WerWolv/EdiZon_CheatsConfigsAndScripts/tree/master/Cheats#atmosph%C3%A8re-cheats auf GitHub herunterladen].


Es empfiehlt sich noch, in den System Settings "[[#dmnt_cheats_enabled_by_default|dmnt_cheats_enabled_by_default]]" auf "0x0" und "[[#dmnt_always_save_cheat_toggles|dmnt_always_save_cheat_toggles]]" auf "0x1" zu setzen, da so Cheats selbst per bspw. EdiZon aktiviert werden können und der Cheat-Status immer gespeichert wird. Letzterer wird unter "<code>/atmosphere/contents/{{TitleID}}/cheats/toggles.txt</code>" gespeichert.
Es empfiehlt sich noch, in den System Settings "[[#dmnt_cheats_enabled_by_default|dmnt_cheats_enabled_by_default]]" auf "0x0" und "[[#dmnt_always_save_cheat_toggles|dmnt_always_save_cheat_toggles]]" auf "0x1" zu setzen, da so Cheats selbst per bspw. EdiZon aktiviert werden können und der Cheat-Status immer gespeichert wird. Letztere werden unter "<code>/atmosphere/contents/{{TitleID}}/cheats/toggles.txt</code>" gespeichert.


Standardmäßig werden Cheats aktiviert, wenn ein Spiel gestartet und dabei nicht "L" gedrückt gehalten wird. Dies lässt sich in den Button Overrides unter "[[#cheat_enable_key|cheat_enable_key]]" ändern.
Standardmäßig werden Cheats aktiviert, wenn ein Spiel gestartet und dabei nicht "L" gedrückt gehalten wird. Dies lässt sich in den Button Overrides unter "[[#cheat_enable_key|cheat_enable_key]]" ändern.
=== Splash-Screen ===
Ein eigener Splash-Screen wird beim Start des Systems angezeigt und muss in die package3 injiziert werden. Dazu steht im Git-Repositorium ein [https://github.com/Atmosphere-NX/Atmosphere/blob/master/utilities/insert_splash_screen.py Python-Skript] zur Verfügung, welches wie folgt aufgerufen werden muss:
{{Pre|'''python''' insert_splash_screen.py customsplash.png pfad/zur/package3}}
Das Bild sollte eine Auflösung von exakt 1280x720 Pixeln besitzen.


=== EmuMMC ===
=== EmuMMC ===
Zeile 575: Zeile 780:


=== erpt ===
=== erpt ===
Mithilfe von Atmosphères eigener Reimplementierung von "erpt" (Error Report) werden Crash Reports nicht mehr im System-Speicherstand, sondern auf der SD-Karte im Pfad "<code>/atmosphere/erpt_reports/</code>" angelegt. Dies verhindert das Hochladen dieser zu Nintendo, wenn die Original Firmware gebootet wird.
Mithilfe von Atmosphères eigener Reimplementierung von "[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/erpt.md erpt]" (Error Report) werden Crash Reports nicht mehr im System-Speicherstand, sondern auf der SD-Karte im Pfad "<code>/atmosphere/erpt_reports/</code>" angelegt. Dies verhindert das Hochladen dieser zu Nintendo, wenn die Original Firmware gebootet wird.


=== fatal ===
=== fatal ===
[[Datei:Atmosphere fatal.png|mini|Atmosphères "fatal" Absturzbildschirm]]
[[Datei:Atmosphere fatal.png|mini|Atmosphères "fatal" Absturzbildschirm]]
"fatal" ist der Absturzbildschirm der Nintendo Switch. Atmosphère überschreibt [https://switchbrew.org/wiki/Fatal_services diesen Service] mit einem eigenen, der die Logs auch auf der SD-Karte unter "<code>/atmosphere/fatal_reports/</code>", anstatt im Speicher der Switch speichert. So wird auch verhindert, dass eventuelle Fehler-Logs zu Nintendo hochgeladen werden. Auch besteht die Möglichkeit, per "POWER"-Knopf die Konsole normal neu zu starten (nicht in Atmosphère) oder einen Lautstärkeknopf, um den [[#Reboot-Payload|Reboot-Payload]] zu starten. "[[#fatal_auto_reboot_interval|fatal_auto_reboot_interval]]" kann auch auf einen Wert gesetzt werden, um die Konsole automatisch neu in den Reboot-Payload zu starten.
"fatal" ist der Absturzbildschirm der Nintendo Switch. Atmosphère [https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/fatal.md überschreibt] diesen Service mit einem eigenen, der die Logs auch auf der SD-Karte unter "<code>/atmosphere/fatal_reports/</code>", anstatt im Speicher der Switch speichert. So wird auch verhindert, dass eventuelle Fehler-Logs zu Nintendo hochgeladen werden. Auch besteht die Möglichkeit, per "POWER"-Knopf die Konsole normal neu zu starten (nicht in Atmosphère) oder einen Lautstärkeknopf, um den [[#Reboot-Payload|Reboot-Payload]] zu starten. "[[#fatal_auto_reboot_interval|fatal_auto_reboot_interval]]" kann auch auf einen Wert gesetzt werden, um die Konsole automatisch neu in den Reboot-Payload zu starten.


Nicht zu verwechseln mit dem Pfad "<code>/atmosphere/fatal_errors/</code>", in dem nur Fehlerreports von fusee-primary abgelegt werden.
Nicht zu verwechseln mit dem Pfad "<code>/atmosphere/fatal_errors/</code>", in dem nur Fehlerreports von fusee abgelegt werden.
 
=== htc ===
Atmosphère beinhaltet eine Reimplementierung von "htc", dem "Host-Target Connection" Verbindungsprotokoll. Mit diesem lässt sich mithilfe der PC-Applikation "Starlink" zwischen PC und Switch kommunizieren und bspw. Gameplay streamen. Dieses Feature ist noch nicht fertig und Starlink wurde noch nicht veröffentlicht.


=== Reboot-Payload ===
=== Reboot-Payload ===
Unter "<code>/atmosphere/reboot_payload.bin</code>" kann ein beliebiger Fusée-Gelée-Payload abgelegt werden, der gestartet werden soll, wenn die Konsole neu gestartet wird (falls in den [[#power_menu_reboot_function|System Settings]] <code>power_menu_reboot_function</code> auf <code>payload</code> steht) oder bei einem Reboot über den Absturzbildschirm "fatal". Auch startet die "reboot_to_payload.nro" diesen Payload. Standardmäßig handelt es sich hierbei lediglich um eine Kopie von "fusee-primary.bin".
Unter "<code>/atmosphere/reboot_payload.bin</code>" kann ein beliebiger Fusée-Gelée-Payload abgelegt werden, der gestartet werden soll, wenn die Konsole neu gestartet wird (falls in den [[#power_menu_reboot_function|System Settings]] <code>power_menu_reboot_function</code> auf <code>payload</code> steht) oder bei einem Reboot über den Absturzbildschirm "fatal". Auch startet die "reboot_to_payload.nro" diesen Payload. Standardmäßig handelt es sich hierbei lediglich um eine Kopie von "fusee.bin".


=== KIPs ===
=== KIPs ===
Zeile 590: Zeile 798:


==== KIP-Patches ====
==== KIP-Patches ====
Zusätzlich dazu kann Atmosphère auch bestehende Kernel-Module patchen. Hierfür müssen IPS-Patches in folgenden Ordner platziert werden:
{{Achtung|Hintergrund=#FFCCCC|Ab Atmosphère v1.7.0 werden KIP-Patches nicht mehr unterstützt.}}
 
Mit Atmosphère-Versionen älter als v1.7.0 lassen sich auch bestehende Kernel-Module patchen. Hierfür müssen IPS-Patches in folgendem Ordner platziert werden:


<code>/atmosphere/kip_patches/''NAME''/</code>
<code>/atmosphere/kip_patches/''NAME''/</code>


Wobei "''NAME''" durch einen eigenen Namen ersetzt werden muss. Innerhalb dieser Ordner können mehrere IPS-Patches abgelegt werden, die den Dateinamen des SHA256-Hashes der KIP tragen müssen. Dies wird bspw. für [https://wiidatabase.de/switch-downloads/hacks/signatur-patches/ Signatur-Patches] eingesetzt.
Wobei "''NAME''" durch einen eigenen Namen ersetzt werden muss. Innerhalb dieser Ordner können mehrere IPS-Patches abgelegt werden, die den Dateinamen des SHA256-Hashes der KIP tragen müssen. Dies wird bspw. für Signatur-Patches eingesetzt.
 
=== NRO-Patches ===
NROs lassen sich mithilfe von IPS/IPS32-Patches auf der SD-Karte patchen, wenn diese in folgendem Pfad liegen:
 
<code>/atmosphere/nro_patches/''NAME''/<abbr title="Build-ID der NRO im Hexadezimalsystem">''BUILD-ID''</abbr>.ips</code>
 
Wobei "''NAME''" durch einen eigenen Namen ersetzt werden muss. Bei der Build-ID können nachgestellte Nullen weggelassen werden.


=== NSO-Patches ===
=== NSO-Patches ===
Zeile 647: Zeile 864:


Speicherstände werden in "<code>/atmosphere/saves/</code>" abgelegt, getrennt nach Sys- und [[#EmuMMC|EmuMMC]]. Es wird ein neuer Speicherstand erstellt, wenn keiner existiert - es wird also nicht der aus dem internen Speicher kopiert!
Speicherstände werden in "<code>/atmosphere/saves/</code>" abgelegt, getrennt nach Sys- und [[#EmuMMC|EmuMMC]]. Es wird ein neuer Speicherstand erstellt, wenn keiner existiert - es wird also nicht der aus dem internen Speicher kopiert!
=== dns_mitm ===
Mit dem Atmosphère-eigenen Systemmodul '''dns_mitm''' lassen sich DNS-Abfragen manipulieren. Die Funktionalität wird dabei durch die [[#System_Settings|System Settings]] gesteuert. Standardmäßig werden Nintendos Telemetrie-Server blockiert.
Folgende Pfade werden nacheinander geladen, wobei beim ersten Fund keine weitere mehr beachtet wird:
* '''Nur im EmuMMC:''' <code>/atmosphere/hosts/emummc_%04lx.txt</code> (formatiert mit der Nummer des EmuMMC aus der <code>emummc.ini</code>)
* '''Nur im EmuMMC:''' <code>/atmosphere/hosts/emummc.txt</code>
* '''Nur im SysMMC:''' <code>/atmosphere/hosts/sysmmc.txt</code>
* '''Beide MMCs:''' <code>/atmosphere/hosts/default.txt</code> (wird mit Standard-Einträgen erstellt, falls noch nicht existent)
Die Standard-Einträge von Atmosphère werden eigenen Einträgen '''vorangestellt'''. Diese sehen zurzeit so aus:<ref>https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/features/dns_mitm.md#atmosph%C3%A8re-defaults</ref>
<pre># Nintendo telemetry servers
127.0.0.1 receive-%.dg.srv.nintendo.net receive-%.er.srv.nintendo.net</pre>
Um eigene Einträge hinzuzufügen, muss eine Textdatei an einer der oben genannten Stellen erstellt werden. Die erste Spalte enthält die Ziel-IP, gefolgt von den umzubiegenden Domains. Um bspw. "wiidatabase.de" auf "8.8.8.8" umzuleiten, müsste die HOSTS-Datei so aussehen:
<pre>8.8.8.8 wiidatabase.de</pre>
Folgende spezielle Zeichen lassen sich zusätzlich in der Domain nutzen:
* <code>*</code> ist ein Wildcard-Zeichen, welches beliebig viele Zeichen (auch null) matcht
* <code>%</code> wird durch das Ergebnis von <code>nsd!environment_identifier</code> ersetzt, welches auf Produktivgeräten immer <code>lp1</code> ausgibt
Um beispielsweise alle Einträge aller Seiten, die mit "wii" anfangen und auf ".de" enden auf "8.8.8.8" weiterzuleiten, kann folgende HOSTS-Datei benutzt werden:
<pre>8.8.8.8 wii*.de</pre>
Dies wirkt sich sowohl auf "wii.de", als auch auf "wiidb.de" und "wiidatabase.de" aus.
Beim Start wird die geladene Hosts-Datei mitsamt aller geparsten Einträge nach <code>/atmosphere/logs/dns_mitm_startup.log</code> geloggt. Wenn das [[#enable_dns_mitm_debug_log|Logging]] in der system_settings.ini aktiviert wurde, werden zusätzlich alle DNS-Abfragen (plus ob Weiterleitungen angewendet wurden) in <code>/atmosphere/logs/dns_mitm_debug.log</code> geloggt.
==== Nintendo- und Update-Server blockieren ====
Um 90DNS nachzuahmen und alle Nintendo- und Update-Server zu blockieren, können die folgenden Host-Einträge benutzt werden (Achtung, [[#enable_dns_mitm|enable_dns_mitm]] muss auf "<code>0x1</code>" stehen!):<ref>https://old.reddit.com/r/SwitchHacks/comments/lb5v5i/atmosphere_0180_released_new_dns_mitm/gls6h5a/</ref>
<pre># 90DNS
127.0.0.1 *nintendo.com
127.0.0.1 *nintendo.net
127.0.0.1 *nintendo.jp
127.0.0.1 *nintendo.co.jp
127.0.0.1 *nintendo.co.uk
127.0.0.1 *nintendo-europe.com
127.0.0.1 *nintendowifi.net
127.0.0.1 *nintendo.es
127.0.0.1 *nintendo.co.kr
127.0.0.1 *nintendo.tw
127.0.0.1 *nintendo.com.hk
127.0.0.1 *nintendo.com.au
127.0.0.1 *nintendo.co.nz
127.0.0.1 *nintendo.at
127.0.0.1 *nintendo.be
127.0.0.1 *nintendods.cz
127.0.0.1 *nintendo.dk
127.0.0.1 *nintendo.de
127.0.0.1 *nintendo.fi
127.0.0.1 *nintendo.fr
127.0.0.1 *nintendo.gr
127.0.0.1 *nintendo.hu
127.0.0.1 *nintendo.it
127.0.0.1 *nintendo.nl
127.0.0.1 *nintendo.no
127.0.0.1 *nintendo.pt
127.0.0.1 *nintendo.ru
127.0.0.1 *nintendo.co.za
127.0.0.1 *nintendo.se
127.0.0.1 *nintendo.ch
127.0.0.1 *nintendoswitch.com
127.0.0.1 *nintendoswitch.com.cn
127.0.0.1 *nintendoswitch.cn
95.216.149.205 *conntest.nintendowifi.net
95.216.149.205 *ctest.cdn.nintendo.net</pre>
=== Daybreak ===
[[Datei:Atmosphère Daybreak.jpg|mini|Daybreak]]
Mithilfe der enthaltenen Applikation "'''Daybreak'''" lassen sich System-Updates sowohl zum Up-, als auch zum Downgraden verwenden. Hierbei wird der Atmosphère-Service "ams:su" verwendet, der die gleiche Logik wie Nintendos Shell zur Installation von Updates über eine Game Card benutzt. Die Update-NCAs werden dabei aus einem beliebigen Ordner auf der SD-Karte installiert, optional lässt sich der exFAT-Treiber mitinstallieren. Die ".cmnt" muss hierbei aber in ".cnmt.nca" umbenannt werden, was bspw. [https://gist.github.com/HookedBehemoth/df36b5970e1c5b1b512ec7bdd9043c6e per] [https://gist.github.com/antiKk/279966c27fdfd9c7fe63b4ae410f89c4 Skript] erledigt werden kann.
== Häufig gestellte Fragen ==
=== Blackscreen nach System-Update ===
Dies kann mehrere Ursachen haben:
* Atmosphère ist nicht aktuell
* Nicht alle Dateien von Atmosphère wurden beim Kopieren auf die SD-Karte ersetzt
* Atmosphère ist noch nicht kompatibel mit der aktuellen Firmware
* Ein Custom-Theme wurde installiert - hierfür die Ordner "<code>/atmosphere/contents/0100000000001000</code>" und "<code>/atmosphere/contents/0100000000001013</code>" entfernen.
* Ein inkompatibles Systemmodul ist installiert - in dem Falle empfiehlt es sich, den ganzen Ordner "<code>/atmosphere/contents/</code>" temporär wegzuverschieben
=== GameCards starten nicht mehr ===
Dies passiert, wenn von einer niedrigeren Firmware aktualisiert wurde und die neue Firmare den GameCard-Treiber aktualisiert. Um ein Downgrade zu verhindern, werden hier ebenfalls eFuses "[[Anti-Downgrade|gebrannt]]", was bedeutet, dass die Aktualisierung des Treibers blockiert wird. Der Grund ist der, dass ein späteres Downgrade dazu führen würde, dass GameCards auf der niedrigeren Firmware nicht mehr abgespielt werden können.
Um dies zu beheben, muss einfach einmalig die Original-Firmware gestartet werden. Dies führt aber zu oben erwähntem Nachteil.
=== {{Anker|enable_deprecated_hid_mitm}} Controller-Eingaben in Homebrews werden nicht erkannt ===
Mit der [[Nintendo-Switch-Firmware 9.0.0|Firmware 9.0.0]] wurden die HID-Komponenten für Controller so sehr geändert, dass libnx (die Bibliothek zum Bauen von Switch-Homebrews) keine Controller-Eingaben mehr erkennt. Dieses Problem wurde zwar in neueren libnx-Versionen behoben, allerdings müssen Homebrews mit der neuen libnx-Version neu gebaut werden. Da nicht jede Homebrew sofort aktualisiert wird/werden kann, wurde als Übergang ein temporäres Modul eingeführt, welches das Problem behebt.<ref>[https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.9.4 Atmosphère v0.9.4]</ref> Mit Atmosphère v0.10.2 wurde es allerdings standardmäßig deaktiviert<ref>[https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.10.2 Atmosphère v0.10.2]</ref> und mit v0.18.0 gänzlich entfernt.<ref>[https://wiidatabase.de/atmosphere-v0-18-0/ Atmosphère v0.18.0]</ref>
Zurzeit besteht kein Workaround; die Anwendung muss vom Entwickler angepasst oder (falls möglich) mit einer neueren Version von libnx kompiliert werden.


== Trivia ==
== Trivia ==
* [[SX OS]] verwendet als Basis Atmosphère (siehe auch [[SX OS#Kopierter Atmosphère-Code und Lizenzverstoß]])
* [[SX OS]] verwendet als Basis Atmosphère (siehe auch [[SX OS#Kopierter Atmosphère-Code und Lizenzverstoß]])
* Am 03. Juli 2020 ließ Nintendo die Download-Seite von WiiDatabase.de aus den Google-Suchergebnissen entfernen.<ref>[https://wiidatabase.de/nintendo-laesst-wiidatabase-de-atmosphere-seite-aus-google-entfernen/ Nintendo lässt WiiDatabase.de Atmosphère-Seite aus Google entfernen]</ref>
* Obwohl der Quellcode von Atmosphère unter der GPLv2 freigegeben ist, gibt es zwei Ausnahmen von dieser Lizenz:<ref>[https://github.com/Atmosphere-NX/Atmosphere#licensing Atmosphere#Licensing] README auf GitHub</ref>
** Die Emulatoren yuzu und Ryujinx dürfen Atmosphère-Code kopieren und unter der GPLv2 oder aktueller oder unter der MIT-Lizenz freigeben
** Nintendo darf den Code von Atmosphère unter den Bedingungen der [https://opensource.org/licenses/0BSD Null-Klausel BSD-Lizenz] verwenden (im Grunde genommen Public Domain, aber mit Haftungsausschluss)


== Einzelnachweise ==
== Einzelnachweise ==

Aktuelle Version vom 3. August 2024, 22:00 Uhr

Atmosphère
Atmosphère
Allgemein
Nintendo Switch
Nintendo Switch
Entwickler SciresM, TuxSH, hexkyz, fincs
Kategorie Custom Firmware
Lizenz GPLv2
Links
Download
Website
Atmosphère-Version in den Systemeinstellungen: Aktuelle Firmware|Atmosphère-Version|NAND-Typ (S = SysMMC)

Atmosphère ist eine freie Custom Firmware für die Nintendo Switch. Entwickelt wird sie hauptsächlich von SciresM. Sie ist unter einer freien Lizenz verfügbar und wird aktiv weiterentwickelt.

Geschichte

Im März 2018 gab SciresM bekannt, dass die Custom Firmware "Atmosphère" im Sommer 2018 für alle zu dem Zeitpunkt erhältlichen Switch-Modelle und -Firmware-Versionen erscheinen soll.[1] Die erste öffentliche Version erschien mit etwas Verzögerung im Oktober 2018 als v0.7.[2]

Atmosphère v0.8.5 fügte Cheat-Support hinzu.[3] Seit v0.9.0 wird ein EmuMMC unterstützt.[4].

Seit der v0.17.0 wird Mariko offiziell unterstützt.[5]

Eine Vorabversion der 1.0.0 erschien am 07. September 2021.[6] Die finale 1.0.0 erschien am 09. September 2021.

Komponenten

Atmosphère zielt darauf ab, alle System-Komponenten der Switch zu reimplementieren und dabei zu erweitern.

Hauptkomponenten

  • Fusée: Bootloader, verifiziert und startet Exosphère und Package2 (Kernel/FIRM-Systemmodule) und patcht diese, falls nötig.
  • Exosphère: TrustZone mit eigenem Secure Monitor.
  • Thermosphère: EmuMMC, lädt den MMC von der SD-Karte um so eine getrennte Umgebung für bspw. Homebrew zu schaffen.
  • Stratosphère: Eigene Systemmodule mit neuen Features und zur Erweiterung bestehender.
  • Mesosphère: Reimplementierung von Nintendos Kernel.
  • Troposphère: HorizonOS-Patches für Applikationen. Dies ist noch nicht in Atmosphère implementiert.[7]

Systemmodule

Name Beschreibung Reimplementiert Erweiterungen/Änderungen
ams_mitm Neues Systemmodul zum on-the-fly Patchen von Dateien und Titeln
boot Initialisiert die Hardware und startet das System. boot Atmosphère zeigt seinen eigenen schwarz/weißen Bootscreen und Akku-Icons an.
boot2 Lädt alle weiteren Module nach dem Start. boot2 Mithilfe von Flags lassen sich eigene Systemmodule direkt nach dem Start ausführen.
creport Dient der Verwaltung von Absturzberichten. creport Generiert Absturzberichte auf der SD-Karte und verhindert das Senden dieser an Nintendo. Außerdem wird bei einem Absturz ein Screenshot erstellt (nur auf >= 10.0.0).
dmnt Stellt einen Debug-Monitor zur Verfügung. "dmnt" steht für "Debug Monitor". dmnt Cheat-Code-Support, inklusive Kompatibilität zu Gateshark.
eclct.stub Sammelt Fehlerberichte. eclct Diese Reimplementation ist ein Stub und verhindert das Senden weiterer Telemetrie-Daten an Nintendo.
erpt Verwaltet Fehlerberichte. erpt Verhindert das Anlegen von berichten im MMC und leitet diese stattdessen auf die SD-Karte weiter.
fatal Verwaltet Absturzberichte. fatal Zeigt einen umfangreichen Fehlerbildschirm bei einem fatalen (deshalb der Name) Absturz an. Auch kann die Konsole mit den Lautstärketasten direkt neu gestartet werden.
htc Host-Ziel-Verbindung bspw. zum Remote-Zugriff auf die SD-Karte. htc
jpegdec Dient der Dekodierung von JPEGs in Verbindung mit den Capture-Services jpegdec Erlaubt zwei Sessions anstatt einer, damit Homebrews JPEGs per Software parallel zum OS dekodieren können.
loader Erstellt Prozesse von ausführbaren NSOs und kontrolliert ihre Zugriffe loader Ermöglicht das Ersetzen von Dateien im ExeFS, das Patchen von NSOs, sowie Button Overrides (bspw.: "R" gedrückt halten, während ein Spiel startet, startet das Homebrew Menu mit vollem RAM-Zugriff).
lm Stellt Logging-Dienste für einige Anwendungen und Spiele bereit. lm Logging auf die SD-Karte. Der LogManager ist aufgrund des erhöhten Speicherbedarfs standardmäßig deaktiviert, kann aber aktiviert werden.
ncm Dient der Verwaltung von Inhalten (bspw. NAND-Speicherständen). "ncm" steht für "Nintendo Content Manager". ncm
pgl Startet Programme; nur ab 10.0.0 vorhanden. "pgl" steht für "Program Launcher". pgl Atmosphères Reimplementation ist ebenfalls nur ab 10.0.0 verfügbar und wurde (noch) nicht zurückportiert.
pm Verwaltet Ressourcenlimits und überwacht laufende Prozesse. "pm" steht für "Process Manager". pm Der APPLET Speicher-Pool wurde um 24 MiB gesenkt und gibt diesem somit dem SYSTEM-Pool zurück. Damit lassen sich mehr Custom-Systemmodule ausführen.
ro Lädt dynamische Bibliotheken und wurde mit der Firmware 3.0.0 eingeführt. ro Portiert die Funktionalitäten auf < 3.0.0 zurück, bei denen noch "loader" zuständig war. Ermöglicht außerdem NRO-Patches.
sm Verwaltet Dienste. "sm" steht für "Service Manager". sm Dieser ist für Entwickler interessant, da so u.a. ein eigener MitM-Service registriert werden kann. Patcht standardmäßig auch "smhax"[8][9] auf der Firmware < 3.0.1.
spl Ist u.a. für kryptographische Operationen notwendig. "spl" steht für "Secure Platform". spl
ams_mitm

Das Systemmodul ams_mitm fügt einige neue Funktionen hinzu, die in mehrere Teile aufgegliedert sind.

Name Beschreibung
bpc_mitm Ermöglicht das Neustarten in einen Payload (bspw. wieder Atmosphère) und das vollständige Herunterfahren, wenn AutoRCM aktiviert ist (siehe AutoRCM#Herunterfahren). Überschreibt den bpc PCV-Service von Nintendo.
dns_mitm Manipuliert DNS-Abfragen und kann frei konfiguriert werden (siehe #dns_mitm).
fs_mitm Kann Dateien von Titeln mit denen auf der SD-Karte ersetzen, auch bekannt als "LayeredFS".
ns_mitm Ermöglicht die Verwendung von Web-Applets im Homebrew Menu, wenn eine Anwendung überschrieben wird, da diese erst prüfen, ob es HTML-Inhalte in der Anwendung gibt.
set_mitm Verändert die Anzeige der Systemversion (GetFirmwareVersion) (siehe Bild) und liest weitere Einstellungen aus einer INI-Datei. Dabei wird der System-Settings-Service abgefangen.

Ordnerstruktur

Die Inhalte in (kursiven Klammern) dienen der Erklärung

SD-Karte
|   fusee.bin (Payload, der an die Switch gesendet werden muss, um den Bootprozess einzuleiten, separater Download)
|   hbmenu.nro  (Homebrew Menu)
|
+---atmosphere
|   |   hbl.nsp (Homebrew Loader, der das Homebrew Menü lädt)
|   |   package3 (Signierter/verschlüsselter Fusée-Teil)
|   |   reboot_payload.bin (Reboot-Payload, Kopie von fusee.bin, wird bei einem Neustart ausgeführt)
|   |   stratosphere.romfs (Atmosphères Systemmodule, waren früher im "contents"-Ordner)
|   |
|   +---config (Konfigurationsdateien)
|   |
|   +---config_templates (Konfigurationstemplates)
|   |       exosphere.ini  (Einstellungen für Exosphère)
|   |       override_config.ini (Overrides)
|   |       stratosphere.ini  (Einstellungen für Stratosphère und fusee-primary)
|   |       system_settings.ini (Atmosphère-Einstellungen)
|   |
|   +---flags (Flags)
|   |
|   +---fatal_errors (Fehlerreports von fusee-primary)
|   +---hbl_html (Zum Starten von Web-Applets)
|   |
|   \---kip_patches (KIP-Patches, nicht mehr unterstützt)
|
\---switch (Ordner für Homebrews)
        daybreak.nro (Daybreak-Applikation zur Installation von System-Updates)
        reboot_to_payload.nro (Startet /atmosphere/reboot_payload.bin)

Installation

Um Atmosphère zu "installieren" muss lediglich die Release-ZIP auf die SD-Karte entpackt werden. Die fusee.bin muss anschließend gestartet werden, bspw. über Fusée Gelée oder (auf Mariko-Geräten) per Modchip.

Features

Homebrew Menu

Standardmäßig gibt es zwei Möglichkeiten, das Homebrew Menu aufzurufen:

  • "R" gedrückt halten, während ein Spiel gestartet wird ("Takeover")
  • Das Album starten, ohne "R" gedrückt zu halten ("Applet-Modus")

Letztere Möglichkeit ist nicht empfohlen, da das Homebrew Menu sonst im "Applet-Modus" gestartet wird und nicht den vollen Arbeitsspeicher zur Verfügung stehen hat. Allerdings ist es somit möglich, Homebrews aufzurufen, während ein Spiel läuft (bspw. screen-nx um Screenshots hochzuladen oder EdiZon um Cheats zu erstellen).

Die Tasten-Kombination lässt sich in der "/atmosphere/config/override_config.ini" festlegen, siehe Button Overrides.

Overrides

Mithilfe der Overrides ist es möglich, das Verhalten für Atmosphère für bestimmte Anwendungen zu ändern. Mit den Button Overrides (Knopfüberschreibungen) kann bspw. das Überschreibverhalten des Homebrew Menus konfiguriert werden. So kann bspw. eingestellt werden, dass das Homebrew Menu gestartet werden soll, wenn "Y" gedrückt wird, während das Album gestartet wird.

Mit der Hekate Toolbox lassen sich die Button Overrides grafisch direkt auf der Konsole bearbeiten.

Zuerst muss die "/atmosphere/config_templates/override_config.ini" nach "/atmosphere/config/" kopiert und mit einem Texteditor geöffnet werden. Die Datei ist folgendermaßen aufgebaut:

[hbl_config]
Config-Key Wert Beispiel Erklärung
program_id_0 TITLEID 010000000000100D Legt einen Titel fest, für den die nachfolgende Konfiguration gelten soll (in dem Beispiel das Album).
override_key_0 Taste R Knopf, der gedrückt gehalten (oder nicht gehalten) werden soll, um das Homebrew Menu zu starten. In dem Beispiel muss "R" gedrückt gehalten werden, während das Album aufgerufen wird.
override_address_space_0 39_bit, 36_bit oder 32_bit 39_bit Adressraum für den Homebrew Launcher für diesen Titel.

Standard: 39_bit

program_id_1 TITLEID 0100E95004038000 Legt einen weiteren Titel fest, für den die nachfolgende Konfiguration gelten soll (in dem Beispiel Xenoblade Chronicles 2).
override_key_1 Taste !ZL Knopf, der gedrückt gehalten (oder nicht gehalten) werden soll, um das Homebrew Menu zu starten. In dem Beispiel darf "ZL" nicht gedrückt gehalten werden, während Xenoblade Chronicles 2 aufgerufen wird. Wird die Taste dennoch gehalten, wird das Spiel aufgerufen.
override_address_space_1 Siehe oben 39_bit Siehe oben
Bis zu acht verschiedene Konfigurationen werden unterstützt (program_id_0 bis program_id_7 bzw. override_key_0 bis override_key_7 und override_address_space_0 bis override_address_space_7). Wenn "program_id_0" nicht gesetzt ist, sondern nur "override_key_0" bezieht sich die Konfiguration aufs Album. "_0" kann auch weggelassen werden.
override_any_app true oder false true Bestimmt, ob das Homebrew Menu jeden Titel überschreiben soll, egal ob er oben angegeben ist, oder nicht.
override_any_app_key Taste Y Bestimmt, welcher Knopf gedrückt (oder nicht gedrückt) gehalten werden soll, während ein Titel aufgerufen wird (gilt nicht für Applets!), um das Homebrew Menu zu starten, wenn override_any_app auf true steht. In dem Beispiel wird das Homebrew Menu nur aufgerufen, wenn "Y" gedrückt gehalten wird, während ein Spiel gestartet wird. Sind oben spezifische TitleIDs angegeben, sind diese von dieser Konfiguration ausgenommen!

Merkhilfe: "Starte das Homebrew Menu wenn Y gedrückt gehalten wird"

override_any_app_address_space 39_bit, 36_bit oder 32_bit 39_bit Adressraum für den Homebrew Launcher für jeden Titel.

Standard: 39_bit

path Pfad zur hbl.nsp atmosphere/hbl.nsp Pfad zur NSP des Homebrew Loaders
[default_config]
Config-Key Wert Beispiel Erklärung
override_key Taste !X Bestimmt, welcher Knopf gedrückt (oder nicht gedrückt) gehalten werden soll, um LayeredFS (Mods) zu aktivieren. Wird in dem Beispiel "X" gedrückt gehalten, wird LayeredFS für diesen Titel deaktiviert. Ist bspw. nur "ZL" eingestellt, werden Mods nur aktiviert, wenn "ZL" gedrückt gehalten wird.

Merkhilfe: "Aktiviere LayeredFS, wenn X nicht gedrückt gehalten wird"

cheat_enable_key Taste !B Legt fest, welcher Knopf gedrückt (oder nicht gedrückt) gehalten werden soll, um Cheats zu aktivieren. Wird in dem Beispiel "B" gedrückt gehalten, werden Cheats für diesen Titel deaktiviert. Ist bspw. nur "ZR" eingestellt, werden Cheats nur aktiviert, wenn "ZR" gedrückt gehalten wird.

Merkhilfe: "Aktiviere Cheats, wenn B nicht gedrückt gehalten wird"

Tasten

Folgende Tasten stehen für die Button Overrides zur Verfügung. Soll die Funktionalität umgekehrt werden, muss einfach ein Ausrufezeichen davor gesetzt werden (bspw. !Y).

Wert in der INI Steht für
A A-Knopf
B B-Knopf
X X-Knopf
Y Y-Knopf
LS Linker Stick ("L3")
RS Rechter Stick ("R3")
L L-Knopf
R R-Knopf
ZL ZL-Knopf
ZR ZR-Knopf
PLUS Plus-Knopf
MINUS Minus-Knopf
DLEFT Steuerkreuz nach links
DRIGHT Steuerkreuz nach rechts
DUP Steuerkreuz nach oben
DOWN Steuerkreuz nach unten
SL SL-Knopf (einzelner Joy-Con)
SR SR-Knopf (einzelner Joy-Con)

System Settings

In der Datei "/atmosphere/config/system_settings.ini" lassen sich verschiedene Atmosphère-Einstellungen festlegen. Die Datei kann aus "/atmosphere/config_templates/system_settings.ini" kopiert werden und ist wie in der Tabelle zu sehen aufgebaut. Dabei steht der Wert vor dem Ausrufezeichen für den Datentyp und der Wert dahinter für den eigentlichen Wert (im Hexadezimalsystem!).

[eupld]
Config-Key Wert Beispiel Erklärung
upload_enabled 0x0 oder 0x1 u8!0x0 (De-)aktiviert den Telemetrie-Upload zu Nintendo.

0x0 = deaktiviert, 0x1 = aktiviert

[usb]
Config-Key Wert Beispiel Erklärung
usb30_force_enabled 0x0 oder 0x1 u8!0x0 (De-)aktiviert USB-3.0-Superspeed für Homebrews.

0x0 = System-Standard (deaktiviert), 0x1 = aktiviert

[ro]
Config-Key Wert Beispiel Erklärung
ease_nro_restriction 0x0 oder 0x1 u8!0x0 Weist "ro" an, NROs nicht streng zu überprüfen. Darunter fallen Signatur, die Programm-ID und der Typ.[10]

0x0 = deaktiviert, 0x1 = aktiviert

[lm]
Config-Key Wert Beispiel Erklärung
enable_sd_card_logging 0x0 oder 0x1 u8!0x1 (De-)aktiviert das Logging auf die SD-Karte.

0x0 = deaktiviert, 0x1 = aktiviert

sd_card_log_output_directory String str!atmosphere/binlogs Konfiguriert den Pfad, in dem Logs gespeichert werden
[erpt]
Config-Key Wert Beispiel Erklärung
disable_automatic_report_cleanup 0x0 oder 0x1 u8!0x1 Wenn aktiviert, werden automatisch alle "erpt_reports" auf der SD-Karte gelöscht, wenn mehr als 1000 Stück vorhanden sind.

0x0 = deaktiviert, 0x1 = aktiviert

[atmosphere]
Config-Key Wert Beispiel Erklärung
fatal_auto_reboot_interval Unsigned 64-Bit Integer (0x0 bis 0xFFFFFFFFFFFFFFFF) u8!0x1388 Gibt die Zeit in Millisekunden an, nach der im "fatal"-Absturzbildschirm (mit dem Atmosphère-Logo) automatisch neu in einen Payload gestartet werden soll. In dem Beispiel nach fünf Sekunden (1388 Millisekunden in Hex = 5000 Millisekunden = 5 Sekunden).

0x0 = Reboote nie automatisch

power_menu_reboot_function normal, payload,oder rcm str!payload Bestimmt, wie die Konsole neu gestartet werden soll, wenn "Neu starten" unter "Power-Optionen" im Ausschaltmenü gewählt wird.
  • normal = Normaler Reboot in die originale Firmware ohne Atmosphère
  • payload = Startet /atmosphere/reboot_payload.bin (standardmäßig wieder Atmosphère, siehe Reboot-Payload)
  • rcm = Rebootet in den Tegra Recovery Mode, bspw. zum Senden eines Payloads
dmnt_cheats_enabled_by_default 0x0 oder 0x1 0x0 Gibt an, ob alle Cheats standardmäßig aktiviert werden sollen.

0x0 = deaktiviert, 0x1 = aktiviert.
Empfohlen wird "0x0", da es sonst zu Konflikten kommt, wenn alle Cheats eines Spiels auf einmal aktiviert werden (zudem ist es sowieso empfohlen, eine Homebrew wie EdiZon zum Konfigurieren von Cheats zu benutzen).

dmnt_always_save_cheat_toggles 0x0 oder 0x1 0x1 Gibt an, ob der Status von Cheats (aktiviert oder deaktiviert) immer gespeichert werden soll, oder nur, wenn die "Toggle"-Datei (/atmosphere/contents/TITLEID/cheats/toggles.txt) schon existiert.

0x0 = deaktiviert, 0x1 = aktiviert.
Empfohlen wird "0x1", da so der Status von Cheats immer gespeichert wird.

enable_hbl_bis_write 0x0 oder 0x1 0x0 (De-)aktiviert das Schreiben auf die BIS-Partition für Homebrews.

0x0 = deaktiviert, 0x1 = aktiviert.

enable_hbl_cal_read 0x0 oder 0x1 0x0 (De-)aktiviert das Lesen der PRODINFO-Partition für Homebrews (enthält u.a. wichtige konsolenspezifische Schlüssel).

0x0 = deaktiviert, 0x1 = aktiviert.

fsmitm_redirect_saves_to_sd 0x0 oder 0x1 0x0 Ermöglicht das Speichern von Speicherdaten von Spielen auf die SD-Karte, anstatt auf den internen Speicher der Switch.

0x0 = deaktiviert, 0x1 = aktiviert.
Diese Einstellung ist experimentell und kann mit Datenverlust einhergehen! Das bloße Aktivieren dieser Option leitet noch keine Speicherstände um - dies geschicht per Flags auf Titel-basis, siehe Speicherstand-Redirection.

enable_am_debug_mode 0x0 oder 0x1 0x0 Mit dieser Einstellung wird der "DebugModeFlag" für den Applet Manager aktiviert.

0x0 = deaktiviert, 0x1 = aktiviert.

enable_dns_mitm 0x0 oder 0x1 0x1 Mit dieser Einstellung wird dns_mitm aktiviert.

0x0 = deaktiviert, 0x1 = aktiviert.

add_defaults_to_dns_hosts 0x0 oder 0x1 0x1 Stellt Atmosphères Standard-HOSTS-Datei einer eigenen voran, die Telemetrie blockiert. Die Standard-Einträge können auf GitHub gefunden werden.

0x0 = deaktiviert, 0x1 = aktiviert.

enable_dns_mitm_debug_log 0x0 oder 0x1 0x0 Aktiviert den Debug-Log von dns_mitm in /atmosphere/logs/dns_mitm_debug.log.

0x0 = deaktiviert, 0x1 = aktiviert.

enable_htc 0x0 oder 0x1 0x0 Aktiviert Atmosphères Reimplementierung von htc (Host-Target Connection).

0x0 = deaktiviert, 0x1 = aktiviert.

enable_log_manager 0x0 oder 0x1 0x0 Aktiviert Atmosphères Reimplementierung des Log-Managers. Wenn enable_htc auf 0x1 steht, ist dieser immer aktiviert.

0x0 = deaktiviert, 0x1 = aktiviert.

enable_standalone_gdbstub 0x0 oder 0x1 0x1 Aktiviert Atmosphères experimentellen Standalone GDB-Stub zum Debuggen. Dies geschieht auf Port 22225 (mehr dazu).

0x0 = deaktiviert, 0x1 = aktiviert.

enable_external_bluetooth_db 0x0 oder 0x1 0x1 Synchronisiert die Datenbank der verbundenen Bluetooth-Controller auf die SD-Karte in den Pfad SD://atmosphere/bluetooth_devices.db, damit diese zwischen einem Sys- und EmuMMC angeglichen werden kann.

Achtung: Ist das Feature aktiviert, eine Datenbank mit mehr als 10 Controllern gespeichert und eine Firmware < 13.0.0 wird gebootet, wird die Datenbank auf 10 Controller gekürzt.
0x0 = deaktiviert, 0x1 = aktiviert.

[hbloader]
Config-Key Wert Beispiel Erklärung
applet_heap_size Unsigned 64-Bit Integer (0x0 bis 0xFFFFFFFFFFFFFFFF) u8!0x0 Gibt die Größe des dynamischen Speichers an, der Homebrews zugewiesen werden soll, wenn diese als Applet (bspw. über das Album) laufen. Wenn dieser Wert auf 0x0 gesetzt wird, wird der ganze Speicher Homebrews zugewiesen.
applet_heap_reservation_size Unsigned 64-Bit Integer (0x0 bis 0xFFFFFFFFFFFFFFFF) u8!0x8600000 Kontrolliert, wie viel Speicher anderen Applets zur Verfügung stehen soll, während Homebrews im Applet-Modus ausgeführt werden. Hiermit ist es bspw. möglich, das Tastatur- oder Web-Applet neben einer Homebrew ohne Absturz laufen zu lassen. Der Standard-Wert sind ca. 140 MB.

Hat keinen Effekt, wenn applet_heap_size nicht auf 0x0 steht!

stratosphere.ini

Mit der "/atmosphere/config/stratosphere.ini" (früher "BCT.ini" für (Boot Configuration Table) lassen sich Einstellungen festlegen, die beim Start des Systems geladen werden müssen und während der Laufzeit nicht verändert werden dürfen. Sie sollten nur von erfahrenen Usern geändert werden![11]

Zuvor muss die stratosphere.ini aus "/atmosphere/config_templates/stratosphere.ini" kopiert werden.

[stratosphere]
Config-Key Wert Beispiel Erklärung
nogc 0 oder 1 1 Erzwingt das (De-)Aktivieren der NoGC-Patches, welche das Aktualisieren der GameCard-Treiber-Firmware (LOTUS3) verhindern. Dadurch lassen sich auch keine GameCards starten.

0 = NoGC-Patches erzwungen deaktiviert, 1 = NoGC-Patches erzwungen aktiviert
Es gibt keinen Standardwert - Atmosphère versucht standardmäßig selbst mithilfe der Anzahl der gebrannten GameCard-FUSES herauszufinden, ob ein NoGC-Patch notwendig ist.

exosphere.ini

Mit der "/exosphere.ini" lässt sich das Verhalten von Atmosphères Secure Monitor anpassen.[12] Die INI muss vorher aus "/atmosphere/config_templates/exosphere.ini" kopiert werden. Früher befanden sich diese Einstellungen in der BCT.ini.

Config-Key Wert Beispiel Erklärung
debugmode 0 oder 1 1 Signalisiert dem Kernel, dass der Debugging-Mode aktiv ist. Wenn der Debug-Mode deaktiviert ist, wird eventuell der Debugger in zukünftigen Atmosphère-Versionen nicht mehr funktionieren.

0 = Debug-Mode deaktiviert, 1 = Debug-Mode aktiviert (Standard)

debugmode_user 0 oder 1 0 Signalisiert dem Userland, dass der Debugging-Mode aktiv ist.

0 = Debug-Mode im Userland deaktiviert (Standard), 1 = Debug-Mode im Userland aktiviert

disable_user_exception_handlers 0 oder 1 0 Deaktiviert Exception-Handler im Usermode. Dies sorgt dafür, dass Atmosphère bei Fehlern nicht sauber heruntergefahren wird, weshalb ein Aktivieren dieser Option (also das Deaktivieren der Usermode Exception Handler) nicht empfohlen wird.

0 = Usermode Exception Handler sind aktiviert (Standard), 1 = Usermode Exception Handler sind deaktiviert

enable_user_pmu_access 0 oder 1 0 Aktiviert den Zugriff auf die PMU-Register vom Userland aus (Power-Management). Es ist nicht bekannt, was das Aktivieren dieser Option für Auswirkungen auf Spiele, etc. hat.

0 = PMU-Register-Zugriff deaktiviert (Standard), 1 = PMU-Register-Zugriff aktiviert

blank_prodinfo_sysmmc 0 oder 1 0 Wenn diese Option aktiviert ist, wird die PRODINFO-Partition mit wichtigen Hardware-Keys und -Zertifikaten "pseudo-gelöscht", sodass das System keine validen Keys und keine Seriennummer mehr erkennt. Es ist nicht bekannt, ob es sicher ist, dies zu nutzen, da diese Informationen eventuell an anderer Stelle vom System gecached werden. Die eigentliche PRODINFO-Partition wird hierbei nicht angerührt! Auch bekannt als "Incognito".

Achtung: Ab der Firmware 17.0.0 führt die Aktivierung zu einem "Fatal Error", wenn die Konsole mit dem Internet verbunden wird.

0 = Deaktiviert (Standard), 1 = Aktiviert

blank_prodinfo_emummc 0 oder 1 0 Gleiches wie oben, nur für den EmuMMC.

Achtung: Ab der Firmware 17.0.0 führt die Aktivierung zu einem "Fatal Error", wenn die Konsole mit dem Internet verbunden wird.

0 = Deaktiviert (Standard), 1 = Aktiviert

allow_writing_to_cal_sysmmc 0 oder 1 0 Ermöglicht den Schreibzugriff auf die PRODINFO-Partition für Homebrews. Ohne ein sicheres Backup ist das Aktivieren nicht empfohlen, weshalb ein verschlüsseltes Backup im MMC angelegt und jedes Mal verifiziert wird. Schlägt dies fehl, wird der Schreibzugriff weiterhin blockiert. Im EmuMMC ist das Schreiben auf die PRODINFO-Partition immer erlaubt.

0 = Deaktiviert (Standard), 1 = Aktiviert

log_port 0 bis 3 0 Kontrolliert, welcher UART-Port für das Logging verwendet werden soll.

0 = UART-A (Standard), 1 = UART-B, 2 = UART-C, 3 = UART-D

log_baud_rate 0 bis 115200 0 Kontrolliert die Symbolrate, mit der die Logs auf dem eingestellten UART-Port übertragen werden soll.

0 wird als 115200 (Standard) behandelt

log_inverted 0 oder 1 0 Gibt an, ob der Logging UART-Port invertiert ist.

0 = Nein (Standard), 1 = Ja

Sprach- und Regionsemulation

Dr. Kawashimas Gehirn-Jogging für Nintendo Switch auf japanisch auf einer deutsch eingestellten Switch

Atmosphère ermöglicht es, einem Spiel eine andere Region und/oder Sprache vorzutäuschen, ohne diese in den Einstellungen ändern zu müssen. Hierzu muss eine Datei im Pfad "/atmosphere/contents/TITLEID/config.ini" mit folgendem Inhalt erstellt werden:

[override_config]
override_language = SPRACHE
override_region = REGION

Wobei "SPRACHE" und "REGION" durch einen Wert aus den untentstehenden Tabellen ersetzt werden müssen.

Um beispielsweise die Sprache von "Dr. Kawashimas Gehirn-Jogging für Nintendo Switch" auf japanisch zu ändern, muss die Datei "/atmosphere/contents/0100ED000D390000/config.ini" mit folgendem Inhalt erstellt werden:

[override_config]
override_language = ja

Sprachen

Wert Steht für
de Deutsch
en-GB Englisch (Großbritannien)
en-US Englisch (USA)
es Spanisch (Europa)
es-419 Spanisch (Lateinamerika und Karibik)
fr Französisch
fr-CA Französisch (Kanada)
it Italienisch
ja Japanisch
ko Koreanisch
nl Niederländisch
pt Portugiesisch
pt-BR Brasilianisches Portugiesisch
ru Russisch
zh-CN Chinesisch (vereinfacht)
zh-TW Chinesisch (traditionell)
zh-Hans Chinesisch (vereinfacht, ist gleich zh-CN)
zh-Hant Chinesisch (traditionell, ist gleich zh-TW)

Regionen

Wert Steht für
aus Australien
chn China
eur Europa
jpn Japan
kor Südkorea
twn Taiwan
usa USA

Cheats

Atmosphère unterstützt Action-Replay-artige Cheats und ist kompatibel zu Gateshark-Codes. Eine umfangreiche Dokumentation zum Erstellen von Cheats kann im Atmosphère GitHub gefunden werden. Cheats müssen als Textdatei an folgendem Ort auf der SD-Karte platziert werden:

/atmosphere/contents/TITLEID/cheats/BUILD-ID.txt

Die Build-ID des Spiels dient dazu, Cheats für bestimmte Spiele-Versionen zu unterschieden. EdiZon v4 zeigt bspw. die Build-ID des Spiels an. Fertige Cheats lassen sich per EdiZon oder direkt auf GitHub herunterladen.

Es empfiehlt sich noch, in den System Settings "dmnt_cheats_enabled_by_default" auf "0x0" und "dmnt_always_save_cheat_toggles" auf "0x1" zu setzen, da so Cheats selbst per bspw. EdiZon aktiviert werden können und der Cheat-Status immer gespeichert wird. Letztere werden unter "/atmosphere/contents/TITLEID/cheats/toggles.txt" gespeichert.

Standardmäßig werden Cheats aktiviert, wenn ein Spiel gestartet und dabei nicht "L" gedrückt gehalten wird. Dies lässt sich in den Button Overrides unter "cheat_enable_key" ändern.

Splash-Screen

Ein eigener Splash-Screen wird beim Start des Systems angezeigt und muss in die package3 injiziert werden. Dazu steht im Git-Repositorium ein Python-Skript zur Verfügung, welches wie folgt aufgerufen werden muss:

python insert_splash_screen.py customsplash.png pfad/zur/package3

Das Bild sollte eine Auflösung von exakt 1280x720 Pixeln besitzen.

EmuMMC

Ein EmuMMC ist eine getrennte Umgebung des Systems auf der SD-Karte, in der bspw. nur Homebrew ausgeführt werden kann und der normale SysMMC unangetastet bleibt. Geläufig ist auch der Begriff "EmuNAND".

Die Einrichtung eines EmuMMC ist nicht mit Atmosphère möglich - hierfür muss hekate verwendet werden, welches auch automatisch die Konfigurationsdatei schreibt. Wird hekate als Bootloader genutzt, kann auch bequem in den SysMMC gebootet werden, ohne eine Konfigurationsdatei bearbeiten zu müssen. Ansonsten muss "emummc!enabled = 1" in der "emummc/emummc.ini" auf "0" gestellt werden.

erpt

Mithilfe von Atmosphères eigener Reimplementierung von "erpt" (Error Report) werden Crash Reports nicht mehr im System-Speicherstand, sondern auf der SD-Karte im Pfad "/atmosphere/erpt_reports/" angelegt. Dies verhindert das Hochladen dieser zu Nintendo, wenn die Original Firmware gebootet wird.

fatal

Atmosphères "fatal" Absturzbildschirm

"fatal" ist der Absturzbildschirm der Nintendo Switch. Atmosphère überschreibt diesen Service mit einem eigenen, der die Logs auch auf der SD-Karte unter "/atmosphere/fatal_reports/", anstatt im Speicher der Switch speichert. So wird auch verhindert, dass eventuelle Fehler-Logs zu Nintendo hochgeladen werden. Auch besteht die Möglichkeit, per "POWER"-Knopf die Konsole normal neu zu starten (nicht in Atmosphère) oder einen Lautstärkeknopf, um den Reboot-Payload zu starten. "fatal_auto_reboot_interval" kann auch auf einen Wert gesetzt werden, um die Konsole automatisch neu in den Reboot-Payload zu starten.

Nicht zu verwechseln mit dem Pfad "/atmosphere/fatal_errors/", in dem nur Fehlerreports von fusee abgelegt werden.

htc

Atmosphère beinhaltet eine Reimplementierung von "htc", dem "Host-Target Connection" Verbindungsprotokoll. Mit diesem lässt sich mithilfe der PC-Applikation "Starlink" zwischen PC und Switch kommunizieren und bspw. Gameplay streamen. Dieses Feature ist noch nicht fertig und Starlink wurde noch nicht veröffentlicht.

Reboot-Payload

Unter "/atmosphere/reboot_payload.bin" kann ein beliebiger Fusée-Gelée-Payload abgelegt werden, der gestartet werden soll, wenn die Konsole neu gestartet wird (falls in den System Settings power_menu_reboot_function auf payload steht) oder bei einem Reboot über den Absturzbildschirm "fatal". Auch startet die "reboot_to_payload.nro" diesen Payload. Standardmäßig handelt es sich hierbei lediglich um eine Kopie von "fusee.bin".

KIPs

Atmosphère lädt während des Bootvorgans (über Fusèe) alle Kernel-Module ("KIP"-Dateien) aus "/atmosphere/kips/" und "/atmosphere/kips/NAME/", wobei "NAME" durch einen eigenen Namen ersetzt werden kann.

KIP-Patches

Ab Atmosphère v1.7.0 werden KIP-Patches nicht mehr unterstützt.

Mit Atmosphère-Versionen älter als v1.7.0 lassen sich auch bestehende Kernel-Module patchen. Hierfür müssen IPS-Patches in folgendem Ordner platziert werden:

/atmosphere/kip_patches/NAME/

Wobei "NAME" durch einen eigenen Namen ersetzt werden muss. Innerhalb dieser Ordner können mehrere IPS-Patches abgelegt werden, die den Dateinamen des SHA256-Hashes der KIP tragen müssen. Dies wird bspw. für Signatur-Patches eingesetzt.

NRO-Patches

NROs lassen sich mithilfe von IPS/IPS32-Patches auf der SD-Karte patchen, wenn diese in folgendem Pfad liegen:

/atmosphere/nro_patches/NAME/BUILD-ID.ips

Wobei "NAME" durch einen eigenen Namen ersetzt werden muss. Bei der Build-ID können nachgestellte Nullen weggelassen werden.

NSO-Patches

NSOs lassen sich ebenfalls on-the-fly patchen. Dies geschieht in folgendem Pfad mithilfe von IPS-Patches:

/atmosphere/exefs_patches/NAME/BUILD-ID.ips

Wobei "NAME" durch einen eigenen Namen ersetzt werden muss. Bei der Build-ID können nachgestellte Nullen weggelassen werden. Hierbei werden die unkomprimierten NSOs gepatcht. NSOs lassen sich mit SciresM hactool entpacken; damit lässt sich auch die Build-ID herausfinden.

ES-Patches werden als NSO-Patches verteilt.

Flags

Mithilfe von "Flags" lässt sich das Verhalten von Atmosphère bei bestimmten Titeln steuern. Dabei handelt es sich lediglich um leere Textdateien, die in "/atmosphere/contents/TITLEID/flags/" abgelegt werden müssen.

Folgende Flags gibt es:

  • boot2.flag: Weist den Process Manager an, diesen Titeln während des Bootvorgangs zu starten (für Systemmodule)
  • redirect_save.flag: Aktiviert die Speicherstand-Redirection für diesen Titel

LayeredFS

"LayeredFS" ermöglicht es, Dateien von Spielen mit denen aus der SD-Karte auszutauschen, ohne das eigentliche Spiel modifizieren zu müssen. Es ist dabei eine bequeme Art, Spiele-Mods zu nutzen. Das Knopf-Verhalten zum Aktivieren von LayeredFS wird über den "override_key" Button Override gesteuert. Standardmäßig wird LayeredFS immer aktiviert.

ACHTUNG: Der "/atmosphere/contents/" Ordner hieß früher "/atmosphere/titles/". Er wird automatisch umbenannt, wenn eine neue Atmosphère-Version gestartet wird.

RomFS

Um Inhalte im RomFS zu ersetzen, platziere sie mit der gleichen Dateistruktur in:

/atmosphere/contents/TITLEID/romfs/

oder als fertig verpacktes RomFS in /atmosphere/contents/TITLEID/romfs.bin.

HTML-Bedienungsanleitungen

Um die Inhalte in der Bedienungsanleitung zu ändern, platziere sie mit der gleichen Dateistruktur in:

/atmosphere/contents/TITLEID/manual_html/

ExeFS

Um Inhalte im ExeFS zu ersetzen, platziere sie mit der gleichen Dateistruktur in:

/atmosphere/contents/TITLEID/exefs/

oder als fertig verpacktes ExeFS in /atmosphere/contents/TITLEID/exefs.bin.

Um das Laden einer NSO zu verhindern, muss diese mit dem gleichen Dateinamen plus der Endung ".stub" im obigen ExeFS-Verzeichnis platziert werden. Also bspw.:

/atmosphere/contents/TITLEID/exefs/main.stub

Speicherstand-Redirection

Speicherstände lassen sich als experimentelles Feature auf die SD-Karte umleiten. Dabei müssen zwei Bedingungen erfüllt sein:

  • fsmitm_redirect_saves_to_sd muss in den System Settings auf 0x1 gesetzt sein
  • Der redirect_save.flag Flag muss in /atmosphere/contents/TITLEID/flags/ existieren

Speicherstände werden in "/atmosphere/saves/" abgelegt, getrennt nach Sys- und EmuMMC. Es wird ein neuer Speicherstand erstellt, wenn keiner existiert - es wird also nicht der aus dem internen Speicher kopiert!

dns_mitm

Mit dem Atmosphère-eigenen Systemmodul dns_mitm lassen sich DNS-Abfragen manipulieren. Die Funktionalität wird dabei durch die System Settings gesteuert. Standardmäßig werden Nintendos Telemetrie-Server blockiert.

Folgende Pfade werden nacheinander geladen, wobei beim ersten Fund keine weitere mehr beachtet wird:

  • Nur im EmuMMC: /atmosphere/hosts/emummc_%04lx.txt (formatiert mit der Nummer des EmuMMC aus der emummc.ini)
  • Nur im EmuMMC: /atmosphere/hosts/emummc.txt
  • Nur im SysMMC: /atmosphere/hosts/sysmmc.txt
  • Beide MMCs: /atmosphere/hosts/default.txt (wird mit Standard-Einträgen erstellt, falls noch nicht existent)

Die Standard-Einträge von Atmosphère werden eigenen Einträgen vorangestellt. Diese sehen zurzeit so aus:[13]

# Nintendo telemetry servers
127.0.0.1 receive-%.dg.srv.nintendo.net receive-%.er.srv.nintendo.net

Um eigene Einträge hinzuzufügen, muss eine Textdatei an einer der oben genannten Stellen erstellt werden. Die erste Spalte enthält die Ziel-IP, gefolgt von den umzubiegenden Domains. Um bspw. "wiidatabase.de" auf "8.8.8.8" umzuleiten, müsste die HOSTS-Datei so aussehen:

8.8.8.8 wiidatabase.de

Folgende spezielle Zeichen lassen sich zusätzlich in der Domain nutzen:

  • * ist ein Wildcard-Zeichen, welches beliebig viele Zeichen (auch null) matcht
  • % wird durch das Ergebnis von nsd!environment_identifier ersetzt, welches auf Produktivgeräten immer lp1 ausgibt

Um beispielsweise alle Einträge aller Seiten, die mit "wii" anfangen und auf ".de" enden auf "8.8.8.8" weiterzuleiten, kann folgende HOSTS-Datei benutzt werden:

8.8.8.8 wii*.de

Dies wirkt sich sowohl auf "wii.de", als auch auf "wiidb.de" und "wiidatabase.de" aus.

Beim Start wird die geladene Hosts-Datei mitsamt aller geparsten Einträge nach /atmosphere/logs/dns_mitm_startup.log geloggt. Wenn das Logging in der system_settings.ini aktiviert wurde, werden zusätzlich alle DNS-Abfragen (plus ob Weiterleitungen angewendet wurden) in /atmosphere/logs/dns_mitm_debug.log geloggt.

Nintendo- und Update-Server blockieren

Um 90DNS nachzuahmen und alle Nintendo- und Update-Server zu blockieren, können die folgenden Host-Einträge benutzt werden (Achtung, enable_dns_mitm muss auf "0x1" stehen!):[14]

# 90DNS
127.0.0.1 *nintendo.com
127.0.0.1 *nintendo.net
127.0.0.1 *nintendo.jp
127.0.0.1 *nintendo.co.jp
127.0.0.1 *nintendo.co.uk
127.0.0.1 *nintendo-europe.com
127.0.0.1 *nintendowifi.net
127.0.0.1 *nintendo.es
127.0.0.1 *nintendo.co.kr
127.0.0.1 *nintendo.tw
127.0.0.1 *nintendo.com.hk
127.0.0.1 *nintendo.com.au
127.0.0.1 *nintendo.co.nz
127.0.0.1 *nintendo.at
127.0.0.1 *nintendo.be
127.0.0.1 *nintendods.cz
127.0.0.1 *nintendo.dk
127.0.0.1 *nintendo.de
127.0.0.1 *nintendo.fi
127.0.0.1 *nintendo.fr
127.0.0.1 *nintendo.gr
127.0.0.1 *nintendo.hu
127.0.0.1 *nintendo.it
127.0.0.1 *nintendo.nl
127.0.0.1 *nintendo.no
127.0.0.1 *nintendo.pt
127.0.0.1 *nintendo.ru
127.0.0.1 *nintendo.co.za
127.0.0.1 *nintendo.se
127.0.0.1 *nintendo.ch
127.0.0.1 *nintendoswitch.com
127.0.0.1 *nintendoswitch.com.cn
127.0.0.1 *nintendoswitch.cn
95.216.149.205 *conntest.nintendowifi.net
95.216.149.205 *ctest.cdn.nintendo.net

Daybreak

Daybreak

Mithilfe der enthaltenen Applikation "Daybreak" lassen sich System-Updates sowohl zum Up-, als auch zum Downgraden verwenden. Hierbei wird der Atmosphère-Service "ams:su" verwendet, der die gleiche Logik wie Nintendos Shell zur Installation von Updates über eine Game Card benutzt. Die Update-NCAs werden dabei aus einem beliebigen Ordner auf der SD-Karte installiert, optional lässt sich der exFAT-Treiber mitinstallieren. Die ".cmnt" muss hierbei aber in ".cnmt.nca" umbenannt werden, was bspw. per Skript erledigt werden kann.

Häufig gestellte Fragen

Blackscreen nach System-Update

Dies kann mehrere Ursachen haben:

  • Atmosphère ist nicht aktuell
  • Nicht alle Dateien von Atmosphère wurden beim Kopieren auf die SD-Karte ersetzt
  • Atmosphère ist noch nicht kompatibel mit der aktuellen Firmware
  • Ein Custom-Theme wurde installiert - hierfür die Ordner "/atmosphere/contents/0100000000001000" und "/atmosphere/contents/0100000000001013" entfernen.
  • Ein inkompatibles Systemmodul ist installiert - in dem Falle empfiehlt es sich, den ganzen Ordner "/atmosphere/contents/" temporär wegzuverschieben

GameCards starten nicht mehr

Dies passiert, wenn von einer niedrigeren Firmware aktualisiert wurde und die neue Firmare den GameCard-Treiber aktualisiert. Um ein Downgrade zu verhindern, werden hier ebenfalls eFuses "gebrannt", was bedeutet, dass die Aktualisierung des Treibers blockiert wird. Der Grund ist der, dass ein späteres Downgrade dazu führen würde, dass GameCards auf der niedrigeren Firmware nicht mehr abgespielt werden können.

Um dies zu beheben, muss einfach einmalig die Original-Firmware gestartet werden. Dies führt aber zu oben erwähntem Nachteil.

Controller-Eingaben in Homebrews werden nicht erkannt

Mit der Firmware 9.0.0 wurden die HID-Komponenten für Controller so sehr geändert, dass libnx (die Bibliothek zum Bauen von Switch-Homebrews) keine Controller-Eingaben mehr erkennt. Dieses Problem wurde zwar in neueren libnx-Versionen behoben, allerdings müssen Homebrews mit der neuen libnx-Version neu gebaut werden. Da nicht jede Homebrew sofort aktualisiert wird/werden kann, wurde als Übergang ein temporäres Modul eingeführt, welches das Problem behebt.[15] Mit Atmosphère v0.10.2 wurde es allerdings standardmäßig deaktiviert[16] und mit v0.18.0 gänzlich entfernt.[17]

Zurzeit besteht kein Workaround; die Anwendung muss vom Entwickler angepasst oder (falls möglich) mit einer neueren Version von libnx kompiliert werden.

Trivia

  • SX OS verwendet als Basis Atmosphère (siehe auch SX OS#Kopierter Atmosphère-Code und Lizenzverstoß)
  • Am 03. Juli 2020 ließ Nintendo die Download-Seite von WiiDatabase.de aus den Google-Suchergebnissen entfernen.[18]
  • Obwohl der Quellcode von Atmosphère unter der GPLv2 freigegeben ist, gibt es zwei Ausnahmen von dieser Lizenz:[19]
    • Die Emulatoren yuzu und Ryujinx dürfen Atmosphère-Code kopieren und unter der GPLv2 oder aktueller oder unter der MIT-Lizenz freigeben
    • Nintendo darf den Code von Atmosphère unter den Bedingungen der Null-Klausel BSD-Lizenz verwenden (im Grunde genommen Public Domain, aber mit Haftungsausschluss)

Einzelnachweise