Editing PUP

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:
PUP (Playstation Update Package) is the file format of the PSP, PS3, PSVita, PS4, and PS5 system software update packages. It contains updated firmware and files for devices such as the GameOS, Syscon, Wi-Fi, Bluetooth, Communication Processor, Southbridge, Bluray Drive, and more.
PUP (Playstation Update Package) is the file format of the PSP, PS3, PSVita, PS4, and PS5 system software update packages. It contains updated firmware and files for devices such as the GameOS, Syscon, Wi-Fi, Bluetooth, Communication Processor, Southbridge, BD drive, and more.


== PUP Structure ==
== PUP Structure ==


PS4 update files differ from previous PlayStation consoles in that they embed multiple PUP fragments. The "main" file that is distributed and downloaded to the PS4 console is a SLB2-packed (or "BLS") file which contains PUP fragment files. On retail and TestKit, it typically contains two PUPs (`PS4UPDATE1.PUP` and `PS4UPDATE2.PUP`), while DevKit may have four. These PS4 PUP files are similar in structure to PS4 Signed ELFs (SELFs). Each PUP fragment is responsible for containing different sets of files.
PS4 update files differ from previous consoles in that they embed multiple PUP fragments. The "main" file that's distributed and downloaded to the console is an SLB2-packed (or "BLS") file which contains PUP fragment files. On retail and testkits, it typically contains two PUPs (`PS4UPDATE1.PUP` and `PS4UPDATE2.PUP`), while devkits may have four. These PUP files are similar in structure to Signed ELFs (SELFs). Each update fragment is responsible for containing different sets of firmware and files.


* PS4UPDATE1 is the "core" update file and contains updates for GameOS/x86 kernel and usermode, Bluray Drive, EAP, EMC, Syscon, SAM, and other firmware stored on the SPI flash.
* PS4UPDATE1 is the "core" update file and contains updates for GameOS/x86 kernel and libraries, BluRay, EAP, EMC, Syscon, SAMU, and other firmware stored on the SPI flash.
* PS4UPDATE2 contains the `system_ex` partition of system applications.
* PS4UPDATE2 contains the `system_ex` partition of system apps.
* PS4UPDATE3 (DevKit only) contains the preinstall image for DevKit.
* PS4UPDATE3 (devkits) contains the preinstall image for devkit files.
* PS4UPDATE4 (DevKit only) contains a seemingly empty preinstall part 2 image for DevKit (maybe reserved?).
* PS4UPDATE4 (devkits) contains a seemingly empty preinstall part 2 image (maybe reserved?).


All PUP fragments contain the end-user license agreement, the Orbis Software Updater (orbis_swu), and a watermark.
All update fragments contain the EULA, the Orbis Software Updater (orbis_swu), and a watermark.


=== File Header ===
=== File Header ===


The file header for the main PUP file is an SLB2 file. Each PUP fragment packed into it has the following header (note: after the initial 0x10 bytes, the remaining 0x10 bytes are encrypted along with the metadata that follows it).
The file header for the main PUP file is an SLB2 file. Each pup fragment packed into it has the following header (note: after the initial 0x10 bytes, the remaining 0x10 bytes are encrypted along with the metadata that follows it).


<source lang="c">
<source lang="c">
Line 60: Line 60:
</source>
</source>


In most cases (ie. "data" segments as opposed to info segments), the segment ID indicates the type of firmware or file to update (see [[#Indices]] table). In the case of info segments, the segment ID points to the index of the "data" segment it contains information for. Info segments are typically only seen when the file or firmware utilizes block-based segments.
In most cases (ie. "data" segments as opposed to info segments), the segment ID indicates the type of firmware or file to update (see: "Indices" table). In the case of info segments, the segment ID points to the index of the "data" segment it contains information for. Info segments are typically only seen when the file or firmware utilizes block-based segments.


=== PUP Info ===
=== PUP Info ===
Line 102: Line 102:
=== Decrypter (first step) ===
=== Decrypter (first step) ===


* [https://github.com/zecoxao/ps5-pup-decrypt PS5 PUP decryptor based on the one for PS4 (2022-10-14 to 2024-05-25)]
* [https://github.com/idc/ps4-pup_decrypt ps4-pup_decrypt by idc]
* [https://github.com/EchoStretch/ps4-pup-decrypt PS4 PUP decryptor based on idc's by EchoStretch (2024-06-07)]
* [https://github.com/andy-man/ps4-pup-decrypt PS4 PUP decryptor based on idc's by andy-man (2024-04-07)]
* [https://github.com/Creeeeger/PS4-dec PS4 PUP decryptor based on idc's by Creeger (2024-02-20)]
* [https://github.com/SocraticBliss/ps4-pup_decrypt PS4 PUP decryptor based on idc's by SocraticBliss and l0lhax (2019-05-28)]
* [https://github.com/idc/ps4-pup_decrypt ps4-pup_decrypt by idc (2016-06-05 to 2017-11-24)]


=== Unpacker (second step) ===
=== Unpacker (second step) ===


* [https://github.com/seregonwar/PFU-PupFileUnpacker PupFileUnpacker by seregonwar (2023-04-08 to 2024-09-30)] (based on ps4_dec_pup_info by SocraticBliss)
* [https://github.com/idc/ps4-pup_unpack ps4-pup-unpack by idc]
* [https://github.com/SocraticBliss/ps4_dec_pup_info ps4_dec_pup_info by SocraticBliss (2020-09-23)]
* [https://github.com/Zer0xFF/ps4-pup-unpacker ps4-pup-unpacker by Zer0xFF] (based on ps4-pup-unpack by idc)
* [https://github.com/Zer0xFF/ps4-pup-unpacker ps4-pup-unpacker by Zer0xFF (2017-11-24 to 2018-01-14)] (based on ps4-pup-unpack by idc)
* [https://github.com/idc/ps4-pup_unpack ps4-pup-unpack by idc (2016-06-05 to 2017-12-12)]


== Indices ==
== Indices ==
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
Line 128: Line 120:
| 3 || 3 || WIFI FW || {{no}} || torus2 Aeolia A2 || [[0.910.040]] || || || --
| 3 || 3 || WIFI FW || {{no}} || torus2 Aeolia A2 || [[0.910.040]] || || || --
|-
|-
| 4 || 4 || SECURE LOADER || {{yes}} || sflash0s1.cryptx2/b 1st SOCUID || [[0.910.040]] || || (Confirmed by anon) Same body as 0x23 || [[CXD90026G]]
| 4 || 4 || SAM IPL || {{yes}} || sflash0s1.cryptx2/b 1st SOCUID || [[0.910.040]] || || (Confirmed by anon) Same body as 0x23 || [[CXD90026G]]
|-
|-
| 5 || 5 || COREOS || {{no}} || secure_modules || [[0.910.040]] || || || GEN1,2,3 Universal
| 5 || 5 || COREOS || {{no}} || secure_modules || [[0.910.040]] || || || GEN1,2,3 Universal
Line 160: Line 152:
| 0x22 || 34 || WIFI FW || {{no}} || torus2 || 2.00 || || || ??
| 0x22 || 34 || WIFI FW || {{no}} || torus2 || 2.00 || || || ??
|-
|-
| 0x23 || 35 || SECURE LOADER || {{yes}} || sflash0s1.cryptx2/b 2nd SOCUID || 2.00 || || (Confirmed by anon) Same body as 0x04 || [[CXD90026AG]]
| 0x23 || 35 || SAM IPL || {{yes}} || sflash0s1.cryptx2/b 2nd SOCUID || 2.00 || || (Confirmed by anon) Same body as 0x04 || [[CXD90026AG]]
|-
|-
| 0x24 || 36 || EMC IPL || {{no}} || sflash0s0x32/b Baikal B1  || 3.00 || || || [[CXD90046GG]]
| 0x24 || 36 || EMC IPL || {{no}} || sflash0s0x32/b Baikal B1  || 3.00 || || || [[CXD90046GG]]
Line 166: Line 158:
| 0x25 || 37 || EAP KBL || {{no}} || sflash0s0x33 Baikal B1  || 3.00 || || Same body as 0x2B and 0x21 || [[CXD90046GG]]
| 0x25 || 37 || EAP KBL || {{no}} || sflash0s0x33 Baikal B1  || 3.00 || || Same body as 0x2B and 0x21 || [[CXD90046GG]]
|-
|-
| 0x26 || 38 || SECURE LOADER || {{yes}} || sflash0s1.cryptx2/b 3rd SOCUID || 3.00 || || (Confirmed by anon) Same body as 0x2D and 0x32 || [[CXD90037G]]
| 0x26 || 38 || SAM IPL || {{yes}} || sflash0s1.cryptx2/b 3rd SOCUID || 3.00 || || (Confirmed by anon) Same body as 0x2D and 0x32 || [[CXD90037G]]
|-
|-
| 0x27 || 39 || SECURE LOADER || {{yes}} || sflash0s1.cryptx2/b 4th SOCUID || 3.00 || || (Confirmed by anon) Same body as 0x31 || [[CXD90043GB]]
| 0x27 || 39 || SAM IPL || {{yes}} || sflash0s1.cryptx2/b 4th SOCUID || 3.00 || || (Confirmed by anon) Same body as 0x31 || [[CXD90043GB]]
|-
|-
| 0x28 || 40 || EMC IPL || {{no}} || sflash0s0x32/b Baikal 1st Revision || 3.00 || || Same body as 0x2C ||
| 0x28 || 40 || EMC IPL || {{no}} || sflash0s0x32/b Baikal 1st Revision || 3.00 || || Same body as 0x2C ||
Line 178: Line 170:
| 0x2C || 44 || EMC IPL || {{no}} || sflash0s0x32/b Baikal2 1st Revision  || 4.00 || || Same body as 0x28 ||
| 0x2C || 44 || EMC IPL || {{no}} || sflash0s0x32/b Baikal2 1st Revision  || 4.00 || || Same body as 0x28 ||
|-
|-
| 0x2D || 45 || SECURE LOADER || {{yes}} || sflash0s1.cryptx2/b 5th SOCUID || 4.50 || || (Confirmed by anon) Same body as 0x26 and 0x32 || [[CXD90044GB]]
| 0x2D || 45 || SAM IPL || {{yes}} || sflash0s1.cryptx2/b 5th SOCUID || 4.50 || || (Confirmed by anon) Same body as 0x26 and 0x32 || [[CXD90044GB]]
|-
|-
| 0x2E || 46 || EMC IPL || {{no}} || sflash0s0x32/b Belize2 3rd Revision?  || 5.00 || || ||
| 0x2E || 46 || EMC IPL || {{no}} || sflash0s0x32/b Belize2 3rd Revision?  || 5.00 || || ||
Line 184: Line 176:
| 0x30 || 48 || WIFI FW || {{no}} || sflash0s0x38 trooper Belize 2 A0 || 5.00 || || || --
| 0x30 || 48 || WIFI FW || {{no}} || sflash0s0x38 trooper Belize 2 A0 || 5.00 || || || --
|-
|-
| 0x31 || 49 || SECURE LOADER || {{yes}} || sflash0s1.cryptx2/b 6th SOCUID || 5.50 || || (Confirmed by anon) Same body as 0x27 || [[CXD90051GB]]
| 0x31 || 49 || SAM IPL || {{yes}} || sflash0s1.cryptx2/b 6th SOCUID || 5.50 || || (Confirmed by anon) Same body as 0x27 || [[CXD90051GB]]
|-
|-
| 0x32 || 50 || SECURE LOADER || {{yes}} || sflash0s1.cryptx2/b 7th SOCUID || 6.50 || || (Confirmed by anon) Same body as 0x26 and 0x2D || [[CXD90055GB]]
| 0x32 || 50 || SAM IPL || {{yes}} || sflash0s1.cryptx2/b 7th SOCUID || 6.50 || || (Confirmed by anon) Same body as 0x26 and 0x2D || [[CXD90055GB]]
|-
|-
| 0x101 || 257 || EULA.XML || {{no}} || Sony Agreement XML || 1.00 ||  || || Universal
| 0x101 || 257 || EULA.XML || {{no}} || Sony Agreement XML || 1.00 ||  || || Universal
Line 200: Line 192:
| 0xD00 || 3328 || SYSCON FW || {{no}} || sc_fw_update0 firmware (4000XXXX)  || [[0.915.010]] || || || Universal Syscon
| 0xD00 || 3328 || SYSCON FW || {{no}} || sc_fw_update0 firmware (4000XXXX)  || [[0.915.010]] || || || Universal Syscon
|-
|-
| 0xD01 || 3329 || BLURAY DRIVE FW || {{no}} || Bluray drive firmware (all revisions) (4XXR) || [[0.920.030]] || || || Universal Bluray Drive
| 0xD01 || 3329 || BLURAY FW || {{no}} || bluray firmware (all revisions) (4XXR) || [[0.920.030]] || || || Universal Bluray
|-
|-
| 0xD02 || 3330 || USB SATA BRIDGE FW || {{no}} || USB SATA bridge firmware (da0) || 1.00 || || || [[MB86C311B]]
| 0xD02 || 3330 || USB SATA BRIDGE FW || {{no}} || usb sata bridge firmware (da0) || 1.00 || || || [[MB86C311B]]
|-
|-
| 0xD07 || 3335 || SYSCON PATCH || {{no}} || sc_fw_update0 patch (4001XXXX)  || 2.50 Test/Retail || || || Universal Syscon
| 0xD07 || 3335 || SYSCON PATCH || {{no}} || sc_fw_update0 patch (4001XXXX)  || 2.50 Test/Retail || || || Universal Syscon
Line 208: Line 200:
| 0xD08 || 3336 || SYSCON FW || {{no}} || sc_fw_update0 firmware (4000XXXX)  || 1.00 Devkit || || || Universal Syscon
| 0xD08 || 3336 || SYSCON FW || {{no}} || sc_fw_update0 firmware (4000XXXX)  || 1.00 Devkit || || || Universal Syscon
|-
|-
| 0xD09 || 3337 || COMMUNICATION PROCESSOR FW || {{no}} || cpfirm || 3.50 Devkit || || || Neo DevKit Component (unknown)
| 0xD09 || 3337 || COMMUNICATION PROCESSOR FW || {{no}} || cpfirm || 3.50 Devkit || || || Neo Devkit Component (unknown)
|-
|-
|}
|}
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)