Sun Blade IDPROM Fix

How to fix invalid contents of IDPROM on a Sun Blade 100 UltraSparc workstation.

IDPROM content are invalid

So you have found a nice UltraSparc workstation, the Sun Blade 100 (or 150), but when starting it complains about "The IDPROM contents are invalid". The Ethernet address and Host ID have become invalid as the integrated battery of the NVRAM chip has died. 

Sun Blade 100 (UltraSPARC-IIe), No Keyboard
OpenBoot 4.0, 128 MB memory installed, Serial #17825792.
Ethernet address 0:8:0:0:0:10, Host ID: 01100000.

The IDPROM contents are invalid

Luckily the content side is easy to fix from the OBP. The battery on the other hand is not. But luckily all Sun Blade 100 models seems to be using a coin cell instead of the integrated one. Unfortunately, no such luck with the Sun Blade 150 model. There you need drill.

Find the ethernet address

Find the MAC address, it should be on a sticker on top of the NVRAM chip.

For this tutorial we will use the example MAC address of: 00:03:BA:04:BB:33

Find the eeprom chip device address

First find the the address of the eeprom NVRAM chip.

ok show-devs
/SUNW,UltraSPARC-IIe@0,0
/pci@1f,0
/virtual-memory
/memory@0,0
/aliases
/options
/openprom
/chosen
/packages
/pci@1f,0/SUNW,m64B@13
/pci@1f,0/pci@5
/pci@1f,0/ide@d
/pci@1f,0/sound@8
/pci@1f,0/pmu@3
/pci@1f,0/usb@c,3
/pci@1f,0/firewire@c,2
/pci@1f,0/network@c,1
/pci@1f,0/isa@7
/pci@1f,0/ebus@c
/pci@1f,0/ide@d/cdrom
/pci@1f,0/ide@d/disk
/pci@1f,0/pmu@3/fan-control@0,c8
/pci@1f,0/pmu@3/beep@0,b2      
/pci@1f,0/pmu@3/ppm@0,b3
/pci@1f,0/pmu@3/i2c@0,0
/pci@1f,0/pmu@3/i2c@0,0/dimm@0,a0
/pci@1f,0/pmu@3/i2c@0,0/card-reader@0,40
/pci@1f,0/pmu@3/i2c@0,0/temperature@0,30
/pci@1f,0/isa@7/serial@0,2e8
/pci@1f,0/isa@7/serial@0,3f8
/pci@1f,0/isa@7/power@0,800
/pci@1f,0/isa@7/dma@0,0
/pci@1f,0/isa@7/dma@0,0/parallel@0,378
/pci@1f,0/isa@7/dma@0,0/floppy@0,3f0
/pci@1f,0/ebus@c/idprom
/pci@1f,0/ebus@c/eeprom@1,0
/pci@1f,0/ebus@c/flashprom@0,0
/openprom/client-services
/packages/kbd-translator
/packages/dropins
/packages/obp-tftp
/packages/terminal-emulator
/packages/disk-label
/packages/deblocker
/packages/SUNW,builtin-drivers
ok cd /pci@1f,0/ebus@c/eeprom@1,0
ok .properties
model                    mk48t59
address                  fff58000 
reg                      00000001 00000000 00002000 
device_type              nvram
name                     eeprom
ok 

The eeprom is located at address fff58000, the clock and host information data we need to fix is at memory offset 1fd8 resulting in address fff59fd8

Write the MAC and Host ID

ok 01 fff59fd8 c!
ok 83 fff59fd9 c!    
ok 00 fff59fda c!  
ok 03 fff59fdb c!  
ok ba fff59fdc c!  
ok 04 fff59fdd c!
ok bb fff59fde c!
ok 33 fff59fdf c!  
ok 00 fff59fe1 c!  
ok 00 fff59fe2 c!  
ok 00 fff59fe3 c!
ok 04 fff59fe4 c!  
ok bb fff59fe5 c!
ok 33 fff59fe6 c!

Calculate the XOR checksum and write it

ok 01 83 xor
82 ok 00 xor
82 ok 03 xor
81 ok ba xor
3b ok 04 xor
3f ok bb xor
84 ok 33 xor
b7 ok 04 xor
b3 ok bb xor
8 ok 33 xor
3b ok 
3b fff59fe7 c! 

And reboot.

You should now have a working system

Sun Blade 100 (UltraSPARC-IIe), No Keyboard
OpenBoot 4.0, 128 MB memory installed, Serial #50641715.
Ethernet address 0:3:ba:4:bb:33, Host ID: 8304bb33.