5.0.0: Difference between revisions

 
(16 intermediate revisions by 5 users not shown)
Line 5: Line 5:
==Change-log==
==Change-log==
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 Official] ALL change-log:
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 Official] ALL change-log:
* Added the following system functionality
*Added the following system functionality
* Facebook and Twitter friends that also use Nintendo Switch can now be added through Friend Suggestions  
:* Facebook and Twitter friends that also use Nintendo Switch can now be added through Friend Suggestions  
* Friend suggestions are based on the Facebook and Twitter accounts you have linked to your Nintendo Account
::* Friend suggestions are based on the Facebook and Twitter accounts you ''have linked to your Nintendo Account''
* To view your friend suggestions, from the top left of the HOME Menu head to your User Page  > Friend Suggestions
::* To view your friend suggestions, from the top left of the HOME Menu head to your User Page  > Friend Suggestions
* You must be 13 or older to use this feature
::* You must be 13 or older to use this feature
* Select from 24 new ARMS and the Kirby series icons for your user
:* Select from 24 new ARMS and the Kirby series icons for your user
* To edit your user icon, head to your My Page on the top left of the Home Menu > Profile
::* To edit your user icon, head to your My Page on the top left of the Home Menu > Profile
* Digital software purchases made from a PC or smart device will start downloading sooner than previously, even if the Nintendo Switch console is in Sleep Mode  
:* Digital software purchases made from a PC or smart device will start downloading sooner than previously, even if the Nintendo Switch console is in Sleep Mode
* Filter News to view only unread news or news from specific channels
:* Filter News to view only unread news or news from specific channels
* To keep the Parental Controls PIN private, the default method for PIN entry has been changed to entering using the Control Stick and buttons instead of the on-screen number pad
:* To keep the Parental Controls PIN private, the default method for PIN entry has been changed to entering using the Control Stick and buttons instead of the on-screen number pad
* When prompted to enter you Parental Controls PIN, press and hold the + Button to change between input methods  
::* When prompted to enter you Parental Controls PIN, press and hold the + Button to change between input methods  
* Captured videos in the Album will be restricted by Parental Controls depending on the Restricted Software setting and Software Rating Organization
:* Captured videos in the Album will be restricted by Parental Controls depending on the Restricted Software setting and Software Rating Organization
* Using the Nintendo Switch Parental Controls app, add specific software titles to your whitelist to exclude them from the console’s Parental Controls Restricted Software setting
:* ''Using the Nintendo Switch Parental Controls app'', add specific software titles to your whitelist to exclude them from the console’s Parental Controls Restricted Software setting
* Play-Time Limit restrictions will still apply even when the software title has been whitelisted.
::* Play-Time Limit restrictions will still apply even when the software title has been whitelisted.
* Receive notification when pre-purchased software is ready to play
:* Receive notification when pre-purchased software is ready to play
* Nintendo Switch Pro Controller grip colors will now display in the Controllers menu
:* Nintendo Switch Pro Controller grip colors will now display in the Controllers menu
* General system stability improvements to enhance the user's experience, including:
* General system stability improvements to enhance the user's experience, including:
* Resolved an issue that caused Play Activity to display incorrectly in the Profile section of your User Page
:* Resolved an issue that caused Play Activity to display incorrectly in the Profile section of your User Page


==System Titles==
==System Titles==
All 01000000000010XX titles and most 01000000000008XX titles were updated.
All 01000000000010XX titles and most 01000000000008XX titles were updated. Some 8XX titles were just rebuilt with the new NCA crypto without actual RomFS-content changes.


* 0100000000000824(Mariko Config), 0100000000000825, 0100000000000826 were added.
* 0100000000000824(Mariko Config), 0100000000000825, 0100000000000826 were added.
Line 32: Line 32:
** 0100000000000826 contains a 0x40-byte "/version" file, this is all-zero except for '0' at offset 0x20.
** 0100000000000826 contains a 0x40-byte "/version" file, this is all-zero except for '0' at offset 0x20.


The built codebins now have padding in .text after every function for 0x10-byte alignment.
The only 8XX titles with actual changes are (besides sysver-title, see below for FIRM):
* 801 (Support Error Codes)
* 803 (web-applet "shareddata:/")
* 804 (HTML resources for "Intellectual Property Notices" / "Health & Safety Information")
** "/legallines.htdocs/index.html" was updated with a Twitter mention, and a license section for "Software License for The Fraunhofer FDK AAC Codec Library for Android" was added.
** "/safe.htdocs/html/EU{XX}/index.html" was updated.
* 806 (Bad words)
* 807 ([[Hotspot List]])
** This was updated with more hotspots (these networks use encryption): "nintendoappdebug1", "Nintendo App Debug2", "Nintendo App Debug3", and "NCL-NZSERVICE1-5GHZ".
* 80A (Chara)
* 80B (Offline news)
* 80E (Geo Zoneinfo)
* 810-814 (All fonts)
* 818 (System-config)
* 81E (Controller gfx/icon data + dummy file)
** "/lyt/ColorTable" and "/lyt/footer/controllerIcon.bntx" were updated. The "01-00" image showing handheld-mode with detached joy-cons was replaced with a blank image.
* 81F (Icosa system config)
* 820 (Copper system config)
* 821 (Hoag system config)
* 822 (Firmware binaries for peripherals)
** The following was updated: "FirmwareInfo.csv", "tera_ota.bin", "tera_ota_iap.bin", and "ukyosakyo_ep2_ota.bin".
* 823
 
The built codebins now have padding in .text after every function for 0x10-byte alignment (and other compiler changes).


The SDK included with titles (main-codebin) for NV changed/updated NVIDIA hw strings:
The SDK included with titles (main-codebin) for NV changed/updated NVIDIA hw strings:
Line 56: Line 79:


===FIRM===
===FIRM===
Everything under RomFS was updated.
All FIRM titles were updated, and everything under RomFS was updated.


A new folder "a" was added, in addition to the existing "nx" folder, containing a separate "bct" and "package1". Both of these seem encrypted/meant for the new "Mariko" hardware that support was added for.
A new folder "a" was added, in addition to the existing "nx" folder, containing a separate "bct" and "package1". Both of these seem encrypted/meant for the new "Mariko" hardware that support was added for.
The following firm-sysmodules was added to both safemode-firm, which were originally in separate sysmodule-titles: [[Bus_services|Bus]], [[PCV_services|PCV]], and [[PSC_services|psc]].
All firm-sysmodules were updated (might be due to updated (?) rtld).


====Secure Monitor====
====Secure Monitor====
The [[Memory_layout|Memory layout]] was changed significantly:
The [[Memory_layout|Memory layout]] was changed significantly:
* .text, .rodata, and .data are now separate sections, instead of being mapped RWX.
* .text, .rodata, and .data are now separate sections, mapped with correct permissions (RX, RO, RW, respectively), instead of being mapped RWX.
* Physical layout in TZRAM changed significantly, with pk2ldr being in low TZRAM instead of high TZRAM.
* Physical layout in TZRAM changed significantly, with pk2ldr being in low TZRAM instead of high TZRAM, etc.


In addition, there were changes to the [[SMC]] interface:
In addition, there were changes to the [[SMC]] interface:


* smcGenerateSpecificAesKey was updated to support generating previous 4.x+ device key(s).
* smcLoadSecureExpModKey/smcLoadRsaOaepKey/smcDecryptRsaPrivateKey no longer exist.
* smcLoadSecureExpModKey/smcLoadRsaOaepKey/smcDecryptRsaPrivateKey no longer exist.
* smcLoadRsaOaepKey was replaced with smcEncryptRsaPrivateKeyForImport.
* smcLoadRsaOaepKey was replaced with smcEncryptRsaPrivateKeyForImport.
Line 76: Line 96:
** All keys which were previously imported with specific keys now first call smcEncryptRsaPrivateKeyForImport with the appopriate enum member to get a sealed copy of the RSA key, then smcDecryptOrImportRsaPrivateKey to import/unseal the key when needed.
** All keys which were previously imported with specific keys now first call smcEncryptRsaPrivateKeyForImport with the appopriate enum member to get a sealed copy of the RSA key, then smcDecryptOrImportRsaPrivateKey to import/unseal the key when needed.
* smcGetConfig was extended with two new config items:
* smcGetConfig was extended with two new config items:
* -GetConfig(16) now does the following, which seems to check whether the Switch is running on a Tegra 210:
** GetConfig(16), which seems to check whether the Switch is running on a Tegra 210:
     return (FUSE_RESERVED_ODM4 & 0x800) &&  FUSE_RESERVED_ODM0 == 0x8E61ECAE &&  FUSE_RESERVED_ODM1  == 0xF2BA3BB2 ?  (FUSE_RESERVED_ODM2 & 0x1F) : 0
     return (FUSE_RESERVED_ODM4 & 0x800) &&  FUSE_RESERVED_ODM0 == 0x8E61ECAE &&  FUSE_RESERVED_ODM1  == 0xF2BA3BB2 ?  (FUSE_RESERVED_ODM2 & 0x1F) : 0
* Getconfig(17) now checks whether package2 is plaintext or encrypted.
** Getconfig(17), which returns the Package2 hash if booting from recovery mode.


<fill in the rest later>
<fill in the rest later>
Line 85: Line 105:
* Kernel Address Space Layout Randomization was added.
* Kernel Address Space Layout Randomization was added.
** Instead of using a hardcoded address for per-CPU region, they now use x18 to point to the per-CPU region.
** Instead of using a hardcoded address for per-CPU region, they now use x18 to point to the per-CPU region.
* When using most [[SMC]]s, IRQs are now disabled first then restored to original state afterwards. x18 is also reinitialized right after most SMCs (see above).
* 5 new syscalls.
* 5 new syscalls.
** Syscalls 0x48+0x49 are used by [[AM_services|AM]]-sysmodule.
** Syscalls 0x48+0x49 (svcAllocateUserHeapMemory+svcFreeUserHeapMemory) are used by [[AM_services|AM]]-sysmodule.
** Syscall 0x4A is used by [[Process_Manager_services|PM]]-sysmodule.
*** This is used to allocate Application pool.
** Syscall 0x6F is used by FS, SM, and PM.
** Syscall 0x4A (svcSetUserHeapMemoryAllocationMax) is used by [[Process_Manager_services|PM]]-sysmodule.
*** This allows PM to set a limit on the number of bytes AM can allocate from Application pool.
** Syscall 0x6F (svcGetMemoryInfo) is used by FS, SM, and PM.
** Syscall 0x2E (svcGetNextThreadInfo) was added, but it only works on dev units.
*** Allows fetching how many bytes free/occupied by the different pools.
** svcControlCodeMemory was [[SVC#svcControlCodeMemory|updated]].
* NPDM irq_id's are no longer checked to be < 0x100, instead max-value is loaded from per-cpu state.
* NPDM irq_id's are no longer checked to be < 0x100, instead max-value is loaded from per-cpu state.
* The order slabheaps are laid out in memory is now randomized.
* The order slabheaps are laid out in memory is now randomized.
* There are now 4 memory pool partitions.
** This fixes sysmodule takeover with GMMU hax.


===[[Internet Browser]]===
===[[Internet Browser]]===
Line 120: Line 148:
** "IcoPctl.bntx"
** "IcoPctl.bntx"
** "LogoMoon{region/language-text}.bntx", for every region/language.
** "LogoMoon{region/language-text}.bntx", for every region/language.
===System Config===
New fields were added to [[Settings_services#System_Config|System Config]].


==[[NPDM]]==
==[[NPDM]]==