Resource icon

Streaming on Linux using Elgato Game Capture HD and OBS Studio

Preliminary remarks:
  • The driver is unofficial, and alpha-quality software. Use at your own risk and do not expect that it will work with your device or setup. Bugs can be reported here.
  • The driver has been tested on several Linux distributions, including Arch, CentOS, and Fedora. The following guide is written with Ubuntu 17.04 in mind.
  • Currently, only the original Game Capture HD is supported. The HD60 and HD60 Pro are not supported (yet).
  • Do also check the driver's Github page for further information and/or updated instructions. There is also an official Gitter chat room for the driver. The latter is not intended to be a support forum, but you may be able to get some help from other users.
Preparation: installing dependencies and build tools
The very first step is to install the neccessary tools and dependencies for downloading, compiling, and running the driver. In Ubuntu, which is the OS this guide is written for, enter use the following command in a terminal:
Code:
sudo apt-get install git dmg2img hfsprogs libusb-dev clang make build-essential
(Some of these packages may already be installed on your system.)

Preparation - Part one: Downloading the driver from github
The second step is to download the driver from github. Do so by entering the following command in a terminal:
Code:
git clone https://github.com/tolga9009/elgato-gchd.git
This should download the driver files to a folder named "elgato-gchd" within your "Home" folder.

Preparation - Part two: Obtaining the Elgato firmware
The next step is a bit tricky, as it involved extracting the propriatary Elgato firmware from the official Mac driver. But if you follow the instructions carefully, it will be a quick and easy exercise.
  1. Download the Mac version of the official Elgato Game Capture HD driver, version 2.0.3. (direct link to the driver). To download it to your home folder using the command line, enter the following in the terminal:
    Code:
    wget http://files.elgato.com/gamecapture/gchdm_203_970.dmg
  2. Uncompress the downloaded Mac driver image by entering the following command in a terminal in the folder where the driver file is located:
    Code:
    dmg2img gchdm_203_970.dmg -o gchdm_203_970.dmg.img
  3. Mount the uncompressed image by entering the following commands:
    Code:
    mkdir /tmp/dmg
    sudo mount -o loop -t hfsplus gchdm_203_970.dmg.img /tmp/dmg
  4. Create a directory for the firmware (/usr/local/lib/firmware/gchd). You can do this by entering the following in the terminal:
    Code:
    sudo mkdir /usr/local/lib/firmware/gchd
  5. Copy the files named "mb86h57_h58_idle.bin", "mb86h57_h58_enc_h.bin", "mb86m01_assp_nsec_idle.bin", and "mb86m01_assp_nsec_enc_h.bin" from the folder "/tmp/dmg/Game Capture HD.app/Contents/Resources/Firmware/Beddo/" to the folder "/usr/local/lib/firmware/gchd". You can do this by entering the following in the terminal:
    Code:
    sudo cp /tmp/dmg/Game\ Capture\ HD.app/Contents/Resources/Firmware/Beddo/mb86h57_h58_idle.bin /usr/local/lib/firmware/gchd/
    sudo cp /tmp/dmg/Game\ Capture\ HD.app/Contents/Resources/Firmware/Beddo/mb86h57_h58_enc_h.bin /usr/local/lib/firmware/gchd/
    sudo cp /tmp/dmg/Game\ Capture\ HD.app/Contents/Resources/Firmware/Beddo/mb86m01_assp_nsec_idle.bin /usr/local/lib/firmware/gchd/
    sudo cp /tmp/dmg/Game\ Capture\ HD.app/Contents/Resources/Firmware/Beddo/mb86m01_assp_nsec_enc_h.bin /usr/local/lib/firmware/gchd/
  6. Open up the file manager and navigate to the folder tmp/dmg/Game Capture HD.app/Contents/Resources/Firmware/Beddo/
  7. Copy the files named "mb86h57_h58_idle.bin", "mb86h57_h58_enc_h.bin", "mb86m01_assp_nsec_idle.bin", and "mb86m01_assp_nsec_enc_h.bin" within this folder.
  8. Paste the four files into the empty "firmware" folder of the Linux driver that you downloaded in Part one. That folder should be located at $HOME/elgato-gchd/firmware/
Installation: Compiling the driver
Finally, with all the files in the right places, we are ready to compile the driver. This is done through the terminal.
  1. Navigate to the elgato-gchd folder:
    Code:
    cd elgato-gchd
  2. Create a directoy named "build" and navigate to it:
    Code:
    mkdir build
    cd build
  3. Run CMake from inside the build directory to setup the make environment and compile the driver (the space two dots after the "cmake" commande have to be included!):
    Code:
    cmake ..
    make
If this process completes without error the driver should be ready for use. If there is an error, that is likely because either (a) you did not install the dependencies and build tools or (b) you didn't extract the firmware from the Mac driver correctly.

Starting (and stopping) the driver
Before starting the driver you will first need to plug in your Elgato Game Capture HD. Then open a terminal and navigate to the folder where the driver executable is located:
Code:
cd elgato-gchd/build/src/

To start the driver, you must run the following command:
Code:
sudo ./gchd

PS: It is important that you leave this terminal open when the driver is running. If not, the driver will be terminated.

The driver should autodetect the signal received. If it does not, or if the colors are off, you might need to tell the driver what resolution and color mode you want to capture. Read the driver's README for more information about this (available on the driver's GitHub page)

The Video Output and How to Use It
When the driver is running, it streams the video captured to a FIFO pipe (a virtual file) which is located here:
Code:
/tmp/elgato-gchd.ts

Since this is a virtual file it will not grow. You need to use another piece of software to actually view, record or stream the captured video. For just viewing the video you can use VLC. To record or stream you can use OBS Studio.

Please note that the driver does not properly "kick in" before you open the /tmp/elgato-gchd.ts with an application. It may therefore take a few seconds from opening it until you actually see video output.

When you are done using the driver, close the /tmp/elgato-gchd.ts file. Then stop the terminal where the driver is running by pressing "Ctrl + C" on your keyboard. Please wait for the driver to successfully terminate. The driver is resetting your device, it may take a while (30 seconds). If you interrupt this step, it will leave your device in an undefined state and you will need to manually reset your device by reconnecting it.

Adding the Elgato Game Capture HD to OBS Studio on Linux
This final part of the guide will describe how you can add the driver's output to OBS Studio, so that you can stream and/or capture it.
  1. Install obs-studio (if you don't already have it) by entering the following commands into a terminal:
    Code:
    sudo add-apt-repository ppa:obsproject/obs-studio
    sudo apt-get update && sudo apt-get install obs-studio
  2. After the installation completes, open OBS.
  3. Click the "+"-button under the "Sources" list and choose "Media Source".
  4. Enter whatever name you'd like in the window that opens (for example: "Elgato") and click "OK".
  5. Check the "local file" checkbox (leave all other checkboxed unchecked), and clickl "Browse".
  6. Find and select the /tmp/elgato-gchd.ts file and click "Open", and then Ok. You should now be back to the OBS main screen and your video should be showing up in the preview window within a few seconds.
Troubleshooting/common issues:
  • If you experience problems, first try to stop the driver (if necessary by force closing the terminal window) and unplug your Elgato Game Capture HD from your computer. Then plug it back in to reset it, and restart the driver.
Further resources
Author
Oby
Views
54,655
First release
Last update
Rating
0.00 star(s) 0 ratings

Latest updates

  1. Fixed an error in the firmware installation part

    Fixed an error where two firmware files were not copied.
  2. Update to current driver

    I have more or less completely rewritten the guide to take into account the many changes in both...
Top