This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
Firmware version not detected for latest firmwares #73
Labels
You can continue the conversation there. Go to discussion →
Actually that's not an issue. NxNandManager must be updated to detect new firmware versions.
How it works now
A firmware package contains a specifc title (program):
0100000000000809 (SystemVersion)
. Materially, this program is binary data stored inside a NCA file (Nintendo Content Archive) whose filename is different for each firmware version.For example:
A static array in source code, manually updated, references each NCA filename and corresponding version.
When the suitable bis key is provided, NxNandManager will scan the content of SYSTEM:/Contents/registered. If a *.nca file inside this folder matches an entry in the array, you get your firmware version. Simple as that.
How to get the new NCA filename each time the firmware is updated ?
A firmware package is just a bunch of NCAs. All theses files are fully encrypted.
With the right keys, you can decrypt NCA header (first 0xC00 bytes) where the program Id (title Id) is stored. If the program Id is 0100000000000809, you know this is "SystemVersion".
So every time a firmware package is released, with a program like hactool, you can get the SystemVersion's filename by inspecting the package.
What's the problem?
Solutions
A) Implement NCA header decryption
B) Request a remote DB to get the latest nca filenames instead of a static array
C) ???
WIP
Solution B. Will only work with Qt (GUI version).
Remote DB ✔️ https://eliboa.com/switch/nca.php
DB request implementation ✔️
Quality tests 🚧
The text was updated successfully, but these errors were encountered: