Skip to main content

supercamera

Python driver for USB endoscopes that use the supercamera / useeplus protocol — the cheap endoscopes sold under brands like Oasis, Depstech, and others that only work with the "UseeePlus" mobile app.

These devices don't implement standard UVC, so they won't show up as webcams. This package talks to them directly over USB and gives you JPEG frames or numpy arrays.

Supported devices

USB ID Device name Chip
2ce3:3828 supercamera (Geek szitman) Common
0329:2022 supercamera (variant) Common

Check yours with lsusb (Linux) or system_profiler SPUSBDataType (macOS).

Install

pip install supercamera

For OpenCV/numpy support (.read() returns numpy arrays):

pip install supercamera[opencv]

Usage

Python API

from supercamera import Camera

# Like cv2.VideoCapture
with Camera() as cam:
    ret, frame = cam.read()  # numpy array (BGR), requires opencv
    # or
    jpeg_bytes = cam.read_jpeg()  # raw JPEG, no extra deps

Multiple cameras

from supercamera import Camera, list_devices

list_devices()       # returns list of CameraInfo with bus/address
Camera(index=0)      # first camera
Camera(index=1)      # second camera

Note: these devices often share the same serial number, so use index or bus/address to distinguish them.

CLI

supercamera --list       # list connected cameras
supercamera              # capture one frame
supercamera -n 10        # capture 10 frames
supercamera -i 1         # use second camera
supercamera --show       # live view (requires opencv-python)

Frame validation

from supercamera import is_valid_jpeg
is_valid_jpeg(jpeg_bytes)  # True/False (uses Pillow full decode if available)

OpenCV pipeline example

import cv2
from supercamera import Camera

cam = Camera()
while True:
    ret, frame = cam.read()
    if not ret:
        continue
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow("endoscope", gray)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break
cam.release()

How it works

These endoscopes use a proprietary USB protocol (com.useeplus.protocol) instead of UVC. The driver:

  1. Claims USB interfaces, sends magic init (ff 55 ff 55 ee 10) and connect command (bb aa 05 00 00)
  2. Reads bulk USB packets containing JPEG-encoded 640x480 frames
  3. Properly resets the device on disconnect so it's ready for the next session

Resolution is 640x480 regardless of what the product listing claims.

Testing

Plug in one or both cameras, then:

python test_camera.py

Runs: device listing, single capture, 3x reconnect (no replug), OpenCV read, and two-camera simultaneous capture (if two connected).

Platform notes

  • macOS: Works out of the box. No kernel extensions needed.
  • Linux: Works. You may need a udev rule for non-root access:
    echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="2ce3", ATTR{idProduct}=="3828", MODE="0666"' | \
      sudo tee /etc/udev/rules.d/99-supercamera.rules
    sudo udevadm control --reload-rules
    
  • Windows: Should work with libusb + Zadig driver. Untested.

Credits

Protocol reverse-engineered by:

License

MIT

Metadata

Release files for supercamera 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for supercamera 0.1.0
File Size Uploaded Provenance
supercamera-0.1.0.tar.gz 9.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for supercamera 0.1.0
File Interpreter ABI Platform
supercamera-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.0 kB

Release files / supercamera-0.1.0.tar.gz

Download URL supercamera-0.1.0.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e916a78d0bc29737084a7703aa8bb545353e4f2512c08b584a17647604c18f4d
BLAKE2b-256 checksum
How to use checksums
627045de538bf8458629843c82a6e9831137b133cf3be946dfa2ea4ef50a88b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 6, 2026.

Transparency log

Release files / supercamera-0.1.0-py3-none-any.whl

Download URL supercamera-0.1.0-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
21156ede0db786f01f7bbf681732b36b74421a91e659641eee5219f8396cf4a0
BLAKE2b-256 checksum
How to use checksums
6cd94cd86d3f52d1645717ebd478c88c8f472ac14f24f8c8c7f46eaccab235a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 6, 2026.

Transparency log

Security for supercamera 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for supercamera-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page