Skip to content

nt98513-diagnostics: add optional stock ABI tools - #2588

Draft
dpiers wants to merge 1 commit into
OpenIPC:masterfrom
dpiers:codex/nt98513-diagnostics-package-submission
Draft

dpiers wants to merge 1 commit into
OpenIPC:masterfrom
dpiers:codex/nt98513-diagnostics-package-submission

Conversation

@dpiers

@dpiers dpiers commented Oct 14, 2026

Copy link
Copy Markdown

Problem

There is no Buildroot target to build and install the NT98513 stock-ABI diagnostic tools proposed in OpenIPC/ipctool#246. Add a separate, default-off nt98513-diagnostics package for nt98513-descriptor-probe, nt98513-client and nt98513-sensor; leave the existing ipctool package unchanged.

Dependency: ipctool PR 246 is unmerged. This draft pins its tested head, c6fba9743e6b3924a3652d72fbcbdf564cbd33bb, from the OpenIPC repository. Land that source change first and confirm the pin before merging this package. Diagnostic implementation stays in ipctool; this diff contains only packaging and CI selection metadata.

Hardware tested on

None. Keep this PR as a draft: no camera, complete firmware image, boot, live IPC transaction or capture was tested. The evidence below covers a real package build/install and userspace emulation of the installed tools.

Evidence

Before, the package target did not exist:

make: *** No rule to make target 'nt98513-diagnostics'.  Stop.

After make -C /br O=/work/on BR2_EXTERNAL=/firmware/general -j4 nt98513-diagnostics:

-- Performing Test NT98513_COMPILER_ABI_OK - Success
>>> nt98513-diagnostics c6fba9743e6b3924a3652d72fbcbdf564cbd33bb Installing to target
-- Installing: /work/on/target/usr/bin/nt98513-descriptor-probe
-- Installing: /work/on/target/usr/bin/nt98513-client
-- Installing: /work/on/target/usr/bin/nt98513-sensor
-- Installing: /work/on/target/usr/share/doc/nt98513-diagnostics/README.md
-- Installing: /work/on/target/usr/share/doc/nt98513-diagnostics/LICENSE
  • Offline Buildroot 2024.02.10 build/install and legal-info passed with Bootlin MIPS32el musl 2024.02-1 / GCC 12.3.0. Buildroot's wrapper/sysroot remain in use; only CMAKE_SYSTEM_NAME=Linux is package-local. All 20 production source files match the pinned ipctool commit.
  • The accurately declared SDK/rootfs is hard-float; all 18 diagnostic objects and three installed executables independently passed little-endian MIPS32r2/O32 soft-float checks. Executables have the intended entrypoints, no interpreter, dynamic linkage or undefined symbols. Package manifests contain exactly three binaries and two documents, with no staging install.
  • Eight Kconfig configurations checked default/explicit-off, supported ABI and incompatible architectures. Only the supported hard-float configuration ran the package build; the soft-float case checked visibility only.
  • Twelve installed CLI cases passed both normally and with syscall tracing under isolated QEMU: help, invalid input and expected missing-device failures. No ioctl executed. No complete image or rootfs-finalization run is claimed.

The package build used firmware base 86ccd6fa1d016cacda6dfbcddc1b90fe685cba1e. On current base 751b2f4fb99b438fd8ec6e54c7defc662a942984, the unchanged package files and updated selector were checked separately:

ci-matrix: self-test ok (99 boards, 154 packages, 74 cases)
ci-matrix: 13/99 boards (needs_build=True) --- smoke set, not every board: CI plumbing only

The latter uses the exact five changed paths with both base-selector and package-index diff inputs. Omitting either widens to 99 boards; a draft event selects none. These are selector results, not completed board builds.

Validation limitation: eight pairs of case-distinct Linux UAPI headers collided during SDK extraction on the host filesystem. The original archive is intact; the compiler/helper binaries and all three SDK headers consumed by these diagnostics match the archive. This validates this package's consumed inputs, not the complete extracted SDK. Future SDK reuse requires fresh case-sensitive extraction.

Scope

  • No kernel patches under general/package/all-patches/linux/.
  • No files specific to a single retail camera model.
  • Diagnostic implementation remains in OpenIPC/ipctool; no probing or bring-up implementation is added here.
  • No shared overlay or load_<vendor> changes, services or device nodes.
  • OpenIPC source URL, full 40-character pin, archive hash and MIT license hash.
  • No LD_PRELOAD or checked-in binaries; Buildroot builds the tools from source.
  • New code is selected by a defconfig, so CI actually builds it.

The unchecked item is deliberate: these are manual diagnostics for a recovered stock Linux ABI, and no supported NT98513 board configuration is available. The package stays default-off with MIPSEL/MIPS32r2/O32 gates and a reasoned NOT_BUILT entry. No existing board is enabled, and this does not add NT98513 board support.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant