nForce Linux Driver Release Notes
Keywords: ReleaseNotes

# Contents

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

# Overview

The nForce chipset contains a number of hardware devices that can be run under Linux. Along with a display processor, the chipset includes a network device (MAC), audio hardware, an IDE controller, and an OHCI USB controller. 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

Please be sure read the TroubleShooting section first, and to report all relevant details, such as Linux Disribution, Kernel version, binary or source RPM, the fact that you checked the SBIOS configuration, the contents of /etc/modules.conf, and a listing of any error messges you find (you can run dmesg, or look at /var/log/messages as root). If you are having operational problems, please be as specific as possible, so we can try to reproduce the problem, and determine if we have a fix for it.

# 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 series kernel.

# Licensing

The network 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. The rest of the software is provided under the GNU public license, which is also included in this package.

# What the Package Contains

The packages contain the following items:

1. This Installation Guide
2. The GNU license
3. The NVIDIA license for the network driver software
4. Makefiles with all, install, and uninstall targets
5. Source for the nForce audio driver
6. Source for the nForce audio control panel
7. Source and binary files for building a network driver for NVIDIA hardware
8. A kernel patch for GART support on nForce chipsets

# What the Package Does

This package will build a network driver and an audio driver, then place them in the appropriate locations for loadable kernel modules. The network driver is from NVIDIA, the audio driver is based on the open source i810 audio driver but has been modified to work with NVIDIA hardware. A kernel patch to enable GART support on nForce chipsets is also supplied, this patch must be merged into the kernel to be used.

The binary packages will also update the modules configuration file, commenting out existing network, audio and usb entries, and add entries for the new drivers. A backup file is created before any changes are made to the configuration file. If the binary package is uninstalled, the package attempts to restore the original version of the file from this backup.

The tar files don't try to modify the module configuration files. You should make sure the following lines are in the configuration file (it will be named /etc/modules.conf on most current distributions):

- alias eth0 nvnet
- alias sound-slot-0 nvaudio
- alias usb-interface usb-ohci

Neither the binary nor the source packages will load the kernel drivers during the installation. You can do this manually using insmod or modprobe. (USAGE: 'insmod modulename' or 'modprobe modulename') Upon reboot, the kernel modules should insert themselves automatically.

# Installation

Nvidia has provided precompiled binary RPMs for several versions of RedHat and Mandrake. You should select the RPM appropriate to your current kernel version. You can check what kernel your machine is running by checking the output of 'uname -r'.

If you are using a different version of Red Hat or Mandrake, a modified kernel, or a different rpm-based distribution, you should use the SRPM to build an RPM appropriate for your system. If you are using the SuSE RPM, see NOTE: SuSE INSTALLATIONS, below.

If you are using a non-RPM based system, or if you prefer not to use RPM, you should download and install from the source tarballs.

To install a binary rpms, you only need use rpm to install the package. This should install and configure the drivers. A source rpm requires building and installing the drivers yourself. The files in this package are organized into a build hierarchy to make this task easier.

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: SuSE INSTALLATIONS

#### Upgrading the SuSE Kernel:

If you are using the SuSE Linux distribution, note that the binary RPM for SuSE only supports SuSE versions using the upgraded kernel. This note contains directions from SuSE on upgrading to the new kernel for SuSE versions 7.1, 7.2 and 7.3:

Get the upgraded kernel from one of the following sites (depending on SuSE distribution):

    ftp://ftp.suse.com/pub/suse/i386/update/7.1/kernel/2.4.16 (for SuSE 7.1)
    ftp://ftp.suse.com/pub/suse/i386/update/7.2/kernel/2.4.16 (for SuSE 7.2)
    ftp://ftp.suse.com/pub/suse/i386/update/7.3/kernel/2.4.16 (for SuSE 7.3)

For update instructions, see SuSE's SBD article, located at

    http://sdb.suse.de/en/sdb/html/ftpkernel.html

#### Alternative SuSE Installations:

The following instructions should be used before proceeding with a source RPM or tar file installation. You will need to use one of these installation methods if you want to install nForce drivers without upgrading your kernel. Please note that these installation methods won't work for SuSE 7.1 or 7.2.

Install with YaST(2) the following d (development) series packages

- make
- gcc
- binutils
- glibc-devel
- kernel-source

Use the following commands to set up your development environment

    example% cd <directory with the rpm file>
    example% su
    Password: ******
    example# pushd /usr/src/linux
    example# make cloneconfig
    example# make dep
    example# popd

You can now proceed with the tar file or source RPM installation steps below, omitting the steps to become root.

## Binary RPM Installation

The binary installation procedure involves downloading the binary RPM file appropriate to your distribution and installing it. If you are using the SuSE distribution, see NOTE: SuSE INSTALLATIONS, above.

Become root and install using rpm:

    example% cd <directory with the rpm file>
    example% su
    Password: ******
    example# rpm -i nforce{package name}-1.0-1.rpm

## Source RPM Installation

The Source RPM will create an RPM appropriate for your system. If you are using the SuSE RPM, see NOTE: SuSE INSTALLATIONS, above. To install:

    example% cd <directory with the rpm file>
    example% su
    Password: ******
    example# rpmbuild --rebuild nforce{package name}-1.0-1.src.rpm

Or on older systems that don't support "rpmbuild":

    example# rpm --rebuild nforce{package name}-1.0-1.src.rpm

At this point, the SRPM will be recompiled. When this command has completed, look for a line that says:

    Wrote: /usr/src/{RPM root dir}/RPMS/i386/nforce{package name}-1.0-1.rpm

This will provide you with the name and location of the new RPM. You should then install this RPM per the instructions in the Binary RPM Installation section.

## Tar File Installation

The tar file package contains source code, libraries, makefiles and documentation organized into a single tar file.

To install the tar file, unpack it, build the sources and install them. If you are using the SuSE RPM, see NOTE: SuSE INSTALLATIONS, above:

    example% tar -xvzf nforce.tgz
    example% cd nforce
    example% make
    example% su
    Password: ******
    example# make install

## GART Patch Installation

NOTE: This patch only supports kernels 2.4.20 and 2.4.21. You will need to either install the approriate kernel and sources before patching, or manually merge these changes to other kernel versions.

### Patching the Kernel

1. Change to the Linux kernel source directory.

       example# cd /usr/src/linux-2.4.20

2. Patch the kernel. Watch out for any warnings or errors.

       example# patch -p1 < linux-2.4.20-agpgart.diff

### Configuring the Kernel

- In order to use NVIDIA AGP chipset support, the kernel must be configured accordingly.
- In the kernel source directory, run a kernel configuration tool such as menuconfig:

      example# make menuconfig

- In the 'Processor type and features', make sure that an x86 compatible CPU is selected.
- In the 'Character devices' section, select '/dev/agpgart (AGP Support)' as an included or modularized kernel feature.
- In the same section, enable 'NVIDIA chipset support'.

### Rebuilding and Reinstalling the Kernel

Rebuild and reinstall the kernel and the kernel modules following the appropriate procedure for your GNU/Linux distribution.

# Removal

To remove the contents of one of the binary rpm files, use rpm to remove it:

    example% cd <directory with rpm file>
    example% su
    Password: ******
    example# rpm -e nforce<package name>-1.0-1.rpm

To remove the contents of one of the source rpm or tar file, go to the build directory, and run "make uninstall":

    example% cd <directory with unpacked build>
    example% cd nforce
    example% su
    Password: ******
    example# make uninstall

# Module Parameters

## nvnet Module Parameters

The nForce network driver supports the following optional parameters:

1. optimization
2. speed
3. duplex

### Optimization

The nForce network driver supports two optimization modes:

- CPU optimization
- Throughput optimization

CPU optimization mode ruduces the CPU utilization by using interrupt moderation.
Throughput optimization mode maximizes the throughput. This mode has higher CPU consumption.
By default, the driver runs in throughput optimization mode. The optimization mode can be specified by supplying the module parameter "optimization"

### Speed

The "speed" module parameter can be used set the interface speed of the ethernet controller. By default the controller will autosense the interface speed, but also supports the following values:

- speed=0 ; auto
- speed=1 ; 10Mbps
- speed=2 ; 100Mpbs

### Duplex

The "duplex" module parameter can be used to specify the interface duplex. By default the controller will autoselect duplex, but also supports the following values:

- duplex=0 ; auto
- duplex=1 ; half duplex
- duplex=2 ; full duplex

## nvaudio Module Parameters

The nForce audio driver supports the following optional parameters:

1. spdif_status

### spdif_status

The "spdif_status" module parameter is used to enable or disable S/PDIF support in the driver. By default S/PDIF is enabled, but can be disabled by setting spdif_status to 0. The driver can only support 48kHz sample rate when S/PDIF is enabled, so disabling it will increase compatability with applications that make assumptions about what sample rates the driver supports.

## Configuration

Module parameters can be specified either on the command line when loading the module, or in the module configuration file (/etc/modules.conf). For example to have the nForce ethernet driver use throughput 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 optmization=1`
The module parameters for the ethernet driver can be verified using the command "modinfo -p nvnet"

# Audio Control Panel

A control panel application 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
- Analog and digital output control

The audio control panel may be invoked by typing "nvpanel" at the command line:

    example% nvpanel

``

# TroubleShooting

## 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 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.

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" choosen, 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.

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

# Frequenty Asked Questions (FAQ)

- Q: Is NVIDIA going to supply a Linux AGPGART driver for nForce products so that I can use my non-NVIDIA card in 3d accelerated mode under Linux?

  A: The current release of the Linux nForce package contains a kernel source code patch that will enable GART support using the standard Linux GART driver. NVIDIA is working with the maintainers of this driver to make it available in future versions of the Linux kernel.

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

  A: A kernel patch was added in kernel 2.4.21pre3-ac1 which enables DMA for the nForce2 IDE controller and should be available in the final released 2.4.21 kernel. An alternative to upgrading your kernel is to use the "hdparm" utility to enable DMA for your hard drive. For example:

      example% su
      Password: ******
      example# hdparm -d 1 /dev/hdX

  Where /dev/hdX is the IDE device you wish to enable DMA for. You must do this every time you reboot, or add it to an rc script. Some distributions have a file "/etc/sysconfig/harddisks" where you can enable this for all hard drives on system boot.

- 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: 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: "rpm -rebuild" gives an error "unknown option".

  A: Recent versions of rpm no longer support the "-rebuild" option; if you have such a version of rpm, you should instead use the command "rpmbuild -rebuild". The "rpmbuild" executable is provided by the rpm-build package.

- 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: Does NVIDIA have a Linux driver for 1394 on nForce2?

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

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

  A: NVIDIA is working on getting support for the nForce3 IDE controller into the Linux kernel, this should make it into kernel 2.4.23

# Change List

Most recent changes at top of list. Each bullet indicates a public release on NVIDIA web site.

- 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.