Disable NPU on RockOS 2025-0423

Hello,

I have zero use of the NPU and the idea it steals 6GB of RAM is quite frustrating. RockOS 2025-0423 does not publish an asset of the DTB with no-npu. I tried using the DTB asset from 2025-0219, but that causes the Megrez to fail to boot with some kind of display error. Should the DTB from 2025-0219 actually work or do you need a 2025-0423 specific DTB to get the NPU to be disabled? If you need a specific DTB, can someone please upload that asset to github? If you don’t need a specific DTB, has anyone seen it cause a boot failure?

2 Likes

The device tree has changed substantially between the 2025-0219 and 2025-0423 releases. It seems MilkV simply forgot to include the nodsp DTB in the current release. I would open an issue for the missing DTB on their GitHub and see what happens. I have been looking at the DTS for both the nodsp and the standard versions and I haven’t found the on/off swich. But that says more about my poor DT skills than anything else.

2 Likes

Correction! I found the change. If you decompile your current DTB, you want to look for mmz_nid_0_part_0 section, there is a line of reg = <0x03 0x00 0x01 0x80000000>; this needs to be changed to reg = <0x03 0x00 0x01 0x1000>; and then re-compile the DTB. This should remove the shared memory block.

Decompile existing DTB to DTS: dtc -i dtb -o dts /boot/dtb/eswin/eic7700-milkv-megrez.dtb (this creates a file called dts in the current directory)

Then you can compile with dtc -i dts -o dtb dts that will compile the dts file into a dtb file.

Backup your current DTB, don’t overwrite in case I am wrong but that should do what you want.

3 Likes

@edolnx Incredible suggestion. It worked! Here are the exact steps I used for anyone else:

sudo apt install device-tree-compiler
cd /boot/dtbs/linux-image-6.6.87-win2030/eswin/
sudo cp eic7700-milkv-megrez.dtb eic7700-milkv-megrez.dtb_bak
sudo dtc -i dtb -o dts eic7700-milkv-megrez.dtb
sudo nano dts
sudo dtc -i dts -o dtb dts
sudo mv dtb eic7700-milkv-megrez.dtb
sudo rm dts

And frankly this should be in the official docs, its far superior of a solution than having to download a new .dtb file. It could easily be a script to let you switch between .dtbs as well.

5 Likes

Awesome, glad I could help and apologies for my instructions being slightly less than straight-forward. It’s an area I’m working on improving.

2 Likes

It’s not necessary to change the DTB itself.

You can just modify U-Boot env vars and that should give you all the RAM.

2 Likes

You wouldn’t happen to know how to use their NPU without their runtime? (on megrez) Running deepseek with their runtime using modelscope seemed like a black box. I wouldn’t mind working with their NPU if there was some docs for it.

2 Likes