331.20 not supporting Quadro FX 3500M, yet all other cards in the series?

Hello, I recently ran an update from 304 to 331 on my old Dell M90, seeing that it supported the FX series.

Earlier, under Windows, I have used the desktop drivers for FX 3500 instead of the mobile ones (even though the 3500M was never in any compatibility sheets). And it worked great. Seemed to give the better performance than the outdated drivers that came from Dells site.

I thought that the Linux drivers would let me do the same thing, but after a repo install I was welcomed by a black screen.

I purged the drivers and did a clean install from the Nvidia downloads. During install it then told me that the latest driver for my card was the 304.xx.

Is this a card that has been forgotten?
Is there any way I can force my drivers into thinking it’s a 3500, not a 3500M?
Is there any easy fix from your side, that can add support for my card at a later release?

I am running ubuntu 13.10. Hope someone can help.

Cheers,
Klas.

Being “welcomed by a black screen” after a video driver repo install is common on Ubuntu nowadays. It’s a new feature introduced in 12.04. Were you able to determine that your GPU model was the cause?

The Ubuntu repos are ancient and I think 304.xx is the latest branch they have in there.

Do you have your /var/log/Xorg.0.log from the black screen run? If so, post it here.

The 3500M is based on the G70 architecture, like the 3500. The 304.xx series is the latest for those cards. It’s a legacy driver but it’s still being kept up to date with Linux kernel releases and some other fixes.

Looking at nv.c unlike the windows drivers that look at specific PCI device ID’s (and adding mobile support is often just adding the PCI ID) the linux one just looks that it is nvidia and that is it:

static struct pci_device_id nv_pci_table[] = {
    {
        .vendor      = PCI_VENDOR_ID_NVIDIA,
        .device      = PCI_ANY_ID,
        .subvendor   = PCI_ANY_ID,
        .subdevice   = PCI_ANY_ID,
        .class       = (PCI_CLASS_DISPLAY_VGA << 8),
        .class_mask  = ~0
    },
    {
        .vendor      = PCI_VENDOR_ID_NVIDIA,
        .device      = PCI_ANY_ID,
        .subvendor   = PCI_ANY_ID,
        .subdevice   = PCI_ANY_ID,
        .class       = (PCI_CLASS_DISPLAY_3D << 8),
        .class_mask  = ~0
    },
    {
        .vendor      = PCI_VENDOR_ID_NVIDIA,
        .device      = NV_PCI_DEVICE_ID_SMU,
        .subvendor   = PCI_ANY_ID,
        .subdevice   = PCI_ANY_ID,
        .class       = (PCI_CLASS_PROCESSOR_CO << 8), /* SMU device class */
        .class_mask  = ~0
    },
    {
        .vendor      = PCI_VENDOR_ID_NVIDIA,
        .device      = 0x0e00,
        .subvendor   = PCI_ANY_ID,
        .subdevice   = PCI_ANY_ID,
        .class       = (PCI_CLASS_MULTIMEDIA_OTHER << 8),
        .class_mask  = ~0
    },
    { }
};

So I doubt you are going to be able to modify it to work. What does your Xorg.log say?