Linux – Logitech Streamcam not offering all modes on Manjaro

linuxlogitech-webcamusbwebcam

I bought a Logitech Streamcam to get 1080p60 webcam input and I was used to webcams just working in Linux. It does work, but for uncompressed video, the best mode I can set is 1080p with all of 5 fps. I am not able to use the 1080p60 mode that this camera supports (it even says so above the lens). Even compressed MJPEG only goes to 30fps on 1920×1080. v4l2-ctl flat out refuses an attempt to set higher fps values and just falls back to 5fps.

dmesg says the following when I plug it in:

[  415.860457] usb 3-4: New USB device found, idVendor=046d, idProduct=0893, bcdDevice= 0.17
[  415.860460] usb 3-4: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[  415.860462] usb 3-4: Product: Logitech StreamCam
[  415.860463] usb 3-4: SerialNumber: 599D4A05
[  415.908735] uvcvideo: Found UVC 1.00 device Logitech StreamCam (046d:0893)
[  415.919323] uvcvideo 3-4:1.0: Entity type for entity Processing 3 was not initialized!
[  415.919326] uvcvideo 3-4:1.0: Entity type for entity Extension 14 was not initialized!
[  415.919327] uvcvideo 3-4:1.0: Entity type for entity Extension 6 was not initialized!
[  415.919329] uvcvideo 3-4:1.0: Entity type for entity Extension 8 was not initialized!
[  415.919330] uvcvideo 3-4:1.0: Entity type for entity Extension 9 was not initialized!
[  415.919332] uvcvideo 3-4:1.0: Entity type for entity Extension 10 was not initialized!
[  415.919333] uvcvideo 3-4:1.0: Entity type for entity Extension 11 was not initialized!
[  415.919334] uvcvideo 3-4:1.0: Entity type for entity Camera 1 was not initialized!
[  415.919400] input: Logitech StreamCam as /devices/pci0000:00/0000:00:01.2/0000:01:00.0/0000:02:08.0/0000:04:00.3/usb3/3-4/3-4:1.0/input/input19
[  415.942811] usb 3-4: current rate 16000 is different from the runtime rate 24000
[  415.958807] usb 3-4: current rate 16000 is different from the runtime rate 32000
[  415.974807] usb 3-4: current rate 16000 is different from the runtime rate 48000
[  415.997674] hid-generic 0003:046D:0893.0006: hiddev0,hidraw0: USB HID v1.11 Device [Logitech StreamCam] on usb-0000:04:00.3-4/input5
[  416.646810] usb 3-4: current rate 16000 is different from the runtime rate 48000
[  416.678806] usb 3-4: current rate 16000 is different from the runtime rate 48000
[  416.710805] usb 3-4: current rate 16000 is different from the runtime rate 48000

This is from v4l2-ctl:

ioctl: VIDIOC_ENUM_FMT
    Type: Video Capture

    [0]: 'YUYV' (YUYV 4:2:2)
        Size: Discrete 640x480
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 176x144
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 320x240
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 424x240
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 640x360
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 848x480
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 960x540
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 1280x720
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 1600x896
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 1920x1080
            Interval: Discrete 0.200s (5.000 fps)
    [1]: 'MJPG' (Motion-JPEG, compressed)
        Size: Discrete 640x480
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 176x144
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 320x240
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 424x240
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 640x360
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 848x480
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 960x540
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 1280x720
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 1600x896
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)
        Size: Discrete 1920x1080
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.042s (24.000 fps)
            Interval: Discrete 0.050s (20.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
            Interval: Discrete 0.100s (10.000 fps)
            Interval: Discrete 0.133s (7.500 fps)
            Interval: Discrete 0.200s (5.000 fps)

Finally, I have both /dev/video0 and /dev/video1 after plugging in the camera, but only video0 will work.

I don't think it's because it doesn't get recognized as USB3 and therefore not having enough bandwidth for uncompressed 1080p60, because inspecting it with lsusb -vvv I get this:

Bus 004 Device 003: ID 046d:0893 Logitech, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.20
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0         9
  idVendor           0x046d Logitech, Inc.
  idProduct          0x0893 
  bcdDevice            3.17
  iManufacturer           0 
  iProduct                2 Logitech StreamCam
[...]
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000e
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)

And finally, I'm using a recent 5.6 kernel:

$ uname -r
5.6.3-2-MANJARO

Best Answer

I guess my old answer was wrong. I recently bought the Logitech StreamCam myself and for me it works under Ubuntu 20.04 (kernel 5.4.0) on my Intel-based laptop. I get the same kernel messages as posted by @Anpan in the OP (see also my answer to @adam-przedniczek's question on AskUbuntu. Using guvcview I managed to record a video at 1920×1080@60fps (note, the Cheese doesn't record at 60fps, but that is probably because I can't set that option anywhere in its settings).

However, I get erratic behaviour (kernel oopses, the StreamCam disappearing from the USB bus, hanging guvcview) when I try to run the StreamCam at 1920×1080 (any frame rate) on my desktop PC that has an AMD B450 chipset and Ryzen 5 3600 CPU.

So maybe your problem is related to the USB controller you use. Do you have an Intel CPU or one from AMD? What is the USB controller to which you connect the StreamCam? On my Intel-based laptop it is:

$ sudo lspci -v -s 00:14.0|less
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21) (prog-if 30 [XHCI])
        Subsystem: Lenovo Sunrise Point-LP USB 3.0 xHCI Controller
        Flags: bus master, medium devsel, latency 0, IRQ 125
        Memory at 2fe1010000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [70] Power Management version 2
        Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
        Kernel driver in use: xhci_hcd

Old answer

I think this may have something to do with lack of full support for UVC (USB Video Class) v1.5 in Linux. The Wikipedia page for UVC says the following about Linux support:

Detection of UVC 1.5 devices was introduced in Linux kernel version 4.5, but support in the driver for UVC 1.5 specific features or specific UVC 1.5 devices was not added and MPEG-2 TS, H.264 and VP8 payloads are not supported yet. The result is that some UVC 1.5 devices that also support UVC 1.1 work correctly.

Your log info shows that the camera is detected as UVC v1.00. I guess the 60fps requires the MPEG-2 TS support.

Related Question