It is currently Wed Aug 27, 2014 1:12 pm



Reply to topic  [ 37 posts ] 
 For TF2, any way to SPOOF VR mode(-vr) without having an OR? 
Author Message
One Eyed Hopeful
User avatar

Joined: Thu Mar 21, 2013 3:24 pm
Posts: 21
Location: USA
I have an HMD in the making but far from done. As you all know, without an actual OR connected, VR mode won't open in TF2.

I want to test out some things in the TF2 console etc.. Any way to spoof/force/trick the system into opening -vr mode TF2 without an OR?

I figure some dev or hacking enthusiast might've figured out how to spoof the OR connection by now ;)


Sat Apr 06, 2013 2:08 pm
Profile
Binocular Vision CONFIRMED!

Joined: Thu Nov 15, 2012 2:12 pm
Posts: 228
I think you probably need to have the Rift plugged in when forcing -vr mode or it won't even work..


Sat Apr 06, 2013 3:26 pm
Profile
Certif-Eyable!

Joined: Tue Sep 18, 2012 10:32 pm
Posts: 1139
sandumanu wrote:
I have an HMD in the making but far from done. As you all know, without an actual OR connected, VR mode won't open in TF2.

I want to test out some things in the TF2 console etc.. Any way to spoof/force/trick the system into opening -vr mode TF2 without an OR?

I figure some dev or hacking enthusiast might've figured out how to spoof the OR connection by now ;)

Only one way so far, but it has too many side effects, since it's basically using a completely different code path.
That way is to turn on Sixense (Razer Hydra) mode and vr mode at the same time. But -vr only seems to make it side-by-side, unwarped, 2D if you do that, and doesn't affect the menus.

TF2 uses a DLL with the Oculus Rift SDK in it, but it's all object oriented and hard to hack.


Sat Apr 06, 2013 4:35 pm
Profile
One Eyed Hopeful
User avatar

Joined: Thu Mar 21, 2013 3:24 pm
Posts: 21
Location: USA
2EyeGuy wrote:
sandumanu wrote:
I have an HMD in the making but far from done. As you all know, without an actual OR connected, VR mode won't open in TF2.

I want to test out some things in the TF2 console etc.. Any way to spoof/force/trick the system into opening -vr mode TF2 without an OR?

I figure some dev or hacking enthusiast might've figured out how to spoof the OR connection by now ;)

Only one way so far, but it has too many side effects, since it's basically using a completely different code path.
That way is to turn on Sixense (Razer Hydra) mode and vr mode at the same time. But -vr only seems to make it side-by-side, unwarped, 2D if you do that, and doesn't affect the menus.

TF2 uses a DLL with the Oculus Rift SDK in it, but it's all object oriented and hard to hack.


I do have a Razer Hydra and the software associated with it.

When you say turn them on at the same time, you mean open the Razer Hydra Configurator or Motion Creator 2 apps the same time as I open up the -vr mode TF2 executable?


Sat Apr 06, 2013 5:44 pm
Profile
One Eyed Hopeful
User avatar

Joined: Tue Mar 26, 2013 2:48 pm
Posts: 14
Location: UK
sandumanu wrote:
I do have a Razer Hydra and the software associated with it.

When you say turn them on at the same time, you mean open the Razer Hydra Configurator or Motion Creator 2 apps the same time as I open up the -vr mode TF2 executable?

There's a Sixense launch option for TF2, so you combine them as launch options. The following worked for me:

-vr +sixense_enabled 1

Loads up properly without a Rift or Hydra attached, and gameplay works fine with the mouse. The screen is divided into the two views, but isn't warped for the lenses, and has a few issues with things like UI/scoreboard/team selection.


Sat Apr 06, 2013 6:53 pm
Profile
One Eyed Hopeful
User avatar

Joined: Thu Mar 21, 2013 3:24 pm
Posts: 21
Location: USA
Kilobyte wrote:
sandumanu wrote:
I do have a Razer Hydra and the software associated with it.

When you say turn them on at the same time, you mean open the Razer Hydra Configurator or Motion Creator 2 apps the same time as I open up the -vr mode TF2 executable?

There's a Sixense launch option for TF2, so you combine them as launch options. The following worked for me:

-vr +sixense_enabled 1

Loads up properly without a Rift or Hydra attached, and gameplay works fine with the mouse. The screen is divided into the two views, but isn't warped for the lenses, and has a few issues with things like UI/scoreboard/team selection.



Thanks for clarifying! I'll give it a try :D


Sat Apr 06, 2013 7:35 pm
Profile
Certif-Eyable!

Joined: Tue Sep 18, 2012 10:32 pm
Posts: 1139
sandumanu wrote:
Kilobyte wrote:
There's a Sixense launch option for TF2, so you combine them as launch options. The following worked for me:

-vr +sixense_enabled 1

Loads up properly without a Rift or Hydra attached, and gameplay works fine with the mouse. The screen is divided into the two views, but isn't warped for the lenses, and has a few issues with things like UI/scoreboard/team selection.

Thanks for clarifying! I'll give it a try :D

But don't expect much, it's just a glitch that it works like that. It's obviously not starting up VR mode properly when you do that.


Sat Apr 06, 2013 10:03 pm
Profile
One Eyed Hopeful
User avatar

Joined: Thu Mar 21, 2013 3:24 pm
Posts: 21
Location: USA
2EyeGuy wrote:
sandumanu wrote:
Kilobyte wrote:
There's a Sixense launch option for TF2, so you combine them as launch options. The following worked for me:

-vr +sixense_enabled 1

Loads up properly without a Rift or Hydra attached, and gameplay works fine with the mouse. The screen is divided into the two views, but isn't warped for the lenses, and has a few issues with things like UI/scoreboard/team selection.

Thanks for clarifying! I'll give it a try :D

But don't expect much, it's just a glitch that it works like that. It's obviously not starting up VR mode properly when you do that.



Yeah, I noticed after messing around with it :shock: Guess, I'm going to have to wait until someone figures out a way to run full VR mode without the OR before I can experiment.


Sun Apr 07, 2013 2:04 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
Does anyone have the exact name of the Rift headtracker USB device in Device Manager?

You'd also need the Vendor and Device IDs to have a chance of spoofing the Rift.
The SDK probably forces a check of the tracker itself though, so a simple USB spoof might not work. :(
I'm assuming TF2 doesn't also check the Rift's EDID (panel controller's "plug and prey" info)?


Sun Apr 07, 2013 5:53 am
Profile
One Eyed Hopeful
User avatar

Joined: Thu Mar 21, 2013 3:24 pm
Posts: 21
Location: USA
OzOnE2k10 wrote:
Does anyone have the exact name of the Rift headtracker USB device in Device Manager?

You'd also need the Vendor and Device IDs to have a chance of spoofing the Rift.
The SDK probably forces a check of the tracker itself though, so a simple USB spoof might not work. :(
I'm assuming TF2 doesn't also check the Rift's EDID (panel controller's "plug and prey" info)?


I'm hoping this info will come out soon. No doubt many people took apart their Rift by now.


Sun Apr 07, 2013 8:59 pm
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
Oculus Rift DK1 (Development Kit #1)
USB VID/PID: 2833/0001
USB Name: Tracker DK1
EDID Name: Rift DK
HDCP Status: HDCP-capable
Native Resolution: 1280x800
Maximum Resolution: 1920x1200

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Sun Apr 07, 2013 11:15 pm
Profile
Certif-Eyable!

Joined: Tue Sep 18, 2012 10:32 pm
Posts: 1139
OzOnE2k10 wrote:
Does anyone have the exact name of the Rift headtracker USB device in Device Manager?

You'd also need the Vendor and Device IDs to have a chance of spoofing the Rift.
The SDK probably forces a check of the tracker itself though, so a simple USB spoof might not work. :(
I'm assuming TF2 doesn't also check the Rift's EDID (panel controller's "plug and prey" info)?

It checks the Rift's EDID, but doesn't require it. If it find it, it runs on that monitor instead of your primary monitor.

Quote:
Sensor_VendorId = 0x2833,
Sensor_ProductId = 0x0001,

// ST's VID used originally; should be removed in the future
Sensor_OldVendorId = 0x0483,
Sensor_OldProductId = 0x5750

But the Oculus SDK also checks some other things, I think.


Mon Apr 08, 2013 4:59 am
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
2EyeGuy wrote:
Quote:
Sensor_VendorId = 0x2833,
Sensor_ProductId = 0x0001,

// ST's VID used originally; should be removed in the future
Sensor_OldVendorId = 0x0483,
Sensor_OldProductId = 0x5750

But the Oculus SDK also checks some other things, I think.
FYI, those "Old*" values are used by the STM32F3 dev kits (with built-in "9-DoF" compass/accelerometer/gyro) that you can get for $10.80USD (including shipping):



Which means that the OculusVR SDK "might" work with STM32F3 boards (perhaps with custom firmware on them). Both devices may use the same motion sensor chips.

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Last edited by geekmaster on Mon Apr 08, 2013 6:21 am, edited 2 times in total.



Mon Apr 08, 2013 6:02 am
Profile
Binocular Vision CONFIRMED!
User avatar

Joined: Sun Sep 09, 2012 4:55 pm
Posts: 302
Curiously enough, when you launch TF2 with "-vr" on a mac, it does start in a sort of messed up side by side 3d mode.


Mon Apr 08, 2013 6:20 am
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
The Oculus SDK docs say that the Rift should be used in Windows desktop "extended display" mode (not duplicate monitor mode) to prevent VSYNC problems. However, they also say that duplicating the Rift content onto a second display is useful, but affordable DVI/HDMI splitters do not reliably pass EDID information through. The Oculus Rift demo videos usually show a large LCD display duplicating the Rift, so they must be using an HDMI splitter (if they are following their own recommendations).
Quote:
Generally, the use of third party splitters and video switching boxes means that Rift EDID data may not be reliably reported to the Windows OS. ... As a result, the only viable option currently is to use the Rift in extended display mode.
In that case, the SDK demos (and TF2) should not rely on detecting the Rift EDID.

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Mon Apr 08, 2013 6:21 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
Cool. Thanks, geekmaster and 2EyeGuy!

Should be able to at least spoof the tracker IDs with a PIC 18F2550 or AVR with USB.
It will probably crash or freeze the s/w without the actual data being passed though?

I have an HDMI splitter here (not a cheap one), which I bought for S3D experiments then didn't think I'd ever find a use for it.
Now it looks like it will be perfect for the Rift. :D

Spoofing the basic EDID info is as easy as programming an EEPROM and hooking it up to the DVI / HDMI.
(You could even reprogram your DIY panel controller's EDID with the Rift EDID just using Windoze software.)

I saw that the Rift tracker uses an STM32F103, but never thought of looking for an accelerometer dev kit.
This is the sort of info I like to see. I'm now off to compare the Rift tracker to the STM32 kit. hehe

It may not be much use to recreate the Rift tracker, as I trust their method of calibration is very precise.
Without the calibration data, I'd imagine a DIY board would produce disappointing results?

OK, some more things to try. Thanks guys!
No wonder they haven't activated my Rift Dev login yet. lol

I still haven't got round to trying the "Lightboost" mod on the Hydis panel. :(


Last edited by OzOnE2k10 on Mon Apr 08, 2013 8:16 am, edited 1 time in total.



Mon Apr 08, 2013 7:48 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
Just tried a USB sniffer. Works great on my mouse (Gyration Airmouse)...
http://sourceforge.net/projects/usbsnoop/?source=dlp

When the program first starts, it shows you a list of all USB devices (including ones which aren't currently plugged in).
Sometimes there may be multiple copies of the same device in the list (if you've plugged it in a different port for instance).
You just need to do this to start snooping...

1. Run SnoopyPro.exe from whereever you have saved it.
2. Open up the USB devices window with F2.
3. Choose 'Unpack Drivers' from the 'File' menu.
4. Choose 'Install Service' from the 'File' menu.
5. Locate the device you want to sniff.
6. Right-click on it and choose 'Install and Restart'.
7. Wait for the magic to happen...


Once the drivers are unpacked / service installed and you've done the "Install and Restart" on your chosen device, close the USB list (you can get it back with F2), then make a New log and see if you can capture some packets.

(need to click the stop button to see the actual log).

Who wants to be daring and try this on the Rift tracker? :twisted: :)


Mon Apr 08, 2013 8:09 am
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
I see that they raised the price of the STM32F3 dev kit. I bought 3 of them at $10.80, but now the price is listed as $10.90. It went up $0.10! :o ;)

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Mon Apr 08, 2013 8:43 am
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
I just tried the "Oculus Room Tiny" demo, with the Rift video disconnected from the PC. That demo said "Oculus Sensor detected; HMD display EDID not detected." and it refused to run without the EDID.

Other apps may have the same problem, so EDID spoofing may be needed.

Some apps may automatically display to whichever display device has the Rift EDID.

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Mon Apr 08, 2013 9:05 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
http://www.entechtaiwan.com/util/moninfo.shtm
(download icon on the left)

You can grab the raw EDID data from the Rift if you fancy? ;)
Not sure the Oc guys would appreciate it being posted though?
tbh, the apps probably only need to see the correct ID, so would be easy enough to create from scratch.


Mon Apr 08, 2013 9:18 am
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
OzOnE2k10 wrote:
http://www.entechtaiwan.com/util/moninfo.shtm
(download icon on the left)

You can grab the raw EDID data from the Rift if you fancy? ;)
Not sure the Oc guys would appreciate it being posted though?
tbh, the apps probably only need to see the correct ID, so would be easy enough to create from scratch.
Code:
Monitor
  Model name............... Rift DK
  Manufacturer............. OVR
  Plug and Play ID......... OVR0001
  Serial number............ Serial
  Manufacture date......... <deleted>
  Filter driver............ None
  -------------------------
  EDID revision............ 1.3
  Input signal type........ Digital
  Color bit depth.......... Undefined
  Display type............. Undefined
  Screen size.............. Undefined or variable
  Power management......... Standby, Suspend, Active off/sleep
  Extension blocs.......... 1 (Reserved - 0x00)
  -------------------------
  DDC/CI................... Not supported

Color characteristics
  Default color space...... sRGB
  Display gamma............ 2.20
  Red chromaticity......... Rx 0.591 - Ry 0.341
  Green chromaticity....... Gx 0.303 - Gy 0.565
  Blue chromaticity........ Bx 0.145 - By 0.117
  White point (default).... Wx 0.313 - Wy 0.328
  Additional descriptors... None

Timing characteristics
  Horizontal scan range.... 30-83kHz
  Vertical scan range...... 56-76Hz
  Video bandwidth.......... 230MHz
  CVT standard............. Not supported
  GTF standard............. Not supported
  Additional descriptors... None
  Preferred timing......... Yes
  Native/preferred timing.. 1280x800p at 60Hz (16:10)
    Modeline............... "1280x800" 71.110 1280 1328 1360 1440 800 803 809 823 +hsync -vsync

Standard timings supported
     640 x  480p at  60Hz - IBM VGA
     800 x  600p at  60Hz - VESA
    1280 x  800p at  60Hz - VESA STD
    1280 x  720p at  60Hz - VESA STD
    1920 x 1200p at  60Hz - VESA STD
    1920 x 1080p at  60Hz - VESA STD

Report information
  Date generated........... 4/8/2013
  Software revision........ 2.60.0.972
  Data source.............. Real-time 0x0022
  Operating system......... 6.1.7601.2.Service Pack 1

Raw data
  <deleted>
The EDID info claims to support up to 76Hz refresh rate (Vertical scan range...... 56-76Hz). But Windows only shows the "standard" 60Hz timings available for that display device (Properties, List All Modes). According to the EDID info shown above, it should be safe to force it to run faster with PowerStrip (also from EnTech).

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Last edited by geekmaster on Mon Apr 08, 2013 10:21 am, edited 1 time in total.



Mon Apr 08, 2013 9:37 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
Oh, you naughty, geekmaster. :lol:
(PM incoming)

Yep, the Hydis panel datasheet says it supports up to 70Hz V, and up to 57.6KHz H refresh.

Windows tends to use the "Standard timings" block, but you can add some extended info to the EDID to allow an extra res etc.
(assuming the EEPROM is big enough?)

I think the EDID data on the Realtek / Rift boards are held in the firmware though, so the whole thing would need to be reprogrammed for custom stuff.

I seriously doubt there's any great risk in trying a custom refresh on the Rift though.
It will generally either work or it won't, but it's not like an old CRT which you need to be careful with.

I wonder if the 7" panel in the Rift can actually refresh at 70 or 76Hz?
It might just be re-timing it in the scaler chip and only really capable of 60Hz in reality?


Mon Apr 08, 2013 9:49 am
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
I tried using PowerStrip.

My Rift Dev Kit works fine at 64Hz, but going up even to 64.1Hz gives it get periodic flickering (three quick flashes every half second), and 65Hz or above gives constant flickering. Perhaps it could be made to work at higher frequencies with a custom resolution (different front/back porch, narrower retrace intervals, or whatever).

But even 64Hz is better than 60Hz, to lower latency, and that does not need any other custom timing adjustments.

EDIT: What is not public about the EDID data? It is available to any app that wants to read it. No hacking involved.

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Mon Apr 08, 2013 10:04 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
Very nice.
Yet another thing to be anxious to try while waiting for my Rift. :roll: :shock:

The default modeline on the Rift EDID matches the Hydis 5.6" panel datasheet timings.
Well, it should I suppose, it's a standard VESA type thingy.

There are no other custom timing sets listed in the Hydis datasheet unfortunately, it only gives the 1280x800 @60Hz timings.


Mon Apr 08, 2013 10:20 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
geekmaster wrote:
EDIT: What is not public about the EDID data? It is available to any app that wants to read it. No hacking involved.

I completely agree. Just that some people get a bit funny about it when they "think" it's a huge secret.
I got banned from using the college computers back in the day, simply because I memorized this little trick from "tips.txt" in Windows 95/98...

Create a new folder and call it...
Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}

...and it will magically access the real Control Panel!
Even though the college computers still had the normal Control Panel enabled, they took great offensive to my "hacking" and nearly "called the police". lol

That "tips.txt" file was included with Win 95/98 I think? I seem to remember those little registry refs working on XP as well, but not on Win 7/8.

Sorry, back on topic. :roll:
Just writing to four people at once while deciding what to do next with the Rift stuff. hmmmm

EDIT: Oops, missed that - if your Rift is working at 64Hz, then I think it will go even higher.
Have you noticed any motion blur improvements yet? Unlikely though.


Mon Apr 08, 2013 10:37 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
Wonder if any of these timings will work with the Rift + Powerstrip?...

# 1280x800 @ 60.00 Hz (GTF) hsync: 49.68kHz; pclk: 83.46MHz
ModeLine "1280x800" 83.46 1280 1344 1480 1680 800 801 804 828 -HSync +Vsync

# 1280x800 @ 75 Hz
ModeLine "1280x800" 107.21 1280 1360 1496 1712 800 801 804 835 -HSync +Vsync

Oh, the pixel clock for these is higher than in the Hydis datasheet anyway. Prolly won't work on the Rift?

OK, so Rift modeline is (VESA Standard for 60Hz)...
"1280x800" 71.110 1280 1328 1360 1440 800 803 809 823 +hsync -vsync

With absolute timings, the Rift matches the 5.6" Hydis panel @60Hz...
H Active 1280 Pixels
H Front porch 48 Pixels
H Sync Blanking 32 Pixels
H back porch 80 Pixels
H Period 1440 Pixels

V Active 800 Lines
V Front porch 3 Lines
V Sync Blanking 6 Lines
V Back Porch 14 Lines
V period 823 Lines

Erm, not sure how to calc a new custom timing for the Rift until we now the type of panel and max pixel clock?

You could try plugging the above values into this, but that only shows you the V/H refresh for a given pixel clock.
http://www.abramovbenjamin.net/calc.html

The max pixel clock for the Hydis panel is 83MHz. For a 60Hz refresh with the above timings, the pix clock would be ~71.11MHz.

@geekmaster - are you able to increase only the pixel clock in Powerstrip but keep the same timings?


Mon Apr 08, 2013 11:38 am
Profile
One Eyed Hopeful
User avatar

Joined: Thu Mar 21, 2013 3:24 pm
Posts: 21
Location: USA
geekmaster wrote:
In that case, the SDK demos (and TF2) should not rely on detecting the Rift EDID.
geekmaster wrote:
IOther apps may have the same problem, so EDID spoofing may be needed.


Ok, so from what I've read so far TF2 VR mode might still possibily need the EDID of the OR but also uses or needs the tracker ID for VR mode to be activated.


geekmaster wrote:
Which means that the OculusVR SDK "might" work with STM32F3 boards (perhaps with custom firmware on them). Both devices may use the same motion sensor chips.
OzOnE2k10 wrote:
Should be able to at least spoof the tracker IDs with a PIC 18F2550 or AVR with USB.


Does this mean that, so far, the only solution for spoofing both the tracker ID and the EDID would be a hardware solution (which is no issue but a simple time constraint)? Software spoofing isn't an option?


Mon Apr 08, 2013 8:03 pm
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
There will generally always be a software solution to a problem like this, but I'm personally not very good with the Windoze side of C / C++ programming.

Ironically, I'd find it easier to make a hardware spoofer than to try messing with the software. (although, either would be a challenge unless someone finds a simpler method).

EDIT: Please ignore the following junk, it doesn't work, sorry!
The Oculus s/w ignores the Windoze inf stuff, and checks the monitor(s) hardware EDID directly. TF2 likely does the same.
I'm only leaving this here for reference. I really shouldn't post when extremely tired. :roll:


The EDID part is actually simpler than I thought. I forgot that you can simply do an EDID override...

I've just tried this using the inf generated directly from the Rift DK1 data that geekmaster posted earlier. Windoze now thinks my monitor is a Rift! This is a software only patch, so won't actually write anything to your monitor's EEPROM...

You just need to download this inf file...
http://www.filedropper.com/showdownload.php/riftedid

Before doing this, you should really make a backup of the inf for your monitor using moninfo (http://www.entechtaiwan.com/util/moninfo.shtm), or just download the inf from your monitor's Web site.

Then, go into Device Manager, find the monitor you want to change, right-click > Update Driver Software..., then Browse..., "Let me pick...", Have Disk, then browse again to the folder where the Rift inf file is kept. Install the file (ignore the Red warning message box), and you should be done.

Your screen resolution will probably change and you'll be limited to the Rift's resolutions, so it might be best to use a second monitor for the EDID spoofing. Or, you can grab your monitor's real EDID with moninfo, then change it's ID strings with to match the Rift's ID strings (so you keep your monitor's normal modes). This assumes your monitor also supports 1280x800 @60Hz, but most modern monitors do.

The USB part is more difficult, but mainly because the SDK probably expects to read some data from the tracker.
So, it might not just be a case of spoofing the USB ID's on their own.

Short version is - it's possible, but probably a LOT of effort for little payoff.
I might look into this further in the next few days, but I have so many other projects and things to get done first. :(

Give the EDID override a try. You can always revert back, and the simplest way is to go back into Device Manager, but when you do the "Let me pick" part, it should show you your monitor's default driver. Just install that and you should be able to set your resolution back to normal.

If for some reason the Rift inf file screws up your display and you can't see anything (unlikely), you might need to restart the PC and do an F8 at boot up, choose "Enable Low Resolution Video" from the menu, then change back to your monitor's old driver in Device Manager. phew!


Mon Apr 08, 2013 8:46 pm
Profile
One Eyed Hopeful
User avatar

Joined: Thu Mar 21, 2013 3:24 pm
Posts: 21
Location: USA
Quote:
EDIT: Please ignore the following junk, it doesn't work, sorry!
The Oculus s/w ignores the Windoze inf stuff, and checks the monitor(s) hardware EDID directly. TF2 likely does the same.
I'm only leaving this here for reference. I really shouldn't post when extremely tired. :roll:


No no no, it's ok. You gave it your best. ;) I'm just super glad that there is an interest in learning how to spoof the OR connection. The more we investigate this the more we learn :mrgreen:

If it turns out that it's way too much effort to do a spoof software wise, then I'll go ahead and get the appropriate hardware...STM32F3 boards, the PIC 18F2550, AVR with USB or whatever is relevant to make it spoof correctly.


Mon Apr 08, 2013 9:26 pm
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
You seem very determined to do this, what's the main motivation? :?
Have you ordered a Rift kit yet? (it may be too late to preorder now AFAIK)

I can certainly help you build an EDID spoofer at some point.
It's basically the same as Petrus' diagram...
http://www.mtbs3d.com/gallery/albums/us ... EEprom.gif

Where it says Pin 6 and Pin 7, it's related to a DVI connection, and not HDMI or VGA.
You can get +5V from DVI pin 14, and ground is on pin 15.

I don't know if EDID software will program the EEPROM without it be pre-programmed first, so we'll need to check that.
That circuit is all you need for a basic spoofer though, we just need a way to program it.

You should be able to rip out a serial EEPROM from a broken gadget. They're used everywhere, and often have the 8-pin DIP or SOIC type package.
I believe it can be a slightly higher capacity than usual and still work OK for EDID too?

PowerStrip can be used to rewrite the EDID apparently, by using the raw .bin file from the Rift DK (this one should be in it's unmodified state, and was created from geekmaster's post)...
http://www.filedropper.com/riftedid_1

Sleep time now. 5am. yaaaaawwwwwwwwwwwn


Mon Apr 08, 2013 9:53 pm
Profile
One Eyed Hopeful
User avatar

Joined: Thu Mar 21, 2013 3:24 pm
Posts: 21
Location: USA
OzOnE2k10 wrote:
You seem very determined to do this, what's the main motivation? :?
Have you ordered a Rift kit yet? (it may be too late to preorder now AFAIK)


I'm currently making my own DIY. As for my true motivation, I think if it's ever figured out how to spoof the OR it would be a useful benefit to the developer community. If this puzzle is solved, current and future applications that require the OR can be debugged without the OR.

There aren't a lot of apps out for the OR now, and the one that is the most stubborn is TF2 VR mode, which is why I am targeting that.


Tue Apr 09, 2013 6:32 am
Profile
Binocular Vision CONFIRMED!

Joined: Wed Mar 21, 2007 3:22 am
Posts: 211
If I use "-vr +sixense_enabled 1" I get that same sort of side-by-side mode everyone else gets. If I however try "-vr oculus +sixense_enabled 1" TF2 doesn't start, but errors out with "Unable to pre-init VR tracker. Are all the cables on your HMD connected?". So maybe only the tracker needs to be spoofed that way, and the display doesn't matter.

_________________
Current Rig: Intel i7 920 @ 4.0GHz, 6 GB ram, Geforce GTX670 -> Nvidia 3D Vision on LG 47LM615S (interlaced, spoofing Zalman EDID) + Oculus Rift
Control Peripherals: Novint Falcon, Razer Hydra, P5 Glove, XBOX 360 Controller, Wiimote, Saitek X52 Pro (flight control system), Logitech G27 (racing wheel), Logitech G15 (keyboard), Razer Naga Molten Edition (mouse)


Tue Apr 09, 2013 9:14 am
Profile
Certif-Eyable!

Joined: Tue Sep 18, 2012 10:32 pm
Posts: 1139
The only point in spoofing the Rift's EDID, is to get Rift games to automatically start on that monitor without you having to make it your primary monitor or having your monitors cloned. Rift games will still work if they don't detect the EDID. So I don't think it's worth worrying about.

It's very interesting about 64Hz mode though. Once we get a latency tester, we can check whether that actually makes any difference. I'd love to see 75Hz working. Does anyone know if there are any side effects? Does it affect the brightness or colour?


Fri Apr 12, 2013 12:00 am
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
2EyeGuy wrote:
The only point in spoofing the Rift's EDID, is to get Rift games to automatically start on that monitor without you having to make it your primary monitor or having your monitors cloned. Rift games will still work if they don't detect the EDID. So I don't think it's worth worrying about.

It's very interesting about 64Hz mode though. Once we get a latency tester, we can check whether that actually makes any difference. I'd love to see 75Hz working. Does anyone know if there are any side effects? Does it affect the brightness or colour?
Unless we can adjust other timing parameters, anything beyond 64Hz causes strange pulsating flicker. At about 64 Hz, you get 3 quick flashes then a pause, repeating about each second. At 70Hz and beyond, you get constant flicker. I think it is timing overflow (Powerstrip incorrectly configuring the LCD timing). When speeding up the clock you need to make some other parameters shorter to compensate. I did not do that.

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Fri Apr 12, 2013 12:13 am
Profile
Sharp Eyed Eagle!

Joined: Wed Jan 13, 2010 7:12 am
Posts: 436
Location: UK
I got my EPROM programmer back now, so I've written the Rift EDID into an I2C EEPROM and hooked it up to an HDMI socket.

It's very rough, 'cos I didn't have an DIP chips to hand, so I simply soldered it directly to the socket pins.
http://i38.tinypic.com/hs3rx0.jpg

You can get HDMI sockets cheaply by buying those swivel type adapters on eB*y...
http://www.ebay.co.uk/itm/HDMI-1-4-Fema ... 43ac157c6c

This seems to work fine for the display part of the SDK, and the Sixense Tuscany Demo now only says "No sensor detected" instead of "No HMD" / "No sensor detected".
I'll try TF2 right now and see if it changes anything. EDIT: Nope, it still give the HMD tracker error ofc, how silly of me. lol

I'm not sure when I'll get round to trying to spoof the tracker's USB protocol, but I might have a go at building a DIY Rift soon (I have the Hydis panel and 5x lenses).
So, I don't know how useful the EDID thing is atm. It's easy enough to do though.

I tried all sorts to write the EEPROM directly by using Windoze software alone, but didn't have much luck.
There probably is a software way to do it, although it seems to be far more hassle than simply using the HDMI "dongle".

If you don't have access to a proper programmer, you can build a simple I2C EEPROM parallel port programmer using two transistors and a couple of resistors...
(see the "Easy I2C Bus Interface" at the bottom of the page)
http://www.lancos.com/prog.html

OzOnE.
P.S. If anyone wants the Rift EDID file, I can PM it to you. :)


Sat Apr 20, 2013 2:50 am
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
OzOnE2k10 wrote:
...
This seems to work fine for the display part of the SDK, and the Sixense Tuscany Demo now only says "No sensor detected" instead of "No HMD" / "No sensor detected".
I'll try TF2 right now and see if it changes anything. EDIT: Nope, it still give the HMD tracker error ofc, how silly of me. lol

I'm not sure when I'll get round to trying to spoof the tracker's USB protocol, but I might have a go at building a DIY Rift soon (I have the Hydis panel and 5x lenses).
So, I don't know how useful the EDID thing is atm. It's easy enough to do though.
P.S. If anyone wants the Rift EDID file, I can PM it to you. :)
The 0.1.5 version of the OculusVR SDK still supports the STM32F3DISCOVERY ($10.90) USB VID/PID in addition to the RiftDK VID/PID (and that is the Digi-Key price). And that dev kit even has a built-in IMU (same chipset as the RiftDK). Look in the SDK source code...

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Mon Apr 22, 2013 10:46 pm
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 01, 2012 10:47 pm
Posts: 2648
geekmaster wrote:
OzOnE2k10 wrote:
http://www.entechtaiwan.com/util/moninfo.shtm
(download icon on the left)

You can grab the raw EDID data from the Rift if you fancy? ;)
Not sure the Oc guys would appreciate it being posted though?
tbh, the apps probably only need to see the correct ID, so would be easy enough to create from scratch.
Code:
Monitor
  Model name............... Rift DK
  Manufacturer............. OVR
  Plug and Play ID......... OVR0001
  Serial number............ Serial
  Manufacture date......... <deleted>
  Filter driver............ None
  -------------------------
  EDID revision............ 1.3
  Input signal type........ Digital
  Color bit depth.......... Undefined
  Display type............. Undefined
  Screen size.............. Undefined or variable
  Power management......... Standby, Suspend, Active off/sleep
  Extension blocs.......... 1 (Reserved - 0x00)
  -------------------------
  DDC/CI................... Not supported

Color characteristics
  Default color space...... sRGB
  Display gamma............ 2.20
  Red chromaticity......... Rx 0.591 - Ry 0.341
  Green chromaticity....... Gx 0.303 - Gy 0.565
  Blue chromaticity........ Bx 0.145 - By 0.117
  White point (default).... Wx 0.313 - Wy 0.328
  Additional descriptors... None

Timing characteristics
  Horizontal scan range.... 30-83kHz
  Vertical scan range...... 56-76Hz
  Video bandwidth.......... 230MHz
  CVT standard............. Not supported
  GTF standard............. Not supported
  Additional descriptors... None
  Preferred timing......... Yes
  Native/preferred timing.. 1280x800p at 60Hz (16:10)
    Modeline............... "1280x800" 71.110 1280 1328 1360 1440 800 803 809 823 +hsync -vsync

Standard timings supported
     640 x  480p at  60Hz - IBM VGA
     800 x  600p at  60Hz - VESA
    1280 x  800p at  60Hz - VESA STD
    1280 x  720p at  60Hz - VESA STD
    1920 x 1200p at  60Hz - VESA STD
    1920 x 1080p at  60Hz - VESA STD

Report information
  Date generated........... 4/8/2013
  Software revision........ 2.60.0.972
  Data source.............. Real-time 0x0022
  Operating system......... 6.1.7601.2.Service Pack 1

Raw data
  <deleted>
The EDID info claims to support up to 76Hz refresh rate (Vertical scan range...... 56-76Hz). But Windows only shows the "standard" 60Hz timings available for that display device (Properties, List All Modes). According to the EDID info shown above, it should be safe to force it to run faster with PowerStrip (also from EnTech).
I extracted the EDID data from my new replacement Rift. "Real-time" extraction with moninfo tool, as above, shows no same data as before. Here it is parsed with a different (online) EDID parser tool:

Copied from Windows Registry, and parsed by http://www.edidreader.com/:
Code:
EDID:

Block 0
Valid Checksum: FALSE

Header Information
Edid Header: OK
EISA ID: OVR
Product Code: 100
Serial Number: 0
Manufacture Date: 8/2013
Edid Version: 1.3

Basic Display Parameters
Digital Input: true
Compatible with VESA DFP: false
Maximum Horizontal Image Size: 0
Maximum Vertical Image Size: null
Display Gamma: 1.00
DPMS Standby: false
DPMS Suspend: true
DPMS Active-Off: true
Display Type: RGB 4:4:4 + YCrCb 4:4:4 + YCrCb 4:2:2
Standard sRGB Color Space: false
Preferred Timing Mode: false
GTF Supported: false

Chromaticity Coordinates
Red X: 0.003
Red Y: 0.593
Green X: 0.343
Green Y: 0.303
Blue X: 0.563
Blue Y: 0.146
White X: 0.119
White Y: 0.315

Timing Bitmap
720×400 @ 70 Hz: false
720×400 @ 88 Hz: true
640×480 @ 60 Hz: false
640×480 @ 67 Hz: true
640×480 @ 72 Hz: false
640×480 @ 75 Hz: true
800×600 @ 56 Hz: false
800×600 @ 60 Hz: false
800×600 @ 72 Hz: false
800×600 @ 75 Hz: false
832×624 @ 75 Hz: true
1024×768i @ 87 Hz: false
1024×768 @ 60 Hz: false
1024×768 @ 72 Hz: false
1024×768 @ 75 Hz: false
1280×1024 @ 75 Hz: true
1152x870 @ 75 Hz: false

Standard Timing Information

Standard Display Modes
X Resolution: 248
X:Y Pixel Ratio: 5:4
Vertical Frequency: 61
X Resolution: 248
X:Y Pixel Ratio: 5:4
Vertical Frequency: 61
X Resolution: 1784
X:Y Pixel Ratio: 16:9
Vertical Frequency: 77
X Resolution: 248
X:Y Pixel Ratio: 16:9
Vertical Frequency: 77

Detailed Timing Descriptor 1
Pixel Clock: 2.57MHz
Horizontal Active: 199
Horizontal Blanking: 27
Vertical Active: 672
Vertical Blanking: 80
Horizontal Sync Offset: 23
Horizontal Sync Pulse: 560
Vertical Sync Offset: 3
Vertical Sync Pulse: 0
Horizontal Display Size: 2358
Vertical Display Size: 1536
Horizontal Border: 94
Vertical Border: 0
Interlaced: false
Stereo Mode: 0
Sync Type: 0
Vertical Sync Serrated: false
Sync on all 3 RGB lines: false
2-Way Line-Interleaved Stereo: false

Detailed Timing Descriptor 2
Pixel Clock: 66.56MHz
Horizontal Active: 0
Horizontal Blanking: 0
Vertical Active: 0
Vertical Blanking: 252
Horizontal Sync Offset: 338
Horizontal Sync Pulse: 873
Vertical Sync Offset: 22
Vertical Sync Pulse: 6
Horizontal Display Size: 1056
Vertical Display Size: 2884
Horizontal Border: 10
Vertical Border: 32
Interlaced: false
Stereo Mode: 1
Sync Type: 0
Vertical Sync Serrated: false
Sync on all 3 RGB lines: false
2-Way Line-Interleaved Stereo: false

Detailed Timing Descriptor 3
Pixel Clock: 82.24MHz
Horizontal Active: 32
Horizontal Blanking: 0
Vertical Active: 0
Vertical Blanking: 255
Horizontal Sync Offset: 339
Horizontal Sync Pulse: 869
Vertical Sync Offset: 0
Vertical Sync Pulse: 32
Horizontal Display Size: 1641
Vertical Display Size: 3169
Horizontal Border: 10
Vertical Border: 32
Interlaced: false
Stereo Mode: 1
Sync Type: 0
Vertical Sync Serrated: false
Sync on all 3 RGB lines: false
2-Way Line-Interleaved Stereo: false

Detailed Timing Descriptor 4
Pixel Clock: 82.24MHz
Horizontal Active: 32
Horizontal Blanking: 32
Vertical Active: 3840
Vertical Blanking: 3328
Horizontal Sync Offset: 0
Horizontal Sync Pulse: 312
Vertical Sync Offset: 52
Vertical Sync Pulse: 44
Horizontal Display Size: 83
Vertical Display Size: 23
Horizontal Border: 10
Vertical Border: 32
Interlaced: false
Stereo Mode: 1
Sync Type: 0
Vertical Sync Serrated: false
Sync on all 3 RGB lines: false
2-Way Line-Interleaved Stereo: false

Number of Extensions: null
Checksum: 0x20
This report also shows detailed timing descriptor blocks, missing from the earlier report.

_________________
“The creative person wants to be a know-it-all. He wants to know about all kinds of things: ancient history, nineteenth century mathematics, current manufacturing techniques, flower arranging, and hog futures. Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith that it will happen.” ―Carl Ally


Fri Jul 26, 2013 2:42 pm
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 37 posts ] 

Who is online

Users browsing this forum: Google [Bot], NopeU and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by STSoftware.