Upgrading (and dumping) the SPARCstation 10 boot ROM

Tue, 28 Jul 2026 12:00:00 +0000

The SPARCstation I have here came with boot ROM 2.9. Since it now sports two CPUs in a SMP setup, I was told I should upgrade to version 2.25 (the latest available). This involved getting a ROM burner, OTP ROM chips and also dumping the old ROM chips in the process.

My SPARCstation 10 had boot ROM version 2.9 on it, and since it now has 2x 390Z55 SuperSPARC CPUs in it, I decided it was time to upgrade the boot ROM to the latest version.

I was mostly guided by Burning a New SPARCstation 1 PROM, but also had some input on Discord from legodude and others. The important suggestions: Get the T48 instead of the 866 and either get EPROMs + an UV eraser or - what I did - get PROMs that can be programmed only once (which is fine, it's not like there's gonna be many boot ROM updates for the SPARCstation).

Hardware

T48 Mini Pro (ASIN B0CXSYRL4L on Amazon)

NM27C040N150 / NM27C040 4 Mbit OTP PROM (via eBay)

I got the T48 Mini Pro (~ 77 EUR) from Amazon, the NM27C040 one-time programmable ROM chips from eBay (~ 37 EUR for 10 pcs).

The T48 Mini Pro seems to be a genuine XGecu product, and the official software works for it.

Software

T48 Software: Xgpro V13.16 from XGecu's English Download page

Sun4m OBP 2.25 ROM: Sun Boot ROM and Firmware Image Archive

There's also an open source implementation of the flasher software (minipro), but this time I opted for just booting into Windows 11 and using the official software. If you don't have a Windows machine handy, using minipro might be a good alternative.

Dumping

First order of things, trying out the T48 by extracting the old ROM chip and dumping it. I didn't find version 2.9 of OBP for the SPARCstation 10 online, and searching for the file hashes also did not turn up anything, so I'm uploading the file here in case it comes in handy for someone down the road.

Download a copy of the dumped ROM here: ss10-openboot2.9.bin (512 KiB)

MD5: 4f58772f3ed6b0daf0452074f60326a5
SHA1: 611fc4280e335f2eb95cb6832cd969c0202e1447
SHA256: 07b680f12bd87a6ee21445c0a3bff1603c8da70f0480b1bdce612ccae7d63ffb

The dump seems to be correct, as I my spare-parts second SPARCstation 10 also had a 2.9 ROM in it (which I also upgraded as part of this exercise), and both chips dump the exact same 512 KiB binary, so at least the chips probably haven't deteriorated since the they were flashed.

The ROM chip that came inside the SPARCstation 10 has the following markings:

White sticky label: 525-1183-03 (A)

ROM chip etching: TMS 27C040-20JL LP9218

The replacement ROM chip (not that important, but to document "what worked for me") has:

E9430ZA

NM27C040N

150

You might want to be fancy and put a new sticky white label on the new ROM chip and mark it as "2.25", but I didn't :)

Flashing

After obtaining the 2.25 ROM image from the link above, and checking that the binary contents of my dumped 2.9 and the downloaded 2.25 image look similar in terms of structure, I went ahead and flashed the image.

After selecting the correct chip type, the flasher eventually finished burning the OBP 2.25 ROM to the chip, the output was:

Pins Detected Passed!
ID: Ox 8F 08.....OK!
Programming FLASH ...Succeeded. Time : 154141ms
Verifying FLASH ...Succeeded. Time : 3469ms
Programming ...Succeeded

Booting

Inserting the new chip (next to the NVRAM/RTC replacement chip I replaced earlier):

The SPARCstation takes a while to show the graphical boot screen (diagnostics switch seems to flip on, as the configuration checksum has changed, not sure if that always happens when a ROM upgrade takes place, or if it was caused by some other change). The output:

Incorrect configuration checksum;
Setting NVRAM parameters to default values.
Setting diag-switch? NVRAM parameter to true

The banner then greets us with:

SPARCstation 10 MP (2 X 390Z55), Keyboard Present
ROM Rev. 2.25, 96 MB memory installed, Serial #XXXXXXXX.
Ethernet address 8:0:20:XX:XX:XX, Host id: XXXXXXXX.

Nice! Reconfiguring the settings to my liking (boot device, toggling diagnostics switch on and off) and booting back into Solaris 2.6 and everything seems to work nicely.

Quicker self-test

An interesting trick I learned on Discord is that one can keep diag-switch enabled but limit the amount of RAM that gets tested at boot (thanks ehawk; ref docs):

setenv selftest-#megs 1

Other uses

The T48 will surely come in handy for other projects as well, and might enable PC BIOS flashing/recovery or other experiments in the future.