USB 3 UVC capture devices

Elgato Cam Link 4K

(by https://twitter.com/GregDavill)

https://www.elgato.com/de/gaming/cam-link-4k

https://help.elgato.com/hc/en-us/articles/360027963272-Cam-Link-4K-Technical-Specifications

https://wiki.apertus.org/index.php/Elgato_CAM_LINK_4K

Input: HDMI (unencrypted)
Output: USB3 UVC profile
Note: For some reasons at least on linux with chrome / firefox a wrong color profile is selected if used in WebRTC chats. Possible workaround is video4linux loopback device

Supported Resolutions:

480p (720 by 480 resolution, up to 60 fps) NTSC

576p (720 by 576 resolution, up to 50 fps) PAL

720p (1280 by 720 resolution, up to 60 fps)

1080i (1920 by 1080 resolution, interlaced, up to 60 fps)

1080p (1920 by 1080 resolution, up to 60 fps)

2160p (3840 by 2160 resolution, up to 30 fps)

dmesg

[49988.036656] usb 4-1: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
[49988.062295] usb 4-1: LPM exit latency is zeroed, disabling LPM.
[49988.064518] usb 4-1: New USB device found, idVendor=0fd9, idProduct=0066, bcdDevice= 0.00
[49988.064523] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[49988.064526] usb 4-1: Product: Cam Link 4K
[49988.064528] usb 4-1: Manufacturer: Elgato
[49988.064531] usb 4-1: SerialNumber: 00025XXXXXXX
[49988.128832] mc: Linux media interface: v0.10
[49988.149883] videodev: Linux video capture interface: v2.00
[49988.153738] hidraw: raw HID events driver (C) Jiri Kosina
[49988.167268] usbcore: registered new interface driver usbhid
[49988.167270] usbhid: USB HID core driver
[49988.379429] usbcore: registered new interface driver snd-usb-audio
[49988.383797] uvcvideo: Found UVC 1.10 device Cam Link 4K (0fd9:0066)
[49988.394238] uvcvideo 4-1:1.0: Entity type for entity Processing 2 was not initialized!
[49988.394241] uvcvideo 4-1:1.0: Entity type for entity Input 1 was not initialized!
[49988.394602] input: Cam Link 4K: Cam Link 4K as /devices/pci0000:00/0000:00:1c.5/0000:06:00.0/usb4/4-1/4-1:1.0/input/input16
[49988.395544] usbcore: registered new interface driver uvcvideo
[49988.395545] USB Video Class driver (1.1.1)
[49988.432759] hid-generic 0003:0FD9:0066.0001: hiddev0,hidraw0: USB HID v1.01 Device [Elgato Cam Link 4K] on usb-0000:06:00.0-1/input2

ffprobe

ffprobe /dev/video0

Duration: N/A, start: 0.000000, bitrate: 2985984 kb/s

Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 3840x2160, 2985984 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc

(Lindy/Generic) HDMI to USB 3.1 Video Capture Device

Relatively cheap ~85€

MJPEG Output over USB2.0 (tested with 1920×1080 at 60fps)

rawvideo/yuyv422 over USB3.0 (also tested with 1920×1080 at 60fps)

Linux Supported

Audio / Video separate USB functions, sync could be problematic

On recent Kernel versions there seems to be an issue

[ 2673.261012] uvcvideo: Found UVC 1.00 device HDMI to U3 capture (1e4e:701f)
[ 2673.273403] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
[ 2673.273850] uvcvideo 2-4.3:1.0: Entity type for entity Extension 4 was not initialized!
[ 2673.273856] uvcvideo 2-4.3:1.0: Entity type for entity Processing 3 was not initialized!
[ 2673.273862] uvcvideo 2-4.3:1.0: Entity type for entity Camera 1 was not initialized!
[ 2950.990076] usbcore: deregistering interface driver uvcvideo

a work arround for this is to load the kernel module with a special option

rmmod uvcvideo
modprobe uvcvideo quirks=0x100 trace=1

resulting in:

[ 2962.608502] uvcvideo: Probing generic UVC device 4.3
[ 2962.608732] uvcvideo: Found UVC 1.00 device HDMI to U3 capture (1e4e:701f)
[ 2962.608734] uvcvideo: Forcing device quirks to 0x100 by module parameter for testing purpose.
[ 2962.608735] uvcvideo: Please report required quirks to the linux-uvc-devel mailing list.
[ 2962.608742] uvcvideo: Scanning UVC chain: OT 2 <- XU 4 <- PU 3 <- IT 1
[ 2962.608750] uvcvideo: Found a valid video chain (1 -> 2).
[ 2962.694501] uvcvideo 2-4.3:1.0: Entity type for entity Extension 4 was not initialized!
[ 2962.694509] uvcvideo 2-4.3:1.0: Entity type for entity Processing 3 was not initialized!
[ 2962.694513] uvcvideo 2-4.3:1.0: Entity type for entity Camera 1 was not initialized!
[ 2962.694621] uvcvideo: UVC device initialized.

dmesg / lsusb / uvcdynctrl

[131873.503147] usb 2-1: new SuperSpeed USB device number 10 using xhci_hcd
[131873.522458] usb 2-1: New USB device found, idVendor=1e4e, idProduct=701f
[131873.522469] usb 2-1: New USB device strings: Mfr=6, Product=7, SerialNumber=3
[131873.522477] usb 2-1: Product: HDMI to U3 capture
[131873.522484] usb 2-1: Manufacturer: Video Grabber
[131873.522492] usb 2-1: SerialNumber: 20000130041415
[131873.527655] uvcvideo: Found UVC 1.00 device HDMI to U3 capture (1e4e:701f)
[131873.613870] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
[131873.614480] uvcvideo 2-1:1.0: Entity type for entity Extension 4 was not initialized!
[131873.614492] uvcvideo 2-1:1.0: Entity type for entity Processing 3 was not initialized!
[131873.614501] uvcvideo 2-1:1.0: Entity type for entity Camera 1 was not initialized!
[131873.614514] media: could not get a free minor

Bus 002 Device 011: ID 1e4e:701f Cubeternet

Listing available devices:
video0 HDMI to U3 capture: USB Video D
Media controller device: /dev/media0
Entity 1: HDMI to U3 capture: USB Video D. Type: 65537, Revision: 0, Flags: 1, Group-id: 0, Pads: 1, Links: 0
Device node
Entity: 1, Pad 0, Flags: 1

Pictures

Capture Quality

Left: Capture over USB2.0, Middle: Capture over USB3.0, Right: Screenshot of source material

HD Video 1080PFPS

Relatively cheap ~65€

HDMI pass through

MJPEG Output over USB2.0 (tested with 1920×1080 at 60fps)

rawvideo/yuyv422 over USB3.0 (also tested with 1920×1080 at 60fps)

Linux Supported

Audio / Video separate USB functions, sync could be problematic

dmesg / lsusb

(no HDMI input connected)

[129685.403946] usb 4-2.1: new SuperSpeed Gen 1 USB device number 15 using xhci_hcd
[129685.432736] usb 4-2.1: New USB device found, idVendor=1e4e, idProduct=7016, bcdDevice= 1.00
[129685.432744] usb 4-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=3
[129685.432749] usb 4-2.1: SerialNumber: 20000130041415
[129685.433705] uvcvideo: Found UVC 1.00 device <unnamed> (1e4e:7016)
[129685.514256] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
[129685.515346] uvcvideo 4-2.1:1.0: Entity type for entity Extension 4 was not initialized!
[129685.515351] uvcvideo 4-2.1:1.0: Entity type for entity Processing 3 was not initialized!
[129685.515354] uvcvideo 4-2.1:1.0: Entity type for entity Camera 1 was not initialized!
[129687.484255] usb 4-2.1: USB disconnect, device number 15
[129687.484936] usb 4-2.1: cannot submit urb (err = -19)
[129688.143966] usb 4-2.1: new SuperSpeed Gen 1 USB device number 16 using xhci_hcd
[129688.172442] usb 4-2.1: New USB device found, idVendor=1e4e, idProduct=7016, bcdDevice= 1.00
[129688.172450] usb 4-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=3
[129688.172455] usb 4-2.1: SerialNumber: 20000130041415
[129688.173255] uvcvideo: Found UVC 1.00 device <unnamed> (1e4e:7016)
[129688.188017] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
[129688.189063] uvcvideo 4-2.1:1.0: Entity type for entity Extension 4 was not initialized!
[129688.189067] uvcvideo 4-2.1:1.0: Entity type for entity Processing 3 was not initialized!
[129688.189071] uvcvideo 4-2.1:1.0: Entity type for entity Camera 1 was not initialized!

lsusb

Bus 004 Device 017: ID 1e4e:7016 Cubeternet

Pictures

August VGB500

1080p60 YUYV 4:2:2

https://www.augustint.com/en/productmsg-90-341.html

dmesg on 5.4

[ 9996.758480] usb 2-4.3: new SuperSpeed Gen 1 USB device number 10 using xhci_hcd
[ 9996.784467] usb 2-4.3: New USB device found, idVendor=1bcf, idProduct=2c99, bcdDevice= 2.00
[ 9996.784473] usb 2-4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 9996.784476] usb 2-4.3: Product: FHD Capture
[ 9996.784479] usb 2-4.3: Manufacturer: VXIS Inc
[ 9996.793423] uvcvideo: Found UVC 1.00 device FHD Capture (1bcf:2c99)
[ 9996.796572] usb 2-4.3: Disable of device-initiated U1 failed.
[ 9996.797122] usb 2-4.3: Disable of device-initiated U2 failed.
[ 9996.806761] uvcvideo 2-4.3:1.0: Entity type for entity Extension 4 was not initialized!
[ 9996.806766] uvcvideo 2-4.3:1.0: Entity type for entity Extension 3 was not initialized!
[ 9996.806769] uvcvideo 2-4.3:1.0: Entity type for entity Processing 2 was not initialized!
[ 9996.806772] uvcvideo 2-4.3:1.0: Entity type for entity Camera 1 was not initialized!
[ 9996.807094] input: FHD Capture: FHD Capture as /devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4.3/2-4.3:1.0/input/input31
[ 9996.809587] usb 2-4.3: Disable of device-initiated U1 failed.
[ 9996.809914] usb 2-4.3: Disable of device-initiated U2 failed.
[ 9996.813223] usb 2-4.3: 3:1: cannot get freq at ep 0x86
[ 9996.813481] usb 2-4.3: Disable of device-initiated U1 failed.

lsusb

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

v4l2-ctl --all

Driver Info:
Driver name : uvcvideo
Card type : FHD Capture: FHD Capture
Bus info : usb-0000:00:14.0-4.3
Driver version : 5.4.30
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 1920/1080
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 3840
Size Image : 4147200
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Limited Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 1920, Height 1080
Default : Left 0, Top 0, Width 1920, Height 1080
Pixel Aspect: 1/1
Selection Video Capture: crop_default, Left 0, Top 0, Width 1920, Height 1080, Flags:
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1920, Height 1080, Flags:
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 60.000 (60/1)
Read buffers : 0
brightness 0x00980900 (int) : min=0 max=255 step=1 default=128 value=137
contrast 0x00980901 (int) : min=0 max=255 step=1 default=128 value=128
saturation 0x00980902 (int) : min=0 max=255 step=1 default=128 value=128
hue 0x00980903 (int) : min=-32 max=31 step=1 default=0 value=0