Close
0%
0%

Hydra Multi OS Gaming Console & Controller

This is a game console sized Hydra with a single GPU, running SteamOS, Win7 & Android x86 KitKat. Gameplay & mgmt via modular controller

Similar projects worth following
This project solves multiple problems facing the new x86 console gaming initiatives by Valve, Nvdiia, and Alienware. Most obviously, it would require 3 boxes to cover all the gaming options that x86 gaming promises. Some other solutions have been presented such as streaming from another machine, or dual booting. These options are viable for some, but not all.
For x86 gaming to effectively compete with current consoles, the same plug & play experience should be offered by a single box that TRULY rules the livingroom. This runs not just 3, but as many OS's as you care to add - up to a ridiculous 512. Mouse, keyboard, headphones, & USB all from the controller. Get your exercise elsewhere, since you don't need to leave the couch. Streaming of your game to the controller, additional game screens AT the controller.









The Multiheaded Hydra ran 6 seats of SteamOS (or whatever other x86 OS) but it wasn't a living room friendly size. So the Hydra Gaming Console is 15" x 12" by 2 ½".It's built around an Asrock H77M mini ITX with a Nvidia Quadro FX3800 desktop GPU. Right now it's running SteamOS, Windows7, and Android x86 KitKat. I've also been intending to switch back to VM control via an Android app.

And it hit me that an Android cell phone would probably make a pretty good Game Controller. It has:

Touchpad is your mouse

Keyboard for logging in, etc

WiFi

Bluetooth

Haptic feedback/Vibrator

Accelerometer/Tilt

Cameras

USB on the go

Headphone jack

Display

Easy dev platform

Speakers

Game Integration

Etc

And they're CHEAP. My biggest problem now is that there are SO many ways to skin the cat here, designing a controller around a phone is going to take some time. I think the USB OTG offers the best option, sort of like a "spread" controller that clamps the phone and plugs in the end. I have used a USB hub to connect both mouse & keyboard and sent them to the VM. Also a gravis gamepad. I was thinking something along the lines of this failed kickstarter:

Depending on the BT stack on the phone, the phone can be a HID device. I currently have the wrong phone, so am unable to test.

There are also many ways to emulate a controller on the phone.

There's also the Moga controller, which may be hackable, but I wish it was USB. It certainly works in the Android VM.

So what I have done for now is build a cell phone mount on an Xbox 360 controller, with the Xbox PC Wireless Adapter plugged into a passed thru USB on the host. The cell phone runs a menu that controls the host, selects which VM to run, which one comes up at boot, manage snapshots, and install a new VM from scratch.

Like this:

And to make a proper Game Console, I have to display the Menu system on the TV. So, the Quadro goes in port 1 of an HDMI switch inside the Host. A Microsoft Miracast device is in port 2. The HDMI switch is controlled by an Arduino that also controls the Hosts power switch. The cell phone screen is casted to the Miracast, and switching is controlled over bluetooth. I added a 1k resistor from the hot plug detect to 5v (pin 18 & 19) so the Miracast always thinks it's connected .


So you power on the Hydra Game Console from the Controller App. The cell screen is displayed on the TV, with a progress bar while the hypervisor boots. When port 5901 is active on the Hydra, we VNC in and can access the bios of the VM, or monitor the txt mode booting (Just in case we end up up in Startup Repair or some other boot prob) . We are also monitoring the Vmkernel.log for the event indicating the Nvidia GPU is active, and then the HDMI is switched to the Quadro.

Play Games, shut down, and the HDMI switches back to the menu presenting other VM's to run + options. Use the cell as a pointer & keyboard. Or plug real mouse & keyboard in the USB OTG. Use the Xbox controller in games.

Future development will allow streaming games from the Hydra Game Console to the phone, Mute the TV and use headphones on the phone, and using the phone as an auxiliary display in games. Also fully utilizing the accelerometer, cameras, vibrator, etc

I also need to buy (or most likely make) some custom cables to bring the designated ports out the back neatly.

Here is a video, demonstrating current functionality. I boot the machine, and switch between the 3 OS's. I play a little of a game in each. All of this entirely from the controller:


  • 1 × H81M-ITX/Wifi H77M-ITX no longer readily available, H81M-ITX meets required Intel Virtualization features $56
  • 1 × i5-4440 VT-D capable Processor $140
  • 1 × Slimline PSU Power Supply $24
  • 1 × Nvidia Quadro FX-3800 Or equivalent GPU - $40
  • 1 × 8GB DDR3 RAM $60

View all 15 components

  • There was a Quadro 2000 on CL so.....

    eric08/03/2015 at 20:00 1 comment

    I jumped on it. The nice Guy had the 2000, an FX-1800 & FX-580, gave me all 3 for $50.

    The Quadro 2000 happens to have audio, so I ditched the FX-3800 and the USB-SPDIF complicated hokey workaround.

    It works flawlessly in the Win7 VM. All I had to do was DL the drivers and it's done. Say what you want about M$, but probably more hardware works EASILY there than anywhere else.

    Screen up on Android & SteamOS, they both see the audio device but no sound........

    I'm in Alsa & Pulsaudio hell, & crashing my browser from too many tabs open trying to fix this.
    But I think it's still better... .

    Also, with the FX-3800, the only way I could run the Android VM was by rebooting the Host. I don't know why ( I have my suspicions) but it has to be the first VM booted after stealing the GPU from the Host. Win7 & SteamOS run anytime.

    With the Quadro 2000, the Android VM can be first, or it can run after Win7 or after SteamOS. I can't reboot it, I would have to run Win7 or SteamOS first. Not Ideal, but certainly better. Better enough to fight with Alsa & Pulsaudio.....

    Little bonus is the 2000 has no extra power connector & is a shorter card. Seems to perform in Wolfenstein about the same. I suppose the system should be designed to accommodate a long card that needs power, so I don't really gain much here.

    Also, now the Oculus Rift works on it.

  • Received the PCM2704 USB to S/PDIF from China

    eric05/26/2015 at 14:48 0 comments

    I wish there was a USA source......

    Connected as per the revised internal wiring diagram above. USB --> passed thru USB , S/PDIF to S/PDIF in on the FX3800 like this:

    Removed the DVI cable --> HDMI I had been using & switched to a Display Port to HDMI.

    I now have SOUND delivered over HDMI in the STEAMOS and Win7 VM's. It's however not straightforward in Android, so I'm working on that.....

  • Did some controller Development

    eric04/13/2015 at 20:19 0 comments

    My Son Gregory is kind of in charge of the Controller Ergonomic design. He was here this weekend, so between that and the mouse pointer Hacklet we were inspired to some brainstorming. We long ago decided a Trackball is a MUST, and the GameCube controller seems to be the one the consensus prefers. We don't have one of those laying around, but we had a broken Xbox controller we could butcher up, just to see how it feels in your hand. The big hole on the right would presumably have a Trackball instead of what M$ currently provides.

    This is our prototype butcher job:

    So imagine something similar to a GameCube Controller spread out as this is. The spot below the phone could hold the buttons that were removed to accommodate the phone. It seems to feel OK, & the similar to GameCube Controller would seem to have more room.

    The Mouse Pointer Hacklet also inspired us, first of all to add mouse & keyboard tags like we should have originally.

    This project mentioned in the Hacklet interested me:

    ORB – A 3D gaming mouse.

    Since he has the Arduino identified as a HID device.

    The Arduino in our Game Console only controls relays at present, and only gets power from the USB connection. The way way we currently provide the Mouse & Keyboard is with the VNC server built into the Hypervisor, since it's available to ALL VM's and even works upon boot so BIOS control is possible. As I have noted someplace above, I would have liked to use a Bluetooth HID but the ability to do this depends on the stack present in the phone. But now I have the idea to have the Arduino behave as a HID, and send the scan codes over bluetooth from the phone. The libraries also include Joystick, audio in & out, & lots more, so it looks promising that all the functions present on the phone could be passed this way.

    This is most likely a "future development" aspect of the project, since we presently have a working, if not optimal, solution. I suppose a spare Arduino for testing may be in order.

  • Building a custom DisplayPort -> HDMI cable

    eric04/07/2015 at 18:47 0 comments

    Going form this (male) looking at the cable

    To this (male) looking at the device

    19 pin HDMI type A receptacle connector layout

    Using this KEY:

    Dual-mode pin mapping
    DisplayPort pinsDVI 1.0/HDMI mode
    Main Link Lane 0TMDS Channel 2
    Main Link Lane 1TMDS Channel 1
    Main Link Lane 2TMDS Channel 0
    Main Link Lane 3TMDS Clock
    AUX CH+DDC Clock
    AUX CH-DDC Data
    DP_PWRDP_PWR
    Hot Plug DetectHot Plug Detect
    Config 1Cable Adaptor Detect
    Config 2CEC (HDMI only)

    I've got the DP cable peeled apart & identified the wires to the pins, with the plastic off it will bend around ( needs to be U shaped) to the HDMI switch and fit in the case. Also found an HDMI cable to sacrifice, & identified the pins. Had to make a needle meter probe for this, & use the USB microscope.

  • Featured on TinkerTry IT@Home Blog

    eric04/06/2015 at 00:37 0 comments

    Some of the Hydra was conceived on my own, but much of it is a conglomeration from MANY sources. I read every post on the VMDirectpath and ATI-Radeon thread on the VMware community. The ESX-Customizer came from here: VMware Front Experience

    The VIB driver for the RTL8111 came from TinkerTry Paul Braren's IT@Home Blog. I would have to guess I mined some other jewels from there, since he covers quite a bit of the fundamentals I have employed here. WAY back in my bookmarks I'm sure.....

    Anyway, now I realize that Hackaday may be the place I go every morning for my coffee reading material, but that's not true for everyone. So I have been spreading the word on Google+ and Facebook and anywhere else I can think of. Virtualization Blogs apparently are run by guys that know what I am talking about. Paul read my post and recognized his VIB driver for the RTL8111, and was surprisingly impressed enough to feature The Hydra on his Blog. I am impressed as well, Blogging is turning out to be more work than I thought........

    So check it out, there's lots of content there besides virtualization, product reviews, best practices & lots of instructional videos. Right Here:

    Hydra Article

  • Couple of threads on Valve site

    eric04/05/2015 at 23:35 0 comments

    Here are some of the questions addressed by the Hydra design. This is what I use to determine the features I want to incorporate, and the issues that need solving.

    Integration with Android Device

    "Its not a must be, but for the gaming purposes could be nice if Steam OS will have some integration with Android devices."

    Mouse and Keyboard Support?

    "So, I might get an Alienware Steam Machine and use it as a game console. However, instead of always using a controller, can I also use a keybiard and mouse? This is because I want to play some games with those controls, like Garry's Mod and Surgeon Simulator 2013."

    Multi-system Steam Machine?

    "TL;DR? If the thought of getting one or more gaming systems out of hardware you might already own isn't interesting to you; don't read this.

    For a very long time, I was trying to work out a way to unlock more use out of my system. The basic idea was to use Xen and at least 2 video cards in either SLI or dual-system mode. The difficult part was passing acceptable performance through more than one video card. Until I found this: "
    http://www.pugetsystems.com/labs/articles/Multi-headed-VMWare-Gaming-Setup-564/

    Steam Machines with Windows?

    "Can i use a Steam machine like a normal Computer with windows?"


  • VMware Licensing

    eric04/04/2015 at 01:07 0 comments

    Just to clarify - we are using the FREE version of VMware's VSphere Hypervisor.

    When I first discovered this feature, I called VMware to nail this question down for myself. I suggested a $99 version that included access to the API's only. No Vmotion, Vcenter etc.

    They didn't see the value.

    You can do what I'm doing with the free version, without the API's. Either method works, and the better or easier way really depends on what you are used to or comfortable with.

    You can do ANYTHING over SSH, so I am using that.

    BUT, to get the FREE version, you need to create an account. then DL the ISO and you have access to the FREE version KEY.

    I assumed they would want at LEAST all the emails so they could send out promo's, etc

    So I engineered this whole convoluted process where an end user would receive his/her Hydra, boot from a live cd, sign up and DL the ISO, get the KEY in email, and install to a virtual machine using the SSD as a physical disk. Then remove the CD and reboot to ESXi.

    I forget what the exact roadblock was, maybe I thought the windows live cd would get me in trouble. So I called VMware again and after getting passed around a little I was able to ask them directly how to proceed.

    "just install the FREE version and apply the KEY, the KEY is the same for all FREE installs. "

    OK then.


  • Changed System Board

    eric04/02/2015 at 18:39 2 comments

    So, as I am writing the build instructions, I get to where you are installing ESXi.

    On my testing prototype system, the GB Lan is a Realtek 8111 - for which there is no driver in ESXi and the install FAILS.

    I used the ESX-Customizer (which I will link to in the build instructions) to inject the RTL8111 driver (a VIB file I will also link there) into the VSpere install ISO.

    However, the H81M-ITX specified has an Atheros 8171, for which there is NO VIB file to inject. Until I get one in my hands, I can't really say if it will work or not.

    The H81M-ITX/Wifi , while a little more expensive, has an RTL8111, so I can say for sure it will work.

    Plus it has a potentially available PCIE 1x available for some pass through device, maybe we can replace the USB-->SPDIF, or add a second display (limited to 1x)

  • Updated Internal Wiring

    eric03/28/2015 at 20:44 0 comments

    Changed the USB sound card to a USB sound card with SPDIF. The FX3800 does not have it's own sound device like a Radeon. It has audio passthrough. It has an SPDIF connector & what looks like an audio connector similar to those found on a cdrom, but this connector does not accept audio in like the SPDIF, it's for something else.

    I am currently using the DVI connector from the GPU --> HDMI in on the switch. I a working on dressing the cables, and my research indicates the best way to get audio out of this box is from the USB SPDIF --> spdif in on the Quadro ---> Display port out ---> HDMI in on the switch.

    To enable passthrough of the GPU, the onboard graphics, deep render, deep render standby, & onboard HDAUDIO must be disabled. Therefore to have sound from the various VM's, we need some other sound device that can be passed through to the VM. SInce all USB's are passed through, we can use a usb sound card with SPDIF.. The other option would be:

    1) more expensive Nvidia GPU with sound, which is certainly possible for some builds.

    2) Radeon GPU with sound, but nearly impossible to get Android up on

    3) Mini ITX board with additional mini PCIE, like the WiFi version of the spec board. Then a mini-pcie sound card with SPDIF. - IF the board supports a not WiFi card in this slot.

    The USB->SPDIF is $14, so this is the solution for now.....We'll have to see what it sounds like.....

  • Invited to be an Exhibitor at TheGameCon2015

    eric03/26/2015 at 20:57 0 comments

    Working on the arrangements to make this happen. This would be the ideal place to show the system and interface with actual end users. I already follow the SteamUniverse discussion boards to best address the concerns and questions that arise there, but nothing beats the feedback form an actual Gamer using the system.

    The event fortuitously takes place on August 7-9, so my 3 prototypes will be put through the wringer there before being shipped off to Hackaday (or specifically Supplyframe) by the 17th.

    Check out http://thegamecon.com. Even better, if you can be in Galveston on Aug 8-9 come and play some games.....

View all 11 project logs

  • 1
    Step 1

    1) Gather the parts

    Start with just enough to enable & test PCI Passthrough.

    So you need :

    VTD capable system board (Mini-ITX for the Game Console version)

    I am currently using an Asrock H77M-ITX, which is hard to find now. The H81M-ITX/WiFi should work, as I have verified in the manual. I have been sticking with Asrock, they seem to reliably support VTD. The option is under "Chipset Configuration" in the bios, according to the manual here:

    ftp://66.226.78.21/manual/H81M-ITXWiFi.pdf

    The other thing to verify is that the GB Lan is supported (or has a workaround) by ESXi

    The H81M-ITX/WiFi uses the RTL8111 which is NOT officially supported, but there is a workaround. If you intend to use another board, check the Lan interface and Google like this:

    RTL8111 ESXi Vib

    to verify a viable workaround, if it's not natively supported. VMware seems to adjust the list of natively supported NIC's to include a smaller set with each revision. So, you can use the driver from 5.0 in 5.5, etc. Intel NIC's are the most commonly supported, since this is a Datacenter product.

    VTD capable Processor

    If you use the Asrock board, check the "CPU Support List" and pick at least an i5.

    Like the i5-4440 I have listed, just put i5-4440 in Google and pick the Intel ARK link:

    Intel ARK i5-4440

    And you see "Intel® Virtualization Technology for Directed I/O (VT-d) " under "Advanced Technologies" and "yes" in the right column.

    Video Card - You can use an ATI Radeon as low as an HD-4650 for testing. I'm using an Nvidia Quadro FX3800, but I do have some HD 4650's and 6450's since I know they work. I was initially unsure of the Quadro. It helps to have a known working Mobo/Proc combo and known good GPU.

    Obviously, some RAM (8GB), PSU, etc. Have another system nearby to run the VSphere client. A hard drive of at least 250GB for VM storage. You can install the Hypervisor to a USB stick of 2GB+, but it will boot slow from that. I am using a 2GB SSD. You don't need this, but it allows you to switch to bigger storage without re-installing the Hypervisor.

    Download the VMware VSphere Hypervisor. I am using 6.0, which is still BETA.

    I am using this because 5.1 and 5.5 have issues with USB passthrough & autostarting VM's. I would also like to be using the latest, rather than dropping back to 5.0.

    6.0 does not have these issues, but you may not be able to get it yet unless you participate in the BETA. And I can't provide it here. SO if you can't get 6.0, get 5.0. You will be limited to 32GB of RAM with 5.0........

    The Download will be an ISO, burn a cd from the bootable image. Have some extra blank cd's just in case.....

    So you should have a VTD capable Mobo/Proc/GPU, a destination for your VM's & Hypervisor, and VSphere Hypervisor on CD and ISO.

    You also should have a cd drive of some kind. A USB CDROM is what I used

  • 2
    Step 2

    2) Install VSphere Hypervisor

    You may run into some trouble here......So you need to use a tool to inject the RTL8111 (or whatever) driver into your ISO. Get the "ESX Customizer" here:

    http://vibsdepot.v-front.de/tools/ESXi-Customizer-v2.7.2.exe

    And get the Vib for your NIC such as:

    https://tinkertry.com/files/VMware_bootbank_net-r8168_8.013.00-3vmw.510.0.0.799733.vib

    http://www.createinnova.com/Shares/net51-drivers-1.0.0-1vft.510.0.0.799733.x86_64.vib

    and run the customizer:

    And your new ISO with the NIC driver will be in the working directory you set.

    Burn the CD and boot from it. Aim the install at the 2GB SSD (if you have one, if not the HDD is ok). The install is pretty self explanatory, just follow the steps and reboot like it says when you're done. It will require you set a password, don't go crazy here since it's a GAME machine after all. Install takes maybe 15 min.

    When it comes back up, press f2 and set a STATIC IP on your local NET (like 192.168.1.xx).

  • 3
    Step 3

    3) Set UP PCI-Passthrough

    Reboot to the BIOS and set these items:

    Onboard GPU must be OFF so disable:

    IGPU Multi-Monitor

    Render Standby

    Deep Render Standby

    For some reason the HDAUDIO must also be disabled

    Set primary GPU to PCIE

    Enable VTD

    On your other PC go to the IP of your ESXi box in a browser and you will get this:

    If you are using ESXi 5.5 or above, you will need Win7 or higher. There is a workaround for XP, but it's beyond the scope of these instructions.

    Install and aim it at your static IP, login with root & the password you set.

View all 6 instructions

Enjoy this project?

Share

Discussions

johnthrow wrote 10/19/2015 at 14:34 point

I can't seem to reply so I'll post at top. Thanks for the info. Maybe I'll pick up an FX5200 on ebay then. I had tried with a matrox g450 and an old ATI Radeon 9550 or something like that and I could never get the drivers to work properly. I couldn't get a newer 7200gs pci-e to work either but I had hoped PCI devices but I hadn't personally had much luck.

  Are you sure? yes | no

Earl wrote 09/03/2015 at 16:15 point

sdjackieXD to you have something like this working on KVM? if so you have build info?

  Are you sure? yes | no

eric wrote 07/09/2015 at 16:08 point

Thanks for the Skull!, 

I've read that, I may have mentioned that in my other project which uses a Geforce FX5200 (this works because it's PCI).  I still had my fingers crossed when ordering this Quadro, I find that the only way to really tell is to try,,,,,,

I did try some non-Quadro cards I had laying around and they were no-go.  But  I dug a little bit into how ESXi sees the card, as well as with the Quadro.  They all seem to behave differently, mostly how the GPU memory is handled by ESXi.  AMD cards seem to work the best, but a 4650 is named as such, while a 6450 shows up as "unknown". The Quadro does some funny stuff too - The Android VM only plays out the Quadro when it's the first VM booted. Win7, Win10, and SteamOS all work after.  So if I want to run Android again I have to reboot the box. 
There are some low level PCIe settings from the ESXi command line that I played with, and I could make it worse, but not better. 

All this leads me to believe some workaround may be possible, but the price for older Quadro's is falling faster than I can hack. 

  Are you sure? yes | no

XDjackieXD wrote 07/10/2015 at 10:59 point

You can mod most normal nvidia cards into quadros... (eevblog forum has a big thread about it).

The problem with nvidia cards is, that any non-quadro driver refuses to work if it detects that it is running inside a VM (with KVM the workaround is to make the vm believe that it's a real host which disables every VM optimization of Windows. the other workaround is to mod the nvidia cards so that you can use the quadro driver).

I have no idea if there are other limitations to nvidia cards with ESXi as I don't have a system with ESXi that supports VT-d but with KVM my old GeForce 210 works perfectly (I haven't tried any other card yet).

  Are you sure? yes | no

eric wrote 07/10/2015 at 13:18 point

I have those bookmarked, I haven't tried it yet. If it only depends on being identified as a Quardo, then it should work. So far every card I have working seems to be handled differently by ESXi. (this is probably why it's "unsupported")

  Are you sure? yes | no

johnthrow wrote 10/19/2015 at 13:20 point

Hi Eric,

Great project very interesting stuff.

You mention having a FX5200 working in passthrough. I haven't had much luck getting any PCI video card working (except I got an old voodoo (mostly) working surprisingly). How are you running that card? What drivers? Its an old card but I have an interesting in building a "classic" gaming VM with XP and that card is easy to find and would be a good candidate for older games.

Thanks

  Are you sure? yes | no

eric wrote 10/19/2015 at 14:14 point

I'm just using the Nvidia drivers.  On the other system, not this one.  When you pass PCI devices they ALL go to the VM. So I'm passing the FX5200 & a PCI USB card.  

  Are you sure? yes | no

XDjackieXD wrote 07/09/2015 at 13:27 point

You explained all the little problems and workarounds with PCIe passthrough very well. 

It is probably worth mentioning that this won't work with non-quadro nvidia cards as the normal nvidia drivers will not install inside a ESXI VM (they have really bad "bugs" which make them unusable when they detects a that they run inside a VM... :P).

Although I would like to build something like this I currently have to stick to my PC + KVM (with PCIe passthrough ^^) because I don't have the money for a second PC.

Very nice project though! *gives a skull*

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates