Talk:Syscon Error Codes

From PS3 Developer wiki
Jump to: navigation, search


UART Samples[edit]

https://www.psx-place.com/threads/fault-finding-ylod-with-the-syscon-first-steps-and-error-reporting.30100/page-127#post-324377

  • In the sample below:
    • The oldest errorcode is located at offset 112
    • The newest errorcode is located at offset 104
    • The errorcode FFFFFFFF at offset 108 is a mark indicating the errorlog has been looped (is not an error, and the associated timestamp is not valid, the timestamp 2013/02/23 05:54:19 is garbage)
    • The next errorcode will be stored at offset 108, and the loop mark will be moved to 112 overwriting the oldest errorcode but not overwriting the oldest timestamp (so it will inherit the timestamp 2013/06/09 06:43:04 as garbage)
    • When the errorcodes from offsets 112, 116, 120, 124, 0, 4, 8, 12 was triggered (orderd from old to new) the battery was present and the date and time was correctly configured under GameOS
    • When the errorcodes from offsets 16, 20, 24, 28, 32, 36, 40, 44, 48 was triggered (orderd from old to new) the battery was not present
    • When the errorcodes from offsets 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100 was triggered (orderd from old to new) the battery was present, but the date and time was not correctly configured under GameOS
    • When the errorcode from offset 104 was triggered the battery was not present
    • This errorlog was close to complete his second loop (the second loop is completed after the loop mark overwrites a valid errorcode at offset 124), it had at least 59 errorcodes and is missing 5 more to complete 2 loops
>$ errlog
errlog
ofst[108]:err_code:0xffffffff, clock:0x18bb160b  2013/02/23 05:54:19 <-- loop mark with a garbage timestamp
ofst[112]:err_code:0xa0801701, clock:0x1946e078  2013/06/09 06:43:04 <-- battery was present and date and time configured (oldest errorcode)
ofst[116]:err_code:0xa0801601, clock:0x1946e078  2013/06/09 06:43:04 <-- battery was present and date and time configured
ofst[120]:err_code:0xa0404412, clock:0x19496d29  2013/06/11 05:07:53 <-- battery was present and date and time configured
ofst[124]:err_code:0xa0403034, clock:0x19496d29  2013/06/11 05:07:53 <-- battery was present and date and time configured
ofst[  0]:err_code:0xa0404412, clock:0x19496d40  2013/06/11 05:08:16 <-- battery was present and date and time configured
ofst[  4]:err_code:0xa0403034, clock:0x19496d40  2013/06/11 05:08:16 <-- battery was present and date and time configured
ofst[  8]:err_code:0xa0801701, clock:0x194be6c6  2013/06/13 02:11:18 <-- battery was present and date and time configured
ofst[ 12]:err_code:0xa0801601, clock:0x194be6c6  2013/06/13 02:11:18 <-- battery was present and date and time configured
ofst[ 16]:err_code:0xa0404412, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 20]:err_code:0xa0403034, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 24]:err_code:0xa0902120, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 28]:err_code:0xa0404412, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 32]:err_code:0xa0403034, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 36]:err_code:0xa0404412, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 40]:err_code:0xa0403034, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 44]:err_code:0xa0404412, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 48]:err_code:0xa0403034, clock:0xffffffff                      <-- battery was removed, invalid timestamp
ofst[ 52]:err_code:0xa0801701, clock:0x0b48869c  2005/12/31 00:00:28 <-- battery was present, but date and time was not configured, error triggered 28 seconds after inserting the battery
ofst[ 56]:err_code:0xa0801601, clock:0x0b48869c  2005/12/31 00:00:28 <-- battery was present, but date and time was not configured, error triggered 28 seconds after inserting the battery
ofst[ 60]:err_code:0xa0404412, clock:0x0b4888cd  2005/12/31 00:09:49 <-- battery was present, but date and time was not configured
ofst[ 64]:err_code:0xa0403034, clock:0x0b4888cd  2005/12/31 00:09:49 <-- battery was present, but date and time was not configured
ofst[ 68]:err_code:0xa0404412, clock:0x0b97ec4c  2006/03/01 05:23:24 <-- battery was present, but date and time was not configured
ofst[ 72]:err_code:0xa0403034, clock:0x0b97ec4c  2006/03/01 05:23:24 <-- battery was present, but date and time was not configured
ofst[ 76]:err_code:0xa0404412, clock:0x0b9812ad  2006/03/01 08:07:09 <-- battery was present, but date and time was not configured
ofst[ 80]:err_code:0xa0403034, clock:0x0b9812ad  2006/03/01 08:07:09 <-- battery was present, but date and time was not configured
ofst[ 84]:err_code:0xa0404412, clock:0x0b9a653d  2006/03/03 02:23:57 <-- battery was present, but date and time was not configured
ofst[ 88]:err_code:0xa0403034, clock:0x0b9a653d  2006/03/03 02:23:57 <-- battery was present, but date and time was not configured
ofst[ 92]:err_code:0xa0404412, clock:0x0b9a654e  2006/03/03 02:24:14 <-- battery was present, but date and time was not configured
ofst[ 96]:err_code:0xa0403034, clock:0x0b9a654e  2006/03/03 02:24:14 <-- battery was present, but date and time was not configured
ofst[100]:err_code:0xa0902120, clock:0x0b9a654e  2006/03/03 02:24:14 <-- battery was present, but date and time was not configured
ofst[104]:err_code:0xa0901001, clock:0xffffffff                      <-- battery was removed, invalid timestamp (newest errorcode)
  • In the sample below:
    • After using the command clearerrlog the errolog is emptyed (completly filled with FF), and the newest error is stored at relative offset 0 (at most top of the errorlog structure, but displayed at bottom by the comand errlog)
    • There is no loop mark because there is only 1 errorcode, but syscon considers the first errorcode found with value FFFFFFFF while reading the errorlog structure from top to bottom is the loop mark (so the next errorcode at offset 8 is considered the oldest)
    • The next errorcode will be stored at offset 4, and the loop mark will be considered the errorcode FFFFFFFF at offset 8
    • When the errorcode from offset 0 was triggered the battery was present, but the date and time was not correctly configured under GameOS (so the date and time is automatically configured around 2005/12/31 00:00:00)
>$ errlog
errlog
ofst[  4]:err_code:0xffffffff, clock:0xffffffff
ofst[  8]:err_code:0xffffffff, clock:0xffffffff
ofst[ 12]:err_code:0xffffffff, clock:0xffffffff
ofst[ 16]:err_code:0xffffffff, clock:0xffffffff
ofst[ 20]:err_code:0xffffffff, clock:0xffffffff
ofst[ 24]:err_code:0xffffffff, clock:0xffffffff
ofst[ 28]:err_code:0xffffffff, clock:0xffffffff
ofst[ 32]:err_code:0xffffffff, clock:0xffffffff
ofst[ 36]:err_code:0xffffffff, clock:0xffffffff
ofst[ 40]:err_code:0xffffffff, clock:0xffffffff
ofst[ 44]:err_code:0xffffffff, clock:0xffffffff
ofst[ 48]:err_code:0xffffffff, clock:0xffffffff
ofst[ 52]:err_code:0xffffffff, clock:0xffffffff
ofst[ 56]:err_code:0xffffffff, clock:0xffffffff
ofst[ 60]:err_code:0xffffffff, clock:0xffffffff
ofst[ 64]:err_code:0xffffffff, clock:0xffffffff
ofst[ 68]:err_code:0xffffffff, clock:0xffffffff
ofst[ 72]:err_code:0xffffffff, clock:0xffffffff
ofst[ 76]:err_code:0xffffffff, clock:0xffffffff
ofst[ 80]:err_code:0xffffffff, clock:0xffffffff
ofst[ 84]:err_code:0xffffffff, clock:0xffffffff
ofst[ 88]:err_code:0xffffffff, clock:0xffffffff
ofst[ 92]:err_code:0xffffffff, clock:0xffffffff
ofst[ 96]:err_code:0xffffffff, clock:0xffffffff
ofst[100]:err_code:0xffffffff, clock:0xffffffff
ofst[104]:err_code:0xffffffff, clock:0xffffffff
ofst[108]:err_code:0xffffffff, clock:0xffffffff
ofst[112]:err_code:0xffffffff, clock:0xffffffff
ofst[116]:err_code:0xffffffff, clock:0xffffffff
ofst[120]:err_code:0xffffffff, clock:0xffffffff
ofst[124]:err_code:0xffffffff, clock:0xffffffff
ofst[  0]:err_code:0xa0801200, clock:0x0b488687  2005/12/31 00:00:07 <-- it seems the error was triggered 7 seconds after inserting the battery :D

Official Typos[edit]

  • 1001 BE VRAM Power Fail ---> BE VRM Power Fail (shorted in the page index as "Power CELL")
  • 1002 RSX VRAM Power Fail ---> RSX VRM Power Fail (shorted in the page index as "Power RSX")
  • 1701 BE Attention ---> also known as BE_INT (shorted in the page index as "Interrupt CELL")
  • 1802 RSX INIT ---> RSX_INT (shorted in the page index as "Interrupt RSX")
  • 1301 BE PLL Unlick ---> BE PLL Unlock ?

Fatal error codes relationship[edit]

20xx 21xx 22xx 23xx Description
2x01 2001 2101 CELL
2x02 2002 2102 RSX
2x03 2003 2103 2203 South Bridge
2x04 Reserved ?
2x05 Reserved ?
2x06 Reserved ?
2x07 Reserved ?
2x08 Reserved ?
2x09 Reserved ?
 
2x10 2010 2110 2310 Clock Subsystems
2x11 2011 2111 Clock CELL
2x12 2012 2112 Clock CELL
2x13 2013 2113 Clock CELL, RSX, South Bridge
2x14 Reserved ? (2114 seems to be implemented at least since sherwood SW2/CECH-20xx)
2x15 Reserved ?
2x16 Reserved ?
2x17 Reserved ?
2x18 Reserved ?
2x19 Reserved ?
 
2x20 2020 2120 HDMI
2x21 ?
2x22 2022 2122 DVE
2x23 ?
2x24 2024 2124 AV (not supported by mullion syscons ?)
2x25 Reserved ?
2x26 Reserved ?
2x27 Reserved ?
2x28 Reserved ?
2x29 Reserved ?
 
2x30 2030 2130 Thermal Sensor, CELL
2x31 2031 2131 Thermal Sensor, RSX
2x32 ?
2x33 2033 2133 Thermal Sensor, South Bridge
2x34 Reserved ?
2x35 Reserved ?
2x36 Reserved ?
2x37 Reserved ?
2x38 Reserved ?
2x39 Reserved ?

Error transmission[edit]

I think it would be supercool to add descriptions of how the error is passed to syscon using a predefined visual style (common for all error codes)
The first detail that worths to be considered to do this is how many different ways exists to pass an error code to syscon, as far i understand there are only 2, either with a control signal not following any protocol (a simnple "pullup" or "pulldown") or by using some kind of data bus (but some of this data buses are still unknown, at least for me), anyway, we can do something like this:

  • Error 1002
    • Type = pulldown
    • Adquired by:

One of the goals of this idea is... if we know how every error code is generated then we will be able to take an scrap motherboard (for experiments) and "sabotage" it to generate some/all the error codes manually, this way we can identify them accuratelly and have a way bigger understanding of what means each and/or what sony engineers was trying to achieve--Sandungas (talk) 02:23, 14 October 2022 (UTC)