This guide provides instructions for reprogramming the IDPROM (Identification PROM) on various Sun workstation models, including sun4c, sun4m, sun4d, and sun4u architectures.
The IDPROM contains critical system identification information including the machine type, Ethernet MAC address, and serial number. When the NVRAM battery dies (which happens on all Sun workstations eventually), this information is lost and must be reprogrammed.
Prerequisites
Before attempting IDPROM modification, document your existing IDPROM data if possible:
- SunOS 4.1.x:
/usr/etc/devinfo -vp - Solaris 2.x:
/usr/sbin/prtconf -vp - OpenBoot monitor:
.idpromcommand at theokprompt
Step 1: Access the OpenBoot Monitor
Go to the OpenBoot monitor (ok prompt). You can do this by turning on your machine and pressing Stop-A (or L1-A) to interrupt the boot sequence.
For new NVRAM chips, execute these commands first:
set-defaults
setenv diag-switch? false
Step 2: Understanding IDPROM Structure
The IDPROM consists of 16 bytes (0-f) with the following structure:
| Byte | Purpose |
|---|---|
| 0 | Format/version (always 01) |
| 1 | Machine type (first byte of hostid) |
| 2-4 | Ethernet address bytes 1-3 (always 08:00:20) |
| 5-7 | Ethernet address bytes 4-6 |
| 8-b | Manufacturing date |
| c-e | Serial number (last 3 bytes of hostid) |
| f | Checksum (XOR of bytes 0-e) |
Important: Don’t change the first byte of the hostid to something that doesn’t correspond to your system type.
Step 3: Programming with mkp
The mkp command uses the format:
<value> <location> mkp
Example: SPARCstation IPX
For an IPX system with hostid 57c0ffee and Ethernet address
08:00:20:c0:ff:ee, use the following commands:
01 0 mkp
57 1 mkp
08 2 mkp
00 3 mkp
20 4 mkp
c0 5 mkp
ff 6 mkp
ee 7 mkp
00 8 mkp
00 9 mkp
00 a mkp
00 b mkp
c0 c mkp
ff d mkp
ee e mkp
Step 4: Calculate and Store Checksum
After setting bytes 0-e, calculate and store the checksum with this command:
0 f 0 do i idprom@ xor loop f mkp
This computes the bitwise XOR of bytes 0-e and stores the result in byte f.
Step 5: Reboot
After modifications, reboot the system:
reset
Machine Type Reference
The first byte of the hostid identifies your system type. Use the correct value for your machine:
| Code | System Model |
|---|---|
| 01 | Sun 2/1x0 |
| 02 | Sun 2/50 |
| 11 | Sun 3/160 |
| 12 | Sun 3/50 |
| 13 | Sun 3/2x0 |
| 14 | Sun 3/110 |
| 17 | Sun 3/60 |
| 18 | Sun 3/E |
| 21 | Sun 4/2x0 |
| 22 | Sun 4/1x0 |
| 23 | Sun 4/3x0 |
| 24 | Sun 4/4x0 |
| 31 | Sun 386i |
| 41 | Sun 3/4x0 |
| 42 | Sun 3/80 |
| 51 | SPARCstation 1 (4/60) |
| 52 | SPARCstation IPC (4/40) |
| 53 | SPARCstation 1+ (4/65) |
| 54 | SPARCstation SLC (4/20) |
| 55 | SPARCstation 2 (4/75) |
| 56 | SPARCstation ELC |
| 57 | SPARCstation IPX (4/50) |
| 61 | Sun 4/E |
| 71 | Sun 4/6x0 |
| 72 | SPARCstation 10, SPARCstation 20 |
| 80 | SPARCstation Classic, LX, 4, 5, SS1000, Voyager, Ultra |
Notes
- The Ethernet address for Sun systems always begins with
08:00:20(Sun’s OUI) - The last three bytes of the Ethernet address typically match the last three bytes of the hostid
- If you don’t know your original hostid, you can create a new one, but be aware this may affect software licenses tied to the hostid