I'm very happy to announce that after several sleepless nights, I finally succeeded in sending a DDC signal to the VGA port of my graphics card (GeForce 8400 GS PCI) under Linux (Debian/unstable). For the time beeing, it does make my eDimensional glasses flicker in quite an erratic way, but it's probably because I didn't yet synchronize the DDC signal with the vertical retrace.
Here is how I did it :
- from the command line, create a nvclock directory and go to it : mkdir nvclock ; cd nvclock ;
- obtain the nvclock source (version 0.8b4 for me) : apt-get source nvclock ;
- go to this directory : cd nvclock-0.8b4 ;
- open the src/backend/xf86i2c.c file, with gedit for example ;
- search for these lines in the file :
Code: Select all
static Bool
I2CStart(I2CBusPtr b, int timeout)
{
int i, scl, sda;
Code: Select all
int j;
for (j = 0 ; j < 10 ; j++)
{
b->I2CPutBits(b, 0 , 1); // set the SDA bit of the DDC interface to 1
b->I2CUDelay(b, 8333); // wait 8.3 ms (for a 120 Hz screen refresh)
b->I2CGetBits(b, &scl, &sda); // read the value written to the SDA bit
b->I2CPutBits(b, 0 , 0); // set the SDA bit of the DDC interface to 0
b->I2CUDelay(b, 8333); // wait 8.3 ms (for a 120 Hz screen refresh)
b->I2CGetBits(b, &scl, &sda); // read the value written to the SDA bit
}
- run nvclock : ./src/nvclock -i ;
- the glasses should flicker for some seconds before the card info is displayed.
This code should work on any NV50 card (GeForce 8, GeForce 9, GeForce GTX2x0) and I guess it should also work under Windows with some modifications, since nvclock is available on this platform. When I'm happy with my implementation, I may have a go at adapting it to other systems/graphics cards if nobody beats me to it.
Since I send the signal on every I2C port available, it should work for dual screen configurations (TwinView) and shutter glasses connected to the DVI port with homebrew hardware. Don't hesitate to test this code and please report back if it does work (or not) for you, giving the following informations :
- operating system (distribution, 32/64 bits) ;
- graphics card model ;
- graphics card connection (PCI, AGP, PCIe) ;
- shutter glasses model ;
- display connection (VGA, DVI) ;
- screen configuration (one screen, TwinView, Xinerama).
Thank you.
Best regards,
Frédéric Lopez.