UN1X 


BMC4401 NIC

Devices


Building a x86 OpenSolaris box is still an adventure when it comes to hardware (lack of drivers). Here is a short List of what worked for me in the last 2 years.
 

Ethernet

-
bmc4401

PCI IDE

-
Promise TX2      (udma 133)

PCI SATA


- Tekram  TR-822 (sata / sil3512)

PCI-X - SATA II


- Exsys EX-3403 S-ATA Controller 8-Port PCI-X (Marvell 88SX6081)

bmc4401  (Acer Travelmate 661lci)


Date: ??? (Nevada B45)

Problems: had to compile the driver myself

My Laptop has a build in bcm4401 NIC. The Card is around for years, used in many Laptops but
Opensolaris has still (Nevada B45) no (official) Support for this card - oohh shit. The good new is that one of the external Driver Projects has a working bcm4401 Driver. Since Solaris USB Support for Storage works i used a USB Stick to transfer the driver from a Linux Box to Solaris.   

Installation

With the sunstudio 10 compiler i wasn't able to compile the bcm 4401 Driver. The build ends right at the beginning with a bunch of Errors.  Using gcc 3.x worked without any problems.


Warning

One of the (old) GCC-Packages overwrote libelf.so and made PAM useless - so be careful. I installed two packages :

  1. devpro-make-sccs-bins 
  2. bfe.2.2.2

The gcc compiler is installed under /usr/sfw/bin - no need to download (full install) anything in recent releases !

Installation Steps

  1. add /usr/ccs/bin and /usr/sfw/bin to your PATH ( or /etc/profile .bashrc ..)
  2. Link Makefile.arch_?cc to match your Setup (arch/compiler)
  3. make (make clean 1st if its already build)
  4. make install
  5. ./adddrv.sh
  6. modload obj/bfe
  7. modinfo  |  grep bfe #(loaded?)
  8. devfsadm -i bfe
  9. ifconfig bfe0 plumb
  10. ifconfig bfe0 <IP>
  11. ifconfig bfe0 up
  12. create hostname.bfeN with the hosts name. The corresponding IP is added to /etc/hostname , the netmask to /etc/netmasks .


Command output

bash-3.00# modinfo | grep bfe
 45 f8bfe000 101608   3   1  ip (IP STREAMS driver 1.47)
 45 f8bfe000 101608   -   1  ip (IP STREAMS module 1.47)
218 f8df3d58   b8fc 208   1  bfe (bcm4400 nic driver v2.2.2)

bash-3.00# ifconfig bfe0
bfe0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.10.1 netmask ffffff00 broadcast 192.168.10.255
        ether 0:c0:9f:29:99:84


Remarks

  1. /etc/hosts: IP FQDN short_name
  2. Hostname : /etc/nodename (name)
  3. IP Forwarding: ndd -set /dev/ip ip_forwarding 0|1
  4. NS Switch : /etc/nsswitch.conf  (Name Service Config)
  5. /etc/resolv.conf: (nameserver ip)
  6. Default GW : /etc/defaultrouter (IP ADDR)
  7. I used the Version 2.2.2 Driver which workes ok. Older Versions have Problems.
  8. Solaris is installed on a external USB2 Disk (disk2) booted via grub from Disk0 (Linux). This worked without any Problems or additional Configuration steps unlike with Linux (initrd thing). The last time i tried Solaris on a Laptop, USB Support was more a joke than usefull. 

Promise tx2

Date: 2006
Problems: None

The configuration was tested on a Dual Xeon box with Opensolaris running.

bash-3.2# uname -a
SunOS singularity 5.11 snv_79a i86pc i386 i86pc

  1. prtconf -pv  shows the pci ID from the card. The promise has depending on rev pci105a,4d{68,69,??}
  2. eeprom pci-ide=pci105a,4d68     // assign pciID the pci-ide dev
  3. touch /reconfigure                      // rebuild device tree at next reboot
  4. reboot                                       // rebuild 
  5. run format to see if it worked
format should show something like this:

bash-3.2# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <DEFAULT cyl 2198 alt 2 hd 255 sec 63>
          /pci@0,0/pci8086,2418@1e/pcie11,b1bc@7/sd@0,0
       1. c0t3d0 <COMPAQPC-MAJ3182MP-1812-16.96GB>
          /pci@0,0/pci8086,2418@1e/pcie11,b1bc@7/sd@3,0
       2. c2d0 <ST380011-5JVHTYT-0001-74.53GB>
          /pci@0,0/pci8086,2418@1e/pci-ide@b/ide@0/cmdk@0,0
       3. c3d0 <ST380011-5JVJ7LT-0001-74.53GB>
          /pci@0,0/pci8086,2418@1e/pci-ide@b/ide@1/cmdk@0,0
       4. c4t0d0 <drive type unknown>
          /pci@0,0/pci8086,2418@1e/pci1106,3038@9/storage@2/disk@0,0
Specify disk (enter its number): 


Entry 2,3 show disks conneted to the promise TX2 controller.

TR-822 (SIL3512)

Date: 02.2008
Chipset : SIL3512
Type: SATA
Problems: BIOS Update necessary

Ok - the chipset is supported - but most of these controllers today come with a RAID BIOS which wont work with
solaris. Here is the short and simple procedure to get it working.

  1. Go to the silicon image website and download the flash utility and non RAID Bios for the sil3512
  2. Prepare some BootCD / Floppy  (example here ) and flash the sil3512 BIOS
  3. After this simple procedure the TR-822 works right from the begining (Installer)
Solaris now picks this device as "Mass storage controller" (device class) instead of "RAID ..". I used this configuration
for a small server at home. The initial configuration uses 2 500 GB Disks mirrored. Next step will be to grow that to
4x 500 GB in a raidz configuration.

bash-3.2# format
Searching for disks...done

c0t3d0: configured with capacity of 16.95GB


AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <DEFAULT cyl 2198 alt 2 hd 255 sec 63>
          /pci@0,0/pci8086,2418@1e/pcie11,b1bc@7/sd@0,0
       1. c0t3d0 <COMPAQPC-MAJ3182MP-1812 cyl 6999 alt 2 hd 20 sec 254>
          /pci@0,0/pci8086,2418@1e/pcie11,b1bc@7/sd@3,0
       2. c1d0 <ST350032-         9QM22NG-0001-465.76GB>
          /pci@0,0/pci8086,2418@1e/pci-ide@8/ide@0/cmdk@0,0
       3. c2d0 <ST350032-         9QM25X9-0001-465.76GB>
          /pci@0,0/pci8086,2418@1e/pci-ide@8/ide@1/cmdk@0,0
       4. c4t0d0 <drive type unknown>
          /pci@0,0/pci8086,2418@1e/pci1106,3038@9/storage@2/disk@0,0
 
Disk 0,1 are connected to some adaptec  u160 controller (System) , entry 2,3 are connected to the TR-822 (DATA) and
4 sits on a USB HUB.

With one line i made a mirrored Pool from 2,3 and exported it via NFS4 to OS X and Linux Clients - compare that to
Linux (RAID/LVM) ease of use and Features. With GBit Ethernet on both ends the performance it pretty good for such
a cheap setup.

bash-3.2# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
pool1   464G  7,59G   456G     1%  ONLINE  -


Exsys EX-3403 S-ATA Controller 8-Port PCI-X


Date : 11.2008
Chipset Marvell 88SX6081 - supported on Solaris since some time see HCL.
Type: SATA II
Problems: None

I installed one of those in a HP DL 145. It boots and installs 2008.05 without any problems right out of the box. The Install was done with all Disks on that controller. 

$ uname -a
  SunOS singularity 5.11 snv_100 i86pc i386 i86pc Solaris

 
Links

GCC Binaries Page
bcm4401 Driver Page
Silicon Image Page
Other Drivers