How do I get Solaris to recognize a network card that’s not on the
HCL?

There are many new ethernet cards available at major retailers for under $20
using well-supported chipsets. Unfortunately, the cards on the Solaris HCL
have been out of production for quite some time — particularly the Intel
cards. Even Solaris 8 does not recognize these newer cards.

I was amazed how difficult it is to find hardware on the Solaris HCL, especially fast ethernet cards. For an example take the Intel EtherExpress Pro/100. This card, based on the i82559 chipset, has been out of production for years–yet
it is the last card supported by Solaris 8 01/01. The current Intel InBusiness 10/100 card has the very same i82559 chipset in a much smaller BGA package, yet Solaris 8 01/01 still won’t recognize the card.

First, save yourself a lot of trouble and see if there’s a driver for your card somewhere. See if the card is listed on the Hardware Compatibility List (HCL)
for the latest Solaris Maintenance Update (MU).

The HCL is at

http://SolDC.Sun.COM/support/drivers/hcl/

Check to see if there’s a new driver for the card at:

http://soldc.sun.com/developer/support/driver/

Check for new and third-party drivers at

http://www.Sun.COM/io/.

Also check to see if there’s a patch supporting your card at

http://access1.Sun.COM/

A list of third-party drivers (mostly from hardware vendors) for Solaris x86 is at

http://www.sun.com/io_technologies/ihv-drivers.html

If you have a Linksys LNE100TX or other NIC card, it may be supported
by one of Garrett D’Amore’s ethenet drivers. See

http://garrett.damore.org/software/ethernet/

If there’s no driver found above, here’s what to do:

Install the card and watch the computer boot. Look for the list of devices in the BIOS summary screen. Write down the two 4-digit numbers. For the Intel card it was 8086 1030, the PCI/PnP vendor and device ID for the InBusiness card.

Boot into Solaris. Open the /boot/solaris/devicedb/master file and look for the vendor ID you wrote down.
In this example, the vendor ID is 8086 for Intel. Look through the file for devices that closely fit the description of your device under the vendor ID. One of them for this card happens to be iprb for the Intel 82559 chipset which is listed as:

pci8086,1029 pc8086,1029 net pci iprb.bef "Intel Pro 100/B Fast Ethernet"

If you’re confident that you have a reasonable match, add a new line to
this file that uses the vendor ID and device that you wrote down:

pci8086,1030 pc8086,1030 net pci iprb.bef "Intel 82559 You Bonehead"

Open the /etc/driver_aliases file and add a line for the card:

iprb "pci8086,1030″

Type "devlinks". Type "touch /reconfigure". Restart.

Hit ESC in the the Device Configuration Assistant phase of the boot process and ask it to scan for new devices. It should find your device and display the name you typed in in step (3) above. This step is crucial–the DCA step in the boot
process is where some important magic happens.

Once the system is finished booting, note the magic appearance of /dev/iprb (or whatever your device is called) and experience joy. Type "ifconfig iprb0 plumb" to wake it up. Edit a file called /etc/hostname.iprb0 and put your hostname into it. (if you use IPv6, also add /etc/hostname6.iprb0). Type "touch /reconfigure"
just for good measure and restart a final time.

As another example, these entries in /etc/driver_aliases and /boot/solaris/devicedb/master) support both the 905C and 3C980 card, using the elxl driver:

elxl "pci10b7,9200″ elxl "pci10b7,9800″

pci10b7,9200 pci10b7,9200 net pci elxl.bef "3Com 3C905C-TX-M El XL 10/100″

pci10b7,9800 pci10b7,9800 net pci elxl.bef "3Com 3C980-TX El Server 10/100″

Finally, here’s a partial list of the sub-$20 cards and their chipsets, but
I am still looking for the proper driver for the super-cheap 100baseT
chipsets from Realtek and Macronix as used by some Dlink, Hawking, Netgear,
and Linksys cards.

dnet: SMC, Sohoware, "tulip"

iprb: Intel (most)

nei: 10baseT NE2000 clones on the PCI bus (Linksys, AT/LANTIC)