Wave No-Kernel SDK Acquisition Checklist
Target: Insta360 Wave / Amlogic A5
Vivante family: VIP9000Nano-S
Customer/product target: 0x1000000e
Minimum SDK: 6.4.22
Purpose: offline OpenVX/ovxlib graph-to-NBG compilation
Shareable package request
Section titled “Shareable package request”Please provide the complete x86-64 Linux Vivante no-kernel SDK release that can compile OpenVX/ovxlib graphs into NBG for:
profile: VIP9000NANOS_PID0X1000000EchipModel: 0x00009000chipRevision: 0x00009001 database rowlive revision: 0x00009002, same masked revision familyproductID: 0x05090001ecoID: 0x04000000customerID: 0x1000000eRequired release properties:
Vivante no-kernel SDK: 6.4.22 or newerovxlib: 1.2.26 or newerVIPLite: 2.0.0 or newer, if VIPLite is the deployment routehost: x86-64 Linuxoutput: NBG / network_binary.nbhardware profile: supplied through VIV_GPU_FILEPlease include all tools, shared libraries, static libraries, headers, configuration files, licences/entitlements, build/version records, sample source, and documentation from one mutually compatible release.
Mandatory deliverables
Section titled “Mandatory deliverables”| Category | Required material | Why it is needed |
|---|---|---|
| Provenance | original archive, release name, release date, download/vendor channel | binds every result to a trusted source |
| Version | SDK, IDE, ovxlib, VIPLite, VSC/CLC, OpenVX, GAL, simulator, NBG generator build IDs | prevents mixing ABI-adjacent releases |
| Host tools | exact x86-64 compiler/NBG executables and wrappers | provides the isolated compile boundary |
| Graph libraries | OpenVX, ovxlib, TIM-VX adapter dependencies, architecture/performance libraries | establishes graph lowering and target selection |
| Shader libraries | matching VSC/CLC components if used by graph lowering | prevents the known missing/adjacent CLC failure |
| Profile | exact VIP9000NANOS_PID0X1000000E.config or vendor replacement |
selects the Wave feature database |
| Headers | every public/private header needed by samples and generated case code | reconstructs types and ownership without guessing |
| Examples | smallest offline/no-kernel Conv-to-NBG sample | reveals supported entrypoint and I/O flow |
| Build files | makefiles, linker scripts, pkg-config/CMake metadata, compiler flags | captures the dependency and link contract |
| Licence | offline compiler licence file, server configuration, entitlement instructions, target authorization | distinguishes missing entitlement from ABI failure |
| Documentation | environment variables, CLI reference, supported targets, supported operators, limitations | constrains safe invocation |
| Checksums | vendor-published package digests or signed metadata, if available | strengthens supply-chain verification |
Questions the provider must answer
Section titled “Questions the provider must answer”- Which executable or library performs final graph-to-NBG generation?
- Does that component directly consume
VIV_GPU_FILE? - Is
VIP9000NANOS_PID0X1000000Elicensed and supported in this release? - Is live chip revision
0x9002expected to select database row0x9001? - What is the supported runtime compatibility range for an NBG generated by this release?
- Is Wave runtime
6.4.19.5.946407within that range? - What NBG format/version does the generator emit?
- Are NBG bytes deterministic for identical inputs?
- Which compiler output owns
network_binary.nb, and who allocates/frees intermediate buffers? - What environment variables are required besides
VIV_GPU_FILE? - Does any compile path open
/dev/galcoreor require a device? - Can offline compilation run without network access after licence setup?
- Which Conv layouts, data types, quantization modes, dilation, groups, padding, strides, and shape limits are supported?
- Are dynamic shapes supported, rejected, or specialized?
- Which tensor alignment and memory-budget limits apply to VIP9000Nano-S?
An unanswered operational question remains an explicit qualification unknown; it is not filled with a guess.
Insufficient substitutes
Section titled “Insufficient substitutes”The following alone do not satisfy the request:
- an Acuity Python wheel;
- an ONNX importer;
- an x86 simulator SDK;
VSIMULATOR_CONFIGsupport withoutVIV_GPU_FILEgraph compilation;- standalone GLSL/OpenCL shader compilers;
- a profile file without its consuming compiler;
- a compiler executable without its dependency closure;
- a newer frontend coupled to an older embedded SDK;
- an AArch64 CLC from a different
6.4.xbuild; - an NBG for another customer/product target;
- permission to patch a foreign NBG target field.
PoC 9D found all of the first five ingredients spread across one vendor image, yet still did not find a compatible Wave graph compiler.
Intake procedure
Section titled “Intake procedure”Before execution:
- preserve the original downloaded bytes;
- record source URL/channel, timestamps, HTTP metadata, and provider;
- calculate SHA-256 and byte count for every archive;
- validate archive paths, duplicates, links, devices, and encryption;
- inspect container images as OCI/TAR data—do not load or run them;
- rehash nested members and OCI blobs;
- extract only a reviewed static-analysis subset;
- identify every ELF architecture, interpreter, import, RPATH, and dependency;
- recover version strings and prove all components belong to a compatible release;
- locate the actual
VIV_GPU_FILEgraph consumer; - recover the compiler input/output and allocation-ownership ABI;
- validate the exact Wave profile against PoC 9A and the vendor config;
- write a new immutable candidate manifest;
- obtain review of a one-attempt fixed-Conv compile plan.
No package advances merely because its filename or marketing version looks new enough.
First authorized compile envelope
Section titled “First authorized compile envelope”After static qualification, the first invocation is limited to:
graph: one fixed, immutable Conv controlinput: generated case/source and constants with exact hashesprofile: exact vendor Wave profileattempts: onenetwork: nonedevice nodes: noneADB: nonedependency root: read-onlyoutput root: new, empty, private directorylimits: CPU, memory, PIDs, descriptors, file bytes/count, wall timecapture: stdout, stderr, exit/signal, created paths, sizes, hashesThe compiler result is not executed. It first enters a separate static NBG qualification:
- parse magic and format version;
- validate all sizes, offsets, counts, and sections;
- require target
0x1000000e; - require the expected Conv tensor descriptors;
- validate all stored checksums;
- compare structural invariants with the stock Wave corpus;
- retain an exact compiler/profile/input/output manifest.
Only an independently reviewed later PoC may stage the approved artifact on the Wave.
ONNX relationship
Section titled “ONNX relationship”This package is not required for general ONNX parsing or CPU execution. Those are already available through the repository’s ONNX Runtime host control plane.
It is required to approve an NPU partition:
ONNX model -> bounded auditor -> fixed eligible partition -> qualified VSINPU/TIM-VX lowering -> qualified no-kernel NBG compiler -> static NBG audit -> approved graph signatureUntil that chain passes, hybrid mode remains an explicit all-CPU fallback with zero NPU attempts.
Current acquisition reference
Section titled “Current acquisition reference”The rejected public-package control is documented in:
Its exact negative boundary should be used to avoid reacquiring the same simulator/shader-only package under a different wrapper.