From Nintendo Switch Brew
Revision as of 20:25, 22 February 2020 by Hexkyz (talk | contribs) (→‎ro-sysmodule)
Jump to navigation Jump to search

The Switch 9.0.0 system update was released on September 9, 2019. This Switch update was released for the following regions: ALL.

Security flaws fixed: <fill this in manually later, see the updatedetails page from the ninupdates-report page(s) once available for now>.


From official source:

Ver. 9.0.0 (Released September 9, 2019)

Added the following system functionality:

  • Added a search feature for the News Channel.
    • Channels can be searched using filters or free text.
  • Added “Display QR Code to Check In” to User Settings.
    • You can display a QR Code on-screen to check in using your Nintendo Account.
  • Alarm Notifications have been added to System Settings > Notifications.
    • You can check or delete pre-set alarms.
    • Alarms can be set up only within supported software (to be added at a later time).
    • A controller firmware update may be required to use this feature.
  • You can now configure touch screen sensitivity settings.
    • Select between Standard and Stylus sensitivity (optimized for stylus input).
  • Added the option to turn on/off the system button input (Nintendo Switch Lite only).
    • When this setting is turned off the system no longer receives input from the console buttons, with the exception of the Capture and HOME Buttons, and can only be operated from a wirelessly paired controller (sold separately).
    • This setting is on by default and can only be turned off if a compatible controller (sold separately) is wirelessly paired to the console.
    • The setting will automatically turn back on when the console is restarted or after returning from sleep mode.
  • Added “Online Play Invites” section to the User's page.
    • Invites from friends to join online play in supported software will be displayed in this section.
  • General system stability improvements to enhance the user's experience.
    • Resolved an issue where some users can’t start the Fire Emblem: Three Houses game, and get an error instead.


All files in RomFS were updated.


NX bootloader was updated.

<check back later for diff>

Secure Monitor

Secure Monitor was updated.

  • CPU Suspend SMC code now explicitly initializes the state of I2C5 before communicating with the PMIC, instead of assuming that it is in a valid state.
  • Code for initializing MMIO inside package2ldr now writes random values to a number of PMC secure scratch registers, and validates that the written values are read back successfully before locking the scratch.
    • This writes to secscratch 4-7 (used to store SRK), then locks them.
      • The SE will overwrite these values during context save despite the lock.
    • This then writes to secscratch 112-115 and 24-25, used by TZ during context save to store a MAC and a key source, respectively.
      • These too will be overwritten during context save, as the scratch are not locked.
    • secscratch 4-7 are then locked a second time.


KernelLdr was updated.

  • TPIDR_EL1 is now set to 0, and VBAR_EL1 is now set to a table that infinite loops on all exceptions other than synchronous from same exception level.
    • synch_spx_el1 now restores a number of registers from a context with pointer in TPIDR_EL1.
  • TPIDR_EL1 is now set to a context save struct before manufacturer-specific system registers are set, and validated to be non-0/NULL afterwards. It is then cleared.
    • Support was added for Cortex-A53 specific CPU initialization.
  • Kernel .rodata is now initially mapped as RW- instead of R--, and then reprotected to R-- after relocations are completed.
    • This allows for/implements .rel.ro.


Kernel was updated.

<check back later for diff>


  • The firmware revision magic was changed from 0x14A to 0x16B.

<check back for more diffs later>

FIRM Sysmodules

FIRM sysmodules were updated. Specific diffs available below:


Gamecard ASIC firmware was updated.

A new field AcidSignatureKeyGeneration in the NPDM format is now used to select between different public keys for verifying the ACID signature.


The anti-downgrade code in CreateProcess was updated.

  • All system modules, and all web applets are now subject to anti-downgrade restrictions.
  • Instead of using 1 as the minimum value, the minimum value is looked up from an array in .rodata on a per-module basis.
    • All current entries use 0x24000000 (9.0.0) as the minimum version.

Code was added implementing (partial, unfinished) support for a new hardware form-factor. Hardware type for this is 4 ("Calcio"), uses Mariko SoC.

System Titles

All titles were updated except for the following: Dictionary, UrlBlackList, and flog.

New titles ngct-sysmodule and NgWordT were added.

RomFS changes (see System_Version_Title for sysver title):

  • See HID_services#RomFS for hid-sysmodule.
  • ErrorMessage: Localization for "zh-HansT" was added. New errors were added. Localization for various errors were updated.
  • BrowserDll:
    • "/browser/RootCaEtc.pem", "/browser/UserCss.dat", and "/buildinfo/buildinfo.dat" were updated.
    • The OSS NROs under "/dll_0/" were updated.
    • New directory "/dll_1/" was added, which also contains OSS NROs with the same filenames. All web-applets now use this instead of dll_0, except for LibraryAppletOfflineWeb which still uses dll_0. This is likely done so that Offline game manuals etc don't break.
    • dll_0 have binary names in the NRO "D:\for_cruiser\release_326\nx\applications\cruiser_sample\build\NX64\Develop_Dll\...", while dll_1 have "D:\for_cruiser_Safari606\release_31\nx\applications\cruiser_sample\build\NX64\Develop_Dll\...".
    • A number of files under "/lyt/" were updated.
    • "/message/<dirname>/Cruiser.msbt" was updated for every region/language. Directory "/message/CNzhT/" was added.
  • Help:
    • "/legallines.htdocs/index.html".
    • New directory "/safe.htdocs/html/CNzh/" was added.
    • "/safe.htdocs/html/<dirname>/index.html", "/safe.htdocs/html/<dirname>/page_02.html", and "/safe.htdocs/html/<dirname>/page_04.html" were updated, where <dirname> is "JPja", "KRko", and "TWzh".
    • New file "/safe.htdocs/js/chnscript.js" was added.
  • SharedFont:
    • "/Iwnn/KO/njubase1.a" and "/Iwnn/KO/njubase2.a" were updated.
    • Various files were updated under "Iwnn/ZH/CN/", "/Iwnn/ZH/HK/", and "/Iwnn/ZH/TW/".
  • NgWord: "/0.txt", "/common.txt", and "/version.dat" were updated.
  • AvatarImage: "/DatabaseInfo.bin" was updated.
  • LocalNews:
    • New files "/image/LnMinIntro_Hoag", "/image/LnPvrIntro_Hoag", "/image/LnSdAdvice_Hoag", and "/image/LnShopIntro_Terra" were added.
    • "/image/LnSupIntro/main_Other.jpg" was updated.
    • "/image/LnSupIntro/main_Terra.jpg" was updated.
    • "/message/<dirname>/localNews.msbt.szs" was updated, where <dirname> is all localization directories. Directory "/message/CNzhT/" was added. "/message/revision.txt" was updated.
  • Eula:
    • "/CNzhT" was added.
    • "/revision.txt" was updated.
  • TimeZoneBinary: "/version.txt" and various files under "/zoneinfo/" were updated.
  • FatalMessage: "/<dirname>/TerraMessage" was added, where <dirname> is all localization directories.
  • ControllerIcon: "/lyt/footer/800/controllerIcon.bntx" and "/lyt/footer/800/info.dat" were updated.
  • FirmwareDebugSettings, PlatformConfigIcosa, PlatformConfigCopper, PlatformConfigHoag, and PlatformConfigIcosaMariko: "/file" was updated.
  • ControllerFirmware: See HID_services#Firmware_update.
  • NgWord2: "/ac_0_not_b_nx" and "/ac_common_not_b_nx" were updated.
  • Applets:
    • The shader file under "/common/shader/" was updated.
    • Various files under "/lyt/" were updated.
    • Localization files under "/message/" were updated, directory "/message/CNzhT/" was also added.
    • "/sound/*.bksnd" and "/sound/*.bfsar" were updated.
  • qlaunch (in addition to the above):
    • "/message/<dirname>/pshop.msbt.szs" was removed, where <dirname> is every directory where this file used to exist.
  • LibraryAppletCabinet (in addition to the above):
    • "/mii/NX-NXFP2-a64/shader/TextureShader.bnsh" and "/mii/NX-NXFP2-a64/shader/VariableIconBodyShader.bnsh" were updated.
  • LibraryAppletMiiEdit (in addition to the above):
    • Various files under "/archive/" were updated.
  • Web-applets: "/buildinfo/buildinfo.dat" and "/.nrr/netfront.nrr" were updated.
    • LibraryAppletShop: "/whitelist/WhitelistEc.txt" was updated. "|ch" was added to the main "nintendo" line, for allowing nintendo.ch. Two new lines were added: "^https://([0-9A-Za-z\-]+\.)*nintendoswitch\.cn(/|$)" and "^https://([0-9A-Za-z\-]+\.)*nintendoswitch\.com\.cn(/|$)".
    • LibraryAppletLoginShare: "/whitelist/WhitelistLns.txt" was updated. A duplicate "ch|" was removed from the main "nintendo" line. The same new "nintendoswitch" lines from WhitelistEc.txt were added. The "... google(\.[A-Za-z]+)*/(search\?|translate" line had "|amp/)" added at the end. The following new line was added: "---- ^https?://([0-9A-Za-z\-]+\.)*(sites|mail|news)\.google(\.[A-Za-z]+)*/".
  • OverlayApplet (in addition to the above): "/sound/infoAlarm.raw" was added.


This sysmodule was stubbed. This is now a SystemData title with an empty CNMT list.

The services which were previously hosted by this sysmodule were moved into ptm-sysmodule.


A new field "CertificationSignatureKeyGeneration" in the NRR format is now used to select between different public keys for verifying the Certification signature.


All updated non-FIRM titles use a new masterkey, except for Eula which still uses the keydata from 1.0.0.

See Also

System update report(s):

Nintendo Switch System Versions