Releases: Atmosphere-NX/Atmosphere
Atmosphère 0.16.1 (pre-release)
0.16.1 is Atmosphère's fortieth official release.
fusee-primary was last updated in: 0.16.0.
Please note: Atmosphère 0.16.1 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.16.1 will transition to release after a short amount of time has passed without pressing bug reports.
Note: The 0.16.0 pre-release builds were updated on 2020/12/11 at 5 AM PST to fix a bug that caused the web browser to not work when using mesosphere. The updated zip has a build hash of "-1ec2c0c2".
With thanks to the @switchbrew team, Atmosphère 0.16.1 is bundled with hbl 2.4.0 (pre-release), and hbmenu 3.4.0 (pre-release).
The following was changed since the last release:
- Support was added for 11.0.1.
mesosphère
was updated to reflect the latest official kernel behavior.- A new svc::InfoType added in 11.0.0 was implemented (it wasn't discovered before 0.16.0 released).
- The new Control Flow Integrity (CFI) logic added in 11.0.0 kernel was implemented.
fs
logic was refactored and cleaned up to reflect some newer sysmodule behavioral and structural changes.exosphère
was updated to allow dynamic control of what uart port is used for logging.- This can be controlled by editing the
log_port
,log_baud_rate
, andlog_inverted
fields inexosphere.ini
.
- This can be controlled by editing the
mesosphère
was updated to improve debugging capabilities.- This is still a work in progress, but developers may be interested.
- A bug was fixed that caused
fatal
to fatal error if the fatal process was already being debugged. - Several issues were fixed, and usability and stability were improved.
For information on the featureset supported by 0.16, please see the official release notes.
Atmosphère 0.16.0 (pre-release)
0.16.0 is Atmosphère's thirty-ninth official release.
fusee-primary was last updated in: 0.16.0.
Please note: Atmosphère 0.16.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.16.0 will transition to release after a short amount of time has passed without pressing bug reports.
Note: The 0.16.0 pre-release builds were updated on 2020/12/03 at 1 PM PST to fix a bug that caused emummc bootup to be very slow, and to implement the full 11.0.0 changes for erpt
. The updated zip has a build hash of "-7336dc2".
With thanks to the @switchbrew team, Atmosphère 0.16.0 is bundled with hbl 2.4.0 (pre-release), and hbmenu 3.4.0 (pre-release).
The following was changed since the last release:
- Support was added for 11.0.0.
exosphère
was updated to reflect the latest official secure monitor behavior.mesosphère
was updated to reflect the latest official kernel behavior.loader
,sm
,boot
,pgl
,erpt
were updated to reflect the latest official behaviors.- Please Note: 11.0.0 implements an opt-in version of the atmosphère
sm
extension that allows for closing session without unregistering services.- Correspondingly, the extension will be deprecated in favor of the new official opt-in command. In 0.17.0, it will be removed entirely.
- If your custom system module relies on this extension (however unlikely that seems to me), please update it accordingly.
- Please Note: 11.0.0 implements an opt-in version of the atmosphère
- Please Note: 11.0.0 introduced breaking changes to the
usb
system module'susb:ds
API.- Homebrew which uses the
usb:ds
service should rebuild with the latest libnx version to support running on 11.0.0.
- Homebrew which uses the
- The
boot
system module was rewritten to reflect the huge driver changes introduced in 8.0.0.- This includes a number of improvements to both logo display and battery management logic.
- Support was added for configuring the address space width for
hbl
.- The
hbl_config!override_address_space_(#)
andhbl_config!override_any_app_address_space
can now be set to39_bit
,36_bit
, or32_bit
to control the address space for hbl on a per-override basis. - If a configuration has not been set, hbl will now default to 39-bit address space.
- Previously, a legacy 36-bit address space was always used to maintain compatibility with 1.0.0.
- A new loader extension was added to support 39-bit whenever possible (including mesosphere-on-1.0.0), with fallback to 36-bit when unavailable.
- The
- Support was added to a number of components for running on Mariko hardware.
- The
boot
system module can now safely be run on mariko hardware, performing correct hardware initialization. - Daybreak (and generally, system update logic) were updated to be usable on Mariko.
- Boot0 protection/management logic was updated to perform correct actions on Mariko.
- Reboot to payload does not and cannot work on Mariko. Correspondingly, A "fatal error" handler was written, to display and save fatal errors from within TrustZone.
- Please Note: Atmosphere is still not properly usable on Mariko hardware.
- In particular, wake-from-sleep will not properly function (the magic numbers aren't set correctly), among a few other minor issues.
- The
exosphère
received support for building under debug configuration.- A small (otherwise unused) portion of IRAM is now reserved for debug-only exosphere code (this region is unused/untouched under release config).
- This enables logging (including printf) to uart from the secure monitor, for those interested.
- A number of bugs were fixed, including:
- Minor issues in a number of filesystem related code were fixed.
- An issue was fixed that could cause NCM to abort on consoles which came with 3.0.x and were never updated.
- Several issues were fixed, and usability and stability were improved.
For information on the featureset supported by 0.16, please see the official release notes.
Atmosphère 0.15.0
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.
- Beginning in this release and until it is stable and well-tested, atmosphère will distribute two zips.
- 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.
- Loader now sets HBL's thread priority to a higher value when loading it in applet mode.
- 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
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 forjit: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.
- A Process handle leak was fixed when JitPlugin NRRs were registered with the
- 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
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
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
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.
- This is a re-implementation of the logic that
- 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.
- Please note: Atmosphère still does not support Mariko, and should not be run on Mariko yet.
- 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
.
- 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
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.
- This is a re-implementation of the logic that
- 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.
- Please note: Atmosphère still does not support Mariko, and should not be run on Mariko yet.
- 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
.
- 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
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 codenamedexosphè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.
- Unlike the first codebase, the new
- 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. :)
- Several potential code changes are planned that can save/grant access to an additional ~2-3 KB if needed.
- 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:
- 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
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 settingblank_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.
- Support was added for "automatically" performing a "blanking" operation to PRODINFO without actually modifying NAND.
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.
- 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.
- 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.
- 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.
- Executing pause process in a cheat will pause the game (it will be frozen) until a resume process opcode is used.
- 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.