nForce Linux Driver Release Notes

# NVIDIA nForce Linux Drivers

# Contents

1. These Contents
2. Overview
3. Package Availability
4. Minimum Requirements
5. Licensing
6. What The Installer Contains
7. What The Installer Does
8. Installation
9. Configuration
10. Loading The Drivers
11. Module Parameters
12. Audio Control Panel
13. Troubleshooting
14. Frequently Asked Questions (FAQ)
15. Acknowledgments
16. Change List

# Overview

The nForce chipset contains a number of hardware devices that can be run under Linux; a network device (MAC), audio hardware, storage controllers (IDE and SATA), and OHCI/EHCI USB controllers. Many of the components of the nForce chipset use industry standard interfaces; thus, not all components require custom drivers to be used on Linux.

Bug reports and installation questions may be directed to:

linux-nforce-bugs@nvidia.com

Before submitting a bug report, please read the Troubleshooting and FAQ sections first, and review the Known Problems list for the driver version you are using. This can be found at NVIDIA's web site, on the release page for the driver version.

If you decide to submit a bug report, make sure to run nforce-bug-report.sh, which will create the file nforce-bug-report.log in the current directory, and include this log file with the bug report. (The nforce-bug-report.sh script is normally installed in /usr/bin/ when you run the driver installer.)

# Package Availability

This package can be found at the NVIDIA web site:

    http://www.nvidia.com/content/drivers/drivers.asp

We strongly urge you to only use software obtained from this website or a trusted Linux distribution for your nForce hardware.

# Minimum Requirements

At the current time, the nForce drivers require a 2.4 or 2.6 series kernel running on 32- or 64-bit AMD CPUs.
NVIDIA's audio driver is an OSS driver, and requires OSS sound support in the kernel. NVIDIA's audio control panel is a Qt-based application, and requires Qt run-time libraries in order to run.

# Licensing

The network and audio driver provided by NVIDIA is subject to the NVIDIA software license; the license is available on the NVIDIA website, and is included in this package. By using this software, you are agreeing to the terms of the license.

# What the Installer Contains

The package contains the following items:

1. This Installation Guide
2. The NVIDIA license for the network driver software
3. Pre-built kernel library for the nForce audio driver
4. Pre-built kernel library for the nForce network driver
5. Audio control panel binary
6. Pre-built kernel interface binaries for major distributions
7. Source for the kernel interface portion of the audio driver
8. Source for the kernel interface portion of the network driver

# What the Installer Does

This installer will prepare a network driver and an audio driver, then place them in the appropriate locations for loadable kernel modules. The network and audio drivers are from NVIDIA. If the audio driver is installed, the installer will also install the audio control panel application.

# Installation

Nvidia has provided a self-extracting installer that will prepare the drivers and install them into the appropriate location for your kernel's module tree. Note that there is a 32-bit installer as well as a 64-bit installer. The 64-bit installer is required for x86_64 kernels. You can check what kind of machine you are currently running on by checking the output of `uname -m`. If the output reports `x86_64`, you are running a 64-bit kernel and should use the 64-bit installer.

To install the drivers, simply run the installer binary under a shell with root privileges, and follow the onscreen instructions.

The .run file accepts many command line options. Here are a few of the more common options:

--info
Print embedded info about the .run file and exit.

--check
Check integrity of the archive and exit.

--extract-only
Extract the contents of the .run file, but do not run 'nforce-installer'.

--help
Print usage information for the common command line options and exit.

--advanced-options
Print usage information for the common command line options as well as the advanced options, and exit.

The installer will use an ncurses-based user interface if it can find the correct ncurses library. Otherwise, it will fall back to a simple interactive text interface. To disable use of the ncurses user interface, use the option '--ui=none'.

The installer contains pre-built drivers for major Linux distributions. In the event that the installer cannot find a pre-built driver for your kernel, the installer will attempt to build the driver. In this case, it is necessary to install the kernel source corresponding to the kernel for which the driver will be installed for.

You might want to check the BIOS configuration on your system to ensure that the audio and networking devices will be detected. See the System BIOS Configuration description in the Troubleshooting section.

NOTE that for network driver updates, you must first deactivate the NVIDIA network device prior to running the installer. Otherwise the module count for that device will not be zero and installation of network driver will fail.

# Configuration

The installer does not update configuration files. After installing the drivers, configure the system to use the drivers by using the distribution's built-in configuration mechanisms for networking and sound, or edit the required files manually.

## Module Configuration File Location

Module configuration files are different for 2.4 and 2.6 series kernels. The various Linux distributions also differ in how they handle module configuration.

- For distributions based on a 2.4 series kernel, the module configuration file is typically called `/etc/modules.conf.
  `
- For distributions based on a 2.6 series kernel, the module configuration file is typically called `/etc/modprobe.conf`. Some distributions use a subdirectory, `/etc/modprobe.d/` , to hold individual configuration files for sound modules, etc.

## Configuring the network driver

### SuSE

For SuSE Linux Enterprise Server 9, use YaST to configure the network driver. YaST may be started in text mode by using the command "yast", or in graphical mode by using the command "yast2". Within the YaST UI, select "Network Devices", then select "Network Card". This should bring up the "Network cards configuration" dialog.
Select "Other (not detected)", then select the "Configure" button. In the "Kernel Module" section, set "Module Name" to "nvnet", then select the "Next" button. Configure the interface parameters as required, select the "Next" button to return to the card configuration dialog, and select "Finish".

### Red Hat

For Red Hat Enterprise Linux version 3, Red Hat 8, Red Hat 9 and Fedora Core 1, follow the instructions in other distributions to edit the configuration file `/etc/modules.conf`. For Red Hat Enterprise Linux version 4, Fedora Core 2 and later, follow the instructions in other distributions to edit the configuration file `/etc/modprobe.conf`.
Once the configuration file has been edited, configure the network interface parameters using the Network Configuration tool on the System Settings menu. The configuration tool can also be launched directly as "neat". (To launch neat in text mode, use "neat-tui".)

### Mandrake / Mandriva

For Mandrake 10, use Mandrake Control Center (available via the `mcc` command) to configure the network driver. Select "Network & Internet", then select "New Connection". Select "LAN Connection", select "Next", then select "Manual Choice". From the list of available network drivers, select "nvnet", then select "Next". and select "autoprobe". At this point, the driver will be configured and a new interface made availabe; select the newly-added interface to configure IP address settings, etc.
For earlier Mandrake distributions, follow the instructions in other distributions to edit the configuration file `/etc/modules.conf`. Once this is done, Mandrake Control Center can be used to configure IP address settings, etc., on the network interface supported by nvnet.

### Other distributions

If the distribution you are using provides a configuration mechanism for network drivers, use it to select the nvnet driver module for use with the nForce ethernet device, and to set the networking parameters (IP address, etc.) for the interface. Otherwise, manually edit the module configuration file.
If your configuration file already contains an entry for the forcedeth driver (an open-source network driver that supports the nForce network controller), that entry needs to be commented out with a `#` or removed:
`# alias eth0 forcedeth`

Add the following lines to the configuration file:
`alias eth0 nvnet
alias forcedeth off`
If your system has multiple ethernet interfaces, you may need to use 'eth1' or higher in place of 'eth0'.

## Configuring the audio driver

### SuSE

For SuSE Linux Enterprise Server 9, at the time of writing it isn't possible to use YaST to configure the nvsound audio driver. Following the instructions in other distributions to edit the configuration file `/etc/modprobe.d/sound`.

### Red Hat

For Red Hat Enterprise Linux version 3, Red Hat 8, Red Hat 9 and Fedora Core 1, follow the instructions in other distributions to edit the configuration file `/etc/modules.conf`.
For Fedora Core 2 and later, follow the instructions in other distributions to edit the configuration file `/etc/modprobe.conf`.

### Mandrake / Mandriva

At the time of writing, it isn't possible to use Mandrake Control Center to configure the nvsound audio driver.
Follow the instructions in other distributions to manually edit the configuration file. For Mandrake 10 or other Mandrake distributions running 2.6 kernels, the configuration file is `/etc/modprobe.conf`. For earlier distributions that run 2.4 kernels, the configuration file is`/etc/modules.conf`.

### Other distributions

If the distribution you are using provides a configuration mechanism for audio drivers, use it to select the nvsound driver module for use with the nForce audio device. Otherwise, manually edit the module configuration file.
If your configuration file already contains an entry for the i810_audio or snd-intel8x0 drivers (open-source audio drivers that supports the nForce audio controller), that entry needs to be commented out with a `#` or removed:
`# alias sound-slot-0 i810_audio`
Add the following lines to the configuration file:
`alias sound-slot-0 nvsound
alias snd-intel8x0 off
alias i810_audio off`
On some distributions, you may need to replace `sound-slot-0` with `snd-card-0`.
If you wish to have nvmixer audio settings automatically restored each time the nvsound driver loads, add the following lines to the configuration file for 2.4 kernels:
`post-install nvsound sleep 1; /usr/bin/nvmix-reg -f /etc/nvmixrc -L >/dev/null 2>&1 ||:`
`pre-remove nvsound /usr/bin/nvmix-reg -f /etc/nvmixrc -S >/dev/null 2>&1 ||:`
For 2.6 kernels:
`install nvsound /sbin/modprobe --ignore-install nvsound ; sleep 1; /usr/bin/nvmix-reg -f /etc/nvmixrc -L >/dev/null 2>&1 || :`
`remove nvsound { /usr/bin/nvmix-reg -f /etc/nvmixrc -S >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove nvsound`
For both 2.4 and 2.6 kernels, you should add the following code to `/etc/rc.d/init.d/halt`, or `/etc/init.d/halt.local` on SuSE distributions. On Mandriva distributions, add the code at the end of function `stop_mixer()` in `/etc/rc.d/init.d/sound`.
`if grep -q "\(nvsound\)" /proc/modules && [ -x /usr/bin/nvmix-reg ]; then`
`/usr/bin/nvmix-reg -f /etc/nvmixrc -S >/dev/null 2>&1`
`fi`

(In `/etc/rc.d/init.d/halt`, this code is best located next to any existing code that saves ALSA mixer settings.)

For Red Hat Enterprise Linux 4, Fedora Core 3 and later, add the following line in `/etc/rc.local`:
`/usr/bin/nvmix-reg -f /etc/nvmixrc -L >/dev/null 2>&1`

# Loading The Drivers

The installer may or may not leave the new modules loaded after the installation, depending on the existing configuration. You can force the module to be loaded using insmod or modprobe :

`insmod <modulename>`

or
`modprobe <modulename>
```

On subsequent reboots, the modules should load automatically.

# Module Parameters

The run-time behavior of NVIDIA drivers may be configured by use of module parameters. These can be specified either on the command line when loading the module, or in the module configuration file (such as /etc/modules.conf). For example, to have the nForce ethernet driver use CPU optimized mode, add the following to the module configuration file:
`
options nvnet optimization=1
`Or if loading the module manually from the command line:
`modprobe nvnet optimization=1`
The module parameters for the ethernet driver can be verified using the command:
`modinfo -p nvnet`
The following sections contain descriptions of all driver module parameters.

## nvnet Module Parameters

The nForce network driver supports the following optional parameters:

1. hardware offload mode
2. optimization
3. negotiation mode
4. speed and duplex
5. media
6. max TX packets
7. max RX packets
8. MTU
9. poll interval
10. segmentation offload
11. TX checksum offload
12. RX checksum offload

### Hardware Offload Mode

This parameter controls the hardware mode. The nForce network driver supports two hardware modes:

- hwmode=1 - off
- hwmode=2 - on

In hardware mode 2, TX checksum offload, RX checksum offload, segmentation offload, and RGMII (Reduced Gigabit Media Independent Interface) are used, and the MTU size can be set with the "mtu" driver parameter. In hardware mode 1, these offload modes are turned off, MII (Media Independent Interface) is used, and the "mtu" driver parameter is ignored.
The default hardware mode will depend on the network controller.

### Optimization

The nForce network driver's optimization mode can be specified with the module parameter "optimization". The driver supports two optimization modes:

- optimization=0 - Network throughput optimization
- optimization=1 - CPU load optimization

CPU-load optimization mode reduces the CPU utilization by reducing the frequency of interrupts.
Network-throughput optimization mode maximizes the network throughput at the expense of higher CPU consumption.
By default, the driver runs in network-throughput optimization mode.

### Negotiation Mode

The nForce network driver supports two negotiation modes:

- autonegotiate=0 - disabled
- autonegotiate=1 - enabled

When negotiation mode is enabled, the controller will negotiate for the speed and duplexspecified with the "force_speed_duplex" parameter. If negotiation mode is disabled, the controller will not negotiate, but will force the speed and duplex specified with "force_speed_duplex".
By default, autonegotiate is enabled.

### Speed and Duplex

The "force_speed_duplex" module parameter can be used set the interface speed and duplex of the ethernet controller. The following values are supported:

- force_speed_duplex=0 - autonegotiate
- force_speed_duplex=1 - 10Mbps half duplex
- force_speed_duplex=2 - 10Mbps full duplex
- force_speed_duplex=3 - 100Mbps half duplex
- force_speed_duplex=4 - 100Mbps full duplex
- force_speed_duplex=5 - autonegotiate for 10Mbps half duplex
- force_speed_duplex=6 - autonegotiate for 10Mbps full duplex
- force_speed_duplex=7 - autonegotiate for 100Mbps half duplex
- force_speed_duplex=8 - autonegotiate for 100Mbps full duplex
- force_speed_duplex=9 - autonegotiate for 1000Mbps full duplex

If a value of 0 (autonegotiate) is used, the controller will negotiate for the optimum speed and duplex.
If a value between 1 and 4, inclusive, is set for this parameter, then negotiation behavior will depend on the value of the "auto_negotiate" module parameter. If "auto_negotiate" is enabled, the controller will negotiate for the speed and duplex specified in "force_speed_duplex". If "auto_negotiate" is disabled, the controller will be set to the speed and duplex specified, without negotiation.
If a value between 5 and 9, inclusive, is set for this parameter, then the controller will always negotiate for the speed and duplex specified. In this case, the "auto_negotiate" module parameter is ignored.
By default, the controller will autonegotiate for the optimum speed and duplex.

### Media

The default value of this parameter depends on whether the driver is using hardware mode 1 or 2. If hardware mode 2 is being used, RGMII is the default. If hardware mode 1 is being used, MII is the default." The "media" module parameter can be used to specify the media interface. This module parameter supports the following values:

- media=0 - auto
- media=1 - RGMII
- media=2 - MII

The default value of this parameter depends on whether the driver is using hardware mode 1 or 2. If hardware mode 2 is being used, RGMII is the default. If hardware mode 1 is being used, MII is the default.

### Max TX packets

The "max_tx_packets" module parameter controls the maximum number of queued TX (transmit) packets. This parameter takes a value between 32 and 1024, inclusive. By default, 64 maximum TX packets will be used.

### Max RX packets

The "max_rx_packets" module parameter controls the maximum number of queued RX (receive) packets. This parameter takes a value between 32 and 1024, inclusive. By default, 64 maximum RX packets will be used.

### MTU

The "mtu" module parameter controls the MTU size in bytes. This parameter takes a value between 576 and 9202, inclusive. By default, a 1500 byte MTU is used. This parameter is only relevant when hardware offload mode is turned on.

### Poll Interval

The "poll_interval_in_us" module parameter is used to control the rate at which hardware interrupts are generated, and is only relevant when running in CPU optimization mode. This parameter is ignored in throughput optimization mode. This parameter takes a microsecond value between 0 and 2000.

### Segmentation Offload

This feature allows the hardware to divide a single buffer (whose length is greater then the TCP segment size) into multple TCP segments. The nForce network driver supports two modes for segmentation offload:

- seg_offload=0 - disabled
- seg_offload=1 - enabled

In hwmode 1, the "seg_offload" module parameter defaults to 0 (disabled). In hwmode 2, the "seg_offload" module parameter defaults to 1 (enabled).

### TX checksum Offload

Checksum offloads perform the TCP/IP checksum calculation in hardware to reduce CPU. The nForce network driver supports two modes for TX checksum offload:

- tx_checksum_offload=0 - disabled
- tx_checksum_offload=1 - enabled

In hwmode 1, the "tx_checksum_offload" module parameter defaults to 0 (disabled). In hwmode 2, the "tx_checksum_offload" module parameter defaults to 1 (enabled).

### RX checksum Offload

Checksum offloads perform the TCP/IP checksum calculation in hardware to reduce CPU. The nForce network driver supports two modes for RX checksum offload:

- rx_checksum_offload=0 - disabled
- rx_checksum_offload=1 - enabled

In hwmode 1, the "rx_checksum_offload" module parameter defaults to 0 (disabled). In hwmode 2, the "rx_checksum_offload" module parameter defaults to 1 (enabled).

## nvsound Module Parameters

There are currently no nvsound module parameters.

# Audio Control Panel

A control panel application, nvmixer, is included with the audio driver to control the features of the nForce audio driver. These features include:

- Speaker setup
- Master volume control
- Per channel volume control / mute
- Input source selection

## Usage

On installation nvmixer is getting copied to /usr/bin. This application need X for running.
The audio control panel may be invoked by typing "nvmixer" at the command line:

    example% nvmixer

For those that are migrating from an existing NVIDIA audio driver, note that the old "nvaudio" control panel will not work with the new audio driver.

## System Requirements

The nvmixer application uses the Qt graphical user interface toolkit. The pre-built nvmixer shipped with this release is built using Qt version 3.1, and requires Qt 3.1 or later run-time libraries to be present on your system in order to run.
If your system does not have Qt 3.1 or later libraries installed, you will most likely receive an "relocation error: ... undefined symbol" error message when you try to run nvmixer. If this occurs, there are two ways to solve this problem:

- Download and install Qt 3.1 or later libraries for your Linux distribution, so that the pre-built nvmixer application works correctly.
- Download the source code for nvmixer from NVIDIA and build it using a Qt version that is readily available for your Linux distribution (3.1 or later is required). The nvmixer source code package is available for download via anonymous FTP at:

      ftp://download.nvidia.com/linux/nforce/nvmixer/nvmixer.tgz

  Pre-requisites and instructions for building nvmixer are included in the source code package.

# Troubleshooting

This section covers problems that commonly occur when installing nForce drivers on Linux. If you encounter problems, please read this section and the FAQ , and review the Known Problems list for the driver version you are using. This can be found at NVIDIA's web site, on the release page for the driver version.

If you decide to submit a bug report, make sure to include nforce-bug-report.log in the bug report by running nforce-bug-report.sh.

Bug reports and installation questions may be directed to:

linux-nforce-bugs@nvidia.com

## System BIOS Configuration

Since the audio and network drivers work on the nForce chipset, these devices along with other motherboard devices are controlled by the System BIOS. If the installed drivers don't recognize hardware on your system, the problem may be your System BIOS's plug and play configuration. If your audio or network devices are disabled in the BIOS, or the system BIOS expects the operating system to configure hardware devices, and your Linux kernel doesn't support ACPI-style configuration, you'll need to change your BIOS settings.

Warning: You should make a note of the original BIOS configuration settings before changing them. Changing your system BIOS configuration may adversely affect the operation of the system, and even make it unbootable.

To view or change an Award-style system BIOS, reboot the machine, and press the Delete key. When you get a configuration screen, select "PnP/PCI Configurations" in that screen if "PNP OS Installed []" Has "Yes" chosen, change the selection to "No".

If your BIOS is Phoenix-style, use the F2 key instead of Delete, and scroll through the menus to find OS Type, and chose "Other". The exact details of System BIOS configuration vary with BIOS vendor, so the screens may not be exactly the same.

## Installer

- Q: When I try to build, I get a message telling me that I should never try to use system headers. What's wrong?

  A: You need to install the sources for your kernel. Please download and install the appropriate kernel-source package for your kernel

- Q: How do I tell if I have my kernel sources installed?

  A: If you're running on a distro that uses RPM (Red Hat, Mandrake, SuSE, etc), then you can use RPM to tell you. At a shell prompt, type:

      example% rpm -qa | grep kernel

  and look at the output. You should see a package that corresponds to your kernel (often named something like kernel-2.4.18-3) and a kernel source package with the same version (often named something like kernel-source-2.4.18-3). If none of the lines seem to correspond to a source package, then you'll probably need to install it. If the versions listed mismatch (ex: kernel-2.4.18-10 vs. kernel-source-2.4.18-3), then you'll need to update the kernel-source package to match the installed kernel. If you have multiple kernels installed, you need to install the kernel-source package that corresponds to your running kernel (or make sure your installed source package matches the running kernel). You can do this by looking at the output of "uname -r" and matching versions.

- Q: I just upgraded my kernel, and now the NVIDIA kernel module will not load. What is wrong?
  A: The kernel interface layer of the NVIDIA kernel module must be compiled specifically for the configuration and version of your kernel. If you upgrade your kernel, then the simplest solution is to reinstall the driver.
  ADVANCED: You can install the NVIDIA kernel module for a non running kernel (for example: in the situation where you just built and installed a new kernel, but have not rebooted yet) with the command line option --kernel-name='KERNEL_NAME', where KERNEL_NAME is what 'uname -r' would report if the target kernel were running.
- Q: nforce-installer does not work on my computer. How can I install the driver contained within the .run file?
  A: To install the NVIDIA driver contained within the .run file without using nforce-installer, you can use the included makefile that is extracted with the --extract-only command-line option. The makefile for the audio driver is in the nvsound/main directory of the extracted .run file, and the makefile for the network driver is in the nvnet directory of the extracted .run file. This method of installation is not recommended if nforce-installer works properly on your system; it is intended as a last resort in the event the installer won't function.

- Q: I have multiple kernels installed. When I run the NVIDIA installer under one kernel, it removes modules I previously installed for one of the other kernels. How do I prevent the installer doing that?
  A: You can avoid this by using the --kernel-module-only option to the installer when you install for the second and subsequent kernels in your installation. This advanced option installs the kernel module only (no documentation, etc.) and does not remove any previously installed driver module.

## Audio driver

- Q: I've installed the nvsound driver and edited the module configuration files, but the Intel 810 sound driver still gets loaded.

  A: Try adding the following lines to the system's module configuration file:

  `alias snd-intel8x0 off
  alias i810_audio off`

- Q: I've installed the nvsound driver, but xmms doesn't produce any audio output when I try to play sound files.

  A: Check that xmms is configured to use the OSS output plugin (nvsound is an OSS driver). The xmms output plugin settings can be viewed on xmms's Options->Preferences submenu.

- Q: When I try to start nvmixer, I get an error message that nvmixer couldn't load because libstdc++.so.5 was not found. What's wrong?

  A: This is most likely caused by your system not having legacy/compatibility run-time libraries installed. Use your distribution's installer or online update mechanism to install these libraries. For example, on Red Hat / Fedora distributions, the "Legacy Software Development" package contains these libraries.

- Q: When I try to start nvmixer, I get a "relocation error: ... undefined symbol" message and nvmixer doesn't start. What's wrong?

  A: This is most likely caused by your system not having the Qt run-time libraries that nvmixer requires in order to run. Refer to the section on nvmixer's system requirements for details on how to fix this.

- Q: When I start KDE with the nvsound driver loaded, I get an error message, "Sound server fatal error: AudioSubSystem::handleIO: write failed len=-1, can_write=1024, errno=11 (Resource temporarily unavailable)".
  A: Open the KDE Control Center (using a menu or the `kcontrol` command). Select "Sound & Multimedia", then select "Sound System". Select the "Hardware" tab and, in the "Select the audio device" pulldown control, select "Threaded Open Sound System". Select "Apply", then exit the Control Center. This should fix the sound server error message seen on startup.

## Network driver

- Q: I've installed the nvnet driver and edited the module configuration files, but the forcedeth driver still gets loaded.

  A: Try adding the following line to the system's module configuration file:

  `alias forcedeth off`

  # Frequently Asked Questions (FAQ)

  ### Installer FAQ

  - Q: Why does NVIDIA not provide RPMs anymore?
    A: Not every Linux distribution uses RPMs, and NVIDIA wanted a single solution that would work across all Linux distributions. As indicated in the NVIDIA Software License, Linux distributions are welcome to repackage and redistribute the NVIDIA Linux driver in whatever package format they wish.
  - Q: How do I extract the contents of the .run file without actually installing the driver?
    A: Run the installer with the --extract-only command line option. This will create a directory which contains the uncompressed contents of the .run file.
  - Q: How can I see the source code to the kernel interface layer?
    A: Kernel interface layer source files for the audio driver are in the nvsound/main directory of the extracted .run file. The kernel interface layer source files for the network driver are in the nvnet directory of the extracted .run file.
  - Q: Can I add my own precompiled kernel interfaces to a .run file?
    A: Yes, the "--add-this-kernel" .run file option will unpack the .run file, build a precompiled kernel interface for the currently running kernel, and repackage the .run file, appending "-custom" to the file name. This may be useful, for example, if you administer multiple Linux machines, each running the same kernel.
  - Q: Where can I find the source code for the nforce-installer utility?
    A: The nforce-installer utility for the nForce drivers is derived from the nvidia-installer utility used for the NVIDIA video drivers. The NVIDIA video driver nvidia-installer utility is released under the GPL. The latest source code for it is available at:
    ftp://download.nvidia.com/XFree86/nvidia-installer/

  ### Driver FAQ

  - Q: My IDE hard drive is running very slowly, how can I enable DMA mode?

    A: IDE on nForce is normally supported by the amd74xx driver. First, try enabling DMA for your hard drive using the `hdparm` utility, for example,

        example# hdparm -d 1 /dev/hdX

    where /dev/hdX is the IDE device you wish to enable DMA for. Assuming this works, you will probably want to add this to an rc script so it takes effect each time the system boots (e.g. `/etc/rc.local`).

    If hdparm fails to enable DMA, it may be that the amd74xx driver is not being used because the version in your distibution does not recognize the specific revision of nForce IDE controller you are using. In this case, obtain the most recent version of the amd74xx driver from the www.kernel.org kernel source tree, and rebuild your kernel with this driver included.

  - Q: Does NVIDIA supply a Linux driver for the USB and USB2.0 devices?

    A: The USB and USB2.0 devices use the industry standard OHCI and EHCI interfaces, and will work with the standard Linux USB drivers.

  - Q: I've rebuilt the Nforce driver, but when I try to insert it, I get a message telling me I have unresolved symbols.

    A. Unresolved symbols are most often caused by a mismatch between your kernel sources and your running kernel. They must match for the nForce driver modules to build correctly. Please make sure your kernel sources are installed and configured to match your running kernel.

  - Q: Does NVIDIA have a Linux driver for IEEE 1394 on nForce2?

    A: The Linux 1394 driver supports the nForce2 IEEE 1394 controller in kernel versions 2.4.21 and newer.

  - Q: Is the nForce IDE controller supported by Linux?

    A: IDE on nForce is normally supported by the amd74xx driver, though the ide-generic driver may be used to provide non-DMA operation. Although amd74xx is included in all popular distributions, the specific version included in older distributions may not support the latest nForce hardware. To remedy this, install the distribution using the ide-generic driver (some distros may require you to force the installer to use this by specifying `insmod=ide-generic`), then obtain the most recent version of the amd74xx driver from the www.kernel.org kernel source tree, and rebuild your kernel with this driver included.

  - Q: Are there open source audio drivers for nForce hardware?

    A: Open-source drivers for Intel 810 audio hardware generally work with nForce AC97 audio hardware. The Intel driver is called i810_audio or snd_intel8x0, depending on which distribution you are using.

  - Q: Are there open source networking drivers for nForce ethernet hardware?

    A: Yes, forcedeth is an open-source network driver for nForce ethernet hardware. Most distributions include forcedeth, but some distributions may require you to manually install it once installation is complete. The version of forcedeth included in older distributions may not support the latest nForce hardware. To remedy this, obtain the most recent version of the forcedeth from the www.kernel.org kernel source tree, and build it as a loadable module for your kernel.

  - Q: Does nvnet support Wake-On-LAN (WOL) functionality?

    A: Yes, nvnet supports WOL functionality and there is no need to configure it because it is enabled by default.

  - Q: Linux distributions are moving towards ALSA as the standard sound driver architecture, but nvsound is an OSS driver. Why don't you provide an ALSA driver?

    A: Our priority in shipping the nvsound driver was to provide support for nForce hardware features that were missing in the earlier nvaudio driver. NVIDIA plans to provide an nForce ALSA driver in future as our resources allow.

  # Acknowledgments

  The nforce-installer for the nForce drivers is derived from the nvidia-installer used for the NVIDIA video drivers. The video driver nvidia-installer was inspired by the loki_update tool: (http://www.lokigames.com/development/loki_update.php3).
  The self-extracting archive (aka ".run file") is generated using makeself.sh: (http://www.megastep.org/makeself/).

  # Change List

  The most recent changes are at the top of the list. Each bullet indicates a public release on NVIDIA's web site.

  - Latest

    Fixed 8bit playback support.
    Fixed restricted volume ranges for nForce3 and higher.
    Fixed nvnet stack overflow bug.

  - 1.0-0306

    Fixed nvnet forced mode operation.
    Fixed nvnet handling of packets with length field errors.
    Fixed nvsound operation with Skype.
    Fixed nvsound operation with Xine.
    Added support for 2.6.12 kernels.

  - 1.0-0301

    Added support for 2.6.10, 2.6.11 kernels.
    Added support for restore of nvmixer settings over reboots.
    Fixed nvsound compatibility issues with various applications.
    Fixed WOL support in nvnet.
    Fixed some nvnet performance issues.

  - 1.0-0292

    Added pre-built 64-bit binaries for various distributions.
    Added support for kernel installations that use separate kernel source and generated kernel object trees.
    Fixed nvnet problem that caused rmmod to crash on systems with more than one network interface.
    Fixed nvnet build issue on uniprocessor systems that have spinlock debugging enabled.
    Fixed nvsound module hangs when APIC is enabled on some distributions.
    Fixed nvsound module bugs causing lack of sound or delay in sound with some games.

  - 1.0-0283

    Changed installation method to use the new self-extracting installer instead of RPM or tarball
    Added support for SoundStorm (Hardware Mixing supported)
    Added AC3 pass-through
    Added support for ethernet driver statistics and configuration information through procfs
    Added support for 2.6 series kernels
    Audio control panel executable is now "nvmixer", not "nvaudio"

  - 1.0-0274

    Fixed performance problem in network driver that was causing stuttering in audio playback
    Added support for nForce3 platforms
    Added support for x86-64 architecture
    Added binary RPMs for SuSE Enterprise Server 8 x86-64
    Added audio control panel application
    Added 6 channel output, audio input selection, speaker selection, per channel volume control, and analog / digital enable to audio driver.
    Added GART patch for kernel 2.4.21

  - Added kernel patch to support nForce GART
    Added "spdif_status" module parameter to audio driver to enable/disable S/PDIF support for compatability
    Fixed bug in audio driver that was causing MSI nForce board to only use 2 channels
    Fixed mmap bug in audio driver causing Quake III to hang.
    Fixed RedHat 9 build issue with remap_page_range().
    Fixed problem with rebuilding SRPM on RedHat 9.
    Added RedHat 9 and Mandrake 9.1 binary RPMs.
  - Fixed problem with compiler arguments between gcc3.X and gcc2.X

    Changed installation script to use lowest available number when enumerating network and audio devices in modles.conf

    Changed audio driver to be self contained source file based off i810_audio driver.
    Added SPDIF support to audio driver

    Updated binary packages for latest releases of RedHat kernels.

    Added FAQ section to release notes.

  - Added PCI ID support for MCP2 and MCP2 to the i810_audio driver.

    Some cleanup of spec file and Makefiles

    SRPMs and tar files now use local system's i810_audio.c file, and complain if it's not there; this makes them more distro independent.

  - Changed code to compile properly with gcc3.X and gcc2.X

    Added support for Mandrake9.0 and Redhat8.0

    nForce2 support for network driver