Skip to content

Testing

Lu-Fi edited this page Oct 6, 2026 · 1 revision

Testing

Quick device check ("camchk" style)

After flashing a full image, a short check per camera:

  1. Boot and modules: lsmod shows tx_isp_<soc> and the sensor module; dmesg has no oops, no Call Trace, no ispmem/rmem shortfall lines.
  2. Boot guard: S10isp-guard status shows no pending after 5 minutes of uptime and no tripped.
  3. Streams: pull the main stream and the sub stream for a few seconds each (RTSP or the streamer's HTTP endpoints); decode the result with an external decoder and check for errors.
  4. Snapshots: 30 consecutive JPEG snapshots, all non-empty and decodable. The campaign criterion is 30/30.
  5. MJPEG / MP4: pull a few seconds and decode.
  6. Memory: record the OpenIMP rmem peak line and MemFree.
  7. Log: the effective rate-control line per channel is present; no Helix run failed or VPU error lines (or count them).
  8. Day/night: switch day/night and back several times, then repeat steps 1 and 4.

Pass criteria used in the campaign: 30/30 snapshots, 0 oops, 0 VPU errors, boot guard not tripped.

Reload test

With the streamer stopped, rmmod/insmod the ISP module 10 times (with and without kill -9 of the streamer before), expect refcount 0 and 0 oops after every cycle.

Soak

Run the streams for hours (the longest campaign runs were 2 h 34 min to 2 h 53 min at 25 fps with 0 decode errors) and log a short status line (uptime, MemFree, error counters) every few minutes.

A/B method against the vendor stack

To judge the open stack fairly:

  • Build two full OTA images that differ only in the ISP choice (THINGINO_ISP_OPEN versus THINGINO_ISP_PROPRIETARY), same streamer revision, same configuration.
  • Same camera, same scene, same lighting (night scenes are repeatable); one warm-up period before measuring.
  • Measure: streamer CPU (all threads), system CPU, resident memory and thread count, time from start to first image, snapshot latency (average of 10), bitrate main/sub at the same target, MemFree.
  • Rate-control A/B: same target bitrate (for example 1200 kbit/s) for 60 s per mode (CBR, VBR, SMART).
  • Image checks: compare mean luma and white-balance gains on neutral regions; use the same exposure limits.

Example result (T20, night scene): streamer CPU 10.5 % versus 25.2 %, system CPU 15.3 % versus 33.5 %, first image 2.5 s versus 3.0 s, snapshot latency 0.20 s versus 0.45 s, free memory 46.9 MB versus 52.3 MB.

Debug-only tools

  • OPENIMP_PROFILE=1 prints a periodic profile report (see Environment Variables).
  • t23tune (T23): show and set max gain, IT max, DRC, defog, sinter, flip, max dgain from the shell.
  • The T20 module exposes AE/AWB telemetry as read-only parameters (t20_ae_last_*, t20_awb_last_*).

Rules

  • No audio playback tests (speaker, echo cancellation) on shared test cameras without explicit agreement.
  • Flash only complete OTA images.

Clone this wiki locally