General sun4c, sun4m, sun4d, sun4u IDPROM Programming
If you have a valid NVRAM chip installed (IDPROM is ok) then before doing anything else, write down a copy of the IDPROM information.
You can get it under Sun OS 4.1.x by running /usr/etc/devinfo -vp or under Solaris 2.x by executing /usr/sbin/prtconf -vp. Alternatively you can get the IDPROM information at the OpenBoot monitor "ok" prompt by typing the command .idprom (yes the "." is part of the command).
If you don’t, you should be able to complete the procedure using information from the table at the bottom of this article.
Note: If your IDPROM is dead (all ff or 00) you really don’t have much to lose here. A machine with a dead IDPROM already doesn’t know what type it is and will often report a defective motherboard. Ignore that message until such time as you have completed that proceedure below.
This article is a synopsis of http://www.obsolyte.com/sunFAQ/faq_nvram.html
Step 1 Go to the OpenBoot monitor (ok prompt). You can do this by turning on your machine, pressing L1/Stop-A to interrupt the boot sequence, and entering "new command mode". Alternatively, if your machine is running, just shut down your operating system. If you are installing a new NVRAM, type set-defaults followed by the <Enter> key and then setenv diag-switch? false followed by the <Enter> key. Generally a machine will reset the NVRAM to the default values (excluding the IDPROM information) when it detects a new NVRAM. Still, it is good to do a set-defaults just in case this fails. Step 2. The command to reprogram the IDPROM part of NVRAM is "mkp". The format for the command is <value> <location> mkp where location is read off the following table (all values are in hexadecimal). Note that some Sun clones (e.g. Tatung COMPstation 25 with TWS boot PROM REV 1.7) don't have an "mkp" command. If "mkp" doesn't work on your system, see the section below entitled "Other more arcane methods for modifying the IDPROM." byte(s) contents 0 always 01 - format/version number 1 first byte of hostid (machine type) 2-7 6 byte ethernet address (first three bytes should be 08,00,20) 8-b date of manufacture (usually all 0s, doesn't really matter) c second byte of hostid d third byte of hostid e fourth byte of hostid f IDPROM checksum - bitwise xor of bytes 0-e As mentioned above, you can look at the complete idprom by executing .idprom. Bytes c through e in the table above are collectively referred to as the serial number. If you convert the concatenation of bytes c-e to decimal, this is the serial number you see when you turn the machine on. Now make the changes using mkp. Be very careful and be sure to compute the checksum after making changes. If you don't, you'll get nasty warnings about an incorrect IDPROM checksum on boot. A quick and dirty way to compute and store the checksum in location f is to execute the following at the "ok" prompt _after_ you have made your changes to locations 0-e. 0 f 0 do i idprom@ xor loop f mkp Don't change the first byte of the hostid to something that doesn't correspond to your system type (see table below). Similarly, the first three bytes of the ethernet address should be (08,00,20). The first byte of the hostid is often used to determine the architecture when booting from CDROM on some Sun models. If you don't set the first three bytes of the ethernet address to 08,00,20 you might get message which says that you have a defective motherboard (but then I don't know of any other consequences of changing this to some reasonable value, especially avoid ff:ff:ff:ff:ff:ff !. On some systems you can get away with changing the first three bytes of the ethernet address to more or less anything you want). Example: To modify the hostid of an IPX to be 57c0ffee and the ethernet address to be 08:00:20:c0:ff:ee. At the OpenBoot monitor prompt (ok) 01 00 mkp {machine type from table below} 1 mkp 08 02 mkp 00 03 mkp 20 04 mkp c0 05 mkp ff 06 mkp ee 07 mkp 00 08 mkp 00 09 mkp 00 0a mkp 00 0b mkp c0 0c mkp ff 0d mkp ee 0e mkp 0 f 0 do i idprom@ xor loop f mkp Step 3: reboot the system and you should be good to go! The following table matches Sun system models with the first byte of the hostid. This is from a posting to comp.sys.sun.admin by Andy.Behrens@coat.com 01 2/1x0 02 2/50 11 3/160 12 3/50 13 3/2x0 14 3/110 17 3/60 18 3/e 21 4/2x0 22 4/1x0 23 4/3x0 24 4/4x0 31 386i 41 3/4x0 42 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 4/e 71 4/6x0 72 SPARCstation 10 or SPARCstation 20 80 SPARCstation Classic, LX, 4, 5, SS1000, Voyager, Ultra 1