I recently switched from Windows to Pop OS on my daily driver desktop. I’m not new to Linux. I use Linux on the server side at work and this is the third time I’ve attempted to switch to Linux on my home desktop, but I ran into major issues I didn’t have the time to push through in my past attempts. I’m committing this time to doing what I need to remain on Linux this time around.
I ran into issues with my Elgato HD60 Pro, which doesn’t have Linux drivers. Some “open source” drivers (which really meant converting the proprietary Mac drivers for Linux use) were being developed on Github, but the project was abandoned before support for Elgato HD60 Pro was added.
I use the capture card for streaming from my Analogue Super Nt to Twitch and for taking the sound from that to my speaker/headset during gameplay.
I came up with hair-brained scheme to use PCIe passthrough to run the capture card in a Windows VM and use OBS’s NDI plugin to send the stream data from the VM to my main PC’s OBS.
I followed Wendell’s VFIO guide, enabled VT-d in my BIOS, enabled the intel_iommu kernel option, regenerated the initramfs image with the VFIO script to enable VFIO drivers for the capture card, and added the PCI device to the VM. I’ve run into the following problems:
From clicking the button to start the VM until I get visual confirmation that the VM is started takes 1 to 2 minutes, is this normal for PCI passthrough setups?
Upon shutdown of the VM, my host machine crashes.
Windows is able to see the card and install drivers, but has a “No Signal” indication at all times. I’ve tried keeping my Super Nt running before boot and restarting it while the capture software is running in the VM, but I’m never able to get video output in the capture software.
Any idea what I can try next? I’d rather not resort to dual-booting because I know how I am with that. I’ll end up not switching OSes and not learn how to overcome the problems I run across in Linux.
Don’t know if that is an option for you but I can confirm that the Elgato Camlink HD and 4K both work perfectly fine under linux. There must be a USB standard for that, I guess.
That’s definitely good to know. If it comes down to it, I may end up spending some money on a new capture device and selling this one off. I only bought the Elgato card 3 or 4 months ago, so I’d like to find a way to make it work. I’ve thought about digging up old hardware to run it as a separate streaming PC on bare metal, too.
I’d like to see how far I can take the PCI passthrough idea before I explore other possibilities.
Currently you would have a real problem getting one anyway. Webcams and streaming stuff are sold out everywhere for obvious reasons. But yeah, try to make it work in software is cheaper of course.
That’s a good point that I hadn’t considered… Worst case scenario, I’m sure I could put together some hardware and an old case for running it as a separate streaming machine on bare metal.
Many Elgato devices are “pass-through” - they don’t really do anything to the signal besides electrical connection conversion, and appear as a UVC (USB Video Class) device, similar to most class-compliant audio devices, game controllers, etc. So as long as there is software that can handle the data stream coming from UVC, it’s fine.
The HD60 Pro is not pass-through, it does H.264 hardware compression to the incoming video stream, and as a PCIe card, it needs a driver to connect to the OS. (The HD60 external device also does this – important to note that the HD60 S does not, even though they look similar.)
For UVC devices, they rely on the OS / software and the computer’s CPU / GPU to do any hardware compression, which is why they typically top out at 1080p; only newer CPUs or APUs would have the speed or hardware to handle 4K video.
(Source: just bought a used HD60 to connect a camcorder as a makeshift webcam for home office use…
Thanks for the response. That is all interesting info that I’ll keep in mind, but I think you misunderstand what I’m talking about. I want to pass the PCIe card into a Windows virtual machine using IOMMU. That’s what I mean by passthrough, not the AV signal.
Had that same idea. In another thread @FurryJackman (?) mentioned that passthrough does not work with these cards though for some reason. Maybe he can elaborate on that.
I think (might be wrong) the Elgato capture thing relies on a GPU being present for encoding, because the cards do not have a hardware encoder.
Most likely they represent themselves as a generic USB Video Class.
I’m very new to this, so please bear with me, but isn’t the “disable_idle_d3” option supposed to prevent it from going into D3 state? Is that option improperly applied? How can I verify that it is being applied to the card in Linux?
@trippsc2 If the fix “happens in hardware” also look at Magewell and AVIO. I have a Magewell 1080p HDMI to USB dongle and it works great everywhere. It also does more than the Elgato sticks so performance impact is gonna be minimal. AVIO was one of the first companies capable of 4k capture (at least for consumers). IIRC those also run on linux.