20.1.5: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
 
(3 intermediate revisions by the same user not shown)
Line 19: Line 19:


=== IPC Interface Changes ===
=== IPC Interface Changes ===
* Unknown Interface prev-version: 0x7100086504 [ID = 0x0919ff75]
* Interface Changed: nn::account::migration::IDeviceMigrationUserImportRequest
* Unknown Interface prev-version: 0x7100085DD4 [ID = 0x38f0bb3d]
** Added:     27 - inbytes: 0x0, outbytes: 0x1
* Unknown Interface prev-version: 0x71000846F0 [ID = 0x107aa108]
* Interface Changed: nn::account::migration::IDeviceMigrationUserImportRequest
* Unknown Interface prev-version: 0x7100085B3C [ID = 0x3af03446]
** Added:     27 - inbytes: 0x0, outbytes: 0x1
* Unknown Interface prev-version: 0x7100086228 [ID = 0x36f3a242]
* Unknown Interface cur-version: 0x7100086504 [ID = 0x0919ff75]
* Unknown Interface cur-version: 0x7100085DD4 [ID = 0x38f0bb3d]
* Unknown Interface cur-version: 0x71000846F0 [ID = 0x107aa108]
* Unknown Interface cur-version: 0x7100085B3C [ID = 0x3af03446]
* Unknown Interface cur-version: 0x7100086228 [ID = 0x36f3a242]
* Unknown Interface prev-version: 0x7100266784 [ID = 0x3af03446]
* Unknown Interface prev-version: 0x7100265338 [ID = 0x107aa108]
* Unknown Interface prev-version: 0x71001A5D44 [ID = 0x04dea048]
* Unknown Interface prev-version: 0x7100266A1C [ID = 0x38f0bb3d]
* Unknown Interface prev-version: 0x710026714C [ID = 0x0919ff75]
* Unknown Interface prev-version: 0x71001A6348 [ID = 0x4e930893]
* Unknown Interface prev-version: 0x7100266E70 [ID = 0x36f3a242]
* Unknown Interface cur-version: 0x71002673BC [ID = 0x0919ff75]
* Unknown Interface cur-version: 0x71002669F4 [ID = 0x3af03446]
* Unknown Interface cur-version: 0x71002655A8 [ID = 0x107aa108]
* Unknown Interface cur-version: 0x71001A65C0 [ID = 0x4e930893]
* Unknown Interface cur-version: 0x7100266C8C [ID = 0x38f0bb3d]
* Unknown Interface cur-version: 0x71002670E0 [ID = 0x36f3a242]
* Unknown Interface cur-version: 0x71001A5FBC [ID = 0x04dea048]
* Interface Changed: nn::account::IAccountServiceForAdministrator
** Changed:  292 - outinterfaces: ['0x7100266784 [ID = 0x3af03446]'] -> ['0x71002669F4 [ID = 0x3af03446]'] (final state: inbytes: 0x10, outbytes: 0x0, outinterfaces: ['0x71002669F4 [ID = 0x3af03446]'])
** Changed:  293 - outinterfaces: ['0x7100266A1C [ID = 0x38f0bb3d]'] -> ['0x7100266C8C [ID = 0x38f0bb3d]'] (final state: inbytes: 0x10, outbytes: 0x0, outinterfaces: ['0x7100266C8C [ID = 0x38f0bb3d]'])
** Changed:  350 - outinterfaces: ['0x7100266E70 [ID = 0x36f3a242]'] -> ['0x71002670E0 [ID = 0x36f3a242]'] (final state: inbytes: 0x1, outbytes: 0x0, outinterfaces: ['0x71002670E0 [ID = 0x36f3a242]'])
** Changed:  352 - outinterfaces: ['0x710026714C [ID = 0x0919ff75]'] -> ['0x71002673BC [ID = 0x0919ff75]'] (final state: inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x71002673BC [ID = 0x0919ff75]'])
* Interface Changed: nn::account::baas::IAdministrator
** Changed:   181 - outinterfaces: ['0x7100265338 [ID = 0x107aa108]'] -> ['0x71002655A8 [ID = 0x107aa108]'] (final state: inbytes: 0x0, outbytes: 0x0, outinterfaces: ['0x71002655A8 [ID = 0x107aa108]'])
** Changed:  182 - outinterfaces: ['0x7100265338 [ID = 0x107aa108]'] -> ['0x71002655A8 [ID = 0x107aa108]'] (final state: inbytes: 0x10, outbytes: 0x0, outinterfaces: ['0x71002655A8 [ID = 0x107aa108]'])
* Interface Changed: nn::account::baas::IManagerForSystemService
** Changed:  181 - outinterfaces: ['0x7100265338 [ID = 0x107aa108]'] -> ['0x71002655A8 [ID = 0x107aa108]'] (final state: inbytes: 0x0, outbytes: 0x0, outinterfaces: ['0x71002655A8 [ID = 0x107aa108]'])
** Changed:  182 - outinterfaces: ['0x7100265338 [ID = 0x107aa108]'] -> ['0x71002655A8 [ID = 0x107aa108]'] (final state: inbytes: 0x10, outbytes: 0x0, outinterfaces: ['0x71002655A8 [ID = 0x107aa108]'])
* Interface Changed: nn::ns::detail::IApplicationManagerInterface
** Changed:  4026 - outinterfaces: ['0x71001A5D44 [ID = 0x04dea048]'] -> ['0x71001A5FBC [ID = 0x04dea048]'] (final state: inbytes: 0x8, outbytes: 0x0, outinterfaces: ['0x71001A5FBC [ID = 0x04dea048]'])
** Changed:  4027 - outinterfaces: ['0x71001A6348 [ID = 0x4e930893]'] -> ['0x71001A65C0 [ID = 0x4e930893]'] (final state: inbytes: 0x8, outbytes: 0x0, outinterfaces: ['0x71001A65C0 [ID = 0x4e930893]'])
* Unknown Interface prev-version: 0x710013C728 [ID = 0x6e021695]
* Unknown Interface prev-version: 0x71001408F8 [ID = 0x29d8801c]
* Unknown Interface prev-version: 0x71001408F8 [ID = 0x29d8801c]
* Unknown Interface prev-version: 0x7100141D04 [ID = 0x3c7c9db7]
* Unknown Interface prev-version: 0x7100140D7C [ID = 0xeb5e4ee2]
* Unknown Interface prev-version: 0x710013E3E8 [ID = 0x8cf617a1]
* Unknown Interface cur-version: 0x710013E538 [ID = 0x8cf617a1]
* Unknown Interface cur-version: 0x7100140ECC [ID = 0xeb5e4ee2]
* Unknown Interface cur-version: 0x710013C878 [ID = 0x6e021695]
* Unknown Interface cur-version: 0x7100140A48 [ID = 0x29d8801c]
* Unknown Interface cur-version: 0x7100140A48 [ID = 0x29d8801c]
* Unknown Interface cur-version: 0x7100141E54 [ID = 0x3c7c9db7]
* Interface Changed: nn::migration::user::IService
* Interface Changed: nn::migration::user::IService
** Changed:  2100 - outinterfaces: ['0x710013C728 [ID = 0x6e021695]'] -> ['0x710013C878 [ID = 0x6e021695]'] (final state: buffer_entry_sizes: [0x100], buffers: [0x19], inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x710013C878 [ID = 0x6e021695]'])
** Changed:  2110 - outinterfaces: ['0x710013C728 [ID = 0x6e021695]'] -> ['0x710013C878 [ID = 0x6e021695]'] (final state: inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x710013C878 [ID = 0x6e021695]'])
** Changed:  2200 - outinterfaces: ['0x710013E3E8 [ID = 0x8cf617a1]'] -> ['0x710013E538 [ID = 0x8cf617a1]'] (final state: buffer_entry_sizes: [0x100], buffers: [0x19], inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x710013E538 [ID = 0x8cf617a1]'])
** Changed:  2210 - outinterfaces: ['0x710013E3E8 [ID = 0x8cf617a1]'] -> ['0x710013E538 [ID = 0x8cf617a1]'] (final state: inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x710013E538 [ID = 0x8cf617a1]'])
** Changed:  2250 - outinterfaces: ['0x71001408F8 [ID = 0x29d8801c]'] -> ['0x7100140A48 [ID = 0x29d8801c]'] (final state: inbytes: 0x18, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100140A48 [ID = 0x29d8801c]'])
** Changed:  2250 - outinterfaces: ['0x71001408F8 [ID = 0x29d8801c]'] -> ['0x7100140A48 [ID = 0x29d8801c]'] (final state: inbytes: 0x18, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100140A48 [ID = 0x29d8801c]'])
** Changed:  2260 - outinterfaces: ['0x71001408F8 [ID = 0x29d8801c]'] -> ['0x7100140A48 [ID = 0x29d8801c]'] (final state: inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100140A48 [ID = 0x29d8801c]'])
** Changed:  2260 - outinterfaces: ['0x71001408F8 [ID = 0x29d8801c]'] -> ['0x7100140A48 [ID = 0x29d8801c]'] (final state: inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100140A48 [ID = 0x29d8801c]'])
** Changed:  2300 - outinterfaces: ['0x7100140D7C [ID = 0xeb5e4ee2]'] -> ['0x7100140ECC [ID = 0xeb5e4ee2]'] (final state: inbytes: 0x18, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100140ECC [ID = 0xeb5e4ee2]'])
 
** Changed:  2310 - outinterfaces: ['0x7100140D7C [ID = 0xeb5e4ee2]'] -> ['0x7100140ECC [ID = 0xeb5e4ee2]'] (final state: inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100140ECC [ID = 0xeb5e4ee2]'])
=== [[NS_services|ns]] ===
** Changed:  2400 - outinterfaces: ['0x7100141D04 [ID = 0x3c7c9db7]'] -> ['0x7100141E54 [ID = 0x3c7c9db7]'] (final state: inbytes: 0x10, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100141E54 [ID = 0x3c7c9db7]'])
Besides IPC-related changes:
** Changed: 2420 - outinterfaces: ['0x7100141D04 [ID = 0x3c7c9db7]'] -> ['0x7100141E54 [ID = 0x3c7c9db7]'] (final state: inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100141E54 [ID = 0x3c7c9db7]'])
 
* Updated L_a0488, prev ver @ L_a0478.
** Added a call to L_8f0a4 after the first func call.
** Added a call to L_9c164.
* Updated L_a05e4, prev ver @ L_a0584.
** Code was added for using L_8f0a4 in a loop.
** Added a call to L_9c164.
* Updated L_ce23c, prev ver @ L_ce160.
** Code was added at 0xce56c (prev ver 0xce48c): <code>if (s32 sp44 <= 0x13) { L_8f0a4(...); <increment sp44> }</code>
* Updated L_11d950, prev ver @ L_11d824.
** When the first func call fails, this now calls L_8f0a4 twice before returning.
* Updated L_11ed70, prev ver @ L_11ebf4.
** Added a call to L_8f0a4 after the first func call.
** When L_99b70 returns success, this now calls L_9c164.
* Updated L_11f454, prev ver @ L_11f290.
** At the start of this func a call to L_8f0a4 was added.
** At the end of this func when successful, a call to L_9c164 was added.
* Updated L_14418c, prev ver @ L_143f68.
** Changes are similar to L_ce23c, except the used field is <code>s32 *(*(inx0+8)+8)</code>.
* Updated L_1446bc, prev ver @ L_14444c.
** Added: <code>*(inx0+8) = 0;</code>
* Updated L_144c28, prev ver @ L_1449b4.
** Clearing code was updated.
* Updated L_26bb28, prev ver @ L_26b818.
** Minor changes?
* [[HID_services|hid:sys]] IPC-client vfunc for cmd RegisterAppletResourceUserId:
** This now uses an additional u8 param. Note that the latest hid-sysmodule (on NX) as of this version doesn't currently use this additional param.


=== [[Error_Report_services|erpt]] ===
=== [[Error_Report_services|erpt]] ===
Line 83: Line 63:


It now checks that the error code string is size <= 0xF instead of <= 0xE.
It now checks that the error code string is size <= 0xF instead of <= 0xE.
=== [[Migration_services|migration]] ===
Besides IPC related changes from updated SDK, etc:
* L_10a560 (prev ver L_10a540), L_10a690 (prev ver L_10a650), L_144ec4 (prev ver L_144dac), L_144f7c (prev ver L_144dac):
** Added a call to L_d5294 (logging func).
* L_12700c updated, prev ver @ L_126fbc.
** Now sets x21 to the L_15306c ret, instead of ignoring it. Code was added following that.
* Updated L_12b8d0, prev ver @ L_12b830.
** At 0x12b950 (prev ver 0x12b8b0), added: <code>if ((L_143510() & 1) == 0) L_1a8620(*(x23+104))</code>;
* Updated L_12d4c8, prev ver @ L_12d418.
** Now calls L_153050, the ret&1 is passed as an additional param to L_2e4.
* Updated L_12f6b4, prev ver @ L_12f5e4.
** Clearing code was updated.
* Updated L_12f9a0, prev ver @ L_12f8d0.
* Updated L_12fcd8, prev ver @ L_12fbb4.
* Updated L_144e60, prev ver @ L_144d10.
** Removed some func calls.
* New func L_153000.
* New func L_153050.
** Only called by L_12700c and L_12d4c8.
* New func L_1a8620.
** Only called by L_12b8d0 and L_12fcd8.
* [[Error Upload services|eupld:c]] SetAutoUpload is now used. This is now called by L_12f9a0 and L_1a8620.


==See Also==
==See Also==

Latest revision as of 08:00, 22 June 2025

The Switch 20.1.5 system update was released on June 19, 2025 (UTC). 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>.

Change-log

Official ALL change-log:

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

System Titles

  • The following titles were updated:
    • Sysmodules: account, ns, erpt, pctl, migration.
    • Applets: qlaunch.

NPDM changes (besides usual version-bump):

  • migration: Service access: added eupld:c.

RomFs changes:

IPC Interface Changes

  • Interface Changed: nn::account::migration::IDeviceMigrationUserImportRequest
    • Added: 27 - inbytes: 0x0, outbytes: 0x1
  • Interface Changed: nn::account::migration::IDeviceMigrationUserImportRequest
    • Added: 27 - inbytes: 0x0, outbytes: 0x1
  • Unknown Interface prev-version: 0x71001408F8 [ID = 0x29d8801c]
  • Unknown Interface cur-version: 0x7100140A48 [ID = 0x29d8801c]
  • Interface Changed: nn::migration::user::IService
    • Changed: 2250 - outinterfaces: ['0x71001408F8 [ID = 0x29d8801c]'] -> ['0x7100140A48 [ID = 0x29d8801c]'] (final state: inbytes: 0x18, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100140A48 [ID = 0x29d8801c]'])
    • Changed: 2260 - outinterfaces: ['0x71001408F8 [ID = 0x29d8801c]'] -> ['0x7100140A48 [ID = 0x29d8801c]'] (final state: inbytes: 0x4, inhandles: [1], outbytes: 0x0, outinterfaces: ['0x7100140A48 [ID = 0x29d8801c]'])

ns

Besides IPC-related changes:

  • Updated L_a0488, prev ver @ L_a0478.
    • Added a call to L_8f0a4 after the first func call.
    • Added a call to L_9c164.
  • Updated L_a05e4, prev ver @ L_a0584.
    • Code was added for using L_8f0a4 in a loop.
    • Added a call to L_9c164.
  • Updated L_ce23c, prev ver @ L_ce160.
    • Code was added at 0xce56c (prev ver 0xce48c): if (s32 sp44 <= 0x13) { L_8f0a4(...); <increment sp44> }
  • Updated L_11d950, prev ver @ L_11d824.
    • When the first func call fails, this now calls L_8f0a4 twice before returning.
  • Updated L_11ed70, prev ver @ L_11ebf4.
    • Added a call to L_8f0a4 after the first func call.
    • When L_99b70 returns success, this now calls L_9c164.
  • Updated L_11f454, prev ver @ L_11f290.
    • At the start of this func a call to L_8f0a4 was added.
    • At the end of this func when successful, a call to L_9c164 was added.
  • Updated L_14418c, prev ver @ L_143f68.
    • Changes are similar to L_ce23c, except the used field is s32 *(*(inx0+8)+8).
  • Updated L_1446bc, prev ver @ L_14444c.
    • Added: *(inx0+8) = 0;
  • Updated L_144c28, prev ver @ L_1449b4.
    • Clearing code was updated.
  • Updated L_26bb28, prev ver @ L_26b818.
    • Minor changes?
  • hid:sys IPC-client vfunc for cmd RegisterAppletResourceUserId:
    • This now uses an additional u8 param. Note that the latest hid-sysmodule (on NX) as of this version doesn't currently use this additional param.

erpt

Only a single instruction was changed (besides GNU build-id). Previously, when validating the CreateReportContext in Reporter::CreateReport, Nintendo checks that FieldId_ErrorCode is present, and that the field corresponding to FieldId_ErrorCode has type == FieldType_String (ResultFieldTypeMismatch if not) and that it has size <= 0xE (ResultArrayFieldTooLarge if not).

It now checks that the error code string is size <= 0xF instead of <= 0xE.

migration

Besides IPC related changes from updated SDK, etc:

  • L_10a560 (prev ver L_10a540), L_10a690 (prev ver L_10a650), L_144ec4 (prev ver L_144dac), L_144f7c (prev ver L_144dac):
    • Added a call to L_d5294 (logging func).
  • L_12700c updated, prev ver @ L_126fbc.
    • Now sets x21 to the L_15306c ret, instead of ignoring it. Code was added following that.
  • Updated L_12b8d0, prev ver @ L_12b830.
    • At 0x12b950 (prev ver 0x12b8b0), added: if ((L_143510() & 1) == 0) L_1a8620(*(x23+104));
  • Updated L_12d4c8, prev ver @ L_12d418.
    • Now calls L_153050, the ret&1 is passed as an additional param to L_2e4.
  • Updated L_12f6b4, prev ver @ L_12f5e4.
    • Clearing code was updated.
  • Updated L_12f9a0, prev ver @ L_12f8d0.
  • Updated L_12fcd8, prev ver @ L_12fbb4.
  • Updated L_144e60, prev ver @ L_144d10.
    • Removed some func calls.
  • New func L_153000.
  • New func L_153050.
    • Only called by L_12700c and L_12d4c8.
  • New func L_1a8620.
    • Only called by L_12b8d0 and L_12fcd8.
  • eupld:c SetAutoUpload is now used. This is now called by L_12f9a0 and L_1a8620.

See Also

System update report(s):


Nintendo Switch System Versions
1.0.0
2.0.02.1.02.2.02.3.0
3.0.03.0.13.0.2
4.0.04.0.14.1.0
5.0.05.0.15.0.25.1.0
6.0.06.0.16.1.06.2.0
7.0.07.0.1
8.0.08.0.18.1.08.1.1
9.0.09.0.19.1.09.2.0
10.0.010.0.110.0.210.0.310.0.410.1.010.1.110.2.0
11.0.011.0.1
12.0.012.0.112.0.212.0.312.1.0
13.0.013.1.013.2.013.2.1
14.0.014.1.014.1.114.1.2
15.0.015.0.1
16.0.016.0.116.0.216.0.316.1.0
17.0.017.0.1
18.0.018.0.118.1.0
19.0.019.0.1
20.0.020.0.120.1.020.1.120.1.5