elgato-gchd icon indicating copy to clipboard operation
elgato-gchd copied to clipboard

Beta testing dev branch

Open tolga9009 opened this issue 8 years ago • 18 comments

Hi there!

I need everyone to test out latest dev branch on your GCHD1 (0x0044, 0x004e and 0x0051), aswell as on your GCHD2 (0x005d) devices. We've made major progress, thanks to the patch series by Scott Dossey aka @seveirein! Thanks Scott!

There is now support for 0x005d devices, aswell as for auto-detecting input source, auto-detecting colorspace and much more!

Please always use the latest dev branch available when testing. You can report your issues here or in the freshly created Wiki page: https://github.com/tolga9009/elgato-gchd/wiki/dev-branch---known-issues

Make sure to check the Wiki page for duplicate bug reports, before posting them.

We're thankful for everyone, who's able to help us with this! Thanks!

Cheers, Tolga

tolga9009 avatar Oct 16 '16 12:10 tolga9009

I just tried this newest version with my 0x005d, and it worked! I already notified @seveirein that the colorspace wasn't auto-detected for me, but that seems to be about it. I'm now going to try a few different configurations, to see if they hold up as well!

CodePanter avatar Oct 16 '16 12:10 CodePanter

What tests do you want to perform? Or just test it?

I'm just returning from vacations, I'll report later mi findings...

Criptos avatar Oct 18 '16 14:10 Criptos

@Criptos just general testing, using it in your environment with the advertised features, like auto-detecting source, auto-detecting resolution, auto-detecting colorspace, etc. We just want to make sure, it runs with all available Elgato GCHD revisions and all implemented features.

Thanks for helping!

tolga9009 avatar Oct 18 '16 17:10 tolga9009

Do I need to make the steps for the firmware?

because on my first try I got: Device not supported...

EDIT: Did the driver thing... there are 2 directories, beddo y beddo3, I used beddo. When trying to open with vlc
This revision of the Elgato Game Capture HD is currently not supported.

Version confirmed: Bus 001 Device 011: ID 0fd9:005d Elgato Systems GmbH Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x0fd9 Elgato Systems GmbH idProduct 0x005d bcdDevice 2.00 iManufacturer 1 Elgato iProduct 2 GameCapture HD iSerial 3 080F39A944 bNumConfigurations 1

Strace shows: strace -eopen gchd open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libusb-1.0.so.0", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libudev.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3 open("/proc/filesystems", O_RDONLY) = 3 FIFO: /tmp/gchd.ts has been created. Waiting for user to open it. open("/tmp/gchd.ts", O_WRONLYOct 18 17:00:37 strix.aullox.com kwin_x11[1758]: QXcbConnection: XCB error: 3 (BadWindow), sequence: 60101, resource id: 33866479, major code: 10 (UnmapWindow), minor code: 0 Oct 18 17:00:37 strix.aullox.com kwin_x11[1758]: QXcbConnection: XCB error: 3 (BadWindow), sequence: 60106, resource id: 33866479, major code: 4 (DestroyWindow), minor code: 0 ) = 3 open("/dev/bus/usb", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4 open("/etc/udev/udev.conf", O_RDONLY|O_CLOEXEC) = 4 open("/sys/bus", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 7 open("/sys/bus/usb/devices/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 8 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/c189:1", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/c189:2", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/c189:10", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/c189:5", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/c189:0", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb2/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/c189:128", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-0:1.0", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-4:1.0", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.1/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-4:1.1", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-5:1.0", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.1/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-5:1.1", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.2/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-5:1.2", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-6:1.0", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-9:1.0", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.1/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:1-9:1.1", O_RDONLY|O_CLOEXEC) = 9 open("/sys/devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0/uevent", O_RDONLY|O_CLOEXEC) = 9 open("/run/udev/data/+usb:2-0:1.0", O_RDONLY|O_CLOEXEC) = 9 open("/sys/class", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 7 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/uevent", O_RDONLY|O_CLOEXEC) = 7 open("/sys/bus/usb/devices/usb1/busnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/usb1/devnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/usb1/speed", O_RDONLY) = 7 open("/sys/bus/usb/devices/usb1/descriptors", O_RDONLY) = 7 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/uevent", O_RDONLY|O_CLOEXEC) = 7 open("/sys/bus/usb/devices/1-4/busnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-4/devnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-4/speed", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-4/descriptors", O_RDONLY) = 7 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/uevent", O_RDONLY|O_CLOEXEC) = 7 open("/sys/bus/usb/devices/1-5/busnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-5/devnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-5/speed", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-5/descriptors", O_RDONLY) = 7 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/uevent", O_RDONLY|O_CLOEXEC) = 7 open("/sys/bus/usb/devices/1-6/busnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-6/devnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-6/speed", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-6/descriptors", O_RDONLY) = 7 open("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-9/uevent", O_RDONLY|O_CLOEXEC) = 7 open("/sys/bus/usb/devices/1-9/busnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-9/devnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-9/speed", O_RDONLY) = 7 open("/sys/bus/usb/devices/1-9/descriptors", O_RDONLY) = 7 open("/sys/devices/pci0000:00/0000:00:14.0/usb2/uevent", O_RDONLY|O_CLOEXEC) = 7 open("/sys/bus/usb/devices/usb2/busnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/usb2/devnum", O_RDONLY) = 7 open("/sys/bus/usb/devices/usb2/speed", O_RDONLY) = 7 open("/sys/bus/usb/devices/usb2/descriptors", O_RDONLY) = 7 open("/dev/bus/usb/001/011", O_RDWR) = 10 This revision of the Elgato Game Capture HD is currently not supported.

Criptos avatar Oct 18 '16 18:10 Criptos

Criptos, you are using the main branch, not the dev branch. Only the dev branch supports your device. git checkout dev And then a rebuild should fix your problem.

seveirein avatar Oct 19 '16 13:10 seveirein

No video in my setup... Waiting for user to open it.

Initializing device. Hardware revision is V1300230

and vlc shows blackscreen and OBS doesn't react...

Second try: [root@strix ~]# gchd
FIFO: /tmp/gchd.ts has been created. Waiting for user to open it. Initializing device. Hardware revision is V1300230 No signal found. Defaulting to HDMI. HDMI input forced. terminate called after throwing an instance of 'std::runtime_error' what(): Failure changing states. Aborted (core dumped) [root@strix ~]# gchd
FIFO: /tmp/gchd.ts has been created. Waiting for user to open it. Initializing device. Hardware revision is V1300230

I'm using a Vixia HFG20 camera, hdmi is enabled and it works. Tried with the HDMI output of a sony camera, didn't work neither.

Now, an Innocent question... Do I need to connect something to the HDMI Output? I'm just using the HDMI Input and the USB.... and nothing at the HDMI output...

Criptos avatar Oct 20 '16 06:10 Criptos

@Criptos No, the output shouldn't be necessary, I also have an Elgato 005d, and never connect anything to the HDMI out, I only ever use the HDMI in.

CodePanter avatar Oct 20 '16 07:10 CodePanter

Well, then.... isn't working for me... and I don't know why... Do i need to copy the udev rule file to the rules directory? Or the driver works fine without it?

Criptos avatar Oct 20 '16 15:10 Criptos

@Criptos Thank you for the test Criptos! Not sure what is causing your issue, but you shouldn't need the udev rule file if running gchd as root (which you are). For the time being, be sure to reset the device by unplugging and replugging the USB cable back in between runs, when testing. The next step to figuring out your issue would be to do a Wireshark USB capture. See https://github.com/tolga9009/elgato-gchd/wiki/USB-Wireshark-Capturing-on-Linux for how to do that.

seveirein avatar Oct 20 '16 16:10 seveirein

Reporting back, did a git pull, rebuild everything and el gato is working...

Do you still need the usb capturing? It worked ok, I'm using a cheap "go pro" style camera... it worked fine...

I'll do other testings with other cameras later...

Criptos avatar Oct 25 '16 18:10 Criptos

Thanks Criptos, glad it is working for you. Very happy to hear that.

seveirein avatar Oct 25 '16 23:10 seveirein

Ir seems is a video camera related issue.

Stream from the action camera worked, but stream from the vixia results in a black screen.

I'll try another camera later.

Criptos avatar Oct 26 '16 02:10 Criptos

Your video camera probably outputs a mode we don't yet support. Currently we support for HDMI 1080p@60hz, 1080i@60hz, 720p@60hz, 576p@50hz, 480p@60hz. For Component we support 1080p@30hz, 1080i@60hz, 720p@60hz, 576p@50hz, 576i@50hz, 480p@60hz, 480i@60hz. For Composite we support 576i@50hz and 480i@60hz.. This covers the vast majority of sources, except , in particular, cameras. They often have a lot of output modes that are a different refresh/frame rates. If you give us a capture, and tell us what the mode is, we may be able to add support.

seveirein avatar Oct 27 '16 12:10 seveirein

Hi, in my case gchd starts recording, but stops recording after some minutes. gchd itself stil runs at this moment, but stops writing data into fifo/file. Mostly between four and ten minutes are possible to record. Has anyone similar problems?

I'm using Elgato GCHD (0051) under Arch Linux (4.8.4-1 x86_64) with Elgato firmware 2.0.3.

ralfdonald avatar Nov 06 '16 19:11 ralfdonald

@ralfdonald this is a sync issue, where FIFO reader and / or writer are taking to long. This often happens on weak computers, like dual core systems and ultra low power devices. One way to fix it, is setting thread priority higher (for both, gchd and your reading app, e.g. OBS).

Nevertheless, we're trying to find a way to fix these kind of issues in code (like resyncing in such situations).

tolga9009 avatar Nov 08 '16 16:11 tolga9009

@tolga9009 Problem fixed by using two systems, one 2008 core2duo notebook for recording and my gaming system for playing. What can make more trouble, a slow cpu or a slow harddisk? Cause i'm using 840 pro ssds on every system and it seems that the multiple handling of permanent fifo>file and playing a game is to much for dualcores. Maybe you write a minimum of required hardware into the wiki.

ralfdonald avatar Nov 15 '16 17:11 ralfdonald

@ralfdonald usually a slow harddisk shouldn't make any problems. We have a couple of exports, I want to talk about:

  1. FIFO is done entirely on RAM. So, it doesn't wear off any SSD and doesn't fill any HDD, while you're streaming. This is the recommended output format, when you're streaming. FIFO on it's own, doesn't need a power CPU, nor does it need a fast SSD. However, FIFO won't cut anything on its own and you probably need applications like VLC or OBS, to actually make use of the FIFO. And this is the point, where you will need a performant system. E.g. slow systems, like DualCore 1.7GHz systems tend to have integrated graphics and therefore are not able to live-preview and encode 1080p30 streams.
  2. Disk is writing directly to your disk, without live-preview or encoding. It's just reading packets from USB and writing them to disk, without the need to transcode / encode / re-encode anything. Everything is already done on the Elgato and therefore this is a very lightweight task and can be done on very weak systems. This is the recommended method, if you're looking for a way to record your gameplay to your HDD. However, you will have no live-preview using this method. I've seen an i3-4010U (2x 1.7GHz, no Turbo) doing this fine with 720p60. Record-to-HDD without live-preview can probably be done even on lower-end systems, as it's just reading USB and writing to HDD at around 10MB/s - 20MB/s.

To sum this up: minimum required hardware for FIFO is pretty much on par with the system requirements for official Elgato software on Windows. This means: 2nd Gen i5 or i7 or better for desktops.

For Disk without live-preview, the lowest minimum specs we've successfully tested so far, is an Intel i3-4010U. But you can probably go lower.

tolga9009 avatar Nov 19 '16 13:11 tolga9009

@tolga9009 thank you for your detailed explanation of the two possibilities an your experiences with them. For Disk i am using an intel core2duo T5750 (2x 2,0GHz), which is recording 1080p30 without problems. So my gaming cpu (intel pentium G3420 2x3,2GHz) is not usable for playing and recording at the same time.

ralfdonald avatar Dec 04 '16 20:12 ralfdonald