I read the cmtl.xml for the latest Super Mario Bros. Wonder update, the key required to decrypt is 0x10 (17-1). However the system version reads like it needs 14.1.1 firmware, But that firmware requires key 0xD - so how can it decrypt if it needs key 0x10? It's also built with sdk 21.4.1.0
<KeyGeneration>17</KeyGeneration>
<KeyGenerationMin>17</KeyGenerationMin>
<RequiredSystemVersion>1411383346</RequiredSystemVersion>
This RequiredSystemVersion doesn't make sense to me, can someone shed some light? I had a look at switchbrew but couldn't find out that information.
Master Key 0x00. */ fw1
...
Master key 0x12. */ fw19
Master key 0x13. */ fw20
Master key 0x14. */ fw21
Master key 0x15. */ fw22
Then on a dlc I have this:
<KeyGenerationMin>21</KeyGenerationMin>
<RequiredSystemVersion>262194</RequiredSystemVersion>
262194? WTF - is this version.
Never mind, I figured it out:
using System;
class Program
{
static void Main()
{
// Read this value from your <RequiredSystemVersion> tag in the .cnmt.xml
uint sysVer = 738263040; // Example: should give 11.0.1
string versionString = DecodeSwitchSystemVersion(sysVer);
Console.WriteLine($"Required System Version: {sysVer}");
Console.WriteLine($"Firmware version: {versionString}");
}
/// <summary>
/// Converts Nintendo Switch RequiredSystemVersion to X.Y.Z format
/// </summary>
public static string DecodeSwitchSystemVersion(uint version)
{
if (version == 0)
return "0.0.0 (No minimum)";
int major = (int)((version >> 26) & 0x3F);
int minor = (int)((version >> 20) & 0x3F);
int micro = (int)((version >> 16) & 0x0F);
return $"{major}.{minor}.{micro}";
}
}
<KeyGeneration>17</KeyGeneration>
<KeyGenerationMin>17</KeyGenerationMin>
<RequiredSystemVersion>1411383346</RequiredSystemVersion>
This RequiredSystemVersion doesn't make sense to me, can someone shed some light? I had a look at switchbrew but couldn't find out that information.
Master Key 0x00. */ fw1
...
Master key 0x12. */ fw19
Master key 0x13. */ fw20
Master key 0x14. */ fw21
Master key 0x15. */ fw22
Then on a dlc I have this:
<KeyGenerationMin>21</KeyGenerationMin>
<RequiredSystemVersion>262194</RequiredSystemVersion>
262194? WTF - is this version.
Never mind, I figured it out:
using System;
class Program
{
static void Main()
{
// Read this value from your <RequiredSystemVersion> tag in the .cnmt.xml
uint sysVer = 738263040; // Example: should give 11.0.1
string versionString = DecodeSwitchSystemVersion(sysVer);
Console.WriteLine($"Required System Version: {sysVer}");
Console.WriteLine($"Firmware version: {versionString}");
}
/// <summary>
/// Converts Nintendo Switch RequiredSystemVersion to X.Y.Z format
/// </summary>
public static string DecodeSwitchSystemVersion(uint version)
{
if (version == 0)
return "0.0.0 (No minimum)";
int major = (int)((version >> 26) & 0x3F);
int minor = (int)((version >> 20) & 0x3F);
int micro = (int)((version >> 16) & 0x0F);
return $"{major}.{minor}.{micro}";
}
}
Last edited by AmeliaFox,








