Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche

1 2 3 >

lundi 23 septembre 2013

Xen 4.3.0 VGA passthrough / GTX 680 (GV-N680OC-2GD) successfully hard-moded to GRID K2

I bought a GTX 680 a couple months ago. Today I decided to have a try to hard-mode it to a GRID K2. It was pretty cool to test it:).

Gigabyte GV-N680OC-2GD
Using the links below There is a hardware modifcation to do by removing two resistors.
Notice: I am not the author of the image shown above. It has been taken from eevblog.com. Guy who did this work made a wonderfull job!

For GV-N680OC-2GD it is doable and only doable for this model

  • Removing those resistors ( 1 and 3 ) could be done easily without soldering iron. Those SMD resistors are the easiest components to remove. I did it using a screwdriver, a knife and a candle. Tweezers and a fire source should be a better choice instead of a knifer and a candle.
  • this card was sold with a BIOS version with size < 64 KB limitation. The 64-limitation is well known under Xen for VGA Passthrough. If you bought this card and want to have a try then check that the current BIOS size on the card is < 64KB. Use nvflash --save backup.rom to backup your firwmare. Else you can download the expected firmware from and restore it using nvflash

    Notice: if BIOS size is > 64KB then there is a way to shrunk to 64KB. I have never tried this method

It works very well


  • No patch required for Xen!
  • I can restart both my Linux domU 32/64 or Win7 64 without restarting dom0.
  • RAM can be set over 3GB without any problem for domUs Linux 32/64 or Win 7 64. While setting RAM > 3GB on domUs Linux 32/64 or Win 7 64 is doable then it is enough for my own projects
  • High resolution (Dual Link DVI) works pretty well with my ASUS monitor (Resolution: 2560x1440)


  • Only domU Win XP 64 is limited to 3GB of RAM else this domU gets slower. Setting RAM < 3GB for domU Win XP 64 is enough for my personal projects.
Here is a screenshot taken from my domU PV-on-HVM Linux -- Ubuntu 12.04 32 Bits --.

nvidia-settings in my virtual machine -- Ubuntu 12.04 --.

mercredi 18 septembre 2013

Xen 4.3.0 /VGA PassThrough - GTX 480 soft-moded to Quadro 6000

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.


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

dimanche 15 septembre 2013

Unity 3D Web Player on Linux -- Yes tt works!

Here are my own notes to install Unity3D Web Player on Linux so you can play 3D game in Firefox brower.

1. Prerequisites

Prerequisites to install Unity 3D Web Player
  1. Download http://www.mediafire.com/?g6ndj2dviujtync
  2. Choose a cleaned/fresh WINEPREFIX
    export WINEPREFIX=/where/you/want/to/install/everything
  3. Decomrpess the tarball
    tar xvjf all_tools.tar.bz2
  4. Install firefox
    wine firefox_set_up_23.0.1.exe
  5. Install Flash player
    wine install_flash_player_11_plugin.exe
  6. Install Unity Web Player
    wine UnityWebPlayerFull.exe
  7. Decompress the file Unity_WebPlayer_Lastest_Updates.tar.bz2 into $WINEPREFIX/drive_c/users/yourusername/Local\ Settings/Application\ Data/
    tar xvjf Unity_WebPlayer_Lastest_Updates.tar.bz2 -C $WINEPREFIX/drive_c/users/yourusername/Local\ Settings/Application\ Data/
    Replace 'yourusername' by yours

    Notice: If you want to play BGO then you have to patch wine-1.7.0//dlls/user32/winstation.c Replace

    HDESK WINAPI OpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access )
        FIXME( "(%x,%i,%x): stub\n", flags, inherit, access );
        return 0;
    HDESK WINAPI OpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access )
    return CreateDesktopA("Desktop", 0, 0, flags, access, 0);

2. Let's play a few games: BGO (battlestar Galactica Online), Ratz instagib, Downtown Drift 3D

lundi 9 septembre 2013