I am very happy to see that my own tests to quadrify my own GTX 480 to a Quadro 6000 work perfectly. There is a helpful tutorial to soft-mod a GTX 480 to a C2050. I just try to apply the same idea to soft-mod my GTX 480 to Quadro 6000. This way I don't have to patch Xen so my NVIDIA card could be taken into account while domU is being started :). Somoene from Xen mailing list) was the first to do this. He helped to understand what I was supposed to do.

Files

  • GTX480-A.ROM is backup of my original firmware
    nvflash.exe --save GTX480-A.rom
  • Asus.GTX480.1536.100406-modified-Quadro-FX-6000_version_002.rom is the modified firmware after using Nibitor 6.06. Modification was done using this link

Check firmwares

Notice: please refer to tutorial to soft-mod a GTX 480 to a C2050 before going on. I just apply this content -- except that I am using 'od' so I avoid to take little endian into account

. We can use od to check hex values. Regular PCI Device ID, location: 0000018E.
david@gemini:~/VGA_BIOS$ od -tx -Ax GTX480-A.ROM | head -n25 | tail -n1
000180 8caadf91 fff5f29a 52494350 06c010de
david@gemini:~/VGA_BIOS$ od -tx -Ax Asus.GTX480.1536.100406-modified-Quadro-FX-6000_version_002.rom | head -n25 | tail -n1
000180 8caadf91 fff5f29a 52494350 06d810de
For GTX 480 the firmware's PCI Device ID value is 06C0. For Quadro 6000 the firmware's PCI Device ID value is 06D8

soft straps

For the original firmware we can get the 4 hex values (AND mask 0), (ORmask 0), (AND mask 1) and (OR mask 1) using od.
david@gemini:~/VGA_BIOS$ od -tx -Ax GTX480-A.ROM | grep -E '^0000(5|6)0'
000050 002a72e9 83491043 7ffc3fff 00004000
000060 7ff1ffff 80020000 c7a53873 e9442de9
The 4 hex values could be returned using
echo -ne $(od -tx -Ax GTX480-A.ROM | grep -E '^0000(5|6)0' | awk '{ if (NR==1) printf("%s %s\n",$(NF-1),$NF); else printf("%s %s\n",$2,$3); }' | tr "[:lower:]" "[:upper:]")\\n
which returns
7FFC3FFF 00004000 7FF1FFFF 80020000
So
Card PCI Device ID AND mask 0 OR mask 0 AND mask 1 OR mask 1
Assu GTX 480 - Original firmware 06C0 0x7FFC3FFF 0x00004000 0x7FF1FFFF 0x80020000
Assu GTX 480 - expected values for soft straps 06D8 0x7FFC3FFF 0x????????? 0x7FF1FFFF 0x00020000
Let's work on (OR mask 0) value.

Referring to tutorial to soft-mod a GTX480 to C0250 we should have

-xx+xxxx xxxxxxxx xx++++xx xxxxxxxx
   ^                ^^^^
   |                ||||-pci dev id[0]
   |                |||--pci dev id[1]
   |                ||---pci dev id[2]
   |                |----pci dev id[3]
   |---------------------pci dev id[4]

- cannot be set, always 0
Having a look for binaries values for PCI Device ID
  • GTX480 card has 06C0 : 11011000000
  • Quadro 6000 card has 06D8: 11011011000
Original (OR mask 0) in GTX 480 was 0x00004000: so
-0000000 00000000 01000000 00000000
We should have id[3]=1 and id[4]=1
-0010000 00000000 01100000 00000000
Converted into hex value we have 0x10006000.

Update firmware

I used nvflash 5.100. There is no known problem with this version (option eraseeeprom is provided with this nvflash option). I created a bootable USB key.My modifed firmware was copied on the USB key too (file was copied as 'ASUS.ROM')
  • Clean up the current firmware on the card
    nvflash --eraseeeprom
  • Load the firmware into the card
    nvflash --overridesub --overrideboard --auto --noconfirm -5 -6 ASUS.ROM
  • Update the soft straps values
    nvflash --straps 0x7FFC3FFF 0x10006000 0x7FF1FFFF 0x00020000