So101 Arm Advanced kit cameras - feed is garbled / not clear

Product and Purchase

  • Product model: HD Wide-Angle Camera (two units) with So101 Arm Advanced kit
  • SKU or kit name: (1) GC0308 sensor, 300K pixel wide-angle camera (2) GC2083 sensor, 2MP wide-angle camera
  • Purchase channel: HiWonder
  • Controller board: laptop (ASUS ROG), not a Hiwonder controller board

Software and Environment

  • Operating system: Ubuntu 22.04 (tried on windows 11 as well similar issue)
  • Connection method: USB — tested both direct laptop USB port and via USB hub
  • Software version: ffplay/FFmpeg 4.4.2-0ubuntu0.22.04.1, OpenCV (Python 3.12), LeRobot lerobot-find-cameras utility
  • Firmware version: Unknown — no firmware update tool provided/found for either camera
  • Image version: N/A (standard Ubuntu desktop, not a Hiwonder OS image)
  • Tutorial step: Hiwonder’s LeRobot SO-101 setup documentation, camera verification step (lerobot-find-cameras opencv)

Issue Description

  1. What did you expect to happen? Camera should stream a clear, correctly colored live image, as advertised (“plug-and-play, no drivers needed”).
  2. What actually happened? Stream opens successfully and is visibly live (responds in real time to motion and lighting changes), but displays as a fine grid/moiré-like corrupted pattern instead of a coherent image. A real light gradient/shadow is visible underneath the distortion, confirming the sensor is capturing real data that’s being scrambled somewhere before or during output.
  3. Error message or logs: None. ffplay, v4l2-ctl, and lerobot-find-cameras all report successful format negotiation (YUYV and MJPEG both) and clean stream opens — no decode errors, no connection errors. The corruption is in the image content itself, not a failure state.

Reproduction Steps

  1. Connect either camera (GC0308 or GC2083) via USB to a Linux (Ubuntu 22.04) machine
  2. Run lerobot-find-cameras opencv, or ffplay -f v4l2 -input_format yuyv422 -video_size 640x480 -framerate 30 /dev/videoN
  3. Observe corrupted grid-pattern output despite successful stream negotiation and live responsiveness

Evidence

  1. Photos or short video: Available on request (screenshots of corrupted output captured)
  2. Wiring photo: N/A — standard USB connection with 4 pin from laptop to camera
  3. Screenshot of result attached

What You Have Tried

  1. Ruled out application-level bug — identical corruption across ffplay, raw Python v4l2/OpenCV, and lerobot-find-cameras opencv
  2. Ruled out hub/power/EMI — same corruption direct-plugged and via hub (a separate, confirmed hub EMI/disconnect issue was fixed independently via uvcvideo quirks=128; image corruption persisted regardless)
  3. Ruled out byte-order/format mislabeling — tested YUYV and UYVY interpretations, and all 4 Bayer demosaic orderings (BGGR/RGGB/GBRG/GRBG); corruption pattern was visually identical across all of them
  4. Ruled out codec-specific bug — GC2083 shows identical corruption in both raw YUYV and MJPEG; MJPEG decoded with zero errors from ffmpeg, meaning the JPEG bitstream itself is structurally valid but contains scrambled pixel data at the source
  5. Ruled out system-wide/laptop issue — laptop’s built-in webcam (separate UVC device) streams perfectly clean on the same machine, same session, same drivers

Urgency

  • High priority — this is blocking active robot vision/data-collection setup (LeRobot SO-101 arm project); both cameras affected identically, no current workaround available.

Official support staff are being brought in to help with this camera issue. If you still need my help, reply here and @ me. @Hiwonder_Scarlett

@hiwonder_Ryo can you guess what the issue might be with the camera

Sorry, I’m unable to resolve this issue. Please wait patiently for our support staff to assist you. I won’t be replying further in this topic. If you still need my help, please @ me.

Hey update was able to fix the issue. Had to adjust the focal length of the camera manually by twisting the lens barrel.