Skip to content

Releases: Atmosphere-NX/Atmosphere

Atmosphère 0.15.0

27 Oct 00:53
Compare
Choose a tag to compare

0.15.0 is Atmosphère's thirty-eighth official release.

fusee-primary was last updated in: 0.15.0.

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

Note: The ams.mitm and fatal sysmodules inside the 0.15.0 release build were updated on 2020/10/27 at 11 AM PDT to fix a bug that prevented ftpd and similar applications from listing contents in the atmosphere directory. The updated zip has a build hash of "-1c71d12d".

The following was changed since the last release:

  • fusee-primary's panic display was updated to automatically identify and give suggestions to resolve many of the most common errors users encounter.
  • Having been tested as well as I can alone, mesosphere (atmosphère's reimplementation of the Nintendo Switch kernel) is now available for users interested in trying it.
    • Beginning in this release and until it is stable and well-tested, atmosphère will distribute two zips.
      • Users who wish to opt-in to mesosphere should download and extract the "cool kids" zip ("atmosphere-EXPERIMENTAL-").
      • Users who do not wish to use mesosphere should continue using the normal zip ("atmosphere-").
    • Users may detect whether mesosphere is active in system settings.
      • When mesosphere is active, the system version string will display "M.15.0" rather than "0.15.0", and so on for future releases.
      • Crash reports and the like will contain information on whether or not the user is using mesosphere, as well.
    • There are "probably" no material user-facing benefits to using mesosphere at this time.
      • Developers may be interested in the fact that mesosphere provides many newer SVC APIs even when on lower firmware versions.
      • The primary benefit to using mesosphere is that any issues you may encounter and report to me will be fixed.
        • All users who choose to opt in to using mesosphere have my deepest gratitude.
    • Note: If using hekate instead of fusee-primary, you will have to wait for the next hekate release for mesosphere to function, as hekate's support has not yet been included in an official release build.
      • This will be updated in the release notes when hekate provides a new release.
    • As mentioned in previous release notes, when mesosphere is stable and well-tested, it will be enabled by default and atmosphère's version will transition to 1.0.0.
  • Having been tested sufficiently over the last half-year, Atmosphere's NCM implementation is now opt-out, rather than opt in.
    • In the unlikely event that any issues are encountered, please report them to @SciresM.
    • Users interested in opting out of using our implementation should set stratosphere!disable_ncm = 1 in BCT.ini.
    • The NCM implementation will stop being opt-out in a future update, probably around the same time that mesosphere becomes opt-out instead of opt-in.
  • Several bugs were fixed, including:
    • Loader now sets HBL's thread priority to a higher value when loading it in applet mode.
      • This fixes an extremely-slow launch ("hang") when using applet-HBL with certain games that do not suspend while inactive (e.g. Super Mario Sunshine).
    • set.mitm now caches user language configuration much more heavily.
      • This severely reduces lag in certain games which misuse the "nn::oe::GetDesiredLanguage()" API.
    • A bug was fixed that could cause erpt to fatal when loading an official save file that had error report attachments in it.
  • General system stability improvements to enhance the user's experience.

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

Atmosphère 0.14.4

17 Sep 15:56
Compare
Choose a tag to compare

0.14.4 is Atmosphère's thirty-seventh official release.

fusee-primary was last updated in: 0.14.0.

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

The following was changed since the last release:

  • Several bugs were fixed involving the official jit sysmodule added in 10.0.0.
    • A Process handle leak was fixed when JitPlugin NRRs were registered with the ro sysmodule.
      • This prevented processes using jit from being able to exit, causing a full system freeze.
    • The sm atmosphere extension to not unregister services when the server's connection is closed was special-case disabled for jit:u.
      • This extension is normally desirable in order to allow more concurrent processes to exist (as only 0x40 sm connections may ever be concurrently open), but official jit sysmodule relies on the behavior.
      • This would cause crashes on attempts to launch a program using jit services more than once per reboot.
  • General system stability improvements to enhance the user's experience.

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

Atmosphère 0.14.3

15 Sep 01:30
Compare
Choose a tag to compare

0.14.3 is Atmosphère's thirty-sixth official release.

fusee-primary was last updated in: 0.14.0.

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

The following was changed since the last release:

  • Support was added for 10.2.0.
  • General system stability improvements to enhance the user's experience.

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

Atmosphère 0.14.2

07 Sep 21:44
Compare
Choose a tag to compare

0.14.2 is Atmosphère's thirty-fifth official release.

fusee-primary was last updated in: 0.14.0.

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

The following was changed since the last release:

  • A bug was fixed that could cause a deadlock when installing mitm services.
    • Fixing this required a breaking change to the client behavior when installing a mitm service, and so custom sysmodules which use mitm will need to be re-compiled to function properly.
  • A bug was fixed that caused atmosphere sysmodules to respond incorrectly when receiving invalid messages.
  • A bug was fixed that caused fatal auto-reboot timing to work improperly.
  • Support was added to fusee for loading binaries for mesosphere, atmosphère's reimplementation of the Nintendo Switch kernel.
    • 0.14.2 does not include mesosphere, but those who are especially interested can build and test mesosphere themselves.
    • In the future, to enable a sufficient testing period Atmosphère releases will distribute two zips for some time.
      • One zip will use mesosphere, and the other will not.
      • This will allow users who are interested to opt-in to mesosphere usage before it has been tested to be stable.
    • When mesosphere is stable and well-tested, it will be enabled by default and Atmosphère's version will transition to 1.0.0.
  • General system stability improvements to enhance the user's experience.

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

Atmosphère 0.14.1

02 Aug 22:26
Compare
Choose a tag to compare

0.14.1 is Atmosphère's thirty-fourth official release.

fusee-primary was last updated in: 0.14.0.

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

The following was changed since the last release:

  • An issue was fixed in 0.14.0 that would cause a black screen on boot when the INI1's size was not aligned to 8 bytes.
  • General system stability improvements to enhance the user's experience.

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

  • An API (ams:su) was added to allow homebrew to safely install system upgrades or downgrades.
    • This is a re-implementation of the logic that ns uses to install gamecard system updates.
    • Nintendo (and now atmosphère) uses an installation process that can recover no matter where a failure occurs, which should significantly improve the safety of custom system update installation.
  • Support was added to exosphère for running on Mariko hardware.
    • Please note: Atmosphère still does not support Mariko, and should not be run on Mariko yet.
      • Certain stratosphere components do not handle mariko-specific logic fully correctly yet, and may initialize or interact with hardware incorrectly.
      • This will be fixed and support will be added over the remainder of the Summer.
  • A homebrew application (daybreak) was added that uses the system updater API (with thanks to @Adubbz for both design and implementation).
    • daybreak is included with atmosphère, and functions as a safer/more accurate equivalent to e.g. ChoiDujourNX.
    • Upgrades/downgrades can be installed from a folder containing the update NCAs on the SD card.
    • Because the update logic functions identically to Nintendo's, daybreak will be safe to use on Mariko when the rest of atmosphère has support.
    • Please note: Daybreak requires that meta (.cnmt) NCAs have the correct extension .cnmt.nca.
      • This is because gamecard system update logic uses extension to determine whether to mount the content.
      • Several scripts have been made by community members to automatically rename folders with incorrect extensions.
  • A bug was fixed that would cause file-based emummc to throw an error (showing a hexdump) on boot.
    • Major thanks to @hexkyz for tracking down and resolving this.
  • A number of minor issues were resolved, including:
    • fusee now prints information to the screen when an error occurs, instead of getting stuck trying to initialize the display.
    • A race condition in Horizon was worked around that could prevent boot under certain circumstances.
    • A bug was fixed that would cause atmosphère modules to open ten copies of certain filesystems instead of one.
      • This could cause object exhaustion under certain circumstances.
  • For those interested in atmosphère's future development plans, the project's roadmap was updated.
  • General system stability improvements to enhance the user's experience.

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

Atmosphère 0.14.0

01 Aug 22:45
Compare
Choose a tag to compare

0.14.0 is Atmosphère's thirty-third official release.

fusee-primary was last updated in: 0.14.0.

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

The following was changed since the last release:

  • An API (ams:su) was added to allow homebrew to safely install system upgrades or downgrades.
    • This is a re-implementation of the logic that ns uses to install gamecard system updates.
    • Nintendo (and now atmosphère) uses an installation process that can recover no matter where a failure occurs, which should significantly improve the safety of custom system update installation.
  • Support was added to exosphère for running on Mariko hardware.
    • Please note: Atmosphère still does not support Mariko, and should not be run on Mariko yet.
      • Certain stratosphere components do not handle mariko-specific logic fully correctly yet, and may initialize or interact with hardware incorrectly.
      • This will be fixed and support will be added over the remainder of the Summer.
  • A homebrew application (daybreak) was added that uses the system updater API (with thanks to @Adubbz for both design and implementation).
    • daybreak is included with atmosphère, and functions as a safer/more accurate equivalent to e.g. ChoiDujourNX.
    • Upgrades/downgrades can be installed from a folder containing the update NCAs on the SD card.
    • Because the update logic functions identically to Nintendo's, daybreak will be safe to use on Mariko when the rest of atmosphère has support.
    • Please note: Daybreak requires that meta (.cnmt) NCAs have the correct extension .cnmt.nca.
      • This is because gamecard system update logic uses extension to determine whether to mount the content.
      • Several scripts have been made by community members to automatically rename folders with incorrect extensions.
  • A bug was fixed that would cause file-based emummc to throw an error (showing a hexdump) on boot.
    • Major thanks to @hexkyz for tracking down and resolving this.
  • A number of minor issues were resolved, including:
    • fusee now prints information to the screen when an error occurs, instead of getting stuck trying to initialize the display.
    • A race condition in Horizon was worked around that could prevent boot under certain circumstances.
    • A bug was fixed that would cause atmosphère modules to open ten copies of certain filesystems instead of one.
      • This could cause object exhaustion under certain circumstances.
  • For those interested in atmosphère's future development plans, the project's roadmap was updated.
  • General system stability improvements to enhance the user's experience.

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

Atmosphère 0.13.0

15 Jun 17:34
Compare
Choose a tag to compare

0.13.0 is Atmosphère's thirty-second official release.

fusee-primary was last updated in: 0.13.0.

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

The following was changed since the last release:

  • exosphère, atmosphère's secure monitor re-implementation, was completely re-written.
    • exosphère was the first component authored for the project in early 2018. It is written in C, and in a style very different from the rest of atmosphère's code.
      • This has made the codebase difficult to maintain as time has gone on.
    • exosphère was also written to conform to constraints and assumptions that simply no longer apply when cfw is not launched from the web browser, and when warmboothax is possible.
    • Even beyond these issues, exosphère used all but 1KB of the 64KB of space available to it. This was a problem for a few reasons:
      • Each new system update added requires additional space to support (to add new keys and reflect various changes); 10.0.0 support used up 3 of the 4KB we had left.
      • atmosphère will want to have software support for mariko hardware, and this is not possible to fit in 1 KB.
    • The exosphère rewrite (which was codenamed exosphère2 during development) solves these problems.
    • The new codebase is C++20 written in atmosphère's style.
      • This solves the maintainability problem, and should make understanding how the secure monitor works much easier for those interested in using the code as a reference implementation.
    • In addition, the new implementation currently uses ~59.5 of the 64KB available.
      • Several potential code changes are planned that can save/grant access to an additional ~2-3 KB if needed.
        • Unlike the first codebase, the new exosphère actually already has space allocated for future keys/etc. It is currently expected that the reserved space will never be required.
      • The previous implementation chose not to implement a number of "unimportant" secure monitor functions due to space concerns. The new code has enough breathing room that it can implement them without worries. :)
    • Finally, the groundwork for mariko support has been laid -- there are only a few minor changes needed for the new secure monitor implementation to work on both erista and mariko hardware.
      • Please note: exosphère is only one of many components, and many more need changes to support running on mariko hardware.
        • Software-side support for executing on mariko hardware is expected some time during Summer 2020, though it should also be noted that this is not a hard deadline.
    • Please note: The new exosphère binary is not abi-compatible with the old one. Users who boot using hekate should upgrade to hekate v5.3.0 before running 0.13.0 (or boot fusee-primary via hekate).
  • atmosphère's api for target firmware was changed. All minor/micro system versions are now recognized, instead of only major versions.
    • This was required in order to support firmware version 5.1.0, which made breaking changes to certain IPC APIs that caused atmosphère 0.12.0 to abort.
    • Please note: this is (unavoidably) a breaking change. System modules using atmosphere-libs will need to update to understand what firmware version they are running.
  • emummc was updated to include the new changes.
    • emummc now uses an updated/improved/faster SDMMC driver.
    • File-based emummc is now almost as fast as raw partition-based emummc.
  • For those interested in atmosphère's future development plans, the project's roadmap was updated.
  • General system stability improvements to enhance the user's experience.

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

Atmosphère 0.12.0

25 Apr 00:52
Compare
Choose a tag to compare

0.12.0 is Atmosphère's thirty-first official release.

fusee-primary was last updated in: 0.12.0.

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

The following was changed since the last release:

  • Configuration for exosphere was moved to sd:/exosphere.ini.
    • This is to facilitate BIS protection changes described below.
    • Hopefully having this outside of the Atmosphere folder will prevent accidental deletion, since this now contains important settings.
  • Atmosphere's bis protection policy for the PRODINFO partition was substantially reworked.
    • Support was added for "automatically" performing a "blanking" operation to PRODINFO without actually modifying NAND.
      • This is equivalent to using the "incognito" homebrew tool, but NAND is never actually modified.
      • This can be turned on in sysmmc by setting blank_prodinfo_sysmmc=1 in exosphere.ini, and in emummc by setting blank_prodinfo_emummc=1 in exosphere.ini.
      • Please note: This is not known to be safe. There is a lack of research on whether the information blanked out is cached elsewhere in the system.
        • Usage of this option is not encouraged for this reason.
    • Support was added for writing to the PRODINFO partition, if a verified encrypted backup has been made.
      • PRODINFO is the only system data that cannot be recovered if not backed up, and thus Atmosphere has backed it up to the SD card on boot for some time now.
      • Users who wish to modify their calibration data may now do so unconditionally in emummc, and in sysmmc if allow_writing_to_cal_sysmmc=1 is set in exosphere.ini.
        • Please note: This is heavily discouraged, and the typical user will almost never want to do this.
        • Setting this option will cause Atmosphere to attempt to verify (or create) an encrypted backup of the PRODINFO data to an unused region in the partition.
          • The backup is encrypted with per-console keys that Atmosphere's developers do not know.
        • If the backup is not verified or created, writes will not work. Users who have corrupted their PRODINFO in the past are encouraged to flash a good backup to allow use of this setting.
        • Reads and writes to the region used for the securely encrypted backup will appear to succeed, but will actually read/write from a buffer filled with garbage in memory.
    • Support will be investigated in the future for supporting booting with fully blanked calibration.
      • This is desirable to allow boot to succeed for users who lost their calibration data due to bricking homebrew before bis protection was implemented.
  • creport has been updated to use the new screenshot APIs added in 9.0.0+.
    • On 10.0.0+, if a crash occurs in an application (not applet or sysmodule) a screenshot will now be automatically saved to the SD card.
    • If the user applies a patch to vi on 9.0.0 (as the command this uses was previously for dev-units only), this can also work on 9.0.0.
  • The new sysmodule pgl added in 10.0.0 was reimplemented.
    • pgl ("Program Launcher", probably) is responsible for managing launched user-processes, previously this was handled by NS.
    • The most exciting thing about pgl is that it finally provides an API for multiple clients to subscribe to process events.
    • Using these new APIs, system modules / other homebrew can subscribe to be notified whenever a process event occurs.
      • This means action can be taken on process launch, process exit, process crash, etc.
    • A slight concern with Nintendo's implementation is that each subscriber object uses 0x448 bytes of memory, and N only reserves 8KB for all allocations in pgl.
    • Atmosphere's implementation uses a 32KB heap, which should not be exhaustible.
    • Atmosphere's implementation has a total memory footprint roughly 0x28000 bytes smaller than Nintendo's.
  • A reimplementation was added for the jpegdec system module (thanks @HookedBehemoth)!
    • This allows two sessions instead of 1, so homebrew can now use it for software jpeg decoding in addition to the OS itself.
    • As usual the implementation has a very slightly smaller memory footprint than Nintendo's.
  • dmnt's Cheat VM was extended to add three new opcodes.
    • The first new opcode, "ReadWriteStaticRegister", allows for cheats to read from a bank of 128 read-only static registers, and write to a bank of 128 write-only static registers.
      • This can be used in concert with new IPC commands that allow a cheat manager to read or write the value of these static registers to have "dynamic" cheats.
        • As an example, a cheat manager could write a value to a static register that a cheat to control how many of an item to give in a game.
        • As another example, a cheat manager could read a static register that a cheat writes to to learn how many items a player has.
  • The second and third opcodes are a pair, "PauseProcess" and "ResumeProcess".
    • Executing pause process in a cheat will pause the game (it will be frozen) until a resume process opcode is used.
      • These are also available over IPC, for cheat managers or system modules that want to pause or resume the attached cheat process.
    • This allows a cheat to know that the game won't modify or access data the cheat is accessing.
      • For example, this can be used to prevent Pokemon from seeing a pokemon a cheat is in the middle of injecting and turning it into a bad egg.
  • A bug was fixed that would cause the console to crash when connected to Wi-Fi on versions between 3.0.0 and 4.1.0 inclusive.
  • A bug was fixed that could cause boot to fail sporadically due to cache/tlb mismanagement when doing physical ASLR of the kernel.
  • A number of other minor issues were addressed (and more of Atmosphere was updated to reflect other changes in 10.0.x).
  • General system stability improvements to enhance the user's experience.

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

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.