Editing Syscon Firmware
Jump to navigation
Jump to search
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: | ||
[[Category:Software]] | |||
Syscon Firmware is the firmware stored on the System Controller EEPROM (see [[Syscon Hardware]]). Updates are stored in update packages within the Update_files.tar of a [[Playstation Update Package (PUP)]]. Syscon Packages appear to always be 5KB (5376 bytes) in size. | |||
= Syscon | = Syscon update packages = | ||
d/l: [http://www.multiupload.com/JHBCOCGNUR syscon_fw1.00-4.00.rar (51.74 KB)] | |||
== Package structure == | |||
Sys_con_firmware Packages can be unpacked with unpkg | |||
=== Overview === | |||
{|class="wikitable" | |||
|- | |- | ||
! Address !! Length !! Value !! Description | |||
|- | |- | ||
| | | 0x00 || 0x4 || ASCI:"SCE" || SCE magic header | ||
|- | |- | ||
| | | 0x04 || 0x4 || 0x2 || Flags | ||
|- | |- | ||
| | | 0x08 || 0x4 || 0x3 || Type (0x3 = PKG) | ||
|- | |- | ||
| | | 0x0C || 0x4 || 0x0 || Blank/Unknown | ||
|- | |- | ||
| | | 0x10 || 0x4 || 0x0 || Blank/Unknown | ||
|- | |- | ||
| | | 0x10 || 0x8 || 0x280 || Start Data Offset ('hdr_len') | ||
|- | |- | ||
| | | 0x18 || 0x8 || 0x1080 || Data Size ('dec_size') | ||
|- | |- | ||
| | | 0x20 || 0x260 || - || Header | ||
|- | |- | ||
| | | 0x280 || 0x40 || - || 'info0' section (see below) | ||
|- | |- | ||
| | | 0x2C0 || 0x40 || - || 'info1' section (see below) | ||
|- | |- | ||
| | | 0x300 || 0x1000 || - || 'content' | ||
|- | |- | ||
| | |} | ||
==='info0'=== | |||
{|class="wikitable" | |||
|- | |- | ||
! Address !! Length !! Value !! Description | |||
|- | |- | ||
| | | 0x00 || 0x4 || 0x3 || | ||
|- | |- | ||
| | | 0x04 || 0x4 || 0x8 || | ||
|- | |- | ||
| | | 0x08 || 0x8 || - || SC firmware revision (the high word of it is the SC type) | ||
|- | |- | ||
| 0x0C || 0x4 || 0x0B8E<br />0x0C16<br />0x0D52<br />0x0DBF<br />0x0E69<br />0x0F29<br />0x0F38<br />0x065D<br />0x0832<br />0x08C2<br />0x0918 || 'SoftID' | |||
|- | |- | ||
| | | 0x10 || 0x8 || 0x0001000000000004<br />0x0001000000000005<br />0x0001000000000006<br />0x0001000100030002<br />0x0001000100030003<br />0x0001000200030002<br />0x0001000300030002<br />0x0001000400040002<br />0x0001000500000002<br />0x0001000500010001<br />0x00010002083E0832<br /> || 'PatchID' | ||
|- | |- | ||
| | | 0x18 || 0x8 || 0x1000 || 'Content' Data Size | ||
|- | |- | ||
| 0x20 || 0x8 || 0x1000 || 'Content' Compressed Data Size | |||
| | |||
|- | |- | ||
| 0x28 || 0x8 || 0x0 || | |||
| | |||
|- | |- | ||
| 0x30 || 0x10 || 0x0 || | |||
| | |||
|- | |- | ||
|} | |} | ||
Note: PS3 firmwares cannot deal with compressed syscon firmwares, so they will abort the update process in that case. | |||
==='info1'=== | |||
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
! Address !! Length !! Value !! Description | ! Address !! Length !! Value !! Description | ||
|- | |- | ||
| 0x00 || 0x4 || | | 0x00 || 0x4 || 0x0 || | ||
|- | |- | ||
| 0x04 || 0x4 || | | 0x04 || 0x4 || 0x3 || | ||
|- | |- | ||
| 0x08 || | | 0x08 || 0x8 || 0x40 || Offset/size? | ||
|- | |- | ||
| | | 0x10 || 0x4 || 0x0 || | ||
|- | |- | ||
| | | 0x14 || 0x4 || 0x0 || | ||
|- | |- | ||
| | | 0x18 || 0x8 || 0x1000 || 'Content' Data Size? | ||
|- | |- | ||
| | | 0x20 || 0x8 || 0x1 || | ||
|- | |- | ||
| | | 0x28 || 0x8 || 0x1 || | ||
|- | |- | ||
| | | 0x30 || 0x10 || 0x0 || | ||
|- | |- | ||
|} | |} | ||
==='content' overview=== | |||
== | |||
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
! Address !! Length !! Value !! Description | ! Address !! Length !! Value !! Description | ||
|- | |- | ||
|- | |- | ||
| | | 0x0 || 0x1000 || - || 'content' | ||
|- | |- | ||
| | |} | ||
== Known Retail syscon update packages == | |||
These are in in full Retail/CEX and Debug/DEX firmwares: | |||
{| class="wikitable sortable" | |||
|- | |- | ||
| | ! [[Motherboard Revisions|Board]] !! [[Syscon Hardware]] !! sys_con_firmware package !! 1.00-1.30 !! 1.30-1.80 !! 1.81-2.80 !! 3.00-3.30 !! 3.40 !! 3.41-4.30 !! SoftID !! Notes | ||
|- | |- | ||
| | | rowspan=3 | [[COK-00x#COK-001|COK-001]] || rowspan=8 | CXR713120-201GB || SYS_CON_FIRMWARE_01000004.pkg || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || 0B8E || Superceeded by SYS_CON_FIRMWARE_01000005.pkg | ||
|- | |- | ||
| | | SYS_CON_FIRMWARE_01000005.pkg || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || 0B8E || Superceeded by SYS_CON_FIRMWARE_01000006.pkg | ||
|- | |- | ||
| | | SYS_CON_FIRMWARE_01000006.pkg || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || 0B8E || | ||
|- | |- | ||
| | | rowspan=2 | [[COK-00x#COK-002|COK-002]] || SYS_CON_FIRMWARE_01010302.pkg || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || 0C16 || Superceeded by SYS_CON_FIRMWARE_01010303.pkg | ||
|- | |- | ||
| | | SYS_CON_FIRMWARE_01010303.pkg || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || 0C16 || | ||
|- | |- | ||
| | | [[SEM-00x|SEM-001]] || SYS_CON_FIRMWARE_01020302.pkg || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || 0D52 || | ||
|- | |- | ||
| | | [[DIA-00x#DIA-001|DIA-001]] || SYS_CON_FIRMWARE_01030302.pkg || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || 0DBF || | ||
|- | |- | ||
|} | | [[DIA-00x#DIA-002|DIA-002]] || SYS_CON_FIRMWARE_01040402.pkg || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || 0E69 || | ||
{| | |||
|- | |- | ||
| [[VER-00x|VER-001]] || SW-30x || || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || 065D || | |||
|- | |- | ||
| | | [[DYN-00x|DYN-001]] || rowspan=4 | SW2-30x || || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || 0832 || | ||
|- | |- | ||
| | | [[SUR-00x|SUR-001]] || || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || 08C2 ??? || | ||
|- | |- | ||
| | | [[JTP-00x|JTP-001]], [[JSD-00x|JSD-001]] || || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || 08C2 || | ||
|- | |- | ||
| | | [[KTE-00x|KTE-001]] || || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || 0918 || ps3 3k series | ||
|- | |- | ||
| | | [[MSX-00x|MSX-001]] || SW3-30x || || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || 098F || ps3 4k series | ||
|- | |- | ||
| | | ??? || ??? || SYS_CON_FIRMWARE_01050002.pkg || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || 0F29 || Compatible with CXR713120-201GB ? | ||
|- | |- | ||
| | | ??? || ??? || SYS_CON_FIRMWARE_01050101.pkg || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || 0F38 || Compatible with CXR713120-201GB ? | ||
|- | |- | ||
| | | ??? || ??? || SYS_CON_FIRMWARE_S1_00010002083E0832.pkg || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || 0832 || Compatible with SW2-30x series ? (DYN-001) | ||
|- | |- | ||
|} | |} | ||
== | This means from syscon perspective notible firmware changes where made at 1.30, 1.81, 3.00 and 3.40 of all PS3 models (FW 1.30 added Backup/Restore, FW 3.00 resulted in Class action suit for BluRay reading problems). The '01050101' patch since 3.41 was only done for 'SoftID' 0x0F38. | ||
{|class="wikitable" | |||
== NonRetail syscon == | |||
Remember, Debug/DEX consoles are normal retail consoles with different TargetID, so only those that have a nonretail board have deviating patches (like the CXR713F120A found on the DECR1000A TOOL/DECR). | |||
Tool/DECR don't have patches, they flash entire firmwares. | |||
=== Deviating from Retail === | |||
Please note that without info about the SKU the listing of ID's is pretty useless | |||
{| class="wikitable sortable" | |||
|- | |- | ||
! | ! sys_con_firmware package !! 1.00-1.30 !! 1.30-1.80 !! 1.81-2.80 !! 3.00-3.30 !! 3.40 !! 3.41-4.11 !! SoftID !! Notes | ||
|- | |- | ||
| ? || ? || ? || ? || ? || ? || {{Yes}} || 08A0 || Debug/DEX | |||
|- | |- | ||
| | | ? || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || 0B67 || Debug/DEX | ||
|- | |- | ||
|} | |} | ||
=== | == Usage == | ||
The firmware PUP's contains a collection of patches for all the different hardware revisions of syscon's chips used in different motherboard models. | |||
The ps3swu.self (system updater) decides wich applicable [[Syscon Hardware]] is present and installs the needed package update(s) accordingly (via updater manager ss service). | |||
Which syscon version and which patches are installed can be seen in [[More_System_Information]] | |||
== Decryption == | |||
Packages can be decrypted with the unpkg tool. Decrypted content of the updates appears to always be 0x1000 bytes (4KB). | |||
== Header == | |||
The header format is partially unknown at this stage. | The header format is partially unknown at this stage. | ||
All the Firmwares patches are written in little endian. | All the Firmwares patches are written in little endian. | ||
Line 310: | Line 176: | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
! Offset !! | ! Offset !! Lenght !! Notes | ||
|- | |- | ||
| 0x0 || 0x4 || | | 0x0 || 0x4 || Header | ||
|- | |- | ||
| 0x4 || | | 0x4 || 0x20 || SHA ? | ||
|- | |- | ||
| | | 0x24 || 0x4 || header offset? | ||
|- | |- | ||
| | | 0x28 || 0x4 || file size | ||
|- | |- | ||
| | | 0x2c || 0x4 || binary size | ||
|- | |- | ||
| | | 0x30 || 0x10 || IV for aes256cbc? | ||
|- | |- | ||
| 0x40 || 0xfc0 || binary | |||
| 0x40 || | |||
|- | |- | ||
|} | |} | ||
=== Samples === | |||
<pre> | <pre> | ||
00000000 1B 2D 70 0F AB 5E B3 99 68 20 FE 3D E1 80 6A 1D .-p.«^³™h þ=á€j. | 00000000 1B 2D 70 0F AB 5E B3 99 68 20 FE 3D E1 80 6A 1D .-p.«^³™h þ=á€j. | ||
Line 352: | Line 212: | ||
00000020 FF 83 0B E0 00 00 00 00 40 00 06 00 00 00 06 00 ÿƒ à @ | 00000020 FF 83 0B E0 00 00 00 00 40 00 06 00 00 00 06 00 ÿƒ à @ | ||
00000030 69 B6 02 69 3A 97 8B 1C 4E 18 D4 E0 63 7D CA 94 i¶ i:—‹ N Ôàc}Ê” | 00000030 69 B6 02 69 3A 97 8B 1C 4E 18 D4 E0 63 7D CA 94 i¶ i:—‹ N Ôàc}Ê” | ||
00000040 4B A0 79 34 79 41 BD 09 BB 68 D4 0A A0 B7 05 78 | 00000040 4B A0 79 34 79 41 BD 09 BB 68 D4 0A A0 B7 05 78 K y4yA½ »hÔ · x | ||
00000050 D9 8F 8F 28 6C 9A 1B 61 CF A1 E7 49 7D CA C4 A3 Ù (lš aÏ¡çI}ÊÄ£ | 00000050 D9 8F 8F 28 6C 9A 1B 61 CF A1 E7 49 7D CA C4 A3 Ù (lš aÏ¡çI}ÊÄ£ | ||
00000060 A4 4D 4B E0 AE 48 86 03 B1 43 F2 47 C0 C4 1D 4F ¤MKà®H† ±CòGÀÄ O | 00000060 A4 4D 4B E0 AE 48 86 03 B1 43 F2 47 C0 C4 1D 4F ¤MKà®H† ±CòGÀÄ O | ||
Line 358: | Line 218: | ||
</pre> | </pre> | ||
=== | === Observations === | ||
* The first 4 bytes (0x1B2D700F) appear static in each package. | |||
* The next 20 bytes appear to change with each package | |||
The | * The following 12 bytes (0x0000000000100000C00F0000) also appear static, but it's the firmware size and fw size - header size; infact if correctly converted to little endian 00000000 00001000 00000fc0, where 00000000 is Unknown, 00001000 is 4096 in dec (file size) and 00000fc0 is 4032 in dec (update size). | ||
* On the DECH fw, the update works in the same way: 000000004000060000000600 converted will be: 00000000 00060040 00060000, where, 00000000 is probably padding, file size 00060040, 00060000 update size | |||
* the first 40 bytes probably are IV + HASH + update infos. probably the algorithm used is AES. | |||
* | |||
== Access to Syscon from Linux == | |||
= Access to Syscon from Linux = | |||
Access SysCon ROM without needing ps3dm-utils: http://wiki.gitbrew.org/wikibrew/PS3:HvReverseEngineering#SYSCON | Access SysCon ROM without needing ps3dm-utils: http://wiki.gitbrew.org/wikibrew/PS3:HvReverseEngineering#SYSCON | ||
{{Console}} | |||
{{ |