Editing SMI

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
The SMI, likely standing for Software Manufacture Information, is a signed certificate contained in the [[Serial Flash]] Individual Data (idata) segment at offset 0x10000. It contains the minimal version of the System Software that can be installed on the console. This is justified by hardware evolutions that do not support old System Software and is also a security measure to prevent downgrade. It contains a message encrypted with per-console keys and is signed with RSA. It is parsed and verified in the [[Secure Loader]].
= Table of MinFW =
 
See also [https://wiki.henkaku.xyz/vita/IdStorage#0x80_-_SMI PS Vita SMI].
 
= Structure =
 
The structure is exactly the same as on PS Vita.
 
<source lang="C">
/**
* The SMI certificate can be divided in three areas:
*  - offset 0x000~0x07F: plaintext area
*  - offset 0x080~0x0FF: payload area
*  - offset 0x100~0x1FF: signature area
*/
struct SMI_certificate_plaintext {
    /** SMI Magic: Must be "SMI\0" */
    uint8_t magic[4];
    /** SMI Version: Must be 1 */
    uint32_t version;
    /**
    * Minimal firmware version, in plaintext
    * This is ignored by second_loader on PS Vita, and maybe by secure_loader on PS4.
    */
    uint32_t minfw_plaintext;
    /**
    * Padding up to offset 0x80 (payload area).
    * Checked by second_loader to be all zeroes.
    */
    uint8_t must_be_zero[0x80 - 0xC];
   
    /**
    * Minimal firmware version allowed to run on unit.
    * Must be higher or equal to the version contained
    * in second_loader, or panic() will be called.
    */
    uint32_t manuSdkVersion;
    /**
    * Padding up to offset 0x100 (signature area).
    * ?Must be all zeroes but not checked?
    */
    uint8_t unused[0x100 - 0x84];
 
    /** RSA2048 Signature area */
    uint8_t signature[0x100];
};
</source>
 
= Table of Minimal System Software version in SMI =


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! PS4 Model !! S/N? !! Version in SMI !! Notes
! Model !! S/N ? !! MinFW in SMI !! Notes
|-
|-
| DEHT-AW03AK-L0 || {{no}} || 0.915 || Ancient Devkit
| DEHT-AW03AK-L0 || {{no}} || 0.915 || Ancient Devkit
Line 57: Line 9:
| CUH-1004A B01 || {{no}} || 1.01 || Initial Retail
| CUH-1004A B01 || {{no}} || 1.01 || Initial Retail
|-
|-
| DUH-T1000AA || {{no}} || 1.01 || Initial TestKit
| DUH-T1000AA || {{no}} || 1.01 || Initial Testkit
|-
|-
| DUH-D1000AA || {{no}} || 1.01 || Initial DevKit
| DUH-D1000AA || {{no}} || 1.01 || Initial Devkit
|-
|-
| CUH-1001A B01 || {{no}} || 1.05 || N.A.
| CUH-1001A B01 || {{no}} || 1.05 || N.A.
Line 83: Line 35:
| CUH-2015A B01X || {{no}} || 3.55 || N.A.
| CUH-2015A B01X || {{no}} || 3.55 || N.A.
|-
|-
| DUH-T7000AA || {{no}} || 3.70 || Neo TestKit
| DUH-T7000AA || {{no}} || 3.70 || Neo Testkit
|-
|-
| DUH-D7000JA || {{no}} || 3.70 || Neo Dekkit
| DUH-D7000JA || {{no}} || 3.70 || Neo Devkit
|-
|-
| CUH-7006B B01 || {{no}} || 4.05 || N.A.
| CUH-7006B B01 || {{no}} || 4.05 || N.A.
Please note that all contributions to PS4 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS4 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)

Template used on this page: