3.5 KiB
RK1 runtime and hardware diagnostics
This directory installs the local RKNN C runtime and supplies the two commands
used to qualify an RK3588 media image. It does not install RKNN Toolkit's model
conversion environment, Python wheels, or rknn_server.
Pinned RKNN runtime
rknn-version.env locks RKNN Toolkit2 v2.3.2 to commit
42aa1d426c0a9e0869b6374edba009f7208a1926. The installer verifies the SHA-256
of the ARM64 runtime, C header, RK3588 MobileNet model, demo image, and license
before installing anything. A tag move or damaged download therefore fails the
image build.
Run the installer inside the target chroot:
runtime/install-rknn-runtime.sh
Or install into a mounted root filesystem from an ARM64 build host:
runtime/install-rknn-runtime.sh --rootfs /path/to/rootfs
For an offline/reproducible build, provide the pinned checkout explicitly:
runtime/install-rknn-runtime.sh \
--rootfs /path/to/rootfs \
--source-dir /path/to/rknn-toolkit2-v2.3.2
The build host needs Bash, Git when downloading, an ARM64 C compiler,
coreutils, and standard install utilities. Native compilation on the RK1 is
the supported default; a cross-build can select a compiler with --cc.
Files are installed below /opt/rknn/2.3.2, with /opt/rknn/current as the
stable link. The runtime path is registered in /etc/ld.so.conf.d/rknn.conf,
and the inference test also embeds that path as an ELF rpath. The test uses a
deterministic synthetic tensor and verifies model initialization, selected-core
submission, and finite output. It is a hardware/runtime smoke test, not a
MobileNet accuracy benchmark.
Hardware self-test
The installed command inventories HDMI/EDID, Panthor or Mali, DRM render nodes, RKMPP decoder and encoder bindings, AV1, RGA2/RGA3, RKNN, HDMI ALSA, Ethernet link state, eMMC, NVMe, and the root filesystem:
rk1-media-selftest
rk1-media-selftest --quick
rk1-media-selftest --json
The normal run adds short Vulkan, H.264/HEVC/MJPEG encode, and NPU core
0/1/2/combined workloads when their tools are installed. --quick performs no
active workloads. To test 4K decoding and RKMPP-to-RGA zero-copy scaling, place
licensed samples in a directory with names containing h264, hevc, vp9,
and av1, then run:
rk1-media-selftest --media-dir /usr/share/rk1-media/samples
Missing tools and tests that cannot apply are SKIP; absent or disconnected
hardware is normally WARN; an advertised capability whose active workload
fails is FAIL. The exit status is zero unless a check fails. --strict also
makes warnings return status 1. Invocation errors return status 2.
Diagnostic bundle
Create a local archive suitable for troubleshooting a blank display or missing accelerator:
sudo rk1-media-diagnostics
sudo rk1-media-diagnostics --include-active-tests \
--media-dir /usr/share/rk1-media/samples
The collector records the JSON quick test, DRM connectors, decoded EDID, drivers, filtered kernel messages, relevant packages, ALSA devices, link state, and storage topology. It does not upload anything. It omits raw EDID, disk serials and UUIDs, addresses, user files, SSH material, and unfiltered journals, and applies basic redaction; review the bundle before sharing it.
Tests
runtime/tests/run-tests.sh
RKNN_SOURCE_DIR=/path/to/rknn-toolkit2-v2.3.2 \
runtime/tests/run-tests.sh
The first form tests syntax, absent-hardware handling, JSON, synthetic sysfs,
and diagnostic collection. Supplying RKNN_SOURCE_DIR also compiles and stages
the pinned runtime into a temporary root filesystem.