Debian GNU/Linux on Shuttle SN85G4


These are my notes on setting up Debian GNU/Linux on a Shuttle SN85G4 system that I built with much help from friends. I ran into a number of interesting problems in setting up this system; hopefully this documentation will help other people who are trying to do the same thing.

The hardware I was dealing with was:

At the time I got this system working (June 2, 2004), the current Linux kernel versions were 2.4.26 and 2.6.6. This system has an nForce 3 mainboard chipset, which is fairly cutting-edge for Linux. The whole system cost about $3,000, most of which was for the monitors.

The purpose of this system was to serve as a home desktop system and as a stereo (I rip all of my CDs to Ogg Vorbis and wanted a nice system to play them on). It secondarily will serve as a separate place to mirror some files and a DVD burner for backups.

I can highly recommend having two monitors if you can afford it. I am far more productive and enjoy my computing environment significantly more with twice the screen real estate. It's great to be able to look at something on one screen while simultaneously doing something with that information on the other screen.

Kernel Configuration

After booting the system originally off of a copy of the latest Debian stable, I had to then put the latest Linux kernels on a CD and copy them off the CD onto the system. The Linux kernel that came with Debian stable at the time (2.4.18) didn't have any drivers for either the onboard nForce Ethernet or for the MA311 wireless card (the MA301 drivers do not work).

I then built a custom kernel with make-kpkg, as I do with all of my systems. I don't know if any of the stock Debian kernels would work; I don't tend to try. It's easy enough to build a custom kernel, and then I can get everything right.

I'll touch on more of the kernel configuration later when talking about the network and sound. The important notes are:

I built both a 2.6 and a 2.4 kernel, but I'm currently using the 2.4 kernel, so I can't attest as much for the 2.6 kernel. But it supports basically the same options and should work as well except for the custom nForce drivers (see below under networking and sound).

The DVD drive works fine with the regular IDE drivers, although as always with CD or DVD burners prior to 2.6 kernels, you want to build the IDE SCSI emulation layer as a module and build the IDE CD-ROM driver only as a module, so that when burning you can unload the regular driver and load the IDE SCSI driver. 2.4 burners really like to use the SCSI layer.


There are two available options for network drivers for the on-board Ethernet: the forcedeth driver that comes with current 2.4 and 2.6 kernels (a free, reverse-engineered driver), and the nvnet driver that comes with the nForce drivers for Linux, available from nVidia's web site. (I'm not including a direct link because they tend to change; as of this writing, it's trivial to find by going to nVidia's home page, choosing download drivers, and then selecting the nForce drivers.)

I'm currently using the nvnet driver, but I used the forcedeth driver for a while and had no problems with it. I ended up using nvnet while working around sound problems and just haven't bothered switching back.

For the MA311 wireless card, you want the orinoco_pci driver, which as mentioned above is the driver for Prism 2.5 PCI cards. I also built this as a module (I like having my network drivers as modules, particularly when debugging an initial kernel build).

When I first built the MA311 driver, I was able to bring up the interface and iwconfig would show that it saw the correct base station and found its MAC address, but it wouldn't actually use the network connection. The light on the back of the card was solid, saying that it had found a base station, but it didn't seem to be able to use the network. This problem was solved by adding:

    append="noapic apci=off"

to my lilo.conf file. I believe that apci=off is unnecessary, but I heard about it at the same time and figured better safe than sorry. As near as I can tell, with this hardware, this card will not work unless you disable APIC. (If you use grub, search around; you can find grub instructions pretty easily by looking for "noapic".)

Graphics and X

The Gainward FX PowerPack! is based on an nVidia chipset. I prefer cards with nVidia chips because the driver support has been very good under Linux, although unfortunately you do have to use the non-free driver from nVidia themselves. I installed the video driver by installing the nvidia-kernel-source Debian package from nonfree (after updating the system to unstable, since I wanted a cutting edge system) and then building the module with make-kpkg modules_image as normal.

I had a very strange interaction between this video card and the Samsung SyncMaster 191T monitors that I still haven't figured out. If the monitors are plugged in via their VGA ports, with a DVI to VGA converter on the cable to plug it into the video card, text mode works fine but I can't drive the monitors at their native 1280x1024 resolution. If I plug the monitors in via the native DVI input, they only display "video mode not supported" while the system is showing text, including during the initial boot-up and BIOS screens. I was unable to find any other reports of this problem on-line, and I think it's a problem specific to this card. It may well go away with a BIOS upgrade (which is unfortunately hard to do without having a Windows system).

This problem still persists for me. I installed xdm so that the system will be switched into graphical mode (at native resolution due to the configuration below) after boot, at which point the monitors are happy, and I keep a VGA cable handy in case there's a problem during boot. Switching from DVI back to VGA requires a power cycle, though, since the video card can't seem to switch back on the fly.

The other problem I found is that the Samsung SyncMaster 191T cannot do a standard 1280x1024 resolution at 60Hz vertical refresh, like it specifies in the manual, because they claim that they can only support 60KHz horizontal sync maximum and that mode requires 62KHz horizontal sync. I don't know if this is another graphics card problem, but when I first started X, it came up in the non-native 1280x960 mode, and as anyone who's used an LCD screen can tell you, driving the monitor in a non-native mode results in horrible picture quality (and with the DVI input, no display at all).

After fighting with this for a while, the solution that worked was to use gtf to generate a custom modeline for 1280x1024 that was as close as possible to 60KHz horizontal sync. The line that I ended up with is:

    Modeline "1280x1024_56.00"  101.43  1280 1360 1496 1712
             1024 1025 1028 1058  -HSync +Vsync

This should be place, all on one line (the line break is just to make it more readable) in /etc/X11/XF86Config-4 in the Monitor section. The HorizSync setting is 30-60 and the VertRefresh setting is 56-85. Now, modify the Screen section to contain something like:

    Monitor         "Samsung SyncMaster 1911"
    DefaultDepth    24
    SubSection "Display"
            Depth           24
            Modes           "1280x1024_56.00"

where the Monitor refers to the Identifier that you set in the Monitor section. (There are lots of example XF86Config-4 files out there that you can use to get the hang of how this works.) Note that this configuration only works with the DVI output; with VGA output, you get something horrible.

Of couse, since I had two screens, I have two Screen sections with different identifiers, and two Device sections also with different identifiers that specify the same driver. The Screen and Driver sections are otherwise identical, and in ServerLayout I have:

    Screen          "Screen 1"
    Screen          "Screen 2" RightOf "Screen 1"

where "Screen 1" and "Screen 2" are the identifiers for my screen sections. This runs separate window managers on both screens; if you want to use Xinerama instead, check the nVidia driver documentation (I prefer to have separate virtual desktops on both screens).

The mouse configuration is just a generic serial mouse configuration for a Microsoft mouse. I tried using a Memorex PS/2 mouse and had the mouse cursor stop moving a few seconds after X started (with gpm turned off) and couldn't figure out what was causing that. But the serial mouse works fine.


Either the Intel i810 driver or the nvaudio driver from the nForce driver set will work to drive the sound, I believe, but I only have extensive experience with the nvaudio driver. I downloaded the kernel source tarball from the nVidia site and followed the installation instructions, which are very straightforward.

At first, the sound had a bad skipping or stuttering problem. About every third of a second, it would pause for a third of a second, and then pick up again. After an inquiry to the nVidia nForce driver bugs address and an excellent suggestion from Vinod Gopalakrishnakurup (thank you!) I booted the system with noapic set (see above under network configuration) and this problem went away completely.

I had no luck at all getting ALSA to work with this chipset, either using the separate ALSA modules in Debian unstable (1.0.4) with either the 2.4 or 2.6 kernels, or the ALSA drivers built into 2.6.6. I wouldn't bother; the nvaudio OSS driver works fine.

Last spun 2022-02-06 from thread modified 2013-01-04