Skip to content

Installing and Switching

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

Installing and switching between open and vendor stack

Rule: flash complete OTA images only (kernel plus rootfs together). Partial rootfs-only updates can pair a driver with the wrong userspace.

Choosing the stack at build time

Select the stack in menuconfig or in a scoped local.fragment:

# open stack
BR2_PACKAGE_THINGINO_ISP_OPEN=y

# open driver, vendor libimp (debugging)
BR2_PACKAGE_THINGINO_ISP_OPEN=y
BR2_PACKAGE_THINGINO_ISP_OPEN_VENDOR_LIBIMP=y

# vendor stack
BR2_PACKAGE_THINGINO_ISP_PROPRIETARY=y

Switching means building and flashing a new full image. There is no runtime switch between vendor and open modules; the boot guard below only decides whether the ISP stack is loaded at all.

For a clean A/B test of the two stacks, build two images that differ only in this choice (same streamer revision, same configuration) and compare, see Testing.

Boot guard (optional package)

BR2_PACKAGE_THINGINO_ISP_GUARD installs /etc/init.d/S10isp-guard, a crash-loop guard for the open modules. It runs before the module loader and before the streamer.

The U-Boot variable isp_open selects the behaviour:

Value Behaviour
auto (default when unset) Load the modules; the boot counts as stable after 300 s uptime with the streamer running. If the camera reboots before that, the next boot skips the ISP and sensor modules and the streamer (the camera stays reachable over SSH and the web UI).
manual Do not load the ISP/sensor modules or start the streamer. Load by hand with /etc/init.d/S10isp-guard load while watching the kernel log (load --no-timps skips the streamer).
off Never load them.

Change it with fw_setenv isp_open auto|manual|off (effective at the next boot) or from the U-Boot prompt (setenv isp_open off; boot).

Commands:

/etc/init.d/S10isp-guard status    # mode, pending/tripped marks, loaded modules
/etc/init.d/S10isp-guard clear     # re-arm after the guard tripped
/etc/init.d/S10isp-guard load      # load the modules now (manual mode)

State lives in /etc/isp-guard/ (pending, tripped). Modules and streamer are suppressed for one boot only by bind-mounting empty files; nothing on flash changes. A clean reboot (including sysupgrade and OTA) clears the pending mark; a crash, watchdog reset or power loss within the first 300 s keeps it.

Caveats:

  • Meant for development and bring-up. Two reboots within five minutes leave the streamer off until someone runs clear, so do not use it on cameras that must keep streaming through repeated power loss.
  • A flash reboot less than 300 s after a restart can trip the guard; run clear.

Recovering a camera that does not stream

  1. Boot with isp_open=manual (or off) so the camera comes up with SSH.
  2. Check dmesg and the streamer log, see Troubleshooting.
  3. S10isp-guard load and watch the kernel log, or flash a known-good image.

Clone this wiki locally