Playstation Update Package (PUP): Difference between revisions

From Vita Developer wiki
Jump to navigation Jump to search
No edit summary
 
(124 intermediate revisions by 9 users not shown)
Line 1: Line 1:
[[Category:Software]]
#REDIRECT [https://www.psdevwiki.com/ps3/Playstation_Update_Package_(PUP)]
= Extraction =
The PS VITA update files can be extracted using the "[http://www.vitadevwiki.com/index.php?title=Tools PS VITA Firmware xTractor]".
 
= Decryption =
To decrypt the files which are unpacked using the tool, the key is available under PS Vita Keys
 
= Structure =
The file structure of the Vita's PUP files is almost identical to the PS3's, although there is a slight difference in the header and the hash algorithm. For starters, whereas in PS3 the format was big-endian for the Vita it has been switched to little-endian (probably the same for all Vita formats). Also the '''Package Version''' field in Vita pups is set to 2 where in PS3 updates it was set to 1. There is also 0x50 bytes of extra data in the header and the hashes used are of a longer length than in PS3 updates (0x20 bytes in Vita vs 0x14 in PS3)
 
== Header ==
{| class="wikitable"
|-
! Offset !! Length !! Type !! Information
|-
| 0x0 || 0x8 || unsigned long || Magic (hex: 0x5343455546000001 ~ ASCII "SCEUF")
|-
| 0x8 || 0x8 || unsigned long || Package Version
|-
| 0x10 || 0x8 || unsigned long || Image Version
|-
| 0x18 || 0x8 || unsigned long || File Count
|-
| 0x20 || 0x8 || unsigned long || Header Length (2048, file data starts from here)
|-
| 0x28 || 0x8 || unsigned long || Package Length (size of PUP file - 8)
|-
| 0x30 || 0x50 || '''UNKNOWN''' || UNKNOWN, same for all >V1.0 files so far, maybe something for extra security? (or maybe to break a PS3 which tries to read the update)
<pre>
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000030  02 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00  ................
00000040  00 00 00 00 0F 00 00 00 00 00 00 00 00 00 00 00  ................
00000050  00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
</pre>
|-
| 0x80 || 0x20 * '''File Count''' || '''File Table''' || File Table
|-
| 0x80 + (0x20 * '''File Count''') || 0x40 * '''File Count''' || '''Hash Table''' || Hash Table
|-
| 0x80 + (0x60 * '''File Count''') || 0x20 || bytes || Header Hash (unknown algo?)
|}
 
== File Table ==
The file table consists of a number of file entries determined by '''File Count''', with the format below (which is the same as the format in PS3 PUP1 files)
 
{| class="wikitable"
|-
! Offset
! Length
! Type
! Information
|-
| 0x0
| 0x8
| unsigned long
| Entry ID
|-
| 0x8
| 0x8
| unsigned long
| Data Offset
|-
| 0x10
| 0x8
| unsigned long
| Data Length
|-
| 0x18
| 0x8
| unsigned long
| Unknown
|}
 
==Filename IDs==
 
{| class="wikitable"
|-
! File Entry ID
! Filename
|-
| 0x100
| ngpversion.txt
|}
 
==Hash Table==
The hash table contains a hash entry for every file inside the PUP.
 
The hash entry format is:
{| class="wikitable"
|-
! Offset
! Length
! Type
! Information
|-
| 0x0
| 0x8
| unsigned long
| File Index
|-
| 0x8
| 0x20
| bytes
| File Hash (unknown algo?)
|-
| 0x28
| 0x18
| bytes
| Unknown
|}
 
 
= Files =
== preinst - 01.000.000 ==
{| class="wikitable sortable"
|-
! Type !! Header !! Information !! Size
|-
| ASCII:MM.mmmm (01.500) || [none] || version.txt || 1
|-
| PSP2SWU.SELF? || SCE .ELF || binary0.self || 4536
|-
| PSP2SWU.SPRX? || SCE .ELF || binary1.self || 42
|-
|  || XML || license.xml || 451
|-
|  || SCE || package_file_0.pkg || 7904
|-
|  || SCE || package_file_1.pkg || 8130
|-
|  || SCE || package_file_2.pkg || 8196
|-
|  || SCE || package_file_3.pkg || 8196
|-
|  || SCE || package_file_4.pkg || 8196
|-
|  || SCE || package_file_5.pkg || 7883
|-
|  || SCE || package_file_6.pkg || 8052
|-
|  || SCE || package_file_7.pkg || 6943
|-
|  || SCE || package_file_8.pkg || 7758
|-
|  || SCE || package_file_9.pkg || 7805
|-
|  || SCE || package_file_10.pkg || 7804
|-
|  || SCE || package_file_11.pkg || 8005
|-
|  || SCE || package_file_12.pkg || 8103
|-
|  || SCE || package_file_13.pkg || 8084
|-
|  || SCE || package_file_14.pkg || 8066
|-
|  || SCE || package_file_15.pkg || 1661
|-
|  || SCEWM || package_file_16.pkg || 14
|-
|  || SCEAS || package_file_17.pkg || 1
|-
|}
== systemdata - 01.000.010 ==
{| class="wikitable sortable"
|-
! Type !! Header !! Information !! Size
|-
| ASCII:MM.mmmm (01.500) || [none] || version.txt || 1
|-
| PSP2SWU.SELF? || SCE .ELF || binary0.self || 4536
|-
| PSP2SWU.SPRX? || SCE .ELF || binary1.self || 42
|-
|  || XML || license.xml || 451
|-
|  || SCE || package_file_0.pkg || 2625
|-
|  || SCE || package_file_1.pkg || 4048
|-
|  || SCE || package_file_2.pkg || 2746
|-
|  || SCE || package_file_3.pkg || 3874
|-
|  || SCE || package_file_4.pkg || 4742
|-
|  || SCE || package_file_5.pkg || 4660
|-
|  || SCE || package_file_6.pkg || 3946
|-
|  || SCE || package_file_7.pkg || 4145
|-
|  || SCE || package_file_8.pkg || 4630
|-
|  || SCE || package_file_9.pkg || 5476
|-
|  || SCE || package_file_10.pkg || 4860
|-
|  || SCE || package_file_11.pkg || 4722
|-
|  || SCEWM || package_file_12.pkg || 4
|-
|  || SCEAS || package_file_13.pkg || 1
|-
|}
== full - 01.500.000 ==
{| class="wikitable sortable"
|-
! Type !! Header !! Information !! Size
|-
| ASCII:MM.mmmm (01.500) || [none] || version.txt || 1
|-
| PSP2SWU.SELF? || SCE .ELF || binary0.self || 4536
|-
| PSP2SWU.SPRX? || SCE .ELF || binary1.self || 42
|-
|  || XML || license.xml || 451
|-
|  || SCE || package_file_0.pkg || 634
|-
|  || SCE || package_file_1.pkg || 6718
|-
|  || SCE || package_file_2.pkg || 8194
|-
|  || SCE || package_file_3.pkg || 8194
|-
|  || SCE || package_file_4.pkg || 8194
|-
|  || SCE || package_file_5.pkg || 8194
|-
|  || SCE || package_file_6.pkg || 8194
|-
|  || SCE || package_file_7.pkg || 8194
|-
|  || SCE || package_file_8.pkg || 8194
|-
|  || SCE || package_file_9.pkg || 8194
|-
|  || SCE || package_file_10.pkg || 8194
|-
|  || SCE || package_file_11.pkg || 6154
|-
|  || SCEWM || package_file_12.pkg || 4
|-
|  || SCEAS || package_file_13.pkg || 1
|-
|}
 
= Recovery Menu =
# Turn OFF your PS Vita (Press Power Button for 10 seconds)
# Now press and hold "R" + Power + PS (PlayStation Button)
# Wait...
# Now you're in Recovery Menu (Mode)
 
See also: http://www.youtube.com/watch?v=R532NpDMQhw
Since 1.51 it seems alot easier to enter recovery menu: http://www.youtube.com/watch?v=ublLC235QV0
[[Image:Vpsmenu.jpg]]
 
== Recovery Menu Options ==
=== 1. Restart the PS Vita System ===
This option boots your system as normal without changing any settings or files.
=== 2. Rebuild Database ===
This can be a usefull feature if you have lost files on your system for no apparent reason. Try using this feature to see if it can restore those files. This will also rewrite corrupted files within the database, potentially eliminating future issues. This feature should not erase any of your saved data or settings. <br />
Deletes messages, playlists, changes made on "Information" screens, trimming information for pictures in "Photo", video thumbnails, video playback history and video resume information.
This operation may take a long time depending on the type and number of data items.
=== 3. Format Memory Card===
This will format the memorycard, effectively erasing all data currently on it.
=== 4. Restore the PS Vita System ===
This will restore your system to original including, formatting and erasing all of the data on internal flash and returning all system settings to default. This will not take your system back to a previous Firmware release. Use this option as a last resort, unless you have nothing on the console that you want or you want to erase everything on the console, do not use this option.
=== 5. Update System Software ===
This can usefull if your system has become corrupted to the point you can not boot. This will allow the user to update their console with new firmware via :
* PS3
* PC
* PS Vita memorycard
 
= Regioning =
If simular to PS3, then there is no regioning in the .PUP files, they are the same for all different regions.<br />
The PS Vita however gets the psp2-updatelist.xml from different servers, depening on the region of that model.
 
Retail:
* [http://fjp01.psp2.update.playstation.net/update/psp2/list/jp/psp2-updatelist.xml Japan (jp)]
* [http://fus01.psp2.update.playstation.net/update/psp2/list/us/psp2-updatelist.xml USA (us)]
* [http://feu01.psp2.update.playstation.net/update/psp2/list/eu/psp2-updatelist.xml Europe (eu)]
* [http://fshop01.psp2.update.playstation.net/update/psp2/list/shop/psp2-updatelist.xml shop]
 
22 dec 2011 :: full 01.510.000 + systemdata 01.000.010 + preinst 01.000.000:
<pre>
<update_data_list>
  <region id="jp">
    <np level0_system_version="01.510.000" level1_system_version="01.510.000" level2_system_version="01.510.000"/>
    <version system_version="01.510.000" label="01.510">
      <update_data update_type="full">
        <image size="94500352">
          http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/rel_48ac631ecae3837a7530506de0d73eaf/PSP2UPDAT.PUP?dest=jp
        </image>
      </update_data>
    </version>
    <recovery spkg_type="systemdata">
      <image spkg_version="01.000.010" size="56817152">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/sd_52ff6b714e5f701d15938a6fee68fb66/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
    <recovery spkg_type="preinst">
      <image spkg_version="01.000.000" size="128837120">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/pre_a18a91bb8c86f8c1a101d19fcb15fb6d/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
  </region>
</update_data_list>
</pre>
 
14 dec 2011 :: full 01.500.000 + systemdata 01.000.010 + preinst 01.000.000:
<pre>
<update_data_list>
  <region id="jp">
    <np level0_system_version="01.500.000" level1_system_version="01.500.000" level2_system_version="01.500.000"/>
    <version system_version="01.500.000" label="01.500">
      <update_data update_type="full">
        <image size="94496256">
          http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/rel_f090a69bcf392b5c311b9e786c5cc0b5/PSP2UPDAT.PUP?dest=jp
        </image>
      </update_data>
    </version>
    <recovery spkg_type="systemdata">
      <image spkg_version="01.000.010" size="56817152">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/sd_484243f3964158b38ad1adaac0332a3e/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
    <recovery spkg_type="preinst">
      <image spkg_version="01.000.000" size="128837120">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/pre_24b5601c3b3aa63b51cf5eaeab718a4c/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
  </region>
</update_data_list>
</pre>
 
Shop:
* [http://fjp01.psp2.update.playstation.net/update/psp2/list/shop/psp2-updatelist.xml Japan (jp)]
* [http://fus01.psp2.update.playstation.net/update/psp2/list/shop/psp2-updatelist.xml USA (us)]
* [http://feu01.psp2.update.playstation.net/update/psp2/list/shop/psp2-updatelist.xml Europe (eu)]
<pre>
<update_data_list>
  <region id="shop">
    <np level0_system_version="00.000.000" level1_system_version="00.000.000" level2_system_version="00.000.000"/>
    <version system_version="00.000.000">
      <update_data update_type="full">
        <image>NA</image>
      </update_data>
    </version>
  </region>
</update_data_list>
</pre>
 
Retail basic structure of the update URL:
<pre>http://d<TLD>01.psp2.update.playstation.net/update/psp2/image/<YYYY_MMDD>/pre_<md5>/PSP2UPDAT.PUP?dest=<TLD>
(TLD=2 letter abbreviation from above region, YYYY_MMDD is release date, md5 is 22-digits long HASH)</pre>
 
= Revisions =
 
== 01.030.010 ==
SKU Release version in Japan
 
== 01.050.00 ==
shipped on launch gaming cards
 
== 01.500.000 Complete ==
14 dec 2011 <br />
Update released online together with Japanese launch
[http://www.multiupload.com/18TJMHBSQU 01.500.000 PSP2UPDAT.PUP's (266.73 MB)]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/pre_24b5601c3b3aa63b51cf5eaeab718a4c/PSP2UPDAT.PUP <br />
[http://www.multiupload.com/01JB1H1OCW 1.000.000 PSP2UPDAT.PUP (122.87 MB)]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/sd_484243f3964158b38ad1adaac0332a3e/PSP2UPDAT.PUP <br />
[http://www.multiupload.com/DLXZASPZD0 1.000.010 PSP2UPDAT.PUP (54.19 MB)]
 
=== full 01.500.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/rel_f090a69bcf392b5c311b9e786c5cc0b5/PSP2UPDAT.PUP <br />
 
 
== 01.510.000 Complete ==
22 dec 2011 <br />
[http://www.multiupload.com/Q949J1LSL9 PSP2UPDAT.PUP's (266.74 MB)]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/pre_a18a91bb8c86f8c1a101d19fcb15fb6d/PSP2UPDAT.PUP <br />
[http://www.multiupload.com/FG4NF4FEDM PSP2UPDAT.PUP (122.87 MB)]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/sd_52ff6b714e5f701d15938a6fee68fb66/PSP2UPDAT.PUP <br />
[http://www.multiupload.com/6FHQULTQR8 PSP2UPDAT.PUP (54.19 MB)]
 
=== full 01.510.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/rel_48ac631ecae3837a7530506de0d73eaf/PSP2UPDAT.PUP <br />
[http://www.multiupload.com/M6Z7RTV6PU PSP2UPDAT.PUP (90.12 MB)]

Latest revision as of 23:34, 30 January 2020

  1. REDIRECT [1]