Talk:Syscon Error Codes
UART Samples[edit source]
- 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 source]
- 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 source]
20xx | 21xx | 22xx | 23xx | ||
---|---|---|---|---|---|
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 source]
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
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)