Reverse-engineering brings RK3576 NPU support to open-source Rocket driver for mainline Linux
Reverse-engineering brings RK3576 NPU support to open-source Rocket driver for mainline Linux
Publish Date: 2026-07-15 01:01:00
Source Domain: www.cnx-software.com
Back in 2024, we noted that the open-source driver for RK3588’s NPU by Tomeu Vizoso delivered decent performance for object detection. Since then, good progress has been made, and it’s now known as the Rocket driver in mainline Linux.
However, the Rockchip RK3576 SoC is not supported by the Rocket driver in mainline yet, despite sharing a similar NPU. The good news is that Ga Hing Woo has been working on mainline Linux support for the Rockchip RK3576 NPU using the Rocket driver stack and has tested the updates on the Radxa ROCK 4D running Linux 7.1-rc5. This required some serious reverse-engineering work due to hidden registers not documented in the TRM.
Ga Hing Woo (also written as Jiaxing Hu) sent us an email explaining some of the challenges:
Single int8 convolution now comes out byte-exact against a CPU reference on the open stack. Getting there meant reverse-engineering the compute registers, which the TRM leaves out completely (searching “CNA”, “CMAC” or “convolution” gives zero hits across all 4381 pages).
Chained layers still stall, and I spent the time to work out why rather than guess. The CNA/CORE/DPU executer bit 16 never engages on chained tasks, which traces down to a sub-MMIO sequencer state the driver can’t see. So it’s a clean negative result, not a fix I’m claiming.
Another developer, MidG971, ran into the same wall independently on the RK3568, coming at it from a different chip. That’s really what pushed me to write it up instead of sitting on it.
The writing in question is a highly technical research paper entitled “Bringing Up the RK3576 NPU on Mainline Linux: A Byte-Exact Single-Task Path and a Falsification-First Negative Result on Chained-Task Compute”. Every number in the paper is measured, not projected. It will probably only be understood by people who have already worked on this type of NPUs.
The source code and instructions for the mainline kernel bring-up for the RK3576 NPU on Radxa ROCK 4D can be found on…