SMI: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
No edit summary
 
Line 1: Line 1:
= Table of MinFW =
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]].
 
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"
|-
|-
! Model !! S/N ? !! MinFW in SMI !! Notes
! PS4 Model !! S/N? !! Version in SMI !! Notes
|-
|-
| DEHT-AW03AK-L0 || {{no}} || 0.915 || Ancient Devkit
| DEHT-AW03AK-L0 || {{no}} || 0.915 || Ancient Devkit
Line 9: Line 57:
| 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 35: Line 83:
| 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 Devkit
| DUH-D7000JA || {{no}} || 3.70 || Neo Dekkit
|-
|-
| CUH-7006B B01 || {{no}} || 4.05 || N.A.
| CUH-7006B B01 || {{no}} || 4.05 || N.A.

Latest revision as of 09:02, 4 January 2025

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.

See also PS Vita SMI.

Structure[edit | edit source]

The structure is exactly the same as on PS Vita.

/**
 * 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];
};

Table of Minimal System Software version in SMI[edit | edit source]

PS4 Model S/N? Version in SMI Notes
DEHT-AW03AK-L0 No 0.915 Ancient Devkit
CUH-1004A B01 No 1.01 Initial Retail
DUH-T1000AA No 1.01 Initial TestKit
DUH-D1000AA No 1.01 Initial DevKit
CUH-1001A B01 No 1.05 N.A.
CUH-1001A B01 No 1.52 N.A.
DUH-T1000AA No 1.52 N.A.
CUH-1115A B02 No 1.70 N.A.
CUH-1116A B01Y No 1.75 N.A.
DUH-T1000AA No 2.03 N.A.
CUH-1216B B01 No 2.50 N.A.
CUH-1215A BZ5X No 2.50 N.A.
CUH-1200A B01 No 2.55 N.A.
CUH-1215A B01 No 3.15 N.A.
CUH-2015A B01X No 3.55 N.A.
DUH-T7000AA No 3.70 Neo TestKit
DUH-D7000JA No 3.70 Neo Dekkit
CUH-7006B B01 No 4.05 N.A.
CUH-2108B B01X No 4.55 N.A.
CUH-7115B BZ5X No 4.70 N.A.
CUH-2116B B01Y No 5.07 N.A.
CUH-7215B B01X No 6.50 N.A.
CUH-7216B BZSY No 6.70 N.A.