Atmosphère V0.8.4 Released With Firmware Support 7.0.0 And 7.0.1

New full-bodied update for Atmosphère released a few hours ago by SciresM with the new version 0.8.4 that supports firmware 7.0.0 and 7.0.1  . As always to install this new update, just unzip the ZIP file in the SD and send the fusee- primary.bin to the switch via Fusée Gelée or by creating your own customized package via this site  (using Kosmos, decompressing and copying Atmosphere 0.8.4 files in the sd folder). Continue reading the article for the set of available functions and the complete changelog of this version.

Components

Atmosphère consists of several components, each of which replaces / modifies a different component of the system:

  • Fusée: First-level loader, responsible for loading and validating phase 2 (custom TrustZone) plus package 2 (sysmodules Kernel / FIRM) and the related patch if necessary. This replaces all features normally in Package1loader / NX Bootloader.
  • Exosphère: Custom TrustZone, to run a personalized secure monitor
  • Thermosphère: ELu EmuNAND support, ie backup and use of virtualized / redirected NAND images
  • Stratosphère: Custom Sysmodule (s), both in Rosalina style to extend the kernel / provide new features and loader reimplementation style to hook important actions of the system
  • Troposphère: patch of Horizon application-level operating system, used to implement the desirable CFW features

FUNCTIONS

  • Fusée  , a customized bootloader.
    • Supports loading / customizing arbitrary KIPs from the SD card.
    • Supports kernel patches defined at compile time on a per-firmware basis.
    • Configurable by modifying BCT.ini on the SD card.
    • Atmosphère should also be  sucked into by the  alternative hekate  bootloader  , for those who prefer it.
  • exosphere  , a complete personalized secure monitor.
    • Exosphere is a re-implementation of Nintendo’s TrustZone firmware, which completely replicates all of its features.
    • It has also been extended to provide information on the current version of the Atmosphere API, for homebrews wishing to use it.
  • Stratosphere  , a set of customized system modules. This includes:
    • loader system module  .
      • Reimplementation of the Nintendo loader, completely replicating all the original features.
      • Extended to support arbitrary redirection of the executable content on the SD card.
        • The files will be loaded preferentially /atmosphere/titles/<titleid>/exefs/ , if any.
        • The files present in the originalexef that a user wants to mark as not present can be “stub” by creating a .stub file on the SD card.
        • If present, a PFS0 /atmosphere/titles/<titleid>/exefs.nsp will completely replace the original exef on 2.0.0+
        • Redirection will be optionally modifiable by holding down certain buttons.
      • Full support for patching NSO content is implemented.
        • /atmosphere/exefs_patches/<user-defined patch name>/<Hex Build-ID for NSO to patch>.ips All patches will be applied on similar paths, allowing easy distribution of patches that support multiple versions and / or firmware titles.
        • Both IPS and IPS32 formats are supported.
      • Extended to support the launch of content from free executable files on the SD card, without requiring any official installation.
        • This is done by specifying  FsStorageId_Noneat startup.
    • A system module of the  service manager  .
      • Reimplementation of the Nintendo service manager, completely replicating all the original features.
      • Support during compilation for the reintroduction of “smhax”, which allows the client to optionally skip the verification of access to services by skipping the initialization.
      • Extended to allow homebrew to acquire more privileged services than allowed by Nintendo.
      • Extended to add a new API for installing Man-In-The-Middle listeners for arbitrary services.
        • The API can also be used to safely detect if a service has been registered in a non-blocking manner without any side effects.
        • Full documentation of incoming APIs.
    • A system module of the  process manager  .
      • Reimplementation of the process manager of Nintendo, completely replicating all the original features.
      • Extended to allow homebrews to acquire handles for arbitrary processes and then read / modify system memory without blocking execution.
      • Extended  including  a complete and extensive implementation of the boot2 system  module  of the Nintendo .
        • The title launch order has been optimized to allow access to the SD card more quickly.
        • The error collection system module does not start intentionally, preventing the generation of many system telemetry error reports.
        • Users can insert their own custom sysmodules onto the SD card and mark them to boot up automatically by creating a file /atmosphere/titles/<title ID>/boot2.flagon their SD card.
    • A  custom fs.mitm system  module .
      • Use Atmosphère’s MitM API to provide users with a simple means of modifying game content.
      • It intercepts all the FS commands sent by the games, with a special management for the commands used to mount RomFS / DLC content to allow easy creation and distribution of game / DLC mods.
        • fs.mitm will analyze the basic RomFS image for a game, a ROMFS image in which they are located  /atmosphere/titles/<title ID>/romfs.binand all /atmosphere/titles/<title ID>/romfs/unused files  and merge them into a single RomFS image.
          • When merging, bulk files are preferred to content in the image of the SD card romfs.bin and files from the SD card image are preferred to those in the base image.
      • It can also be used to intercept commands sent by arbitrary system titles (except those launched before the SD card is active), creating a  /atmosphere/titles/<title ID>/fsmitm.flagfile on the SD card.
    • A custom system  report abnormal crash report  .
      • It works as a replacement for the Nintendo Creport system module.
      • Generate detailed and human readable reports on system crashes by saving in  /atmosphere/crash_reports/<timestamp>_<title ID>.log.
      • Because the reports are not sent to the  erptsysmodule, it disables all the telemetry related to the crash report.
  • Improvements to the overall stability of the system to improve the user experience.

In anticipation

There are a number of features planned to include Atmosphère which will not be available for version 0.7. As they are implemented, the release version of Atmosphère will go from 0.7 to 0.8 to 0.9 and finally 1.0.

These currently scheduled features include (but are not limited to):

  • Thermosphère , an emunand hypervisor-based implementation.
  • A set of feature-rich debugging tools (a component of Stratosphère).
    • A  custom debug monitor system module  , which provides an API for debugging Switch processes. It may not be a reimplementation of the Nintendo debugging monitor.
      • This should include a gdbstub implementation, possibly borrowed from Luma3DS.
      • This API should be further usable for the purposes of modifying the RAM / “Cheat Engine”.
    • A  custom shell system module  , which provides users with a means to run various RPCs (with support for common / interesting features) on their Switch remotely. It may not be a reimplementation of the Nintendo shell.
      • This should support client connections on both Wi-Fi and USB.
    • A  custom registration system module  , which provides a means for other Atmosphère components (and possibly for Nintendo system modules) to record debug output.
      • This should support access to the SD card, via Wi-Fi and via USB.
  • An application level plugin system.
    • Ideally, this will work somehow like the NTR-CFW plugin system on the 3DS, allowing users to run their own code in the process of a game in their own thread.
  • An AR Code / Gameshark analog implementation, which allows easy sharing / development of cheat codes to be performed on the device.
  • Further extensions to the existing Atmosphère components.
  • Improvements to the overall stability of the system to improve the user experience.

Changelog

V0.8.4

  • Support for 7.0.0 / 7.0.1 has been added.
    • This is facilitated by a new payload,  septwhich can be signed, encrypted and then loaded by Nintendo’s TSEC firmware.
    • septwill get the keys needed to start the new firmware, then load  sept/payload.binthe SD card and jump on it.
  • The recognition of applications for override / mitm has been improved.
    • The official Nintendo ID title interval (  0x0100000000000000–  0x01FFFFFFFFFFFFFF) is now applied.
  • A deadlock condition has been resolved involving the sysmodules of libstratosphere mitm.
  • Kernel patches have been added for JIT support (Thanks,  @ m4xw  !).
    • These loosen the restrictions on the caller process in svcControlCodeMemory.
  • set.mitmand  fs.mitmhave been merged into a single  ams_mitmsysmodule.
    • This allows you to save a process ID, allowing users to perform an additional process up to the limit of the 0x40 process.
  • bpc.mitmcomponent has  been added, which performs a custom behavior to shutdown / restart requests  amor applications.
    • Performing a restart from the restart menu now restarts into the atmosphere. This can be configured via  system_settings.ini.
    • Performing a shutdown from the restart menu now works correctly with AutoRCM and does a real shutdown.
  • Improvements to the overall stability of the system to improve the user experience.

For information on the feature set supported by 0.8.0, see  the official release notes  .

v0.8.3

  • A custom hotboot firmware has been implemented, which does not perform fuse anti-downgrade checks.
    • This solves the suspend mode when using a reduced NAND.
    • This also removes the final dependence of Atmosphère from Nintendo’s encrypted PK11 track; all components are now re-implemented.
  • The ExternalContentSource API has been modified so that it is not deleted if an error occurs.
  • Content override now supports an “app” setting that causes all applications to be replaced with HBL rather than with a specific title.
    • Note: Because the override keys are system-wide, using this setting will prevent the use of mods in games (since each game will be HBL).
  • Fixed an error that caused an unrecoverable error when svcBreak was called on 5.0.0+.
  • An extension to set.mitm has been added to support customizing system settings.
    • These are checked by  atmosphere/system_settings.ini, see  here  for the documentation.
    • By default, it is used to disable error reporting loading and enable USB 3.0 superspeed when possible.
  • An extension to sm was added, adding a new  sm:dmntservice.
    • It can be used by a debug monitor to debug the registration status of various other services.
  • A bug has been fixed in the MitM API that sometimes could cause a system hang during bootup.
  • A change was made to the MitM API: in cases where sm would return 0xE15 during the installation of a mitm service, it now returns the result (following the GetService semantics).
  • Support for boot in maintenance mode by pressing and holding * / – was added to PM.
  • An extension has been added to Exosphere, adding a custom SMC that allows DMA in IRAM.
  • In addition, smcGetConfig was extended on reboot on an IRAM payload at 0x40010000 when ConfigItem 65001 is set to 2.
    • Fatal will now use this to restart sdmc: /atmosphere/reboot_payload.bin if present, when a vol button is pressed.
    • An example of homebrew was also written (“reboot_to_payload”) and is now included in Atmosphère.
  • Improvements to the overall stability of the system to improve the user experience.

v0.8.2

  • A number of bugs have been solved for users who sometimes saw  Key Derivation Failed!.
    • The KFUSE clock enable timings have been adjusted to allow time to stabilize before TSEC is granted access.
    • A race condition has been resolved which may result in the use of incorrect key data in 6.2.0
    • The TSEC firmware is now retried in case of an error, resolving an error involving ~ 1/50 downloads in 6.2.0.
  • A bug was fixed that caused some modules to fail on firmware 1.0.0.
  • Fixed a bug that caused sleep mode to fail with debugmode enabled.
    • As a result, debugmode is now enabled in the default BCT.ini.
  • Improvements to the overall stability of the system to improve the user experience.

v0.8.1

  • A bug was fixed that caused users to see  Failed to enable SMMU!if the fusee had previously been restarted.
    • This message still occurs sporadically if the fusee is not started by coldboot, but it can never happen twice in a row.
  • A race condition was solved in the Atmosphere functionality  bis_protect that could cause NS to overwrite the BCT public keys.
    • This sometimes corrupted AutoRCM protection, the current fix has been tested on hardware and verified to work.
  • Support for enabling by  debugmodethe section  exosphereof  BCT.ini:
    • The setting  debugmode = 1will cause Exosphere to tell the kernel that debugmode is active.
    • The setting  debugmode_user = 1will cause exosphere to inform the user that debug mode is active.
    • These are completely independent of each other, allowing precise control of the behavior of the system.
  • Feature support has been added nogc; thanks to  @rajkosto  for the patches.
    • By default, patches  nogcare automatically applied if the user boots into 4.0.0+ with fuses from <= 3.0.2.
    • Users can ignore this feature by using the entry nogcin the section  stratosphereof  BCT.ini:
      • The setting  nogc = 1will force patch activation  nogc.
      • The setting  nogc = 0will force the disabling patches  nogc.
    • If patches are enabled but not found for the boot system, a fatal error will be generated.
      • This should prevent FS from running without a patch  nogcafter upgrading to an unsupported system version.
  • An extension has been added to  exosphereallow userland applications to restart the system in RCM:
    • This is done by calling the user  smcSetConfig(id=65001, value=<nonzero>);that homebrew can use  splSetConfigfor this.
  • In the event of a fatal error, the user can now choose to perform a standard restart via the power button or restart in RCM via the volume button.
  • A custom message has been added  fatalfor when a mismatch of the Atmosphère API version (2495-1623) is detected.
  • Improvements to the overall stability of the system to improve the user experience.

v0.8.0

  • A custom “fatal” system module has been added.
    • This re-implements and extends the Nintendo fatal module, with the following features:
      • Atmosphère  fataldoes not create error reports.
      • Atmosphère  fataldraws a custom error screen, showing the logs and a backtrace.
      • fatal Atmosphère attempts  to gather debugging information for all crashes and not just those that include information.
      • Atmosphère  fatalwill attempt to save the reports on the SD if an abnormal crash report has not been generated  creport.
  • The management of the title flag has been changed to avoid the clutter of the folders.
    • Instead of using  atmosphere/titles/<tid>/%s.flag, the flags now lie inatmosphere/titles/<tid>/flags/%s.flag
      • The old format will continue to be supported for some time, but it is deprecated.
    • Flags can now be applied to HBL by placing them on  atmosphere/flags/hbl_%s.flag.
  • Changes have been made to the mitm API, greatly improving the caller’s semantics.
    • sm now informs the mitm services of a process id of a new session, enabling custom management based on process id / title.
  • smhax is no longer enabled, because it is no longer necessary and interrupts meaningful functionality.
    • Users with updated HBL / homebrews should not see observable differences due to this change.
  • Features have been added that implement the basic protections for NAND from userland homebrew:
    • BOOT0 now has write protection for the BCT public key and keyblob regions.
      • The sysmodule nsis no longer authorized to write BCT public keys
        • This should prevent system updates from removing AutoRCM.
      • No process should be allowed to write in the keyblob region.
    • By default, BIS partitions other than BOOT0 are now read-only and CAL0 is neither readable nor writable.
      • Adds a flag  bis_writefor a title that will allow him to write in BIS.
      • Adding a flag  cal_readfor a title that will allow you to read CAL0.
    • An automatic backup is now done by CAL0 at startup.
      • fs.mitm keeps a file handle for this backup, so the software for the user can not read it.
    • To facilitate this, it  fs.mitmnow mitigates all sessions for non-system modules; the override of the contents was separated from the interception of the service.
    • Note: these protections are fundamental and a sufficiently malevolent homebrew  can defeat it  .
      • Please be careful to run only homebrew software from trusted sources.
  • Fixed a bug related to HDCP titles that were stuck on the latest firmware.
  • Support for the 6.2.0 version of the system has been added; our thanks to  @motezazer  for his invaluable help.
    • By default, the new keys will be automatically derived without user input.
    • Support for uploading new keys from atmosphere/prod.keysor is also available atmosphere/dev.keys
  • Improvements to the overall stability of the system to improve the user experience.

v0.7.5

  • DRAM training was added to the fusee-secondary, thanks to  @hexkyz  .
    • This greatly improves the memory access speed during startup, resulting in a ~ 200-400% faster startup time.
  • creport had its detection of the improved code region.
    • Instead of checking only one of the PC / LRs of the thread that crashes due to the presence of the code region, creport now controls both + each address in the stacktrace.
      • This corresponds to the improvement made by Nintendo to the official version in 6.1.0.
    • The detection region heuristic of the code region has been further improved by checking if an address points to .rodata or .rwdata, instead of just the .text file.
    • This means that an abnormal crash is displayed in a region of NRO code loaded (or otherwise discontinuous), Creport will be able to detect all active code regions and not just that one.
  • Improvements to the overall stability of the system to improve the user experience.

V0.7.4

  • libstratosphere  has been completely rewritten and divided into a separate submodule.
    • Although this is mainly “under the hood” for end users, refactoring is faster (improving both startup and runtime performance), more accurate (many of the internal IPC structures are now bug-for-bugs compatible with Nintendo implementations) and significantly more stable (solves a large number of bugs in the old library).
    • The refactored API is significantly cleaner and easier to write for the system module code, which should improve / accelerate the development of the stratosphere.
    • Developers who want to write their own custom system modules for the Switch can now easily include libstratosphere as a submodule in their projects.
  • Loader has been extended to add a new generic way to redirect content (ExternalContentSources), courtesy  @ misson20000  :
    • A new command has been added to ldr: shel, including a tid to redirect and return a session handle.
    • When the requested TID is loading, Loader will query the handle as if it were an IFileSystem.
      • This allows customers to generally define their filesystems and overwrite the content with them in the loader.
  • fs.mitm has obtained several optimizations that should improve its performance and stability:
    • RomFS redirection now only occurs when there is some content to redirect, even if the title is melded elsewhere.
    • An active data store cache, if any, is retained for all open title IDs. This means that if two processes both try to open the same archive, fs.mitm will not duplicate any of its jobs.
    • The RomFS metadata is now cached on the SD card on build instead of being kept in memory – this significantly reduces memory footprint and allows fs.mitm to redirect multiple titles simultaneously than before.
  • Numerous bugs have been fixed, including:
    • A loss of resources has been resolved during the creation of the process. This solves the crashes that occur when a large number of games (> 32) have been launched since the last reboot.
    • fs.mitm no longer has errors when receiving a zero-size buffer. This solves crashes in some games, including The Messenger.
    • Multi-thread server semantics should no longer cause deadlocks under certain circumstances. This solves crashes in some games, including NES Classics.
    • Now PM only provides full permissions for the active KIPs. This solves a potential crash in which new processes may not be able to be registered with FS.
  • The  make disttarget now includes the branch in the generated zip name.
  • Improvements to the overall stability of the system to improve the user experience.

V0.7.3

  • Loader and fs.mitm now try to reload loader.ini before reading it. This allows you to change the combination of overwrite keys / HBL title IDs at runtime.
  • Added a MitM between set: sys and qlaunch, used to overwrite the system version string displayed in the system settings.
    • System settings will now be displayed  <Actual version> (AMS <x>.<y>.<z>).
  • Improvements to the overall stability of the system to improve the user experience.

V0.7.2

  • Fixed a bug in the LayeredFS read implementation of fs.mitm that caused some games to crash while trying to read the files.
  • Fixed an issue regarding firmware 1.0.0 which caused crashes of fatal games 2001-0106 at startup.
  • Improvement of file names by the target make dist.
  • Improvements to the overall stability of the system to improve the user experience.

v0.7.1

  • Fixed a bug that prevented consoles in 4.0.0-4.1.0 from going to sleep and waking up the backup.
  • Fixed a bug that prevented consoles of <4.0.0 from booting without specific KIPs to the SD card.
  • An API has been added to the Atmosphère Service Manager to postpone the acquisition of all specific services until the initialization is complete.
  • Improvements to the overall stability of the system to improve the user experience.

Download

Source
Github