菜单

沣大哈
沣大哈
发布于 2026-08-14 / 0 阅读
0
0

CMP30HX-3D渲染解锁教程

CMP 30HX 矿卡解锁 3D 渲染 — 完整技术文档

目标:让 NVIDIA CMP 30HX(TU116 矿卡,无视频输出)在 Linux 下获得 3D 渲染能力(OpenGL/Vulkan/CUDA)。
原理:官方驱动把矿卡标记为「计算加速器」并禁用图形功能,通过修改驱动的设备 ID 映射来解锁。
实测环境:Ubuntu 26.04 LTS,内核 7.0.0-28-generic,雷电 5 坞外接 CMP 30HX。


一、原理简述

CMP 矿卡(30HX/40HX/50HX/90HX 等)芯片与对应游戏卡相同,但 NVIDIA 在驱动里用设备 ID 把它们标记为
「processing accelerator」(PCI class 0x07),不提供 3D 加速、无视频输出

本项目(dartraiden/NVIDIA-patcher)通过修改驱动内核模块
nv-kernel.o_binary 里的设备 ID 表,让驱动把矿卡当作可渲染的显卡处理,从而解锁 3D 加速。

关键限制(物理层面,无法通过软件绕过):

  • 矿卡没有 HDMI/DP 视频输出接口 → 只能做「离屏渲染」,画面必须由核显或另一张显卡输出。

二、硬件/环境

主机 华硕无畏 Pro 15(Intel Ultra 9,Meteor Lake 核显 + RTX 4060)
外接 雷电 5 坞(JHL9480)→ CMP 30HX(PCI ID 10de:2189
系统 Ubuntu 26.04 LTS,内核 7.0.0-28-generic
目标驱动 NVIDIA 610.43.02(闭源内核模块)
补丁工具 NVIDIA-patcher 的 linux.sh

三、前置条件

  1. 确认矿卡被系统识别
    lspci -nn | grep -i nvidia
    # 应看到:... 3D controller: NVIDIA Corporation TU116 [CMP 30HX] [10de:2189]
    
  2. 关闭 UEFI Secure Boot(必须,否则未签名的 nvidia.ko 会被内核拒载):
    • 重启进 BIOS(华硕 F2)→ Security/Boot → Secure Boot → Disabled
    • 验证:mokutil --sb-state 输出 SecureBoot disabled
  3. 安装编译依赖(通常已装):gcc make + 内核头文件
    sudo apt install -y build-essential linux-headers-$(uname -r)
    

四、完整步骤

步骤 1:下载官方驱动 + 补丁脚本

mkdir -p ~/nvidia-patch && cd ~/nvidia-patch

# 官方驱动(注意:必须带 Referer,否则 nvidia 的 CDN 返回 403)
curl -L -A "Mozilla/5.0" \
  -e "https://www.nvidia.com/en-us/drivers/details/274183/" \
  -o NVIDIA-Linux-x86_64-610.43.02.run \
  "https://us.download.nvidia.cn/XFree86/Linux-x86_64/610.43.02/NVIDIA-Linux-x86_64-610.43.02.run"

# 补丁脚本 linux.sh(jsDelivr 镜像,国内可直连;GitHub 被墙时用它)
curl -o linux.sh \
  "https://cdn.jsdelivr.net/gh/dartraiden/NVIDIA-patcher@610.43.03/linux.sh"

步骤 2:解包 + 打补丁

cd ~/nvidia-patch
chmod +x NVIDIA-Linux-x86_64-610.43.02.run
bash linux.sh
# 输出应包含:Found pattern: CMP — 1 occurrence(s) ... === SUCCESS ===

⚠️ 关键坑:版本匹配。官方 release 里那个 NVIDIA-Linux-x86_64-610.43.03.zip 补丁包内部版本是
610.43.03,直接替换进 610.43.02 驱动会导致内核模块(03)与用户空间库(02)版本不一致,
nvidia-smiDriver/library version mismatch
正确做法是上面的 linux.sh 自己打补丁——只改设备 ID,版本保持 610.43.02。

步骤 3:卸载旧驱动

# 先看已装了什么
dpkg -l | grep -i nvidia | awk '{print $2}'

# 卸载(按实际包名调整)
sudo apt remove --purge -y \
  nvidia-driver-595-open nvidia-kernel-common-595 nvidia-kernel-source-595-open
# 清理残留(含 i386 库和 firmware 包,否则也会导致版本错配)
sudo apt autoremove --purge -y

步骤 4:停图形服务 + 卸载模块(⚠️ 屏幕会黑屏,正常现象)

sudo systemctl stop gdm
sudo rmmod nvidia_drm nvidia_modeset nvidia 2>/dev/null

这一步屏幕会黑屏,是预期的——图形服务停掉了。别慌,继续往下跑,最后一步会自动重启恢复。

步骤 5:编译安装补丁驱动

cd ~/nvidia-patch/NVIDIA-Linux-x86_64-610.43.02
sudo ./nvidia-installer \
  --no-x-check \
  --no-nouveau-check \
  --silent \
  --kernel-module-type=proprietary
# 退出码 0 = 成功。--kernel-module-type=proprietary 必须加,否则装 open 模块补丁会失效

步骤 6:配置(blacklist nouveau + 禁用 GSP + 自动加载)

# blacklist nouveau(防止它抢卡)
sudo tee /etc/modprobe.d/blacklist-nouveau.conf >/dev/null <<'EOF'
blacklist nouveau
options nouveau modeset=0
EOF

# 禁用 GSP 固件(CMP 30HX/40HX 必须,否则游戏/计算不稳定)
sudo tee /etc/modprobe.d/nvidia.conf >/dev/null <<'EOF'
options nvidia NVreg_EnableGpuFirmware=0
EOF

# 开机自动加载
sudo tee /etc/modules-load.d/nvidia.conf >/dev/null <<'EOF'
nvidia
nvidia_uvm
EOF

# 重建 initramfs(Ubuntu 26.04 用 dracut)
sudo dracut --force

步骤 7:重启

sudo reboot

步骤 8:验证

# 模块加载
lsmod | grep nvidia

# 识别 + 版本正确(无 mismatch)
nvidia-smi
# 应显示 NVIDIA CMP 30HX,Driver 610.43.02,GSP Firmware: N/A

# Vulkan 识别为独立 GPU
vulkaninfo --summary | grep -iE 'deviceName|deviceType'
# deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, deviceName = NVIDIA CMP 30HX

# OpenGL 4.6 渲染器
sudo apt install -y mesa-utils
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo -B
# OpenGL renderer: NVIDIA CMP 30HX/PCIe/SSE2, version 4.6.0

五、使用方式(离屏渲染)

矿卡没视频口,用「核显显示 + 矿卡渲染」:

# OpenGL 程序强制走矿卡
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia <程序>

# Vulkan 程序自动选 DISCRETE_GPU(即矿卡)
<程序>

# CUDA 直接可用
nvidia-smi

六、踩坑记录(重要)

# 现象 解法
1 补丁包版本错配 Driver/library version mismatch linux.sh 自己打补丁,别用 release 的 zip
2 Secure Boot 开启 Key was rejected by service / 模块拒载 BIOS 关闭 Secure Boot
3 nouveau 抢卡 nvidia 模块加载失败 blacklist + 重启
4 GSP 固件 CMP 卡游戏/计算不稳定 NVreg_EnableGpuFirmware=0
5 残留 595 包 版本检测混乱 apt autoremove --purge 清干净
6 官方驱动 403 直接下载被拒 curl 加 Referer
7 模块被占用 安装时 nvidia-drm in use stop gdm + rmmod
8 nouveau refcnt=-1 rmmod 卡死 不硬刚,靠 blacklist + 重启

七、回滚

# 重新安装官方驱动(恢复未打补丁状态)
sudo apt update
sudo apt install -y nvidia-driver-595-open
sudo reboot

原始文件备份:

  • ~/nvidia-patch/NVIDIA-Linux-x86_64-610.43.02/kernel/nvidia/nv-kernel.o_binary.backuplinux.sh 自动备份)
  • ~/nvidia-patch/nv-kernel.orig.6104302(手动备份的官方原始文件)

八、附录:一键自动化脚本

见同目录 unlock-30hx.sh。脚本会完成「下载 → 打补丁 → 卸载旧驱动 → 停 gdm → 安装 → 配置 → 自动重启」。
中间黑屏是正常现象,跑完自动重启恢复桌面。


评论