Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
5.5 KiB
type, date
| type | date |
|---|---|
| report | 2026-10-11 |
USB camera (IMX662, Sunplus UVC bridge)
First look at the camera on the car Orin: what it presents over USB, what it actually delivers, and what that means for recording and for the tablet link. Indoor bench measurements, camera pointing at a lit ceiling.
Short version
- A generic UVC webcam:
uvcvideoandsnd-usb-audiobind with no setup,/dev/video0(capture) and/dev/video1(metadata), plus a USB microphone. - MJPEG only at useful rates (up to 1920×1080 at 60 fps, nominally). Raw
YUYV is 5 fps at 1080p. No H.264 from the camera, and the Orin Nano has no
hardware video encoder (no NVENC; no
nvhost-*encdevice nodes). - The frame rate follows the light. With auto exposure indoors it gives 17–20 fps whatever was requested; with a fixed 10 ms exposure it gives 27.6 fps at 1080p30 and 55.9 fps at 720p60 (but a near-black image indoors).
- MJPEG is heavy: about 245 KB per 1080p frame and 113 KB per 720p frame, for this scene. At a full 30 fps that is ~7.3 MB/s and ~3.4 MB/s. A busier road scene will likely be larger.
- Software H.264 works: 1080p MJPEG →
jpegdec→x264encultrafast at 6 Mbit/s took 1.3 cores at 19 fps (≈ 2 cores at 30 fps, of 6);veryfasttook 2.4 cores. Output ~0.5 MB/s for this static scene.
Device
| Field | Value |
|---|---|
| USB ID | 1bcf:2d4f, Sunplus Innovation Technology, product "USB Camera 1080P" |
| Sensor | Sony IMX662 per the seller (1/2.8", STARVIS 2). Not visible over USB: the bridge identifies only itself |
| Speed | USB 2.0 high-speed (480 Mbit/s) |
| Topology | Bus 1, behind the carrier board's internal USB 2.0 hub, shared with the SIM7600 modem |
| Interfaces | UVC video (/dev/video0 capture, /dev/video1 metadata); UAC audio (ALSA card U1080P, capture only: S16_LE, 2 channels, 48 kHz) |
| Driver | In-tree uvcvideo, snd-usb-audio; nothing to build |
| Documentation | None beyond the seller's listing; everything here is from the device itself |
Formats
| Format | Sizes | Frame rates |
|---|---|---|
| MJPEG | 1920×1080, 1280×960, 1280×720, 960×536, 800×600, 640×480, 320×240 | 60, 30, 25, 20, 15, 10, 5 at every size |
| YUYV 4:2:2 | 1920×1080, 1280×960 | 5, 2 |
| 1280×720, 960×536 | 10, 5, 2 | |
| 800×600 | 20 and below | |
| 640×480 | 30 and below | |
| 320×240 | 60 and below |
Controls (v4l2-ctl -d /dev/video0 --list-ctrls-menus)
Brightness, contrast, saturation, hue, gamma, gain, sharpness, backlight compensation; white balance auto or 2800–6500 K; power-line frequency (currently 60 Hz, default 50 Hz: right for western Japan, flicker otherwise); auto exposure (aperture priority) or manual, exposure 1–10000 in 100 µs units; pan, tilt and zoom (digital).
UVC controls reset when the camera is replugged or re-enumerated: whatever captures from it should set them on open, not rely on the last session.
Measurements
Frame rate and MJPEG size
| Mode requested | Exposure | Delivered | MJPEG per frame | Rate |
|---|---|---|---|---|
| 1920×1080 @ 30 | auto | 17.5 fps | 243 KB | 4.35 MB/s |
| 1920×1080 @ 60 | auto | 19.6 fps | 252 KB | 5.05 MB/s |
| 1280×720 @ 30 | auto | 19.1 fps | 113 KB | 2.22 MB/s |
| 1280×720 @ 60 | auto | 19.6 fps | 113 KB | 2.28 MB/s |
| 1920×1080 @ 30 | fixed 10 ms | 27.6 fps | 61 KB (dark) | — |
| 1280×720 @ 60 | fixed 10 ms | 55.9 fps | 29 KB (dark) | — |
Frame size depends on the scene and the exposure: a dark frame compresses to a quarter of a lit one. Daylight in a car should allow full frame rate with auto exposure; at night the IMX662's low-light sensitivity is the reason to have it, and the frame rate will drop.
Software H.264 (1080p, 200 frames, camera-limited at ~19 fps)
v4l2src ! image/jpeg,1920x1080 ! jpegdec ! videoconvert ! x264enc tune=zerolatency bitrate=6000 key-int-max=60 ! h264parse ! matroskamux
speed-preset |
CPU (whole system, idle baseline 0.01) | Output |
|---|---|---|
| ultrafast | 1.29 cores at 18.8 fps | 5.2 MB per 10.6 s ≈ 0.49 MB/s |
| veryfast | 2.40 cores at 19.0 fps | 5.2 MB per 10.5 s ≈ 0.49 MB/s |
The hardware JPEG decoder (nvjpegdec) rejected the camera's frames (no valid
frames found). UVC MJPEG commonly omits the Huffman tables, which jpegdec
fills in and NVIDIA's decoder does not; not investigated further. The CPU
figures include software JPEG decoding.
What it means
| Use | Fits? |
|---|---|
Live view on the tablet (link: ~5 MB/s Orin → tablet, paced; app-flutter docs/impl/reports/LINK-TEST-2026-10-11.md) |
720p MJPEG passthrough at 30 fps, ~3.4 MB/s: yes, no CPU. 1080p MJPEG at 30 fps, ~7.3 MB/s: no. H.264 at any size: yes, at 1.3–2 cores |
| Recording (recorder bound: 50 GB) | MJPEG at 1080p30 is ~26 GB per hour: no. H.264 at 6 Mbit/s is ~2.7 GB per hour: yes, ~18 hours in the bound |
| Inference | Frames are local; decoding is the cost. No constraint from the link |
| ASR microphone | Possible, as a USB capture device on the Orin; quality and placement untested |
The USB 2.0 hub it shares with the modem has headroom: 7.3 MB/s of MJPEG is ~60 Mbit/s of 480, and LTE Cat 4 tops out at 150 Mbit/s down.
Open
- Daylight and night frame rates and frame sizes in the car, on a real road scene.
- Mounting and orientation (the image can be flipped in the pipeline; the camera has no flip control).
- Whether the bridge's MJPEG can be made acceptable to
nvjpegdec(inserting standard Huffman tables), which would free about a core. - The microphone: quality, and whether it is the ASR input (Whisper takes 16 kHz mono; resampling is trivial).