github themactep/thingino-firmware firmware-2026-07-18

latest release: ccache
13 hours ago

Changes in this release:

  • f433166 thingino-uboot: restore vendored SPL binaries after patching GNU patch cannot apply the binary diffs embedded in 0001-from-2013.07-to-thingino.patch, so spl/binary/*.bin ended up as zero-byte files in the patched U-Boot tree. Boards that use a prebuilt SPL (T31LC and Xiaomi MJSXJ03HL variants with CONFIG_XIAOMI_SPL) then got a firmware image with an empty SPL region, bricking the camera on flash. The correct blobs were already vendored into package/thingino-uboot/files/ (commit 58cda12) but nothing copied them into the source tree. Add a post-patch hook that restores them into spl/binary/ for the 2013.07 U-Boot. Verified: u-boot-with-spl.bin for xiaomi_mjsxj03hl_t31l_jxq03p_rtl8189ftv now begins with the 26624-byte t31_xiaomi_sfcnor.bin blob (Ingenic SPL magic 06 05 04 03 02 55 aa 55 aa) instead of zeros. Fixes: #1299 Signed-off-by: Paul Philippov paul@themactep.com
  • b613a31 package/prudynt-t: update to 879a387 Pulls in the simple-rtsp RTCP SR fix: SR NTP time is now derived from CLOCK_MONOTONIC instead of gettimeofday(), so NTP daemon clock steps on the camera no longer shift the NTP<->RTP mapping mid-session and flood multi-stream RTSP receivers (ffmpeg/Frigate) with 'Non-monotonic DTS' errors. Signed-off-by: Paul Philippov paul@themactep.com
  • 03a27bb sysupgrade: save on full erasing since we override entire chip now
  • 37d4042 package/prudynt-t: update to c026768 Update prudynt-t from e61ba27 to c026768 Hash change: e61ba2765f9f55b8a15da67cfdc8e3de6351d919 -> c0267682fd98498c1f183a4196e3d85963a97918 Changelog: 920b97c: SDP: add framesize attribute for H.264 video dimensions af55238: rtsp: fix buffering, bitstream corruption, and data-partitioning errors 04fcb06: remove legacy live555 RTSP code, replaced by simple-rtsp afc86c5: rtsp: add audio-only endpoint (/mic) to simple-rtsp server 52df6b0: audio: fix RTP timestamp backward jumps from NTP clock adjustments 26bf54c: rtsp: include git commit hash in SDP session title ac18bcf: build: always regenerate version.hpp to avoid stale commit hash fe8987f: audio: use IMP driver capture timestamp instead of CLOCK_MONOTONIC 5f9d57f: encoder: increase stream buffer size for high resolutions 5b2ec33: framesource: ensure ≥2 buffers for large frames (>4MB) 887a056: rtsp: add backchannel (talkback) support to simple-rtsp server 3643c44: backchannel: fix SDP to use single m=audio line with multiple PTs 9c448bd: backchannel: remove from DESCRIBE SDP, negotiate via ANNOUNCE only 091d5c9: backchannel: fix session gate so backchannel receive actually runs a1e08fd: backchannel: return Session header in ANNOUNCE response 48e66e6: rtsp: demote drain counters from LOG_DEBUG to LOG_DDEBUG bf93e3c: backchannel: add debug logging to SETUP handler 1a6d3f2: backchannel: add dispatch tracing to diagnose SETUP hang 403f0f6: rtsp: consume request body after parsing (fix ANNOUNCE SDP leak) c1ee4f5: backchannel: remove debug logging, feature complete 16bab4a: rtsp: suppress RTCP SR for backchannel-only sessions d943109: rtsp: add dedicated backchannel DESCRIBE response a9cdece: rtsp: always return backchannel SDP for /backchannel DESCRIBE 692a82e: fix: restore truncated generateBackchannelSdp call after sed mishap e837941: backchannel: add Opus codec support for WebRTC talkback 70435d3: backchannel: include in main /ch0 SDP, no ANNOUNCE required 280ea99: backchannel: detect track0 and /backchannel URI patterns in SETUP c24e787: audio: use NOBLOCK in IMP_AO_SendFrame to prevent speaker lockup 3d17a5b: backchannel: fix worker thread lifecycle and wakeup race b24823c: backchannel: flush audio output on session teardown 302a9d5: backchannel: use silence tail instead of abrupt flush on teardown 337c4a1: backchannel: use track0 control URL, match go2rtc's URL convention 5ddb106: backchannel: let audio output drain naturally, no silence tail 06c4c33: audio: revert NOBLOCK change, original BLOCK mode restored 151796f: backchannel: support TCP interleaved transport, capture from TCP stream 6a9884e: rtsp: allow PLAY for backchannel-only sessions 59d974e: backchannel: set backchannel=true on SETUP so PLAY succeeds 0ee059d: revert backchannel from main /ch0 SDP to fix go2rtc playback 4d03b7e: restore backchannel track0 in main SDP for MediaMTX testing ff83cee: sdp: add AAC fmtp config to backchannel tracks 57bdfd2: sdp: add channel count to OPUS rtpmap in backchannel tracks 88a8170: rtsp: only advertise backchannel when client sends ONVIF Require header 23384a0: backchannel: activate on PLAY per ONVIF Streaming Spec §5.3 c29aa12: fix onvif backchannel in simple-rtsp for go2rtc WebRTC 260ff6b: backchannel PR: revert IMPEncoder/IMPFramesource/MsgChannel/globals/VideoWorker to pre-PR 477b106: IMPEncoder: disable SetStreamBufSize/SetMaxStreamCnt on T31 d99cd1e: WS: fix build error from incomplete delay -> delay_us rename 590b204: docs: formatting 6d47fb4: rewrite standalone compilation 9fa3bba: ignore trash/ 150f4a1: docs: cleanup c026768: VideoWorker: derive frame end from last pack, T31 libimp never sets frameEnd
  • f0169fd ingenic-sdk: fix silently-dropped button (gpio-userkeys) config Commit 425637b switched the gpio-userkeys config generator from reading env.txt (which always wrote the module load file) to reading thingino.json via jct, guarded by 'if which jct'. Two problems made that silently drop the button config: - bare 'which jct' checks the host PATH for a target/host tool that is not guaranteed to be there, and a miss is swallowed with no error, so no /etc/modules.d/gpio-userkeys is written and physical buttons (reset, chime) do not work; - the package declared no dependency on host-thingino-jct, so even when the tool does end up on PATH there is no ordering guarantee that it exists when this step runs. Use the host jct by absolute path ($(HOST_DIR)/bin/jct) and error if it is missing, matching how prudynt-t already does it, and add host-thingino-jct to INGENIC_SDK_DEPENDENCIES. (cherry picked from commit 2d682b1) [backport to ciao: dropped the BR2_INGENIC_SDK_GPIO_USERKEYS guard, which belongs to the SDK-components refactor not present on this branch] Signed-off-by: Paul Philippov paul@themactep.com
  • 9b2fb95 package/timps: update to v1.3.3 Update timps from v1.3.0 to v1.3.3 Hash change: v1.3.0 -> v1.3.3 (No changelog available)
  • 87661f5 package/thingino-dfu: update to v1.5.30 Update thingino-dfu from v1.5.24 to v1.5.30 Hash change: v1.5.24 -> v1.5.30 (No changelog available)
  • e50e929 scripts: backchannel-test accepts IP argument
  • cdd8744 scripts: backchannel-probe accepts plain IP, shows full SDP scripts: backchannel-probe filters SDP, shows summary with codecs Parses the SDP and extracts only backchannel-relevant sections. Shows host, status, and per-track details: direction (recvonly/ sendonly/sendrecv), control URL, and supported codec list. Still accepts plain IP or full rtsp:// URL.
  • be95166 prudynt-t: change default H.264 profile from High to Main The Ingenic T31 encoder emits data-partitioned NALs (types 2/3/4) at High profile which FFmpeg cannot decode, causing 'data partitioning is not implemented' and cascading bitstream corruption errors. Main profile eliminates data partitioning while keeping CABAC and B-frames for equivalent compression efficiency.
  • 9ef4b3f prudynt-t: use override source git hash for version string Previously commit_tag was taken from the firmware repo, not the prudynt-t overrides directory. Now reads the short hash from PRUDYNT_T_OVERRIDE_SRCDIR first, falling back to the firmware repo for non-override builds.
  • 19dcf6d thingino-ffmpeg: add mp4 muxer, H.264/AAC parsers, BSFs, NFS copy Enable minimal remuxing support in the fallback (non-IPC/NVR/DEV) configuration so that stripped ffmpeg builds can from RTSP to MP4 segments. Previously only the segment muxer was compiled in, which delegates to an inner muxer (mp4) that wasn't available. Changes: - Enable mp4 muxer (needed by segment muxer for .mp4 output) - Enable h264 and aac parsers (frame boundary detection for muxer) - Enable h264_mp4toannexb and aac_adtstoasc BSFs (format conversion) - Fix protocol order: --enable-protocol=file after --disable-protocols so the file protocol survives the blanket disable - Add post-install hook to copy ffmpeg binary to /nfs/ Signed-off-by: Paul Philippov paul@themactep.com
  • 1aa0a24 package/prudynt-t: update to e61ba27 Update prudynt-t from c5ed7ca to e61ba27 Hash change: c5ed7ca708854acbd07e18e25e2f308709f8a6a5 -> e61ba2765f9f55b8a15da67cfdc8e3de6351d919 Changelog: e61ba27: fix h265: SDP fmtp, NAL header corruption, keyframe gate
  • e00aff6 Add backup-overlay target and script Add make backup-overlay IP= to pull /overlay/ from a running Thingino camera via SSH and store it as a timestamped tarball in a global backup directory (~/.thingino/backups by default). - scripts/backup_overlay.sh: detects camera IMAGE_ID, copies /overlay/, creates --.tar.gz - Makefile: THINGINO_BACKUP_DIR variable, backup-overlay target, help, show-vars entry - board.mk: exempt backup-overlay from camera selection requirement - docs/overlay-backup.md: usage, restore, troubleshooting - docs/makefile.md: documented the new target Signed-off-by: Paul Philippov paul@themactep.com fix backup-overlay: stream via SSH tar instead of scp scp -r with trailing /. fails on dropbear servers ("unexpected filename: ."). Also, scp runs as the scp user and cannot read files with mode 000 (e.g. crond.reboot). Switch to streaming tar+gzip directly over SSH. The camera-side tar runs as root and reads all files regardless of local permissions. Signed-off-by: Paul Philippov paul@themactep.com
  • d5fa9b1 cameras: move smart_nvr_a1n_eth to experimental
  • ddb7447 cameras: move wanjiaan_hdc51_t31l_sc2332_rtl8188ftv_mmc to experimental
  • 95902dc cameras: move iget_c5pt_t41lq_gc4023_jl110 to experimental
  • 2113702 package/lightnvr: update hash and license file for v0.36.2 Hash file was stale (referenced 0.35.3). Updated to match LIGHTNVR_VERSION = 0.36.2. Also fixed license file reference from COPYING to LICENSE to match upstream rename. Signed-off-by: Paul Philippov paul@themactep.com
  • 410a92b package/timps: update to v1.3.0 Update timps from v1.2.0 to v1.3.0 Hash change: v1.2.0 -> v1.3.0 (No changelog available)
  • 50a10fa package/prudynt-t: update to c5ed7ca Update prudynt-t from abfe235 to c5ed7ca Hash change: abfe235d15ed3204b2ef65e295130efb99478c1c -> c5ed7ca708854acbd07e18e25e2f308709f8a6a5 Changelog: c5ed7ca: docs: document go2rtc WebRTC failure and MediaMTX solution
  • 5e2ed14 package/prudynt-t: update to abfe235 Update prudynt-t from eef3495 to abfe235 Hash change: eef3495dde26dd39547dbaa08ffea29c9c71404b -> abfe235d15ed3204b2ef65e295130efb99478c1c Changelog: f665ef5: rtsp: fix RTP stream corruption on TCP interleaved and UDP 3f3b7f9: clean up live555 abfe235: stream profile selector
  • f098c4b package/timps: add Tiny IMP Streamer as new streamer backend Add timps (https://github.com/Lu-Fi/timps) — a minimal, dependency-light RTSP / fMP4 / MJPEG streamer for Ingenic SoC IP cameras. Built straight on vendor libimp with no live555, libconfig, libwebsockets, or libschrift. Plumbing: - BR2_PACKAGE_THINGINO_STREAMER_TIMPS choice option in streamer Config.in - Package Config.in gated behind the streamer choice - STREAMER mapping in thingino.mk - Excludes a1 SOC family - Optional features: FAAC audio, control API, day/night detection, TLS (mbedTLS), SRT output (libsrt) Missing strero STREAMER mapping in thingino.mk fixed alongside. package/timps: pin source to tag v1.2.0 instead of tracking main branch
  • e4f3c52 package/prudynt-t: update to eef3495 Update prudynt-t from c69ac52 to eef3495 Hash change: c69ac52159359a4d5d091861adce7c16e35805c9 -> eef3495dde26dd39547dbaa08ffea29c9c71404b Changelog: 76a87bd: rtsp: fix profile-level-id in SDP using wrong SPS byte offset f1fbcdf: h264: normalize SPS/PPS nal_ref_idc from 1 to 3 for parser compatibility 4adb6ae: rtsp: add UDP support 0388257: rtsp: fix CSeq parsing eef3495: rtsp: force profile level to High 5.0 for go2rtc compatibility
  • 40e7180 package/prudynt-t: update to c69ac52 Update prudynt-t from 9caa023 to c69ac52 Hash change: 9caa02301d7869b658e064138cb25d73878410d7 -> c69ac52159359a4d5d091861adce7c16e35805c9 Changelog: f47a779: rtsp: fix false 're-config detected' on initial RTSP session 8a94707: daynight: decay confirm counters instead of resetting on hysteresis b311982: daynight: register missing night_count_threshold and day_count_threshold config keys c69ac52: t23: suppress unused-function warning for cleanup_stale_t23_isp_state
  • df59cc5 package/prudynt-t: update to 9caa023 Update prudynt-t from 3414c59 to 9caa023 Hash change: 3414c59f95d9e0ff83955a62d27b654467fd47dd -> 9caa02301d7869b658e064138cb25d73878410d7 Changelog: 9caa023: rtsp: fix false 're-config detected' on initial RTSP session
  • 384a8bc package/thingino-motors: update to 10c46de Update thingino-motors from a4ba420 to 10c46de Hash change: a4ba420815944ec10612697ba1d21f98aef49a16 -> 10c46de54c07de903d9b72e3d784e74e8981aad4 Changelog: 10c46de: motor.json is deprecated in favor of thingino.json
  • a4a4ec7 agents: add note about grepping output
  • 007027e package/prudynt-t: update to 3414c59 Update prudynt-t from 97dc70a to 3414c59 Hash change: 97dc70a6f6eb0b173d86f77b323fef654548daeb -> 3414c59f95d9e0ff83955a62d27b654467fd47dd Changelog: 3414c59: rtsp: add missing AAC config= parameter to SDP fmtp line
  • 334a825 package/ingenic-sdk: update to bcd2e09 Update ingenic-sdk from b7a7e79 to bcd2e09 Hash change: b7a7e7910d0b53ea522fbc75e1d444a7376afdf7 -> bcd2e09c024e821fe30f8917da0dcb664a00d8fd Changelog: bcd2e09: fix files permissions
  • 6aea1b1 send2ntfy: allow to use non-standard server port
  • 67c6780 rename per-camera uenv.txt files from .uenv.txt to uenv.txt Each camera directory in configs/cameras/ and configs/cameras-exp/ now contains a plain uenv.txt instead of a .uenv.txt file. The per-camera directory already scopes the file, so the camera name prefix was redundant. Updated references: - Makefile: U_BOOT_ENV_TXT dependency and grep rule - Makefile.guided: edit-uenv target and interactive menu - scripts/tabulate_gpio.py: glob pattern and model extraction - docs: AGENTS.md, local-build-settings.md, adding-kernel-4.4-camera.md, firmware-image-structure.md Not renamed (unchanged): - configs/common.uenv.txt (shared base, not per-camera) - user/*/local.uenv.txt (user override files) Signed-off-by: Paul Philippov paul@themactep.com
  • c0fe6be cameras: reorder content of defconfigs alphabetically
  • 5fe28b2 wyze v2: add missing flash size
  • 1752b59 agents: explicitly deny whole home searches
  • dd11adc agents: remove deprecated motors.json
  • cac8ea3 config-network: fix hostname pattern attribute for unicodeSets (v flag) The pattern [A-Za-z0-9.-]+ fails under the v (unicodeSets) regex flag used by modern browsers for HTML pattern validation. The unescaped hyphen and dot cause a SyntaxError when the input field is focused. Escape both characters: [A-Za-z0-9-.]+ Signed-off-by: Paul Philippov paul@themactep.com
  • e26f1dd dropbear: wtmp patch for v2025.89
  • 311a7cf make: correct dfu command arguments
  • 02b6033 formatting and clean up
  • 5373de8 prune motor.json files and references
  • 21798e7 document compiling a pristine image w/o user files
  • 7302720 fix onvif notify server start
  • e65bfe8 fix wireless portal start
  • 45723db make: retrieve camera image config name from the camera with just IP= provided
  • f094f04 strero: reformat config, update defaults
  • ffdd029 clean up
  • 09578a7 clean up
  • 3a9f001 extract ipv6 support and bind it to BR2_PACKAGE_THINGINO_KOPT_IPV6, enabled by default fix: create if-down.d directory before IPv6 odhcp6c symlink The THINGINO_KOPT_INSTALL_TARGET_CMDS_IPV6 block installs odhcp6c into if-up.d (which -D creates on demand) but then tries to symlink it into if-down.d without ensuring that directory exists, causing: ln: failed to create symbolic link '.../if-down.d/odhcp6c': No such file or directory Add mkdir -p for if-down.d before the ln -sf. Signed-off-by: Paul Philippov paul@themactep.com fix: also create interfaces.d directory for IPv6 eth0 config Following up on the if-down.d fix, the echo append to interfaces.d/eth0 also fails when the directory doesn't exist yet in the per-package staging area (the overlay provides it later). Add interfaces.d to the mkdir -p alongside if-down.d. Signed-off-by: Paul Philippov paul@themactep.com
  • 6f130b9 fix sysctl error net.netfilter/nf_conntrack_max is an unknown key
  • 696ddcc clean up
  • 6b404a8 jct: switch to a release bundle
  • edd5fdb wpa_supplicant: convert thingino package to a buildroot package override
  • 57b24bf webui: clean up, update gain reading
  • ba09f11 prudynt: update patches
  • 6beb50e dep_check: add swig to required packages
  • 86908fe package/thingino-dfu: update to v1.5.24 Update thingino-dfu from v1.5.22 to v1.5.24 Hash change: v1.5.22 -> v1.5.24 (No changelog available)
  • 15ddd6d changes for mainline u-boot
  • 8ab9fdb add hugolog e5p dts
  • 8f09acc clean up
  • 6d09501 cameras: add/update profiles
  • ddac3fa dfu: does not have --reboot argument
  • 05bf50b make: regenerate env.txt on rebuilding
  • 26b2a65 strero: pass DEBUG_STRIP=0 for unstripped dev binary Keeps symbol table and debug_info in the build output and NFS copy. The firmware image binary is still stripped by Buildroot's post-build step, so flash size is unaffected. Signed-off-by: Paul Philippov paul@themactep.com
  • 039c017 strero: drop libaudioProcess dependency from audio module The Ingenic IMP audio API (IMP_AI_, IMP_AENC_) is provided by libimp.so, not libaudioProcess.so. Removing the unnecessary -l link drops the transitive libstdc++ dependency, saving ~1.7MB RAM and eliminating the need for BR2_THINGINO_LIBSTDCPP. Signed-off-by: Paul Philippov paul@themactep.com
  • 581c255 strero: enable audio support for wyze_cam3 - Add BR2_PACKAGE_STRERO_AUDIO=y to wyze_cam3 defconfig - Add select BR2_THINGINO_LIBSTDCPP for STRERO_AUDIO (libaudioProcess.so requires libstdc++) - Add NFS copy to strero.mk INSTALL_TARGET_CMDS for dev iteration Also fix audio module compile errors in overrides: - Add #include for common.h (IMP_LOG macros) - Fix rtsp_frame_callback signature mismatch between .h and .c Signed-off-by: Paul Philippov paul@themactep.com
  • 66dad44 strero: remove broken __ctype_b_loc/__ctype_tolower_loc stubs The glibc_uclibc_compat.c defined stub __ctype_b_loc() and __ctype_tolower_loc() that returned pointers to NULL ctype tables. These were compiled as global symbols into the streamer binary, interposing on uClibc-ng's native working implementations. When libjct.so called isdigit() via __ctype_b_loc, it got the broken stub -> dereferenced NULL ctype table -> SIGSEGV at address 0x62 (character '1' offset * 2 from NULL). Fix: remove the stubs entirely. uClibc-ng already provides both functions with properly initialized C locale ctype tables. The musl path (uclibc_musl_shim.c) is unchanged — it needs its own implementations since musl doesn't provide these _loc variants. Signed-off-by: Paul Philippov paul@themactep.com
  • 051578f package/thingino-dfu: update to v1.5.22 Update thingino-dfu from v1.5.20 to v1.5.22 Hash change: v1.5.20 -> v1.5.22 (No changelog available)
  • f1a0a85 merge motors.json into thingino.json
  • 4799810 websockets: patches for v4.5.8
  • b615d35 thingino-button: use host jct by absolute path, depend on host-thingino-jct Same silent-failure pattern as the ingenic-sdk button fix: a bare "which jct" checks the host PATH for a tool the package does not depend on, and a miss is swallowed so button_count stays 0 and the multi-button chime rule is quietly not written. Use the host jct by absolute path with an error if missing, and declare host-thingino-jct as a dependency so build ordering is guaranteed. (cherry picked from commit 821ca8a) Signed-off-by: Paul Philippov paul@themactep.com
  • 27c804c webui: OSD element editor in preview modal, loopback fix, flex layout
  • 2a83731 docs: update SEI reference and overlay docs for new element-based OSD structure
  • 02b84fa sei-overlay: fix ASS stacking by assigning unique layer per element
  • 5fb27e9 sei-overlay: remove dead duplicate ASS generation code after generate_srt
  • 02d3922 sei-overlay: update for simplified SEI format (t/text/x/y only, no colors/sizes)
  • f81b630 webui: fix OSD element persistence, update sei-osd overlay for simplified format
  • f0e062b webui: unified dynamic OSD editor page, add ipaddress type - Replace streamer-osd0/1 with single streamer-osd.html - Dynamic element list: add/remove with name/type/format/position - Type dropdown: text, gain, hostname, ipaddress, timestamp, uptime - Uses confirm() dialog and showAlert() notifications - Navigation updated to single 'OSD Elements' entry - Update prudynt.json defaults for new format
  • bdc550c prudynt.json: move osd to top-level global config
  • b155f02 prudynt.json: migrate to new element-based OSD structure
  • 0d2ae10 webui: fix js syntax
  • 9aac897 prudynt: update config defaults
  • faab1f2 docs: add valid sensor resolutions aligned by 64
  • 17ac0ea prudynt.json: remove legacy daynight keys
  • 5218c03 prudynt-t: remove libschrift dep, font/logo assets; clean webui OSD settings
  • f8bfdc3 package/thingino-dfu: update to v1.5.20 Update thingino-dfu from v1.5.17 to v1.5.20 Hash change: v1.5.17 -> v1.5.20 (No changelog available)
  • 7897749 package/lightnvr: update to 0.36.2 Update lightnvr from 0.36.1 to 0.36.2 Hash change: 0.36.1 -> 0.36.2 (No changelog available)
  • 2023aab package/ingenic-sdk: update to d36b44c Update ingenic-sdk from 3e578d1 to d36b44c Hash change: 3e578d1a80d1d9a588db4e1e5e6c8ba0dbc79128 -> d36b44c0f16af135aa261718a5f0df3e71a77978 Changelog: d36b44c: sc4236: restore the original driver size 2048x1536 to get rid of the black line
  • 019512f webui: do not force a style on meta osd
  • e1b8eef osd: add a script to restore OSD from SEI overlay metadata
  • a80924a wyze vdb1: prefer metadata osd
  • f35495d webui: better recorder error handling
  • 2e77f87 webui: adjust layout
  • ddf9dac fix: add missing json-osd-sei.cgi CGI proxy Forwards /api/v1/osd-sei from prudynt:8080 to uhttpd:80 for same-origin web UI access.
  • 4a729c9 package/thingino-onvif: update to 03fc6c6 Update thingino-onvif from 99420d3 to 03fc6c6 Hash change: 99420d31d5b3f0a4d88bf59a3be2698081884af6 -> 03fc6c699af3169313e3530f580db30ffc096324 Changelog: 03fc6c6: Remove internal daemonization from onvif_notify_server
  • 7363f26 dropbear: update package version for patches
  • 218e8b4 docs: referemce file on SEI payload
  • 3940dad docs: add T-REC-H.264-202408 pdf file
  • 43225af fix: prevent socket/fd exhaustion from MJPEG connections Three fixes for the issue where SSH and RTSP become unreachable until the web UI page is reloaded: 1. preview.js: suppress watchdog stream restarts when the full-screen modal is open, preventing a second concurrent MJPEG connection. 2. prudynt IPCServer: cap concurrent MJPEG connections at 8 to prevent unbounded std::thread creation from exhausting memory, file descriptors, and PID space on RAM-constrained devices. 3. sysctl.conf: raise fs.file-max (8192), somaxconn (128), reduce tcp_fin_timeout (15s), set nf_conntrack_max (2048) to prevent silent resource exhaustion on the kernel side. Signed-off-by: Paul Philippov paul@themactep.com
  • e507fa4 feat: SVG-based OSD overlay with client-side rotation in web UI - SVG overlay with text-anchor/dominant-baseline for proper alignment - OSD settings modal (font, size, weight, outline, colors) - localStorage persistence for OSD settings - Client-side CSS rotation on preview and all config pages - Full-screen preview rotation in preview.js - Layout shift prevention via dynamic image dimensions - Update SEI metadata documentation
  • feff083 wyze doorbell: adjust substream size
  • 23f8754 daynight: enforce fps on changing mode
  • 9de5df6 webui: read streamer FPS from config file, not prudynt runtime preview.js: after populating form from prudynt runtime, override FPS fields from /etc/prudynt.json so night-mode halving does not show as the saved value. streamer-config.js: before saving, push form FPS values to prudynt runtime so save_config persists the config-file FPS, not the night-halved value. Signed-off-by: Paul Philippov paul@themactep.com
  • 425db6b webui: accept integer bools for mic/speaker button highlight Signed-off-by: Paul Philippov paul@themactep.com
  • 8f33811 webui: speed up heartbeat turnover
  • 24822e1 webui: check payload values for null
  • 06df1ae webui: tighter header
  • 27984e5 webui: tweak photosensing chart page
  • c634834 webui: do not render clock in web ui
  • 3cd27f5 prudynt: halve fps in night mode for better sensitivity
  • d68221a package/thingino-dfu: update to v1.5.17 Update thingino-dfu from v1.5.11 to v1.5.17 Hash change: v1.5.11 -> v1.5.17 (No changelog available)
  • 13503de package/lightnvr: update to 0.36.1 Update lightnvr from 0.35.4 to 0.36.1 Hash change: 0.35.4 -> 0.36.1 (No changelog available)
  • 90174c3 add rotation config for doorbell cameras, disable broken rotation patch Doorbell cameras are vertically mounted — stream0 gets 270 deg rotation at full sensor resolution. Stream1 left unrotated (T31 hardware limit: only one active rotation at a time). Disable 0002-rotation-encoder-dimensions.patch (malformed, needs regeneration from override sources). Add t31-rotation-encoder-bug.md documentation.
  • 45662cc Fix heartbeat stall, daynight toggle, listener blocking, and race conditions thingino-agentd-native.c: - Cache agent.token at startup instead of calling popen(jct) on every request (avoids file-lock contention under concurrency) - Add 1s select() timeout in capture_command: hung thingino-agentctl subprocesses are killed instead of blocking the listener child forever - Return empty response on backend timeout so callers can fall back gracefully S95thingino-agent: - Call stop_listener_fallback at start() entry to kill any stale listener before binding (prevents duplicate listeners) thingino-agent-adapter-prudynt: - Remove live prudyntctl calls from query_live() (heartbeat hot path); use cached /run/thingino/daynight_mode instead - Keep prudyntctl fallback in daynight_running_mode() for correctness in runtime/config endpoints - Check /run/thingino/daynight_mode before /run/prudynt/daynight_mode for consistency with daynightd heartbeat-lib.sh: - Add thingino_heartbeat_native_payload(): fast heartbeat from /proc and /run files only, no live queries, no hardware I2C - Use native payload as primary heartbeat source (~150ms) - Reduce agent curl timeout to 0.5s for fast fallback json-imp.cgi: - Call /sbin/daynight after setting force_mode so the hardware actually switches when the daynight button is clicked Signed-off-by: Paul Philippov paul@themactep.com
  • 05befd0 Remove Clear-Site-Data header, gate doorbell nav on device config legacy-url-recovery.cgi: remove Clear-Site-Data header (browsers reject it on insecure HTTP origins, causing console warnings). S48webui-config: detect doorbell feature at boot via json-chime-status.cgi and expose doorbell flag in device config. navigation.js: only add doorbell menu item and fetch chime status when doorbell feature is actually present, avoiding needless error-handler invocations on unsupported cameras. Signed-off-by: Paul Philippov paul@themactep.com
  • 33360b8 package/thingino-wolfssl: update to v5.9.2- Update thingino-wolfssl from v5.9.1- to v5.9.2- Hash change: v5.9.1-stable -> v5.9.2-stable (No changelog available)
  • 2a626af package/thingino-onvif: update to 99420d3 Update thingino-onvif from 37fa1ac to 99420d3 Hash change: 37fa1ac2f75b20859a8bcdd3b1b79725e0ad4ede -> 99420d31d5b3f0a4d88bf59a3be2698081884af6 Changelog: 99420d3: docs: add onvif/specs as git submodule for official ONVIF documentation
  • dd2a7bc package/thingino-dfu: update to v1.5.11 Update thingino-dfu from v1.1.1 to v1.5.11 Hash change: v1.1.1 -> v1.5.11 (No changelog available)
  • 46d4a64 package/lightnvr: update to 0.35.4 Update lightnvr from 0.35.3 to 0.35.4 Hash change: 0.35.3 -> 0.35.4 (No changelog available)
  • f8fd38e package/ingenic-sdk: update to 3e578d1 Update ingenic-sdk from 1efae00 to 3e578d1 Hash change: 1efae00965a13bc56ff88bdc17ea16c6566e7d82 -> 3e578d1a80d1d9a588db4e1e5e6c8ba0dbc79128 Changelog: 3e578d1: sc4236: fix black vertical line in 2304x1536 mode on T31
  • 7490273 doorbell: restart LED indicator daemon after pair/unpair via CGI The CGI now restarts S14doorbell-alarm after successful pair, unpair, or rename actions so the LED updates immediately without a reboot.
  • 9709f6d wyze-accessory: fix doorbell alarm installing on non-doorbell cameras - Remove unconditional INSTALL_TARGET_CMDS override that installed all accessory features regardless of config flags. The conditional ifeq blocks now correctly gate floodlight, spotlight, car, and doorbell. - Add runtime guard to doorbell_alarm: exit if thingino.json has no chime key, preventing LED alarm on cameras without doorbell hardware.
  • aa88340 doorbell: lit bell button (blue/yellow for day/night), blink the led on ringing the bell
  • 9c46ae9 uclibc shim: rewrite of patches
  • ddeb1b1 uboot 2013.07: fix bare mkimage call in u-boot-lzo.img target The u-boot-lzo.img target added by the thingino patch calls bare mkimage instead of the build-tree version at $(obj)tools/mkimage. This breaks when the host system doesn't have mkimage installed (e.g. GitHub Actions runners). Use the same pattern as the adjacent u-boot.img rule. Signed-off-by: Paul Philippov paul@themactep.com
  • 9c3f858 uclibc shim: another attempt to fix page faults
  • edf4f3b iget c5pt: add missing serial port
  • a0d848e follow up fix to uclibc shim
  • c48b395 fix: fgetc/fputc unlocked interposition in uclibc
  • 9034aef rootfs: larger block for better compression
  • 36d5475 update docs and scripts with changes from master
  • 6a688ba config: sync naming with master
  • 146f8dd cameras: adjust configs
  • 09ef5c3 docs: info on aich tech wifi
  • c4cfc07 docs: info on kittyhok brand
  • c68d302 nand support
  • 9fbd707 u-boot: lzop versioned to older u-boot only
  • 1bcc233 buildroot: fix compilation with gcc 16
  • c7fb0bc buildroot: reset patches on recompilation
  • a8345bd linux: optional tracepoints for t23 soc
  • c6d4eb3 update soc script database
  • 7add92b wifi: add atbm6461 support
  • 82a459d add T32
  • 9bfa41e webui and system changes for doorbell chimes, day/night, ircut etc.
  • 1f72681 fix: go2rtc crash on MIPS - kernel version parsing with underscores Ingenic kernels use double-underscore separators in the release string (e.g. '3.10.14__isvp_swan_1.0__'). Go's parseRelease() only stripped characters after '-' and '+', so strconv.Atoi failed on the __suffix, causing 'fatal error: failed to parse kernel version from uname'. Fix: add a pre-build hook in go2rtc.mk that patches the installed Go runtime's os_linux.go to also treat '_' as a version suffix delimiter. This uses patch -N (ignore already-applied) so it's safe on rebuilds. The old go-bin/go-src 1.26.1 patches (ENOSYS fix) are removed as the corrected version check now disables time64 syscalls on these older kernels, making the ENOSYS fallback path unreachable. Signed-off-by: Paul Philippov paul@themactep.com
  • f56fff4 fix: add missing d=x command alias in json-motor.cgi for PTZ absolute positioning The preview-motors.js frontend sends d=x for absolute positioning (center button, post-homing reposition), but the CGI only handled d=h. This caused HTTP 412 Precondition Failed responses on every PTZ click. Added x as an alias for h — both now map to motors -d h which performs absolute positioning. Also replaced bash-specific ${1:0:1} substring with POSIX-compatible printf '%.1s' to satisfy shfmt pre-commit check. Signed-off-by: Paul Philippov paul@themactep.com
  • 100afa7 webui: add attachment controls to send2ntfy config page
  • b4a8d98 package/ingenic-uclibc: fix infinite loop causing a page fault
  • 7a75a44 cameras/vanhua_djz: adjust flash size
  • db54f1d package/go2rtc: add a hash for the vendored tarball
  • 7daeef9 ingenic-sdk: select sensor IQ by ISP firmware version Add BR2_SENSOR_ISP_FW: when set, sensor IQ is taken from sensor-iq/// (falling back to the flat per-soc default), letting a SoC ship IQ for multiple ISP firmware versions. Defaults to 2.20 on t23 (set 2.10 for the older firmware); empty elsewhere, so all other SoCs keep the existing flat behavior unchanged. Pairs with the ingenic-sdk sensor-iq t23/2.10/ reorg.
  • 36ca40d package/libhelix-aac: rewrite .mk to reuse variables
  • dcd027d busybox: update default config to match 1.38
  • efc921c package/esp-microspeech-features: add into the tree
  • 907bfb6 package/zerotier-one: add .hash file
  • 7277e9f package/usrsctp: add .hash file, fix license file name
  • a4e789a package/nino: switch to a release tarball
  • 15372a2 package/llhttp: add .hash file
  • e95afb5 package/libsrt: bump version, add .hash file
  • 30c39fb package/libschrift: switch to a release tarball
  • 3300d5f package/libpeer: add .hash file
  • e183d57 package/libjuice: add .hash file
  • ba8fd67 package/esp-microspeech-features: add .hash file
  • dafd65b package/libhelix-mp3: switch to a release tarball
  • cc2fcd8 package/libhelix-aac: switch to a release tarball
  • ab06f87 package/libdatachannel: delete unused patch
  • fe33517 package/flac: switch to a release tarball
  • 3f60a21 package/libpeer: fix outdated cmake, fix mbedtls rng callback
  • 88d88eb wire plog package into the tree
  • 148bed5 package/usrsctp: configure for modern cmake (fix compilation)
  • d53eb95 package/plog: add package (libdatachannel dependency)
  • 352ba07 package/libdatachannel: switch to a release tarball
  • c37f972 package/ingenic-tflite-micro: add .hash file
  • 2d75281 package/go2rtc: add .hash file
  • 8105fd7 package/faac: add .hash file
  • d9fc68c package/libnl: update patches for 3.12.0
  • 15c3f20 package/lightnvr: pin to the latest release tarball
  • 93621fb package/lightnvr: gate the package for kernels older than 4.4
  • c35a2f9 package/zerotier-one: update to 1.16.2 - switch the package to use a release bundle - versioned patches - update pathes for 1.16.2 codebase
  • a123a5f package/faac: switch to a release
  • 0f9909c ignore .pyc files
  • 4eba404 package/zerotier-one: update to 1.16.2 Update zerotier-one from 1.16.0 to 1.16.2 Hash change: 1.16.0 -> 1.16.2 (No changelog available)
  • c606175 package/thingino-wolfssl: update to v5.9.1- Update thingino-wolfssl from v5.7.4- to v5.9.1- Hash change: v5.7.4-stable -> v5.9.1-stable (No changelog available)
  • 1faaea0 package/thingino-uhttpd: update to 7b1bec4 Update thingino-uhttpd from 1b624f8 to 7b1bec4 Hash change: 1b624f8f814ed568608d756512892416e0431d77 -> 7b1bec45826bd78c8afc993435bdc0f1df2fe399 Changelog: ae015e0: client: reject unhandled Transfer-Encoding values b78f518: client: close connection on invalid chunk length 7b1bec4: ubus: close connection on POST body parse error
  • a3ee743 package/thingino-dfu: update to v1.1.1 Update thingino-dfu from v1.1.0 to v1.1.1 Hash change: v1.1.0 -> v1.1.1 (No changelog available)
  • e482838 package/subzeroclaw: update to 43beed7 Update subzeroclaw from d287552 to 43beed7 Hash change: d287552cf4439a9d83609d8702e53baf4bcab032 -> 43beed78056eec48aa995f22292f5e35515fa917 Changelog: c070b73: feat: optional SUBZEROCLAW_REQUEST_EXTRA request-body override (#12) abc36d6: refactor: drop bundled watchdog; supervision is the deployment's job (supersedes #13) (#14) 43beed7: Fix heap overflow in tool_execute output read loop (#16)
  • 05d4224 package/llhttp: update to v9.4.2 Update llhttp from v9.2.1 to v9.4.2 Hash change: v9.2.1 -> v9.4.2 (No changelog available)
  • ee7cfb6 package/lightnvr: update to fa948ba Update lightnvr from 4a2a245 to fa948ba Hash change: 4a2a245bbb2df116eda8f365aafb0b9ab3790b10 -> fa948ba0e7096ed24421a399b13bb14b007a634b Changelog: 0c5c4de: fix(onvif): recognize env:Body namespace prefix in SOAP responses fa948ba: fix(js): resolve CodeQL quality warnings in frontend JS
  • 69c2cd5 package/libsrt: update to v1.5.5- Update libsrt from v1.5.4 to v1.5.5- Hash change: v1.5.4 -> v1.5.5-rc.2 (No changelog available)
  • 88ec802 package/libjuice: update to v1.7.2 Update libjuice from v1.7.0 to v1.7.2 Hash change: v1.7.0 -> v1.7.2 (No changelog available)
  • 67c5c22 package/libdatachannel: update to v0.24.5 Update libdatachannel from v0.24.0 to v0.24.5 Hash change: v0.24.0 -> v0.24.5 (No changelog available)
  • 8d99676 package/go2rtc: update to v1.9.14 Update go2rtc from v1.9.12 to v1.9.14 Hash change: v1.9.12 -> v1.9.14 (No changelog available)
  • 6dfa553 package/esp-microspeech-features: update to v1.2.3 Update esp-microspeech-features from v1.1.0 to v1.2.3 Hash change: v1.1.0 -> v1.2.3 (No changelog available)
  • df18be5 jooan a6m: toggle wifi gpio to wake up the module
  • 52210e8 fix(color): swap imp-control on/off to ispmode 0/1 imp-control color on maps to running_mode=1 (monochrome) and imp-control color off maps to running_mode=0 (color), the opposite of what the command names suggest. Switch to imp-control ispmode 0 and ispmode 1 so the code reads correctly: ispmode 0 = color, ispmode 1 = monochrome. Signed-off-by: Paul Philippov paul@themactep.com
  • a85f8c7 container: check for updated image; add a target to clean image/containers
  • 263bd69 u-boot: update thingino patch
  • b8a5fcc container: mount external THINGINO_USER_DIR into build container Detect when THINGINO_USER_DIR is set to a path outside the workspace and mount it into the container at /user-dir with the corresponding env var override. Handles PRISTINE (/dev/null), default (workspace/user/), and in-workspace custom paths. Signed-off-by: Paul Philippov paul@themactep.com
  • 394b98a prudynt: restore passwordless access to the api from localhost
  • c8e5b11 thingino-dfu: pin to a release
  • 6e096c2 docker: switch to prebuilt GHCR image Use ghcr.io/themactep/thingino-builder-image:latest instead of building the container image locally from the repo Dockerfile. - Pull image from GHCR instead of local build - Remove USERNAME variable (matches prebuilt image) - Add CONTAINER_PREBUILD workaround for uutils install issue: prebuilt image ships coreutils-from-uutils which breaks Buildroot dependency check - Update rebuild-image to pull instead of rebuild Signed-off-by: Paul Philippov paul@themactep.com docker: fix target passthrough to container make The TARGETS variable was set via $(eval) at parse time when $(MAKECMDGOALS) was not yet available, causing it to silently default to 'all' regardless of the requested target (e.g. cleanbuild, dev). Pass $(MAKECMDGOALS) directly to the container make command instead. Signed-off-by: Paul Philippov paul@themactep.com
  • 812eae0 Revert "libnl: force automake API version 1.17 for debian:trixie builder" This reverts commit 44b392f.
  • 539ee4b Merge branch 'ciao' into q5-ov2735b-16mb
  • 0a78737 u-boot: update custom repo
  • af12ff6 make: wire flash type selection
  • fe9457d make: refactor conditionals
  • 2b4eebb docs: update documentation
  • b3f7b13 formatting
  • 7966e4f ai: add onboarding docuemnt for agents
  • 32e6c6d cameras: add .dts files from master
  • 7160e85 cameras: simplify gpio notation in json configs
  • dfc8275 package/wifi-ssw101b: update to 380838e Update wifi-ssw101b from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • 4e48fa4 package/wifi-atbm6132u: update to 380838e Update wifi-atbm6132u from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • c9bfb33 package/wifi-atbm6132s: update to 380838e Update wifi-atbm6132s from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • ee0f327 package/wifi-atbm6032x: update to 380838e Update wifi-atbm6032x from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • 169b588 package/wifi-atbm6032: update to 380838e Update wifi-atbm6032 from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • 2e0820a package/wifi-atbm6031x: update to 380838e Update wifi-atbm6031x from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • 1df8c38 package/wifi-atbm6031: update to 380838e Update wifi-atbm6031 from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • 4861875 package/wifi-atbm6012bx: update to 380838e Update wifi-atbm6012bx from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • 02f4d23 package/wifi-atbm6012b: update to 380838e Update wifi-atbm6012b from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • 38961be package/wifi-atbm-wifi: update to 380838e Update wifi-atbm-wifi from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • af73216 package/thingino-nimble: update to 380838e Update thingino-nimble from 88454ec to 380838e Hash change: 88454ec7f78fdf8ce69b1cfb7f2288251eb0bf82 -> 380838e871c793ff4feb19bd584d9508b162b835 Changelog: ab40b95: README: document Wi-Fi 6 variants and atbm-606x-c branch 48da75a: README: match Wi-Fi 6 variants table to the vendor-style chip table format 380838e: README: fold Wi-Fi 6 variant build/firmware info into the single ALTOBEAM table
  • 7f111a5 package/open-tx-isp: update to 130d9b9 Update open-tx-isp from d2760bf to 130d9b9 Hash change: d2760bfe62a00ee24cd36447d8c9f1b7972b06bd -> 130d9b94b3ddecc0c195913f828f2fee75d562d4 Changelog: f138d68: Add T40 recovered ISP driver workspace 7d85fef: Major t40 milestone -- sensor data displayed and one IRQ active -- day 3 7b89a7d: Check pt 34a8bcb: both interrupt sets active 5fa2739: check pt 70e58c2: Restore T40 RTSP real frame data 2a9e3a7: Document T40 tuning hurdle study 02d049a: Add guarded T40 color path register snapshot afe6070: Document T40 color snapshot read hazard 04b0e5d: Add forced T40 Bayer sweep control 80d3fc4: Add T40 CSC and color-init probes 9203249: Document T40 color probes and fix snapshot windows fa51c09: Add guarded T40 neutral UV diagnostic b131b1f: Add T40 raw qbuf dump probes 01a72ad: Add T40 safe qbuf dump smoke script 5799793: Avoid full T40 proc read in qbuf dump smoke d3baff8: Use stable T40 qbuf fallback for raw dump smoke 3f42e78: Build T40 qbuf dump helper static 1a2e752: Document T40 raw qbuf chroma finding 1604b92: Track T40 dual qbuf neutral UV probe b2fc36e: Promote T40 minimal BCSH top baseline 5a3022e: Probe T40 CSI settle timing cd31296: Correct T40 VIC snapshot base f98ece4: Use stock T40 Bayer phase in qbuf probe 3b915e7: Pin T40 VIC MDMA stride/fmt as dominant defect; add forensics + knobs 38e0cc7: Correct T40 root cause: OEM uses ISP MSCA channel FIFO, not VIC MDMA 53b885c: T40 MSCA-FIFO path works: banding gone via ring-off param, AE is next 8f47603: T40 AE: confirm AE never drives GC4653 over I2C; map the bridge gap ef48e50: T40 AE: decode GC4653 sensor ioctl ABI + in-driver wiring plan a71cd89: T40 AE: confirm EXPO cmd=0x2000006 + payload format from jump table 417a334: T40 AE: lock in verified GC4653 EXPO bridge, drop reboot-prone AE tick f831fce: T40 shear: capture MSCA core geometry; localize defect to scaler output 1cfa315: T40 3A: diagnose dead ISP stats loop as the ADR banding root cause c797dec: T40 3A: add stats fanout; confirm recovered bring-up runs no ISP sw init 8709a73: T40 3A: attempt block-init call (option 3) - blocked by missing param infra 94376a6: T40 3A: option-3 A - fix block-init arg; init fns need reconstruction repair db54848: T40 diamond: localize defect to UV path; add inspection workaround 967dcbe: T40 diamond: set top40 LCE bit21 for clean luma bd81096: T40 AWB init scaffolding and protect active stream reload 7f83583: T40 probe: force local streamoff for recovered reload safety b2f29e5: T40 AWB: repair param tables, hw-write chain, and init path against OEM binary 0d1ada7: T40: live WB gains + self-sustaining gray-world AWB loop b89d766: T40: software AE controller (ae-soft), AE init blob + width/height args 68b032f: T40: fix GC4653 EXPO cmd (0x2000016), userspace 3A agent for night AE/AWB b1e72f4: T40: soft gamma (grain fix), smooth proportional 3A, probe auto-start ccaca89: T40: faithful YDNS denoise chain repair, enabled by default 17dcfd5: T40: OEM gamma curve from tuning blob + GIB black level — fog eliminated ee8d3a9: T40: YSP sharpening chain scoped + symbolic reg_cfg extractor c1d1b28: T40: sharpening online — YSP chain via literal MIPS->C translation 657ce43: T40: CCM online via literal translation — full color pipeline complete d7fa544: T40: anti-flicker AE rungs, smooth exposure, DNS strength tracks gain 062c0c5: T40: MDNS chain installed (default off, recon), AE/DNS retune 950dce1: T40 3A: two-level AE (IT micro-trim + coarse gain) — kills breathing c65c6e9: T40 MDNS temporal denoise ONLINE — gate is top40 bit13 5ca976e: T40 daylight AWB: brightest-2 near-gray candidates; color-block gap mapped 0403519: T40 color parity: add gated BCSH and staged CLM literal chains d61d4e1: T40 LSC online via faithful lit chain; radial color cast root-caused 130d9b9: Check pt t40/t41 work
  • e9e4ea5 package/nino: update to eec2203 Update nino from adf76f9 to eec2203 Hash change: adf76f94d30857e85e423635d502d6e5c43aed87 -> eec220383404129b4ca089d182fbdcfb73dac5cb Changelog: ac9b0a3: Replace ctype.h functions with ours 42fc381: Add deselect language of a file 2c2c5c0: Improve cursor and row offset on reload 9d15d3a: Strengthen HLDB JSON validation 33a2d04: Add DevMsg 5e475e2: Add incremental find 9534e39: Improve find cache validation on case 3f0be06: Fix find cache on exact match but wrong case e74773d: Fix action list not init after reload eec2203: Remove scroll release event workaround
  • 34ddd84 package/faac: update to 02fee83 Update faac from 167b5eb to 02fee83 Hash change: 167b5eb656c7f529faf565ead10ba0c67f5eb384 -> 02fee83d97e5db0644c0622a2b15ed6e6db461fe Changelog: 600f237: quantize: floor masking targets in quiet bands; fix qlevel safety (#107) 02fee83: quantize: keep global_gain a valid regular scalefactor (fix decoder OOR) (#109)
  • 44b392f libnl: force automake API version 1.17 for debian:trixie builder The libnl-3.12.0 release tarball is generated with automake 1.18.1, which hardcodes am__api_version='1.18' (and thus aclocal-1.18 / automake-1.18 via the missing wrapper) into configure and Makefile.in. Our patches (to support disabling unused netlink libraries via conditionals) touch configure.ac / Makefile.am, which triggers the regeneration rules during make. debian:trixie only provides aclocal-1.17, so builds in the official thingino-builder-image container fail with: .../missing: line 85: aclocal-1.18: command not found Add 0006-downgrade-am-api-version-to-1.17.patch (and small supporting updates to the 0002/0004 generated-file patches) to force the 1.17 API version. This lets CAMERA=... ./docker-build.sh dev (and normal builds) successfully pass the libnl step inside the trixie-based container.
  • 0948a73 create a directory for local overrides
  • dab0c69 massive update: sync changes from master - new partitioning with unified overlay - uboot from bundle plus a patch - kernel led system
  • db813d0 Add new Q5 variant (T21N, OV2735B, MT7601U, 16MB)
  • 14f7115 libnl: versioned patches
  • d2e1295 busybox: versioned patches for different busybox versions
  • 6e27ebc add vcm gpio config to motors.json, and use it in focus script dw9714-ctrl
  • 62f451f buildroot update: stash changes before updating
  • 17d3481 Update buildroot to latest stable release 2026.05
  • f401a1a uhttpd: update patch to match the codebase
  • 14e86a8 package/thingino-uhttpd: update to 1b624f8 Update thingino-uhttpd from e619cb0 to 1b624f8 Hash change: e619cb04cddba8316d6928ff99f55a49e6ddc561 -> 1b624f8f814ed568608d756512892416e0431d77 Changelog: d255187: client: prevent transfer_chunked counter overflow 07f0afb: client: match Host and URL attributes exactly in tls_redirect_check 05406f7: file: scan all entries when matching If-Match / If-None-Match 81527e1: proc: restore default SIGPIPE disposition in spawned child 0df6257: ucode: initialize module search path only once 05317bf: proc: store CGI Status message per-client instead of in a shared buffer 1781b6d: utils, client: cast char to unsigned before passing to ctype functions 4221eb8: file: respond 500 on uh_handle_alias OOM 8e5b26f: file: distinguish parse failure from epoch in date precondition checks ced7b15: utils: fix one-byte overflow in uh_urldecode 53e7150: file: bail out of file_write_cb on read error 9343214: utils: remove unreachable return statement in uh_addr_rfc1918 add5389: utils: fix off-by-one out-of-bounds read in uh_b64decode 778ccbb: main: fix daemonization stdio redirection and fd leak 2c869c0: client: parse Content-Length safely 9404e6c: client: parse chunked transfer chunk size safely b33ca5d: auth: do not accept stored crypt hash as plaintext password 6fadf0d: auth: replace strcmp with constant-time password comparison 6ab9abb: cgi, file: fix crash due to field_len type mismatch with libubox 1b624f8: auth: classify $p$ lookups by account state
  • 231badc package/thingino-ubus: update to 795b32b Update thingino-ubus from 3cc98db to 795b32b Hash change: 3cc98db1a422dcf560f2d6347fd410f17565a89d -> 795b32bb96b611493f423666236e9c1e49e0736c Changelog: 4b27405: libubus: fix NULL dereference on OOM in ubus_queue_msg 8b5be57: libubus-acl: fix dangling pointers on blob_memdup failure in acl_recv_cb 9105ea2: ubusd_acl: fix NULL dereference on OOM in ubusd_acl_alloc_obj 07d7f34: ubusd_acl: handle allocation failures in ubusd_acl_init_client 497321a: ubusd_acl: fix NULL dereference on OOM in ubusd_acl_init f66d52b: ubusd_event: fix OOM handling in ubusd_send_event_msg 11ea1b3: ubusd_main: fix async-signal-unsafe SIGHUP handler 0c09559: ubusd_proto: fix resource leaks and ID tree corruption in ubusd_proto_new_client f61695e: ubusd_proto: fix NULL dereference for user/group in ubusd_handle_add_watch 7ecacfa: ubusd_proto: fix NULL dereference on OOM in ubusd_proto_init_retmsg 3ab9d77: lua: fix inverted argument check in ubus_lua_add 43051ca: lua: fix unchecked calloc and memory leak in ubus_lua_load_object 4ca0b14: ubusd_id: use getrandom(2) unconditionally on Linux 7e4356d: ubusd_monitor: fix NULL dereference on OOM in ubusd_monitor_message 5849870: libubus-req: fix file descriptor leaks in ubus_process_req_msg f29767f: libubus: fix file descriptor leaks in ubus_process_msg b099d05: libubus: make ubus_shutdown idempotent a564b8d: ubusd_main: check strdup return value in mkdir_sockdir 239edcb: ubusd_id: fix continue in do-while skipping random ID retry 09d2df4: ubusd: fix NULL dereference on OOM in ubus_msg_enqueue bcc45ca: libubus: actually set FD_CLOEXEC on the ubus socket 8188f5c: libubus-io: close recv_fd captured before get_next_msg failure 7a068ba: libubus-io: byte-swap peer in HELLO when storing as local_id 747013f: libubus-io: reset sock.fd to -1 after close on ubus_reconnect error path 020a64b: ubusd_acl: use size_t for strlen result in ubusd_acl_alloc_obj f92ffd2: ubusd: use size_t for string and blob length variables 795b32b: ubusd: use fixed-width types for sequence counters
  • c4826b8 package/thingino-raptor-ipc: update to 537bfcf Update thingino-raptor-ipc from 8c68f61 to 537bfcf Hash change: 8c68f61f94fb88885b03c1fec9e14a9db89ac7a4 -> 537bfcf9159d8a270a0ad8cc96b5b3cf8d31d9bb Changelog: 64bf347: ipc: move shm_open fallback log to TRACE level 537bfcf: ipc: add TRACE level to default logger, filter trace messages by default
  • c4d58f0 package/thingino-raptor-hal: update to 1798e4e Update thingino-raptor-hal from 9efbea5 to 1798e4e Hash change: 9efbea55544ef6a0d77a1b5c244ff245b44d43ff -> 1798e4e30750c7904bd88c096b449fc914fa310c Changelog: d287851: fix C++ build: filter -std=c11 from CXXFLAGS, suppress missing-field-initializers 9780eb1: fix persondet: use ifdef PERSONDET instead of weak symbols 1798e4e: raptor-hal: add T10 platform support (aliases T20 SDK)
  • c616afd package/thingino-raptor-common: update to 2f29631 Update thingino-raptor-common from fe61fb7 to 2f29631 Hash change: fe61fb70b8750bf474fad379aa212767223aeef8 -> 2f296318891c61e131ef36c4296822d951b94698 Changelog: 2f29631: common: add rss_json_get_nested_int for nested JSON key lookup
  • 6bc6d3b docker: add overrides, expand symlink
  • f7453e3 docker: add missing packages
  • 5912857 webui: add -m sha512 to mkpasswd calls for busybox compatibility

Don't miss a new thingino-firmware release

NewReleases is sending notifications on new releases.