USB endoscope on Linux

It is in lsusb, dmesg may even say "No valid video chain found", and no video app sees it. One udev rule and Chrome fix that.

What is going on

The endoscope is a vendor-class USB device, not a UVC webcam, so the kernel's uvcvideo driver refuses it (that is the "No valid video chain found" line) and no /dev/video node appears. Cheese, guvcview, OBS and ffmpeg only look at /dev/video*, so they all report "no device". lsusb shows it as 2ce3:3828 (or 0329:2022).

Let your user open the device

Chrome needs permission to open the raw USB device. Add one udev rule:

sudo tee /etc/udev/rules.d/99-endoscope.rules <<'RULES'
SUBSYSTEM=="usb", ATTR{idVendor}=="2ce3", ATTR{idProduct}=="3828", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTR{idVendor}=="0329", ATTR{idProduct}=="2022", MODE="0666", TAG+="uaccess"
RULES
sudo udevadm control --reload && sudo udevadm trigger

Then unplug and replug the camera.

Open the viewer

  1. Open the viewer in Chrome, Chromium or Edge (Firefox has no WebUSB).
  2. Press Connect camera and pick the device.

If Chrome shows the device but connecting fails with "unable to claim interface", the udev rule is not applied yet (check ls -l /dev/bus/usb/*/* for the device's permissions) or another program holds it.

Prefer a native tool?

There are open-source Python and libusb drivers for this protocol if you want the frames in your own scripts; search for "supercamera endoscope". The viewer here is the no-install route.

Try it

Open the viewer Chrome or Edge on a computer, or Chrome on Android. Nothing is uploaded.