Skip to content

Releases: Atmosphere-NX/Atmosphere

Atmosphère 0.11.1

15 Apr 08:39
Compare
Choose a tag to compare

0.11.1 is Atmosphère's thirtieth official release.

fusee-primary was last updated in: 0.11.1.

With thanks to the @switchbrew team, Atmosphère 0.11.1 is bundled with hbl 2.3.1, and hbmenu 3.3.0.

The following was changed since the last release:

  • A bug was fixed that could cause owls to flicker under certain circumstances.
    • For those interested in technical details, in 10.0.0 kernelldr/kernel no longer set cpuactlr_el1, assuming that it was set correctly by the secure monitor.
    • However, exosphere did not set cpuactlr_el1. This meant that the register held the reset value going into boot.
    • This caused a variety of highly erratic symptoms, including causing basically any game to crash seemingly randomly.
  • A number of other major inaccuracies in exosphere were corrected.
  • General system stability improvements to enhance the user's experience.

The changelog for the previous release, 0.11.0 is as follows:

  • Support was added for 10.0.0.
    • Exosphere has been updated to reflect the new key import semantics in 10.0.0.
    • kernel_ldr now implements physical ASLR for the kernel's backing pages.
    • Loader, NCM, and PM have been updated to reflect the changes Nintendo made in 10.0.0.
    • Creport was updated to use the new pgl service to terminate processes instead of ns:dev.
  • A reimplementation of the erpt (error reports) system module was added.
    • In previous versions of Atmosphere, a majority of error reports were prevented via a combination of custom creport, fatal, and stubbed eclct.
    • However, error reports were still generated via some system actions.
      • Most notably, any time the error applet appeared, an error report was generated.
      • By default, atmosphere disabled the uploading of error reports, but going online in OFW after an error report occurred in Atmosphere could lead to undesirable telemetry.
    • Atmosphere's erpt reimplementation allows the system to interact with existing error reports as expected.
    • However, all new error reports are instead saved to the sd card (/atmosphere/erpt_reports), and are not committed to the system savegame.
      • Users curious about what kind of telemetry is being prevented can view the reports as they're generated in there.
      • Reports are saved as msgpack (as this is what Nintendo uses).
    • Please note, not all telemetry is disabled. Play reports and System reports will continue to function unmodified.
    • With atmosphere's erpt implementation, homebrew can now use the native error applet to display errors without worrying about generating undesirable telemetry.
  • libstratosphere and libvapours received a number of improvements.
    • With thanks to @Adubbz for his work, the NCM namespace now has client code.
      • This lays the groundwork for first-class system update/downgrade homebrew support in the near future.
    • In particular, code implementing the os namespace is significantly more accurate.
    • In addition, Nintendo's allocators were implemented, allowing for identical memory efficiency versus Nintendo's implementations.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.11, please see the official release notes.

Atmosphère 0.11.0 (pre-release)

14 Apr 21:33
Compare
Choose a tag to compare
Pre-release

0.11.0 is Atmosphère's twenty-ninth official release.

fusee-primary was last updated in: 0.11.0.

With thanks to the @switchbrew team, Atmosphère 0.11.0 is bundled with hbl 2.3.1, and hbmenu 3.3.0.

Please note: Atmosphère 0.11.0 is currently in pre-release.

  • If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
  • 0.11.0 will transition to release after a short amount of time has passed without pressing bug reports.

The following was changed since the last release:

  • Support was added for 10.0.0.
    • Exosphere has been updated to reflect the new key import semantics in 10.0.0.
    • kernel_ldr now implements physical ASLR for the kernel's backing pages.
    • Loader, NCM, and PM have been updated to reflect the changes Nintendo made in 10.0.0.
    • Creport was updated to use the new pgl service to terminate processes instead of ns:dev.
  • A reimplementation of the erpt (error reports) system module was added.
    • In previous versions of Atmosphere, a majority of error reports were prevented via a combination of custom creport, fatal, and stubbed eclct.
    • However, error reports were still generated via some system actions.
      • Most notably, any time the error applet appeared, an error report was generated.
      • By default, atmosphere disabled the uploading of error reports, but going online in OFW after an error report occurred in Atmosphere could lead to undesirable telemetry.
    • Atmosphere's erpt reimplementation allows the system to interact with existing error reports as expected.
    • However, all new error reports are instead saved to the sd card (/atmosphere/erpt_reports), and are not committed to the system savegame.
      • Users curious about what kind of telemetry is being prevented can view the reports as they're generated in there.
      • Reports are saved as msgpack (as this is what Nintendo uses).
    • Please note, not all telemetry is disabled. Play reports and System reports will continue to function unmodified.
    • With atmosphere's erpt implementation, homebrew can now use the native error applet to display errors without worrying about generating undesirable telemetry.
  • libstratosphere and libvapours received a number of improvements.
    • With thanks to @Adubbz for his work, the NCM namespace now has client code.
      • This lays the groundwork for first-class system update/downgrade homebrew support in the near future.
    • In particular, code implementing the os namespace is significantly more accurate.
    • In addition, Nintendo's allocators were implemented, allowing for identical memory efficiency versus Nintendo's implementations.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.11, please see the official release notes.

Atmosphère 0.10.5

19 Mar 01:37
Compare
Choose a tag to compare

0.10.5 is Atmosphère's twenty-eighth official release.

fusee-primary was last updated in: 0.10.4.

With thanks to the @switchbrew team, Atmosphère 0.10.5 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • Changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
    • Building romfs metadata previously had a memory cost of about ~4-5x the file table size.
    • This caused games that have particularly enormous file metadata tables (> 4 MB) to exhaust fs.mitm's 16 MB memory pool.
    • The code that creates romfs images was thus changed to be significantly more memory efficient, again.
    • Memory requirements have been lowered from ~4x file table size to ~2x file table size + 0.5 MB.
    • There is a slight speed penalty to this, but testing on Football Manager 2020 only took an extra ~1.5 seconds for the game to boot with many modded files.
      • This shouldn't be noticeable thanks to the async changes made in 0.10.2.
    • If you encounter a game that exhausts ams.mitm's memory (crashing it) when loading layeredfs mods, please contact SciresM.
      • Romfs building can be made even more memory efficient, but unless games show up with even more absurdly huge file tables it seems not worth the speed trade-off.
  • A bug was fixed that caused Atmosphere's fatal error context to not dump TLS for certain processes.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10, please see the official release notes.

Atmosphère 0.10.4

10 Mar 01:15
Compare
Choose a tag to compare

0.10.4 is Atmosphère's twenty-seventh official release.

fusee-primary was last updated in: 0.10.4.

With thanks to the @switchbrew team, Atmosphère 0.10.4 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • With major thanks to @Adubbz for his work, the NCM system module has now been re-implemented.
    • This was a major stepping stone towards the goal of having implementations of everything in the Switch's package1/package2 firmware.
    • This also lays the groundwork for libstratosphere providing bindings for changing the installed version of the Switch's OS.
    • Please Note: The NCM implementation will initially be opt-in.
      • The Atmosphere team is confident in our NCM implementation (and we have tested it on every firmware version).
      • That said, this is our first system module that manages NAND savegames -- and caution is a habit.
      • We do not anticipate any issues that didn't come up in testing, so this is just our being particularly careful.
      • Users interested in opting in to using our implementation should set stratosphere!ncm_enabled = 1 in BCT.ini.
        • In the unlikely event that any issues are encountered, please report them to @SciresM.
      • The NCM implementation will stop being opt-in in a future update, after thorough testing has been done in practice.
  • A bug was fixed in emummc that caused Nintendo path to be corrupted on 1.0.0.
    • This manifested as the emummc folder being created inside the virtual NAND instead of the SD card.
    • It's unlikely there are any negative consequences to this in practice.
      • If you want to be truly sure, you can re-clone sysmmc before updating a 1.0.0 emummc to latest firmware.
  • Stratosphere system modules now use new Nintendo-style FS bindings instead of stdio.
    • This saves a modest amount of memory due to leaner code, and greatly increases the accuracy of several components.
    • These bindings will make it easier for other system modules using libstratosphere to interact with the filesystem.
    • This also lays the groundwork for changes necessary to support per-emummc Atmosphere folders in a future update.
  • Atmosphere's fatal error context now dumps 0x100 of TLS.
    • This will make it much easier to fix bugs when an error report is dumped for whatever caused the crash.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10, please see the official release notes.

Atmosphère 0.10.3

03 Mar 04:16
Compare
Choose a tag to compare

0.10.3 is Atmosphère's twenty-sixth official release.

fusee-primary was last updated in: 0.10.3.

With thanks to the @switchbrew team, Atmosphère 0.10.3 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • Support was added for 9.2.0.
  • Support was added for redirecting manual html content for games.
    • This works like normal layeredfs, replacing content placed in /atmosphere/contents/<program id>/manual_html/.
    • This allows for game mods/translations to provide custom manual content, if they so choose.
  • A number of improvements were made to Atmosphere's memory usage, including:
    • fatal now uses STB instead of freetype for rendering.
      • This saves around 1 MB of memory, and makes our fatal substantially leaner than Nintendo's.
    • sm no longer wastes 2 MiB unnecessarily.
  • fusee/sept's sdmmc access now better matches official behavior.
    • This improves compatibility with some SD cards.
  • ro has been updated to reflect changes made in 9.1.0.
  • The temporary auto-migration added in 0.10.0 has been removed, since the transitionary period is well over.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10.0, please see the official release notes.

Atmosphère 0.10.2

03 Jan 21:20
Compare
Choose a tag to compare

0.10.2 is Atmosphère's twenty-fifth official release.

fusee-primary was last updated in: 0.10.2.

With thanks to the @switchbrew team, Atmosphère 0.10.2 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • hbl configuration was made more flexible.
    • Up to eight specific program ids can now be specified to have their own override keys.
    • This allows designating both the album applet and a specific game as hbl by default as desired.
    • Configuration targeting a specific program is now mutually exclusive with override-any-app for that program.
      • This fixes unintuitive behavior when override key differed for an application specific program.
  • Loader's external content fileystem support was fixed (thanks @misson20000!).
  • KernelLdr was reimplemented.
    • This is the first step towards developing mesosphere, Atmosphere's planned reimplementation of the Switch's Kernel.
    • The typical user won't notice anything different, as there are no extensions, but a lot of groundwork was laid for future development.
  • Improvements were made to the way Atmosphere's buildsystem detects source code files.
    • This significantly reduces compilation time (saving >30 seconds) on the machine that builds official releases.
  • Certain device code was cleaned up and made more correct in fusee/sept/exosphere (thanks @hexkyz!).
  • A number of changes were made to the way fs.mitm builds images when providing a layeredfs romfs.
    • Some games (Resident Evil 6, Football Manager 2020 Touch, possibly others) have enormous numbers of files.
    • Attempting to create a layeredfs mod for these games actually caused fs.mitm to run out of memory, causing a fatal error.
    • The code that creates these images was changed to be significantly more memory efficient.
    • However, these changes also cause a significant slowdown in the romfs building code (~2-5x).
    • This introduced a noticeable stutter when launching a game, because the UI thread would block on the romfs creation.
    • To solve this, fs.mitm now lazily initializes the image in a background thread.
    • This fixes stutter issues, however some games may be slightly slower (~1-2s in the worst cases) to transition from the "loading" GIF to gameplay now.
      • Please note: the slowdown is not noticeable in the common case where games don't have tons of files (typical is ~0.1-0.2 seconds).
      • Once the image has been built, there is no further speed penalty at runtime -- only when the game is launched.
  • A number of other bugs were fixed, including:
    • Several minor logic inversions that could have caused fatal errors when modding games.
    • Atmosphere's new-ipc code did not handle "automatic" recvlist buffers correctly, so some non-libnx homebrew could crash.
    • fs.mitm now correctly mitms sdb, which makes redirection of certain system data archives work again.
      • In 0.10.0/0.10.1, changing the system font/language did not work correctly due to this.
    • A bug was fixed in process cleanup that caused the system to hang on < 5.0.0.
  • The temporary hid-mitm added in Atmosphere 0.9.0 was disabled by default.
    • Please ensure your homebrew is updated.
    • For now, users may re-enable this mitm by use of a custom setting (atmosphere!enable_deprecated_hid_mitm) to ease the transition process some.
      • As usual, edit the atmosphere section of /atmosphere/config/system_settings.ini if you wish to do so.
    • Please note: support for this setting may be removed to save memory in a future atmosphere release.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10.0, please see the official release notes.

Atmosphère 0.10.1

11 Dec 02:47
Compare
Choose a tag to compare

0.10.1 is Atmosphère's twenty-fourth official release.

fusee-primary was last updated in: 0.10.0.

With thanks to the @switchbrew team, Atmosphère 0.10.1 is bundled with hbl 2.3, and hbmenu 3.2.0.

The following was changed since the last release:

  • A bug was fixed that caused memory reallocation to the system pool to work improperly on firmware 5.0.0 and above.

    • Atmosphere was always trying to deallocate memory away from the applet pool and towards the system pool.
      • The intent of this is to facilitate running more custom sysmodules/atmosphere binaries.
    • However, while memory was always successfully taken away from the applet pool, on 5.0.0+ granting it to the system pool did not work for technical reasons.
      • If you are interested in the technical details, talk to SciresM.
    • This has now been fixed by adding new kernel patches, and memory is correctly granted to the system pool as intended.
  • Atmosphere's library system has been overhauled:

    • libstratosphere's repository has been rebranded, more generally, to "Atmosphere-libs".
      • In addition to libstratosphere, a new general library for not-stratosphere-specific code has been added.
        • This is currently named libvapours.
      • In the future, kernel functionality will be available as libmesosphere.
    • The build system for stratosphere system modules has been similarly overhauled.
  • The boot system module is now loaded into non-secure memory.

    • This helps somewhat to prevent fragmentation of the system memory heap.
  • A number of other bugs were fixed, including:

    • A bug was fixed that could cause memory corruption when redirecting certain Romfs content.
    • A bug was fixed that could cause an infinite loop when redirecting certain Romfs content.
    • A bug was fixed that could cause certain NROs to fail to load.
      • This caused the latest version of Super Smash Bros to display "An error has occurred" on launch.
    • A bug was fixed that caused input/output array sizes for certain circumstances to be calculated incorrectly.
      • This caused cheats to fail to function properly.
    • C++ exception code is now more thoroughly removed from stratosphere executables.
      • This saves a minor amount of memory.
    • A number of minor logic inversions were fixed in libstratosphere.
      • These did not affect any code currently used by released Atmosphere binaries.
  • Please note: Because this update is releasing so soon after 0.10.0, the removal of the temporary hid-mitm has been postponed to 0.10.2.

    • Please ensure your homebrew is updated.
  • Random number generation now uses TinyMT instead of XorShift.

  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10.0, please see the official release notes.

Atmosphère 0.10.0

07 Dec 23:43
Compare
Choose a tag to compare
Atmosphère 0.10.0 Pre-release
Pre-release

0.10.0 is Atmosphère's twenty-third official release.

fusee-primary was last updated in: 0.10.0.

With thanks to the @switchbrew team, Atmosphère 0.10.0 is bundled with hbl 2.2, and hbmenu 3.1.1.

  • Please note: Atmosphère 0.10.0 is currently in pre-release.
    • If any bugs are reported while Atmosphère is in pre-release, they will be fixed and the build will be updated.
    • 0.10.0 will transition to release after a short amount of time has passed without pressing bug reports.

The following was changed since the last release:

  • Support was added for 9.1.0
    • Please note: The temporary hid-mitm added in Atmosphere 0.9.x will be removed in Atmosphere 0.10.1.
      • Please ensure your homebrew is updated.
  • The Stratosphere rewrite was completed.
    • libstratosphere was rewritten as part of Stratosphere's refactor.
      • Code responsible for providing and managing IPC services was greatly improved.
        • The new code is significantly more accurate (it is bug-for-bug compatible with Nintendo's code), and significantly faster.
    • ams.mitm was rewritten as part of Stratosphere's refactor.
      • Saves redirected to the SD card are now separated for sysmmc vs emummc.
      • Please note: If you find any bugs, please report them so they can be fixed.
  • Thanks to the rewrite, Atmosphere now uses significantly less memory.
    • Roughly 10 additional megabytes are now available for custom system modules to use.
    • This means you can potentially run more custom system modules simultaneously.
      • If system modules are incompatible, please ask their authors to reduce their memory footprints.
  • Atmosphere's configuration layout has had major changes.
    • Configuration now lives inside /atmosphere/config/.
    • Atmosphere code now knows what default values should be, and includes them in code.
      • It is no longer an error if configuration inis are not present.
    • Correspondingly, Atmosphere no longer distributes default configuration inis.
      • Templates are provided in /atmosphere/config_templates.
    • loader.ini was renamed to override_config.ini.
    • This fixes the longstanding problem that atmosphere updates overwrote user configuration when extracted.
  • Atmosphere's process override layout was changed.
    • Atmosphere now uses the /atmosphere/contents directory, instead of /atmosphere/titles.
      • This goes along with a refactoring to remove all reference to "title id" from code, as Nintendo does not use the term.
    • To make this transition easier, a temporary functionality has been added that migrates folders to the new directory.
      • When booting into 0.10.0, Atmosphere will rename /atmosphere/titles/<program id> to /atmosphere/contents/<program id>.
        • This functionality may or may not be removed in some future update.
      • This should solve any transition difficulties for the typical user.
      • Please make sure that any future mods you install extract to the correct directory.
  • Support for configuring override keys for hbl was improved.
    • The key used to override applications versus a specific program can now be different.
      • The key to override a specific program can be managed via override_key.
      • The key to override any app can be managed via override_any_app_key.
    • Default override behavior was changed.
      • By default, atmosphere will now override the album applet with hbl unless R is held.
      • By default, atmosphere will now override any application with hbl only if R is held.
  • The default amount of applet memory reserved has been slightly increased.
    • This allows the profile selector applet to work by default in applet mode.
  • The way process override status is captured was changed.
    • Process override keys are now captured exactly once, when the process is created.
      • This fixes the longstanding issue where letting go of the override button partway into the process launch could cause problems.
    • The Mitm API was changed to pass around override status.
      • Mitm services now know what keys were held when the client was created, as well as whether the client is HBL/should override contents.
    • An extension was added to pm:info to allow querying a process's override status.
  • Thanks to process override capture improvements, hbl html behavior has been greatly improved.
    • Web applets launched by hbl will now always see the /atmosphere/hbl_html filesystem
  • Support was added to exosphere for enabling usermode access to the PMU registers.
    • This can be controlled via exosphere!enable_user_pmu_access in BCT.ini.
  • An enormous number of minor bugs were fixed.
    • dmnt's cheat VM had a fix for an inversion in opcode behavior.
    • An issue was fixed in fs.mitm's management of domain object IDs that could lead to system corruption in rare cases.
    • The Mitm API no longer silently fails when attempting to handle commands passing C descriptors.
      • On previous atmosphere versions, certain commands to FS would silently fail due to this...
        • No users reported any visible errors, but it was definitely a problem behind the scenes.
      • These commands are now handled correctly.
    • Atmosphere can now display a fatal error screen significantly earlier in the boot process, if things go wrong early on.
    • The temporary hid mitm will no longer sometimes cause games to fail to detect input.
    • Mitm Domain object ID management no longer desynchronizes from the host process.
    • An issue was fixed that could cause service acquisition to hang forever if certain sm commands were called in a precise order.
    • An off-by-one was fixed that could cause memory corruption in server memory management.
    • ... and too many more bugs fixed to reasonably list them all :)
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.10.0, please see the official release notes.

Atmosphère 0.9.4

14 Sep 18:01
Compare
Choose a tag to compare

0.9.4 is Atmosphère's twenty-second official release.

fusee-primary was last updated in: 0.9.3.

With thanks to the @switchbrew team, Atmosphère 0.9.4 is bundled with hbl 2.2, and hbmenu 3.1.1.

The following was changed since the last release:

  • Support was added for 9.0.0.
    • Please note: 9.0.0 made a number of changes that may cause some issues with homebrew. Details:
    • 9.0.0 changed HID in a way that causes libnx to be unable to detect button input.
      • Homebrew should be recompiled with newest libnx to fix this.
      • Atmosphere now provides a temporary hid-mitm that will cause homebrew to continue to work as expected.
        • This mitm will be removed in a future Atmosphere revision once homebrew has been updated, to allow users to use a custom hid mitm again if they desire.
    • 9.0.0 introduced an dependency in FS on the USB system module in order to launch the SD card.
      • This means the USB system module must now be launched before the SD card is initialized.
      • Correspondingly, the USB system module can no longer be IPS patched, and its settings cannot be reliably mitm'd.
      • We know this is frustrating, so we'll be looking into whether there is some way of addressing this in the future.
    • Please note: 9.0.0 updated the switch's gamecart controller ("lotus") firmware.
      • To prevent the burning of lotus fuses, Atmosphere now applies nogc patches when booting into 9.0.0 with fuses below 9.0.0.
      • If you wish to play gamecarts on 9.0.0 (but forever prevent yourself from playing them on < 9.0.0), set nogc = 0 in BCT.ini.
  • An off-by-one error was fixed in boot system module's pinmux initialization.
    • This could theoretically have caused issues with HdmiCec communication.
    • No users reported issues, so it's unclear if this was a problem in practice.
  • A bug was fixed that could cause webapplet launching homebrew to improperly set the accessible url whitelist.
  • BIS key generation has been fixed for newer hardware.
    • Newer hardware uses new, per-firmware device key to generate BIS keys instead of the first device key, so previously the wrong keys were generated as backup.
    • This only affects units manufactured after ~5.0.0.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.9.0, please see the official release notes.

Atmosphère 0.9.3

09 Aug 01:25
Compare
Choose a tag to compare

0.9.3 is Atmosphère's twenty-first official release.

fusee-primary was last updated in: 0.9.3.

With thanks to the @switchbrew team, Atmosphère 0.9.3 is bundled with hbl 2.2, and hbmenu 3.1.0.

The following was changed since the last release:

  • Thanks to hexkyz, fusee's boot sequence has been greatly optimized.
    • Memory training is now managed by a separate binary (fusee-mtc, loaded by fusee-primary before fusee-secondary).
    • Unnecessarily long splash screen display times were reduced.
    • The end result is that Atmosphere now boots significantly faster. :)
    • Note: This means fusee-primary must be updated for Atmosphere to boot successfully.
  • The version string was adjusted, and now informs users whether or not they are using emummc.
  • Atmosphere now automatically backs up the user's BIS keys on boot.
    • This should prevent a user from corrupting nand without access to a copy of the keys needed to fix it.
      • This is especially relevant on ipatched units, where the RCM vulnerability is not an option for addressing bricks.
  • The pm system module was rewritten as part of Stratosphere's ongoing refactor.
    • Support was added for forward-declaring a mitm'd service before a custom user sysmodule is launched.
      • This should help resolve dependency issues with service registration times.
    • SM is now informed of every process's title id, including built-in system modules.
  • The creport system module was rewritten as part of Stratosphere's ongoing refactor.
    • creport now dumps up to 0x100 of stack from each thread in the target process.
    • A few bugs were fixed, including one that caused creport to incorrectly dump process dying messages.
  • Defaults were added to system_settings.ini for controlling hbloader's memory usage in applet mode.
    • These defaults reserve enough memory so that homebrew can launch swkbd while in applet mode.
  • The fatal system module was rewritten as part of Stratosphere's ongoing refactor.
    • Incorrect display output ("2000-0000") has been fixed. Fatal will now correctly show 2162-0002 when this occurs.
    • A longstanding bug in how fatal manages the displays has been fixed, and official display init behavior is now matched precisely.
  • General system stability improvements to enhance the user's experience.

For information on the featureset supported by 0.9.0, please see the official release notes.