Solaris on $50 ECS 945GCT-M Combo Special

An Awesome Combo If It's On Sale

A few months back, I saw a Fry's sale on a Motherboard/CPU combo that listed the ECS 945GCT-M motherboard with Celeron 430 retail processor for $59.99, limit 1 per person. I thought it was an awesome buy and so at lunch time, 2 of my colleagues and I headed out to Fry's and I convinced them to each purchase one and so I had 3 combos sitting in my office. The next week, the same ad appeared in the San Jose Mercury News, but this time the price on the combo was $49.99, so I couldn't help myself and my 2 buddies and I headed over again, and I got another 3 boards. Not only do the motherboards provide Intel ICH7 chipsets with LGA775 sockets and support Core2-Duo processors, the ad on the 2nd week, offered version 3 of the motherboard which have 1333 MHz Front Side Buses.

The Celeron 430 is also a great price/performer. At 35 Watts average TDP, it's got a Conroe-L based core and supports 64-bit processing. Plus at 1.8GHz, it's fairly speedy. The way I guage roughly how fast the system is going to behave is to watch the first bootup after a Solaris install, when the SMF plumbs the first 191 services. And in less time than I can walk over to the frige and grab a cold beverage, the system is at the login prompt.

All Devices Almost Hunky-Dory

We've been running Solaris Nevada on this since build 79 or so. At that time, the onboard Realtek 8101E NIC didn't work properly. And the HD audio codec wasn't recognized. But the onboard Intel 945GZ integrated graphics controller works just fine with Xorg. Plus the SATA and IDE ports work as expected. And the board offers 2 PCI-express x1 lane slots and a single PCI-express x16 slot. Gen1 of course. But what would you expect for $50 - including the CPU!

Recently, I installed Nevada b86 on the system. And behold, the Realtek 8101E NIC is now supported. Surprisingly, it's not supported under the Solaris rtls driver, even though this is a Fast Ethernet (10/100 Mbps) port. Instead, it's supported under the rge driver, which has traditionally supported the Realtek 8169 Gigabit PCI device. Thanks to Miles Xu in Beijing for notifying me about this. This new Realtek 8101E is connected off the PCI-express bus, and register-wise, looking at the BSD source code, it looks much more like the 8169 NIC than the older 8139-series.

At first, I suffered some hardware difficulties with one of these ECS motherboards I had loaned out to some colleagues, and so the NIC would not work properly. But with 5 spares, I was easily able to replace it and try it again. I'm not sure what caused the failure, but secretly, we're using this as test systems for PCI-express HBAs and GigE NICs during development. The thinking is that if it will run on a dirt cheap system, it should have fewer issues running on a premium box.

Adding HD Audio Support to the Solaris audiohd Driver

The only device not yet supported was the audio codec. The Solaris audiohd driver attempts to attach() but fails when it encounters the codec. I decided to see if I could hack support into the driver by simply adding the PCI vendor/devID into the driver. The first step is to identify the codec. The easiest way on Solaris is to simply run:

  # dmesg | grep audiohd 

You should see some error message such like:

  Apr 8 18:02:14 gyoza audiosup: [ID 579887 kern.warning] WARNING: audiohd0: uns
upported HD codec vid=0x83847682, sid=0x00000000, rev=0x0010360

This tells us that the codec vendor (0x8384) is SigmaTel, and the DevID=0x7682, according to a web search, seems to indicate this is a type of STAC92XX type of codec.

Source and header files for the Solaris audiohd driver can be found at You need to download the ./usr/src/uts/common/io/audio/sada/drv/audiohd/audiohd.c as well as most of the headers in ./usr/src/uts/common/sys/audio/ and ./usr/src/uts/common/sys/audio/impl/. You will need to structure your headers into a directory relative to the audiohd.c such as ./include/sys/audio/ and use a CFLAG during compile like -I./include/sys/audio . I put an audiohd tarball together which you can click and download which should make life easier without having to download the whole kernel and build it to just get this driver.

After identifying the codec, I edited the ./include/sys/audio/impl/audiohd_impl.h header file (in the ./include/sys/ subdirectory of the tarball linked above) and added an entry for the new codec. For example, I found the entry like this for the SigmaTel STAC9200 codec:

   #define AUDIOHD_VID_STAC9200    0x83847690 

On my ECS945GCT-M system, have an 0x83847682 device which the web indicated was a type of STAC92xx codec and so I added a new define like:

  # define AUDIOHD_VID_STAC9200X   0x83847682 

and then editing the audiohd.c file and everywhere I found STAC9200, I added a similar line for STAC9200X, then ran:

  # make; make install

I ended up with an i386/audiohd and amd64/audiohd (32- and 64-bit) driver binaries which work.

To update and test the driver, I did the following:

  # update_drv audiohd
  # modload ./amd64/audiohd
  # devfsadm

After looking inside the /dev/ filesystem and seeing if ./audio and ./audioctl were created:

  # ls /dev/au\* 

I was able to play a few audio clips from /usr/demo/SOUND/sounds/.

When I get a non-working audio driver working, often the the Gnome desktop audio icon is still appear blanked out. The easiest way to cure this is to logout, and then login again without rebooting.

There are plans underway to improve audiohd and maybe integrate that with more popular audio technologies in the future. So hopefully, I won't need to do this every time. But it's not too hard or too big of a hassle since the Solaris source code is out there and easily available. And it was worth the small effort since I now have an excellent value system that plays video and music just fine.


About the SMF services at first boot.
That was a bug fix that makes it fast now ;)

Posted by EdwardOCallaghan on April 09, 2008 at 04:05 PM PDT #

Hi James,

Great blog entry. I've been working with low cost, low power systems and have been following your postings with great interest. The $79/$89 systems at Fry's with AM2 socket ECS/AMD BE-2300 (35W) combo is a great value to consider. I have one of the up and running for the family, that replaced a 5+ year old system, but was still able to use the IDE devices (well 2, out of 3), with a new stick of DDR2 667 RAM. The original PSU in the case has a low power factor (.6x) but total system watts is about the same, with 2-3x the integer performance.

For a 2nd system, again replacing a very old PII/PIII system, I'm looking at this Newegg combo:

for $39, though it will require a stick or two of old DDR400 184 pin RAM.

I'll let you know how this build goes, unless I decide to just get another BE2300 system.

Posted by Ted Matsumura on April 09, 2008 at 08:55 PM PDT #

Ed: The 191 services on my old AMD Sempron system from 3 years ago still takes about 3 minutes same Nevada version, so compared to just 1 minute or so on the celeron 430, it's a great way to guage performance. BTW, I retired that old AMD box yesterday and replaced it with the combo above. Sad day for an old fried. But I have an old EPIA 800 box and a VIA c7/cn700 box that if any folks want to work on to further improve the SMF start performance, they're welcome to use. The EPIA 800 has 2GB and 4GB CF cards for IDE disk and starting services takes hours and is I/O bound. The c7/cn700 is snappier and should take less than 4 - 5 minutes. I think I donated a box to our lab reservation system, under the hostname "breadbox" (it's in an Antec Aria shoebox xpc case).

Ted: I did buy the Fry's combo w/ BE3200 a while ago and it's sitting in my office not powered up. It came with an ECS board also, but this had an nVidia GeForce 7050/610 chipset I think and I picked it up on a Thursday for $78, no rebate required. I have a colleague who's running it now and hosting a website, he says, with Solaris Nevada, build 60-something, I think. I haven't spent the time to test all the devices to get them working. But I think he put a cheap $5 Realtek 8169 NIC on the system. I think I have an ECS GOAL3+ w/ sempron and everything works on that board with the correct drivers, and I got memory from StarMicro.COM. Used (not new) DDR, but 1 GB name brand sticks for $32 a while ago. It may be more expensive now, but starmicro memory was more compatible than some Kingston 1GB which only showed up as 512 MB and they have insanely fast fulfillment like But if you can find an older, PCChips A31g board with the older SiS GigE onboard NIC, I have one system that is otherwise identical to the ECS GOAL3+; same socket, same DDR, same graphics I think. But diff was GigE NIC. Murayama's free solaris sige driver rocks on this board and the throughput really makes disk mirroring over my network a lot faster

Posted by James C. Liu on April 10, 2008 at 02:09 AM PDT #

Post a Comment:
Comments are closed for this entry.



« September 2016