BMC4401 NIC
DevicesBuilding 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 :
- devpro-make-sccs-bins
- 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
- add /usr/ccs/bin and /usr/sfw/bin to your PATH ( or
/etc/profile
.bashrc ..)
- Link Makefile.arch_?cc to match your Setup
(arch/compiler)
- make (make clean 1st if its already build)
- make install
- ./adddrv.sh
- modload obj/bfe
- modinfo | grep bfe #(loaded?)
- devfsadm -i bfe
- ifconfig bfe0 plumb
- ifconfig bfe0 <IP>
- ifconfig bfe0 up
- create hostname.bfeN with the hosts name. The
corresponding IP is
added to /etc/hostname , the netmask to /etc/netmasks .
Command output
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
- /etc/hosts: IP FQDN short_name
- Hostname : /etc/nodename (name)
- IP Forwarding: ndd -set /dev/ip ip_forwarding 0|1
- NS Switch : /etc/nsswitch.conf (Name Service Config)
- /etc/resolv.conf: (nameserver ip)
- Default GW : /etc/defaultrouter (IP ADDR)
- I used the Version 2.2.2 Driver which workes ok. Older Versions have Problems.
- 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: 2006Problems: 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
- prtconf -pv shows the pci ID from the card. The promise has depending on rev pci105a,4d{68,69,??}
- eeprom pci-ide=pci105a,4d68 // assign pciID the pci-ide dev
- touch /reconfigure // rebuild device tree at next reboot
- reboot // rebuild
- run format to see if it worked
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.2008Chipset : 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.
- Go to the silicon image website and download the flash utility and non RAID Bios for the sil3512
- Prepare some BootCD / Floppy (example here ) and flash the sil3512 BIOS
- After this simple procedure the TR-822 works right from the begining (Installer)
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
