One of my CPU module has an issue. The computer reports "CPU board NIC diagnostic *FAILED*, Check or replace: CPU module".
One forum member suggested the problem could be the 1-wire chip (DS2505). One could obtain the DS2505 chip from a working CPU module to solve the issue. However, the serial number reported won't match the one on the CPU module. It makes more sense to figure out a way to program this DS2505 chip.
Programmer:
I found a one-wire programmer from file:///C:/Users/Atlas/Documents/Arduino/One%20Wire%20Programmer%20from%20m1l3n%20on%20Tindie.html.
It is designed to work with DS250X. Took me some time to learn the code and modified to work with DS2505. Later, I found another one-wire programmer from AliExpress. It is a bit more costly, but it works with official OneWireViewer.jar. It took many weeks to receive the programmer from AliExpress so I end up using Arduino version for most of my study.
Reading DS2505 from the CPU module
Below is the output of my Arduino code:
R12k 360MHz original chip
In hex:
Page 0: 01 20 20 20 20 48 42 50 35 32 33 20 20 20 20 20 20 20 20 20 20 30 33 30 2D 31 35 39 31 2D 44 6E
Page 1: 20 20 20 30 30 31 20 20 20 42 FF FF FF FF FF 7F 20 20 20 20 50 4D 32 30 33 36 30 4D 48 5A E2 98
Convert the orange values to ASCII, we get ' HBP523 030-1591-'
Repeat the process for the green values, we get ' 001 Bÿÿÿÿÿÿ PM20360MHZ'
The last 2 bytes of each page is the CRC-16/Maxim algorithm of previous 30 bytes. To compute CRC-16/Maxim value, use this website: https://crccalc.com/.
Enter input value in HEX and click CRC-16, and read the output value from CRC-16/Maxim
If we take the orange values from page 0 and compute its CRC-16/Maxim value, we get 0xF0C9, which is not 0x6E44.
On my CPU module, it has a label '030-1591-001 Rev B KFP523'. Obviously, there is an error. HBP523 vs KFP523. The first 2 letters are wrong.
01 20 20 20 20 4B 46 50 35 32 33 20 20 20 20 20 20 20 20 20 20 30 33 30 2D 31 35 39 31 2D
Convert above value to ASCII, we get ' KFP523 030-1591-', and its CRC-16/Maxim value is 0x6E44.
Note (1) 'ÿ' from page 1 is just 0xFF < -- which means not filled, default value
Note (2) There are other info not under 'main' and they have the following contents:
write protect pages (0H)
FF FF FF FF FF FF FF FF
write protect redirection (20H)
FF FF FF FF FF FF FF FF
bitmap of used pages for file structure (40H)
FC FF FF FF FF FF FF FF
page redirection bytes (100H)
all FF
To make sure I understanding is correct, I also did a read on a working CPU module. Below is how it looks like:
R12k 400MHz, single cpu module
030-1475-002 Rev B KWX142
main memory
01 20 20 20 20 4B 57 58 31 34 32 20 20 20 20 20 (0H)
20 20 20 20 20 30 33 30 2D 31 34 37 35 2D CF 73 CRC 0x73CF ' KWX142 030-1475-'
20 20 20 30 30 32 20 20 20 42 FF FF FF FF FF FF (20H)
20 20 20 20 50 4D 31 30 34 30 30 4D 48 5A 54 11 CRC 0x1154 ' 002 Bÿÿÿÿÿÿ PM10400MHZ'
rest of page are all FF
write protect pages (0H)
FF FF FF FF FF FF FF FF
write protect redirection (20H)
FF FF FF FF FF FF FF FF
bitmap of used pages for file structure (40H)
FC FF FF FF FF FF FF FF
page redirection bytes (100H)
all FF
Programming the DS2505
Once I figured out how it works, I want to burn a new chip. Unfortunately, there is a chip shortage. I ordered several chips from 2 different eBay sellers. All the chips I received are used. Since DS2505 is a EPROM not an erasable EPROM, they are all useless. (Maybe there is a way we can use it, but I don't know how.) Contacted the sellers and got my refunds.: 2 months wasted. Why I order chips from eBay seller? Because I can't find any from DigiKey or Mouser. In the end, I put in my order with DigiKey and it is on back-order for 6+ months. Today, I got 10 chips I ordered and immediately I start to program it.
Programming DS2505 is not difficult if you have the programmer. I was able to burn the chip with the correct info, but that did not solve my cpu issue. I will work on this once have more time. In the mean time, I would like to share my findings. Hopefully, this is useful for someone.
One forum member suggested the problem could be the 1-wire chip (DS2505). One could obtain the DS2505 chip from a working CPU module to solve the issue. However, the serial number reported won't match the one on the CPU module. It makes more sense to figure out a way to program this DS2505 chip.
Programmer:
I found a one-wire programmer from file:///C:/Users/Atlas/Documents/Arduino/One%20Wire%20Programmer%20from%20m1l3n%20on%20Tindie.html.
It is designed to work with DS250X. Took me some time to learn the code and modified to work with DS2505. Later, I found another one-wire programmer from AliExpress. It is a bit more costly, but it works with official OneWireViewer.jar. It took many weeks to receive the programmer from AliExpress so I end up using Arduino version for most of my study.
Reading DS2505 from the CPU module
Below is the output of my Arduino code:
R12k 360MHz original chip
In hex:
Page 0: 01 20 20 20 20 48 42 50 35 32 33 20 20 20 20 20 20 20 20 20 20 30 33 30 2D 31 35 39 31 2D 44 6E
Page 1: 20 20 20 30 30 31 20 20 20 42 FF FF FF FF FF 7F 20 20 20 20 50 4D 32 30 33 36 30 4D 48 5A E2 98
Convert the orange values to ASCII, we get ' HBP523 030-1591-'
Repeat the process for the green values, we get ' 001 Bÿÿÿÿÿÿ PM20360MHZ'
The last 2 bytes of each page is the CRC-16/Maxim algorithm of previous 30 bytes. To compute CRC-16/Maxim value, use this website: https://crccalc.com/.
Enter input value in HEX and click CRC-16, and read the output value from CRC-16/Maxim
If we take the orange values from page 0 and compute its CRC-16/Maxim value, we get 0xF0C9, which is not 0x6E44.
On my CPU module, it has a label '030-1591-001 Rev B KFP523'. Obviously, there is an error. HBP523 vs KFP523. The first 2 letters are wrong.
01 20 20 20 20 4B 46 50 35 32 33 20 20 20 20 20 20 20 20 20 20 30 33 30 2D 31 35 39 31 2D
Convert above value to ASCII, we get ' KFP523 030-1591-', and its CRC-16/Maxim value is 0x6E44.
Note (1) 'ÿ' from page 1 is just 0xFF < -- which means not filled, default value
Note (2) There are other info not under 'main' and they have the following contents:
write protect pages (0H)
FF FF FF FF FF FF FF FF
write protect redirection (20H)
FF FF FF FF FF FF FF FF
bitmap of used pages for file structure (40H)
FC FF FF FF FF FF FF FF
page redirection bytes (100H)
all FF
To make sure I understanding is correct, I also did a read on a working CPU module. Below is how it looks like:
R12k 400MHz, single cpu module
030-1475-002 Rev B KWX142
main memory
01 20 20 20 20 4B 57 58 31 34 32 20 20 20 20 20 (0H)
20 20 20 20 20 30 33 30 2D 31 34 37 35 2D CF 73 CRC 0x73CF ' KWX142 030-1475-'
20 20 20 30 30 32 20 20 20 42 FF FF FF FF FF FF (20H)
20 20 20 20 50 4D 31 30 34 30 30 4D 48 5A 54 11 CRC 0x1154 ' 002 Bÿÿÿÿÿÿ PM10400MHZ'
rest of page are all FF
write protect pages (0H)
FF FF FF FF FF FF FF FF
write protect redirection (20H)
FF FF FF FF FF FF FF FF
bitmap of used pages for file structure (40H)
FC FF FF FF FF FF FF FF
page redirection bytes (100H)
all FF
Programming the DS2505
Once I figured out how it works, I want to burn a new chip. Unfortunately, there is a chip shortage. I ordered several chips from 2 different eBay sellers. All the chips I received are used. Since DS2505 is a EPROM not an erasable EPROM, they are all useless. (Maybe there is a way we can use it, but I don't know how.) Contacted the sellers and got my refunds.: 2 months wasted. Why I order chips from eBay seller? Because I can't find any from DigiKey or Mouser. In the end, I put in my order with DigiKey and it is on back-order for 6+ months. Today, I got 10 chips I ordered and immediately I start to program it.
Programming DS2505 is not difficult if you have the programmer. I was able to burn the chip with the correct info, but that did not solve my cpu issue. I will work on this once have more time. In the mean time, I would like to share my findings. Hopefully, this is useful for someone.
Last edited: