Replacing a dead NVRAM chip
My SPARCstation 1+ was manufactured in 1989. Over a nearly 30 year lifetime, any number of components could have gone bad: capacitors burst, hard disk motors fail, sometimes the wrong voltage gets attached, etc. A problem that notoriously affects older Sun workstations (including mine!) is NVRAM failure.
The NVRAM chips in Sun workstations contain:
- a clock, to keep time when the computer is off
- memory to store boot device order, serial console modes, etc (in a PC you’d call that the BIOS settings)
- details about the machine itself: its “hostid”, what model it is, an Ethernet MAC address. Sun calls this IDPROM.
- a battery - the “non-volatile” part of NVRAM is managed here by having a battery keep an SRAM alive
Over the years, that battery dies. Unfortunately, because it is packaged as one chip, you can’t pop in a new button-cell - you have to replace the whole chip. This doesn’t just mean your computer will lose the ability to tell time - (entertainingly) the machine will lose it’s IDPROM data - it no longer knows what model it is or what its MAC address is supposed to be.
When worked on the SPARCstation, I’ve set dummy values for the MAC address and such to get around the dead battery - there’s thankfully a quite detailed guide from comp.sys.sun.hardware
on how to set them. I’ve since given in and ordered a new chip (the STMicroelectronics M48T02-200PC1).
To replace it, I had to open up the case and find the darn thing! Pizzaboxes have fairly compact interiors, sometimes layering what you want to get at below something unrelated. In this case, I had to remove the two frame buffer cards.
I pried it out of the socket (with my fingers), and inserted the new one (using the corner “dot” as a guide for its orientation):
After putting the framebuffer back in and closing up the case, it was time to set the IDPROM values for the last time! Based on the guide, I set a machine type of 53
(SPARCstation 1+) and a MAC address of 08:00:20:c0:ff:ee
(08:00:20
is the Sun range, and the guide’s example already referenced my favorite drink!). After booting to the ok
prompt, I set those by doing:
ok
ok 1 0 mkp
ok 53 1 mkp
ok 8 2 mkp
ok 0 3 mkp
ok 20 4 mkp
ok c0 5 mkp
ok ff 6 mkp
ok ee 7 mkp
ok 0 8 mkp
ok 0 9 mkp
ok 0 a mkp
ok 0 b mkp
ok c0 c mkp
ok ff d mkp
ok ee e mkp
ok 0 f 0 do i idprom@ xor loop f mkp
ok setenv diag-switch? false
The final diag-switch? false
brings the machine out of “diagnostic mode”, which means I don’t spend 10 minutes painstakingly verifying the 64MB of memory on every boot, and also don’t try (fruitlessly) to LAN boot.
With a working NVRAM chip, my SPARCstation now keeps the time and, more importantly, can be booted without futzing with configuration!