View RSS Feed

oldcpu's meandering thoughts on Computers, GNU/Linux and openSUSE

nvidia 173.14.36 graphic driver with Nvidia NV34 / FX5200 graphics device on 3.7.x and newer kernels

Rate this Entry
.
Proprietary Nvidia 173.14.36 graphic driver with Nvidia NV34 / FX5200 graphics device on openSUSE-12.3 and 3.7.x (and newer) kernels.

This blog entry provides an explanation of one way to get the proprietary Nvidia 173.14.36 graphic driver working with a Nvidia NV34 / FX5200 graphics device on openSUSE-12.3 and/or 3.7.x (and newer) kernels. This has been tested on openSUSE-12.3 GM version and also on Tumbleweed with the 3.7.x kernel.

The FX5200 is part of the NV34 series graphic devices. The GNU/Linux drivers for this hardware are:
  • nvidia proprietary graphic driver - this reuiqres a symbolic link and a patch to getting it working with the 3.7.x kernel
  • nouveau graphic driver - this driver is in essence broken since the 3.7.x kernel (which introduced many updates to the nouveau driver)
  • nv graphic driver - support for this driver for the NV34 (FX5200) has been stopped for some time. Due to a bug that will never be fixed (since suppot has stopped), the top resolution with the nv graphic driver is 1024x768
  • vesa graphic driver - this is the driver that is typically run if the 'nomodeset' boot code is applied

Since the nouveau graphic driver for the NV34 is broken or all GNU/Linux distros with the 3.7.x or newer kernels (as documented in this thread ) it means any booting of a PC with the nvidia NV34 hardware (such FX500) needs to be done with either the VESA driver, or the 'nv' graphic driver, or the proprietary nvidia driver.

Unfortunately, there are problems in using the proprietary 173.14.36 nvidia driver with openSUSE-12.3 and also with some newer kernels (such as the 3.7.x kernels).

Prior to installing and using the 173.14.36 nvidia driver (as described below) I did try both the 'vesa' and the 'nv' driver. The 'vesa' was very slow and limited to 1024x768. The 'nv' while marginally faster, was still slow from a performance perspective, plus it was limited to 1024x768 and the FONT implementation with this driver was very bad.

Installing proprietary 173.14.36 graphic driver

I obtained the 173.14.36 driver as a .run file from the nvidia web site here:

Where in my case for my old PC's NV34 graphic hardware, I went for the 32-bit driver above. The same links above also note which hardware that proprietary nvidia driver supports.

The method I employed to install the nvidia driver (from the .run file) used to be called the hardway, or sometimes called the manual way. The driver initially would not build on my first couple of attempts, at which time I realized I needed to do some surfing and possibly tuning if I hoped to get this to work.

I already had kernel-source and kernel-syms installed on my 12.3 RC1 setup with the base-development pattern already installed.

To get the proprietary 173.14.36 driver to work I had to:


  1. Boot to runlevel-3 with nomodeset - for the following steps I booted the PC to run level 3 with the 'nomodeset' boot code.
    .
  2. Create Symbolic Link - I then apply a symbolic link (which is noted in many places elsewhere on this forum) using root permissions:
    ie ...
    Code:
    cd /lib/modules/3.7.1-16-desktop/build/include/
    as noted in other threads and in an openSUSE bug report, then with root permissions send the command:
    Code:
    ln -s generated/uapi/linux
    ... I do not know if the above is essential, but I do know that was not enough.
    .
    .
  3. Patch the proprietary graphic driver .run file - Next, I patched the nvidia graphic driver NVIDIA-Linux-x86-173.14.36-pkg1.run file creating a new NVIDIA-Linux-x86-173.14.36-pkg1-custom.run file.
    .
    To do this I found the patch file 3.7_kernel_173.14.36.patch for the 173.14.36 driver here on a tech patterns site where this patch is originally based on a Fedora rpm here where I do NOT recommend running the Fedora rpm on openSUSE:
    .
    For the curious/masochistic, the patch looks like this:
    Code:
    --- usr/src/nv/conftest.sh.orig
    +++ usr/src/nv/conftest.sh
    @@ -127,6 +127,7 @@ build_cflags() {
             if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
                 MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/asm-x86/mach-default"
                 MACH_CFLAGS="$MACH_CFLAGS -I$SOURCES/arch/x86/include/asm/mach-default"
    +            MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/arch/x86/include/uapi"
             fi
             if [ "$XEN_PRESENT" != "0" ]; then
                 MACH_CFLAGS="-I$HEADERS/asm-$ARCH/mach-xen $MACH_CFLAGS"
    @@ -136,6 +137,7 @@ build_cflags() {
             if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
                 MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/asm-x86/mach-default"
                 MACH_CFLAGS="$MACH_CFLAGS -I$SOURCES/arch/x86/include/asm/mach-default"
    +            MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/arch/x86/include/uapi"
             fi
             if [ "$XEN_PRESENT" != "0" ]; then
                 MACH_CFLAGS="-I$HEADERS/asm/mach-xen $MACH_CFLAGS"
    @@ -143,9 +145,12 @@ build_cflags() {
         fi
     
         CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS"
    +    CFLAGS="$CFLAGS -I$HEADERS -I$HEADERS/uapi"
     
         if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
    -        CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include -I$OUTPUT/arch/x86/include/generated"
    +        CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include"
    +        CFLAGS="$CFLAGS -I$OUTPUT/arch/x86/include/generated"
    +        CFLAGS="$CFLAGS -I$OUTPUT/arch/x86/include/generated/uapi"
         fi
         if [ -n "$BUILD_PARAMS" ]; then
             CFLAGS="$CFLAGS -D$BUILD_PARAMS"
    --- usr/src/nv/nv.c.orig
    +++ usr/src/nv/nv.c
    @@ -2609,7 +2609,11 @@ int nv_kern_mmap(
     
             /* prevent the swapper from swapping it out */
             /* mark the memory i/o so the buffers aren't dumped on core dumps */
    +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)
    +        vma->vm_flags |= (VM_IO | VM_LOCKED | (VM_DONTEXPAND | VM_DONTDUMP));
    +#else
             vma->vm_flags |= (VM_IO | VM_LOCKED | VM_RESERVED);
    +#endif
         }
     
         NV_VMA_FILE(vma) = file;
    and the commands I sent (as a regular user - NOT as root) to patch it were:
    Code:
    sh NVIDIA-Linux-x86-173.14.36-pkg1.run --apply-patch 3.7_kernel_173.14.36.patch
    and that created the new file NVIDIA-Linux-x86-173.14.36-pkg1-custom.run
    .
  4. Perform a nominal nvidia graphic driver build - Then with root permissions I installed it with:
    Code:
    sh NVIDIA-Linux-x86-173.14.36-pkg1-custom.run -q

which built the proprietary driver on my system. I rebooted with root permissions with the command "shutdown -r now" and upon rebooting the propriety graphic driver worked with my ancient nVidia GeForce FX5200 graphic hardware , breathing some more life into this very old graphic device.

Hopefully I made no syntax errors in retyping the commands above and I hope others find this helpful.
.

Submit "nvidia 173.14.36 graphic driver with Nvidia NV34 / FX5200 graphics device on 3.7.x and newer kernels" to Digg Submit "nvidia 173.14.36 graphic driver with Nvidia NV34 / FX5200 graphics device on 3.7.x and newer kernels" to del.icio.us Submit "nvidia 173.14.36 graphic driver with Nvidia NV34 / FX5200 graphics device on 3.7.x and newer kernels" to StumbleUpon Submit "nvidia 173.14.36 graphic driver with Nvidia NV34 / FX5200 graphics device on 3.7.x and newer kernels" to Google Submit "nvidia 173.14.36 graphic driver with Nvidia NV34 / FX5200 graphics device on 3.7.x and newer kernels" to Facebook Submit "nvidia 173.14.36 graphic driver with Nvidia NV34 / FX5200 graphics device on 3.7.x and newer kernels" to Twitter

Updated 12-Mar-2013 at 23:20 by oldcpu (Noted this tested on openSUSE-12.3 GM version (and not just RC versions))

Categories
Uncategorized

Comments

  1. oldcpu's Avatar
    .
    I should point out to users with different nvidia hardware than mine, that there are other DIFFERENT nvidia patches available for your hardware.

    To find them, go to the lwfinger web site, where one can find:

    Be certain to read the readme.txt file for instructions.
  2. paul_world10's Avatar
    I have followed the above should I compile my kernal at some point?

    Why is 1 click nvidia a lie?

    I am let down at this point

    sincerly
  3. oldcpu's Avatar
    Quote Originally Posted by Paul_world10
    I have followed the above should I compile my kernal at some point?
    No you should not.

    Quote Originally Posted by Paul_world10
    Why is 1 click nvidia a lie?
    I am not a 1 click user. But I can say one click is not a lie. I sense frustration.


    Quote Originally Posted by Paul_world10
    I am let down at this point
    Sorry to read that.

    Edit ... I read here: https://forums.opensuse.org/english/...problem-2.html that you were eventually able to work around the problem and install the nvidia driver. I am happy to read that.
    Updated 17-Mar-2013 at 02:43 by oldcpu
  4. oldcpu's Avatar
    > Since the nouveau graphic driver for the NV34 is broken or all GNU/Linux distros with the 3.7.x or
    > newer kernels (as documented in this thread ) it means any booting of a PC with the
    > nvidia NV34 hardware (such FX500) needs to be done with either the VESA driver, or
    > the 'nv' graphic driver, or the proprietary nvidia driver.

    Much to my pleasant surprise, a 3.7.x test kernel has been proposed for openSUSE-12.3 in response to the openSUSE bug report that I raised on the nouveau driver in use in openSUSE-12.3. I installed that test kernel and the nouveau driver embedded in that kernel version worked with the 3.7.x kernel in openSUSE-12.3 on my FX5200 graphic hardware. Note in addition to the openSUSE bug report on the 3.7.x kernel on FX5200 hardware I also raised a upstream bug report on the 3.7.x kernel on FX5200 hardare.

    I am very pleased to note the progress being made to address this problem and it re-inforces in my mind the need to write a bug report. Such bug reports do not always result in success, but often they do and for such complex driver issues they are often the only way to move forward.

    To re-iterate, IMHO (which is MY view and not an official view) to NOT write a bug report is doing a MAJOR disservice to the users of a free open source operating system such as openSUSE GNU/Linux.
  5. paul_world10's Avatar
    after installing the NVIDIA-Linux-x86-304.84.run driver The GDM login screen is text based and startx yields errors.

    I hope I did not write this in the wrong spot.

    Thank you for all your help with filing the bug report.
  6. oldcpu's Avatar
    Quote Originally Posted by Paul_world10
    after installing the NVIDIA-Linux-x86-304.84.run driver The GDM login screen is text based and startx yields errors.

    I hope I did not write this in the wrong spot.

    Thank you for all your help with filing the bug report.
    This is a blog - not a help thread. I recommend you stick with the help threads you have already started. Do NOT forget to add your regular user to group 'video' like I recommended in those help threads.
  7. paul_world10's Avatar
    I want to thank you for all your help.