jetson-customize-nvpmodel
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseModify nvpmodel Power Mode (BSP-side)
修改nvpmodel电源模式(BSP侧)
Purpose
目的
Edit the per-board nvpmodel configuration so the device boots with
the desired power-mode set, CPU/GPU/EMC/TPC clamps, and default
mode. BSP-side only — all writes land in the overlay tracker, the
upstream copy is read-only.
bsp_imageThis skill handles BSP-side edits to the per-board nvpmodel configuration file: adding modes, removing modes, editing CPU/GPU/EMC/TPC clamps, and changing the boot default. Applies on Jetson / Tegra platforms (T234 Orin, T264 Thor).
编辑单板nvpmodel配置,使设备开机时设置为所需的电源模式、CPU/GPU/EMC/TPC频率限制以及默认模式。仅限BSP侧操作——所有写入操作均存入overlay tracker,上游副本为只读状态。
bsp_image本技能负责在BSP侧编辑单板nvpmodel配置文件:添加模式、删除模式、编辑CPU/GPU/EMC/TPC频率限制,以及修改开机默认模式。适用于Jetson / Tegra平台(T234 Orin、T264 Thor)。
File format (canonical, per the BSP file header)
文件格式(标准格式,源自BSP文件头)
undefinedundefined1. PARAM definitions — declare named knobs and their sysfs paths
1. PARAM定义——声明命名控制项及其sysfs路径
< PARAM TYPE=FILE NAME=<param_name> >
<arg_name> </absolute/sysfs/path>
...
< PARAM TYPE=CLOCK NAME=<param_name> >
FREQ_TABLE </sysfs/.../available_frequencies>
MAX_FREQ </sysfs/.../max_freq>
MIN_FREQ </sysfs/.../min_freq>
FREQ_TABLE_KNEXT </sysfs/.../available_frequencies> # kernel-NEXT variant
MAX_FREQ_KNEXT </sysfs/.../max_freq>
MIN_FREQ_KNEXT </sysfs/.../min_freq>
< PARAM TYPE=FILE NAME=<param_name> >
<arg_name> </absolute/sysfs/path>
...
< PARAM TYPE=CLOCK NAME=<param_name> >
FREQ_TABLE </sysfs/.../available_frequencies>
MAX_FREQ </sysfs/.../max_freq>
MIN_FREQ </sysfs/.../min_freq>
FREQ_TABLE_KNEXT </sysfs/.../available_frequencies> # kernel-NEXT变体
MAX_FREQ_KNEXT </sysfs/.../max_freq>
MIN_FREQ_KNEXT </sysfs/.../min_freq>
2. POWER_MODEL definitions — one block per profile
2. POWER_MODEL定义——每个配置文件对应一个代码块
< POWER_MODEL ID=<int> NAME=<string> >
PARAM_NAME ARG_NAME <value>
...
< POWER_MODEL ID=<int> NAME=<string> >
PARAM_NAME ARG_NAME <value>
...
3. PM_CONFIG — mandatory; selects boot default
3. PM_CONFIG——必填项;选择开机默认模式
< PM_CONFIG DEFAULT=<id> >
Rules:
- For `TYPE=FILE`, `<value>` is a **string** (`0`, `1`, `on`, `auto`, …).
- For `TYPE=CLOCK`, `<value>` is an **integer** (Hz for clocks, raw integer for masks).
- `-1` for a CLOCK value means **INT_MAX** (no cap).
- The header `< … >` line must start at column 0 with a space after `<` and before `>`. Strict.
- Every `PARAM_NAME` referenced in a POWER_MODEL must already be declared above.
- **Frequency values must come from the kernel's `available_frequencies`** table for that clock — values not in the table get silently rounded.
- `CORE_0` cannot be offlined; at least one CPU core must remain online in every profile.
- **Copy PARAM names verbatim** from an existing POWER_MODEL block in the per-board file — chip families differ (T234 Orin uses `CPU_A78_<n>` for CPU clusters; T264 Thor uses a different convention). Don't invent.< PM_CONFIG DEFAULT=<id> >
规则:
- 对于`TYPE=FILE`,`<value>`为**字符串**(如`0`、`1`、`on`、`auto`等)。
- 对于`TYPE=CLOCK`,`<value>`为**整数**(时钟为赫兹值,掩码为原始整数)。
- CLOCK值为`-1`表示**INT_MAX**(无上限)。
- 头部`< … >`行必须从第0列开始,且`<`和`>`前后需有空格,格式严格。
- POWER_MODEL中引用的每个`PARAM_NAME`必须已在上方声明。
- **频率值必须来自对应时钟的内核`available_frequencies`表**——不在表中的值会被自动取整。
- `CORE_0`不能离线;每个配置文件中必须至少保留一个CPU核心在线。
- **严格复制现有POWER_MODEL代码块中的PARAM名称**——不同芯片系列的命名不同(T234 Orin使用`CPU_A78_<n>`表示CPU集群;T264 Thor使用不同的命名规则),请勿自行创造。Prerequisites
前置条件
Resolve the active profile per
.
Refuse and route in these cases:
../../context/target-platform-contract.md| Condition | Refuse with |
|---|---|
No active profile, or | Route to |
Profile lacks | Route to |
| Route to |
| Route to |
Resolve paths:
- from
<bsp_image.root_path>if present, elsebsp_image.root_path:.<workspace>/Image - from
<source.root_path>if present, elsesource.root_path:.<workspace>/Source
<bsp_image.root_path><source.root_path>../../context/bsp-customization-workflow.md#workflow-invariants/jetson-promote-image根据解析当前激活的配置文件。在以下情况下拒绝操作并引导至对应流程:
../../context/target-platform-contract.md| 条件 | 拒绝提示并引导至 |
|---|---|
无激活配置文件,或 | 引导至 |
配置文件缺少 | 引导至 |
| 引导至 |
| 引导至 |
解析路径:
- 优先从
<bsp_image.root_path>获取,否则使用bsp_image.root_path:。<workspace>/Image - 优先从
<source.root_path>获取,否则使用source.root_path:。<workspace>/Source
<bsp_image.root_path><source.root_path>../../context/bsp-customization-workflow.md#workflow-invariants/jetson-promote-imageThe per-board file
单板配置文件
The conf this skill edits has the relative path:
Linux_for_Tegra/rootfs/etc/nvpmodel/nvpmodel_<active-sku>.confIt lives in two roots; the skill walks both:
| Role | Location | Skill writes? |
|---|---|---|
| Detection + pristine source | | no — read-only |
| Overlay edit target + git commit | | yes |
Subsequent sections refer to the per-board file to mean the overlay copy
under . Operations 1–4 all read, edit, and save against
that overlay copy. The copy is read once during the
"Resolving " detection step and once during the
Overlay edit recipe's
pristine-import step, then never touched again.
<source.root_path><bsp_image.root_path><active-sku>本技能编辑的配置文件相对路径为:
Linux_for_Tegra/rootfs/etc/nvpmodel/nvpmodel_<active-sku>.conf该文件存在于两个根目录下;本技能会遍历这两个目录:
| 角色 | 位置 | 技能是否写入? |
|---|---|---|
| 检测 + 原始源文件 | | 否——只读 |
| 覆盖编辑目标 + git提交 | | 是 |
后续章节中提到的单板配置文件均指下的覆盖副本。操作1–4均针对该覆盖副本进行读取、编辑和保存。下的副本仅在“解析”检测步骤和覆盖编辑流程的原始导入步骤中读取一次,之后不再触碰。
<source.root_path><bsp_image.root_path><active-sku>Resolving <active-sku>
— which file to edit
<active-sku>解析<active-sku>
——确定要编辑的文件
<active-sku>The filename is not always . Variants exist:
module.id + "_" + module.sku- (super-mode SKU variant)
nvpmodel_p3767_0000_super.conf - ,
nvpmodel_igx_orin.conf(IGX, no SKU number)nvpmodel_igx_orin_safety.conf
At boot, (at ) reads the kernel DTB's root string and maps it — plus super/safety state — to the nvpmodel filename. Replicate that mapping BSP-side, against :
nvpower.shLinux_for_Tegra/rootfs/etc/systemd/nvpower.shcompatible<bsp_image.root_path>- Resolve the SKU-correct kernel DTB under and read its root
<bsp_image.root_path>/Linux_for_Tegra/(detect kernel DTB from the active flash conf).compatible - Read to find the compatible-string → conf mapping, and apply it to the compatible from the previous step (factoring in super/safety flags).
<bsp_image.root_path>/Linux_for_Tegra/rootfs/etc/systemd/nvpower.sh - Verify the resolved exists under
nvpmodel_<...>.conf.<bsp_image.root_path>/Linux_for_Tegra/rootfs/etc/nvpmodel/
Shortcut: filter to ; for super-mode flash configs pick the variant. Use only when unambiguous; otherwise fall back to the DTB method.
<bsp_image.root_path>/Linux_for_Tegra/rootfs/etc/nvpmodel/nvpmodel_<module.id>_<module.sku>*.conf_superDon't blindly compose — verify the file actually exists.
nvpmodel_<id>_<sku>.conf文件名不一定是。存在以下变体:
module.id + "_" + module.sku- (超级模式SKU变体)
nvpmodel_p3767_0000_super.conf - 、
nvpmodel_igx_orin.conf(IGX系列,无SKU编号)nvpmodel_igx_orin_safety.conf
开机时,(位于)会读取内核DTB的根字符串,并结合超级/安全状态映射到对应的nvpmodel文件名。在BSP侧,针对复制该映射逻辑:
nvpower.shLinux_for_Tegra/rootfs/etc/systemd/nvpower.shcompatible<bsp_image.root_path>- 在下找到与当前烧录配置匹配的SKU专属内核DTB,并读取其根
<bsp_image.root_path>/Linux_for_Tegra/字段。compatible - 读取,找到compatible字符串与配置文件的映射关系,并将上一步获取的compatible字段应用到该映射中(需考虑超级/安全标志)。
<bsp_image.root_path>/Linux_for_Tegra/rootfs/etc/systemd/nvpower.sh - 验证解析得到的是否存在于
nvpmodel_<...>.conf下。<bsp_image.root_path>/Linux_for_Tegra/rootfs/etc/nvpmodel/
快捷方式:筛选下的;对于超级模式烧录配置,选择带后缀的变体。仅当文件名无歧义时使用此快捷方式;否则回退到DTB方法。
<bsp_image.root_path>/Linux_for_Tegra/rootfs/etc/nvpmodel/nvpmodel_<module.id>_<module.sku>*.conf_super请勿盲目拼接——必须验证文件确实存在。
nvpmodel_<id>_<sku>.confPropagation set — confs to keep in sync
同步集合——需保持同步的配置文件
The active-SKU file is rarely the only conf that should carry a customization. After editing it, apply the same edit to every sibling in the propagation set so the change survives regardless of which module / baseboard SKU is booted:
- The reference platform's nvpmodel conf — the upstream conf the active file was forked from (resolve via in the active profile, or
reference_devkitfork ancestry). For a BSP that contains only the reference (no derived carriers), this is the same file as the active and the rule reduces to a no-op.jetson-derive-carrier - Every carrier-derived nvpmodel conf — each produced by
nvpmodel_*.conffor a custom carrier on top of the same module SKU.jetson-derive-carrier - siblings when present (e.g.
_super) — apply the structural edit (new POWER_MODEL block, removed block,nvpmodel_p3767_0000_super.confflip, NAME rename) but preserve the super conf's higher MAX_FREQ / MIN_FREQ caps. Those elevated caps are the whole reason thePM_CONFIG DEFAULT=variant exists; a blanket content overwrite from the non-super file would silently flatten the super envelope._super
"Apply the same edit" ≠ blanket file copy. Port the changed POWER_MODEL / PARAM lines into each sibling; preserve every other line. Blanket-copying is safe only when both confs were byte-identical before the edit. Otherwise re-validate per the Rules on each target (available-frequencies table for clock values, ID uniqueness, references a present ID) — sibling confs may carry SKU-specific tables that don't accept the active file's frequency values.
PM_CONFIG DEFAULT=available_frequencies当前激活的SKU配置文件很少是唯一需要自定义的配置文件。编辑完成后,需将相同的编辑操作应用到同步集合中的所有同级文件,确保无论启动哪个模块/基板SKU,修改都能生效:
- 参考平台的nvpmodel配置文件——当前文件派生自的上游配置文件(通过激活配置文件中的或
reference_devkit派生谱系解析)。对于仅包含参考平台(无派生基板)的BSP,此文件与当前激活文件相同,规则自动失效。jetson-derive-carrier - 所有基板派生的nvpmodel配置文件——每个由为同一模块SKU的自定义基板生成的
jetson-derive-carrier文件。nvpmodel_*.conf - 若存在同级文件(如
_super)——仅应用结构性编辑(新增POWER_MODEL代码块、删除代码块、修改nvpmodel_p3767_0000_super.conf、重命名NAME),但需保留超级配置文件更高的MAX_FREQ / MIN_FREQ上限。这些提升的上限正是PM_CONFIG DEFAULT=变体存在的意义;直接覆盖非超级文件的内容会悄无声息地抹平超级模式的频率范围。_super
“应用相同编辑”≠ 直接复制文件。需将修改后的POWER_MODEL / PARAM行移植到每个同级文件中;保留其他所有行。仅当两个配置文件在编辑前完全相同时,直接复制才是安全的。否则需针对每个目标文件重新验证规则(时钟值需在available-frequencies表中、ID唯一、引用的ID存在)——同级配置文件可能包含SKU专属的表,无法兼容当前文件的频率值。
PM_CONFIG DEFAULT=available_frequenciesOverlay edit recipe (apply before any Operation)
覆盖编辑流程(所有操作前需执行)
Follow the canonical
Off-skill edits recipe
in the workflow doc — pristine import + customization commit pair, both
gated by the preview gate. Apply once per run, covering every per-board
file the run touches (the active conf plus every sibling in the
Propagation set).
Concrete substitutions for this skill:
- is
<rel>/<file>.rootfs/etc/nvpmodel/<conf> - Suggested pristine-import message:
, body
import pristine: <comma-separated rel paths of imported confs>.Source: <bsp_image.root_path>/Linux_for_Tegra/ (BSP <bsp_image.version>) - Suggested customization-commit header:
, body lines like
jetson-customize-nvpmodel: <summary>.nvpmodel_p3767_0001.conf: PM_CONFIG DEFAULT 2 -> 0 (MAXN)
遵循工作流文档中的标准离线编辑流程——原始导入与自定义提交配对,均需通过预览 gate。每次运行执行一次,覆盖本次运行涉及的所有单板配置文件(当前激活配置文件以及同步集合中的所有同级文件)。
针对本技能的具体替换:
- 为
<rel>/<file>。rootfs/etc/nvpmodel/<conf> - 建议的原始导入提交信息:,正文为
import pristine: <逗号分隔的导入配置文件相对路径>。Source: <bsp_image.root_path>/Linux_for_Tegra/ (BSP <bsp_image.version>) - 建议的自定义提交标题:,正文示例为
jetson-customize-nvpmodel: <摘要>。nvpmodel_p3767_0001.conf: PM_CONFIG DEFAULT 2 -> 0 (MAXN)
Instructions
操作说明
Pick the operation that matches the user's intent and follow the
matching subsection. All write-side operations (1–4) must first
apply the Overlay edit recipe.
- Operation 1 — Add a new power mode (drives the NVIDIA Power Estimator).
- Operation 2 — Remove a power mode.
- Operation 3 — Edit an existing power mode (clamps, core-online, NAME).
- Operation 4 — Change the boot default ().
PM_CONFIG DEFAULT= - Operation 5 — List defined power modes (read-only).
After any write-side operation, run the Deploy chain ()
to land the change on the device.
## Deploy选择与用户意图匹配的操作,并遵循对应的子章节。所有写入类操作(1–4)必须先执行覆盖编辑流程。
- 操作1——添加新电源模式(基于NVIDIA Power Estimator生成)。
- 操作2——删除电源模式。
- 操作3——编辑现有电源模式(频率限制、核心在线状态、NAME)。
- 操作4——修改开机默认模式()。
PM_CONFIG DEFAULT= - 操作5——列出已定义的电源模式(只读)。
执行任何写入类操作后,运行部署链()将修改应用到设备上。
## 部署Examples
示例
Add a new 30 W power mode from a Power Estimator export and pin it
as the boot default on a P3767-0001 target:
/jetson-customize-nvpmodel
> add a new POWER_MODEL from ~/Downloads/nvpmodel_30W.conf as ID 8 NAME "30W_CUSTOM"
> set PM_CONFIG DEFAULT to 8Cap a Thor target to the MAXN power envelope by flipping the boot
default (no envelope tuning needed):
/jetson-customize-nvpmodel
> set PM_CONFIG DEFAULT to the MAXN profile's IDList which power modes the active SKU currently defines and which
is the boot default:
/jetson-customize-nvpmodel
> list defined power modes从Power Estimator导出的文件中添加新的30W电源模式,并将其设置为P3767-0001目标设备的开机默认模式:
/jetson-customize-nvpmodel
> add a new POWER_MODEL from ~/Downloads/nvpmodel_30W.conf as ID 8 NAME "30W_CUSTOM"
> set PM_CONFIG DEFAULT to 8通过修改开机默认模式,将Thor目标设备限制在MAXN电源范围内(无需调整频率范围):
/jetson-customize-nvpmodel
> set PM_CONFIG DEFAULT to the MAXN profile's ID列出当前激活SKU已定义的电源模式以及开机默认模式:
/jetson-customize-nvpmodel
> list defined power modesOperation 1 — Add a new power mode
操作1——添加新电源模式
Apply the Overlay edit recipe first.
先执行覆盖编辑流程。
Generate the profile via the Power Estimator
通过Power Estimator生成配置文件
Must not interpolate or extrapolate frequencies from existing profiles to estimate power.
For any non-stock power envelope (custom budget, custom workload), use the NVIDIA Power Estimator:
https://jetson-tools.nvidia.com/powerestimator/- Pick the exact module SKU and JetPack release.
- Enter workload (CPU cores, GPU usage, EMC, codecs, camera, display).
- Estimate power budget.
- Download custom .
nvpmodel.conf - Share the downloaded file path.
nvpmodel.conf
禁止从现有配置文件插值或外推频率来估算功耗。
对于任何非标准电源范围(自定义功耗预算、自定义工作负载),请使用NVIDIA Power Estimator:
https://jetson-tools.nvidia.com/powerestimator/- 选择精确的模块SKU和JetPack版本。
- 输入工作负载(CPU核心、GPU使用率、EMC、编解码器、摄像头、显示器)。
- 估算功耗预算。
- 下载自定义文件。
nvpmodel.conf - 提供下载的文件路径。
nvpmodel.conf
Append the POWER_MODEL block
追加POWER_MODEL代码块
In the per-board file, insert the new block after the last declaration (POWER_MODEL must reference declared PARAMs) and before the final line. The block structure is the File format shown above; frequency values come from the Power Estimator output (see "Generate the profile via the Power Estimator").
< PARAM … >< PM_CONFIG ... >Check is unique; should be uppercase, no whitespace. Each numeric / value must satisfy the rule (see Rules). If you intend this mode to be the boot default, follow Operation 4.
IDNAMEMAX_FREQMIN_FREQavailable_frequencies在单板配置文件中,将新代码块插入到最后一个声明之后(POWER_MODEL必须引用已声明的PARAM),且在最终的行之前。代码块结构遵循上文的“文件格式”;频率值来自Power Estimator输出(见“通过Power Estimator生成配置文件”)。
< PARAM … >< PM_CONFIG ... >检查是否唯一;应为大写,无空格。每个数值型 / 值必须符合规则(见规则)。若要将此模式设置为开机默认模式,请执行操作4。
IDNAMEMAX_FREQMIN_FREQavailable_frequenciesOperation 2 — Remove a power mode
操作2——删除电源模式
Apply the Overlay edit recipe first.
- In the per-board file, delete the entire block including all its parameter lines, up to (but not including) the next
< POWER_MODEL ID=<n> NAME=... >or< POWER_MODEL ... >marker.< PM_CONFIG ... > - If the deleted ID matches the current value in the trailing
DEFAULT=<id>line, point< PM_CONFIG … >at a remaining ID — otherwise nvpmodel will fail to apply a default at boot.DEFAULT= - Search for hard-coded references in the rootfs scripts before declaring the change safe:
bash
grep -rn "nvpmodel -m" \ Linux_for_Tegra/rootfs/etc \ Linux_for_Tegra/rootfs/opt 2>/dev/null
ID gaps are legal — you don't have to renumber remaining modes.
先执行覆盖编辑流程。
- 在单板配置文件中,删除整个代码块,包括其所有参数行,直到(但不包含)下一个
< POWER_MODEL ID=<n> NAME=... >或< POWER_MODEL ... >标记。< PM_CONFIG ... > - 如果删除的ID与尾部行中的当前
< PM_CONFIG … >值匹配,请将DEFAULT=<id>指向一个剩余的ID——否则nvpmodel将无法在开机时应用默认模式。DEFAULT= - 在rootfs脚本中搜索硬编码引用,确认修改安全后再执行:
bash
grep -rn "nvpmodel -m" \ Linux_for_Tegra/rootfs/etc \ Linux_for_Tegra/rootfs/opt 2>/dev/null
ID允许存在间隙——无需重新编号剩余模式。
Operation 3 — Edit an existing power mode
操作3——编辑现有电源模式
Apply the Overlay edit recipe first.
- In the per-board file, edit the parameter lines inside the block. Keep and
<param>names exactly matching the PARAM declarations.<arg> - If the edit changes the power envelope (any CPU/GPU/EMC/PVA/DLA /
MAX_FREQ, core-online count for a freq-bound mode, or TPC mask), re-run the NVIDIA Power Estimator (see "Generate the profile via the Power Estimator") to ground the new frequencies in a real per-component model. Do not interpolate from neighboring modes.MIN_FREQ - Validate clock values per the rule (see Rules).
available_frequencies
Edits that only toggle core-online flags within an already-validated envelope, or only change , don't need the Power Estimator pass.
NAME=先执行覆盖编辑流程。
- 在单板配置文件中,编辑代码块内的参数行。保持和
<param>名称与PARAM声明完全一致。<arg> - 如果修改涉及电源范围(任何CPU/GPU/EMC/PVA/DLA的/
MAX_FREQ、频率绑定模式下的核心在线数量、或TPC掩码),请重新运行NVIDIA Power Estimator(见“通过Power Estimator生成配置文件”),确保新频率基于真实的组件模型。禁止从相邻模式插值。MIN_FREQ - 根据规则验证时钟值(见规则)。
available_frequencies
仅在已验证的范围内切换核心在线状态,或仅修改的编辑操作,无需运行Power Estimator。
NAME=Operation 4 — Change the boot default
操作4——修改开机默认模式
Apply the Overlay edit recipe first.
Edit the line at the bottom of the per-board file.
< PM_CONFIG DEFAULT=<id> ><id>< POWER_MODEL ID=<id> … >先执行覆盖编辑流程。
编辑单板配置文件底部的行。
< PM_CONFIG DEFAULT=<id> ><id>< POWER_MODEL ID=<id> … >Operation 5 — List defined power modes
操作5——列出已定义的电源模式
This is a read-only operation; no overlay-tracker setup is needed. Run
against whichever copy you want to inspect (
for the pristine state, for the post-edit state):
<bsp_image.root_path>/...<source.root_path>/...bash
grep -E '^< POWER_MODEL ' <per-board file>
grep -E '^< PM_CONFIG ' <per-board file>The first command prints every /; the second prints the current boot default. On a running target, (or ) is authoritative.
IDNAMEnvpmodel -p --verbosenvpmodel -q此为只读操作;无需设置overlay tracker。可针对任意副本运行(为原始状态,为编辑后状态):
<bsp_image.root_path>/...<source.root_path>/...bash
grep -E '^< POWER_MODEL ' <per-board file>
grep -E '^< PM_CONFIG ' <per-board file>第一条命令会打印所有/;第二条命令会打印当前开机默认模式。在运行中的目标设备上,(或)的输出为权威结果。
IDNAMEnvpmodel -p --verbosenvpmodel -qLimitations
限制
- BSP-side scope only — this skill never invokes on a running target. Live mode switching requires reboot via Deploy, or the side-channel
nvpmodel -mflow described inscp + nvpmodel -m.## Deploy - Edits land in the overlay copy under only; the
<source.root_path>copy is read-only and is rewritten by<bsp_image.root_path>. Hand-editing/jetson-promote-imageis silently lost on the nextbsp_imagere-extract./jetson-init-image - Frequency values must come from the kernel's table for the relevant clock — values outside the table get silently rounded. This skill does not validate against a live target's table; trust the per-board file's existing values and Power Estimator output.
available_frequencies - Non-trivial envelope edits (any CPU/GPU/EMC/PVA/DLA /
MAX_FREQchange) require the NVIDIA Power Estimator (MIN_FREQ) — interpolation or extrapolation between existing modes is not supported.https://jetson-tools.nvidia.com/powerestimator/ - Propagation across siblings is partial by design: only the changed
/
POWER_MODELlines are ported, never a blanket file overwrite, sincePARAMsiblings carry elevated_super/MAX_FREQcaps that must stay intact.MIN_FREQ - PARAM names are chip-family-specific (e.g. on T234, different on T264). Copy verbatim from existing POWER_MODEL blocks; invented names silently fail to apply.
CPU_A78_<n>
- 仅限BSP侧范围——本技能不会在运行中的目标设备上调用。实时切换模式需要通过部署链重启设备,或使用
nvpmodel -m中描述的## 部署旁路流程。scp + nvpmodel -m - 编辑仅会存入下的覆盖副本;
<source.root_path>下的副本为只读,会被<bsp_image.root_path>重写。手动编辑/jetson-promote-image会在下次bsp_image重新提取时悄无声息地丢失。/jetson-init-image - 频率值必须来自对应时钟的内核表——不在表中的值会被自动取整。本技能不会针对运行中的目标设备的表进行验证;请信任单板配置文件中的现有值和Power Estimator输出。
available_frequencies - 非 trivial 的范围编辑(任何CPU/GPU/EMC/PVA/DLA的/
MAX_FREQ修改)需要使用NVIDIA Power Estimator(MIN_FREQ)——不支持在现有模式之间插值或外推。https://jetson-tools.nvidia.com/powerestimator/ - 同级文件间的同步是部分同步:仅移植修改后的/
POWER_MODEL行,绝不会直接覆盖整个文件,因为PARAM同级文件包含更高的_super/MAX_FREQ上限,必须保留。MIN_FREQ - PARAM名称为芯片系列专属(如T234上的,T264上的命名不同)。请严格复制现有POWER_MODEL代码块中的名称;自行创造的名称会悄无声息地失效。
CPU_A78_<n>
Troubleshooting
故障排查
| Error | Cause | Solution |
|---|---|---|
| nvpmodel fails to apply default at boot | | Point |
| Frequency value silently doesn't take effect | Value not in the kernel's | Replace with the nearest legal value from the running target's |
| | Use |
| Module dies / fails to boot after edit | | Keep |
| Mode ID was removed or renumbered but a rootfs script still references the old ID | |
Change vanished after | Edit landed in | Re-apply via the Overlay edit recipe so the change is committed in the overlay tracker. |
| Blanket file copy clobbered | Port only the structural change; preserve |
| Parser rejects new POWER_MODEL block | Header | Restore strict header formatting; ensure every referenced |
| 错误 | 原因 | 解决方案 |
|---|---|---|
| nvpmodel开机时无法应用默认模式 | | 将 |
| 频率值悄无声息地未生效 | 值不在对应时钟的内核 | 替换为运行中目标设备 |
| | 仅在CLOCK类型的PARAM中使用 |
| 编辑后模块死机/无法开机 | | 保持 |
运行时 | 模式ID已被删除或重命名,但rootfs脚本仍引用旧ID | 执行 |
| 编辑存入了 | 通过覆盖编辑流程重新应用修改,确保变更提交到overlay tracker中。 |
同步后 | 直接复制文件覆盖了 | 仅移植结构性修改;根据同步集合保留 |
| 解析器拒绝新的POWER_MODEL代码块 | 头部 | 恢复严格的头部格式;确保所有引用的 |
Deploy
部署
The customization commit in the overlay tracker does not reach the device
on its own. The Deploy chain:
- — copies every tracked file in the overlay into
/jetson-promote-image. Diff-aware (skip byte-identical); uses<bsp_image.root_path>/Linux_for_Tegra/forsudo cp -pdestinations.rootfs/* - — flashes the updated
/jetson-flash-imageto the device.bsp_image - (Alternate, no flash) Copy directly to the running target's
<source.root_path>/Linux_for_Tegra/rootfs/etc/nvpmodel/<conf>, then/etc/nvpmodel/<conf>(or reboot to pick up the newsudo nvpmodel -m <id>).DEFAULT=
Editing without committing — or editing
directly — does nothing for
and is silently lost on the next re-extract.
<source.root_path>/...<bsp_image.root_path>/.../jetson-promote-image/jetson-init-imageoverlay tracker中的自定义提交不会自动同步到设备上。部署链步骤如下:
- ——将overlay中所有被追踪的文件复制到
/jetson-promote-image。支持差异感知(跳过完全相同的文件);针对<bsp_image.root_path>/Linux_for_Tegra/目标使用rootfs/*。sudo cp -p - ——将更新后的
/jetson-flash-image烧录到设备上。bsp_image - (替代方案,无需烧录)将直接复制到运行中目标设备的
<source.root_path>/Linux_for_Tegra/rootfs/etc/nvpmodel/<conf>,然后执行/etc/nvpmodel/<conf>(或重启设备以应用新的sudo nvpmodel -m <id>)。DEFAULT=
编辑但未提交——或直接编辑——对无任何作用,且会在下次重新提取时悄无声息地丢失。
<source.root_path>/...<bsp_image.root_path>/.../jetson-promote-image/jetson-init-image