Officially, Nintendo only supports using CTR cards to run system updaters on Old 3DS development units. This makes it impossible to do a system update and/or region change if you don't have both an official CTR flash cart and a device that can write to one, e.g. a Partner-CTR Debugger.
It's possible to extract the CIAs from a CSU system update file manually, and based on this, it should be possible for GM9 to extract and install the CIAs using its virtual filesystem.
Mounting a System Update CSU presents an NCCH section called content0.game.app. This NCCH section, when mounted, has two important files in /romfs/contents:
Contents.cnt (contains all of the CIAs)
CupList (contains a list of the title IDs in Contents.cnt)
An extraction utility for Contents.cnt can be found here: https://github.com/toiry921/CupTheCnt
This utility can be better integrated into GM9 to provide e.g. a virtual CIA drive for the Contents.cnt+CupList files.
NOTE: GM9 seems to only support mounting the CSU/CCI and NCCH as G:, which makes it impossible to mount an NCCH section within a CSU. This can probably be worked around somehow.
The upgrade procedure is as follows:
Install all of the CIAs as listed in CupList.
Update the FIRM partition. (Start+Y in DevMenu)
The official System Updater also supports region changing. I'm not entirely sure what's involved with this, but I do have a saved NAND image from 0.24.67 EUR and 0.24.68 USA, so I will compare to the two and see what's changed.
I suspect region changing does the following:
Remove all out-of-region CIAs from NAND. (There may be a hard-coded list; I'm not sure.)
EUR has rw/sys/SecureInfo_A; USA has rw/sys/SecureInfo_B. Not sure if this makes a real difference.
The region code value at 0x100 is changed, and the file is re-signed using an RSA key embedded in the updater. GM9 wouldn't need to include the key, but it would have to be able to find the key in the updater and then use it to re-sign the file.
rw/sys/updater.log:
Various EUR-specific titles were deleted. I'm not sure if this is a hard-coded list, or if it simply deletes anything that doesn't match the new region.
MenuId is set to 00040030-00008F02 (USA home menu) [unsure where this setting is stored]
Officially, Nintendo only supports using CTR cards to run system updaters on Old 3DS development units. This makes it impossible to do a system update and/or region change if you don't have both an official CTR flash cart and a device that can write to one, e.g. a Partner-CTR Debugger.
It's possible to extract the CIAs from a CSU system update file manually, and based on this, it should be possible for GM9 to extract and install the CIAs using its virtual filesystem.
Mounting a System Update CSU presents an NCCH section called content0.game.app. This NCCH section, when mounted, has two important files in /romfs/contents:
An extraction utility for Contents.cnt can be found here: https://github.com/toiry921/CupTheCnt This utility can be better integrated into GM9 to provide e.g. a virtual CIA drive for the Contents.cnt+CupList files.
NOTE: GM9 seems to only support mounting the CSU/CCI and NCCH as G:, which makes it impossible to mount an NCCH section within a CSU. This can probably be worked around somehow.
The upgrade procedure is as follows:
The official System Updater also supports region changing. I'm not entirely sure what's involved with this, but I do have a saved NAND image from 0.24.67 EUR and 0.24.68 USA, so I will compare to the two and see what's changed.
I suspect region changing does the following: