Repository navigation
fix: 1.1.2 修复 Conda 入口并兼容新版 tegrastats 温度与功耗格式 - #5
Merged
massif-01 merged 1 commit intoOct 13, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
问题与表现
本 PR 修复 1.1.1 在另一台 Jetson 部署时暴露的两个兼容性问题,版本更新为 1.1.2。基于已包含此前修复的上游 main,只提交本轮增量。
1. 已安装 Conda,却无法进入安装流程
原安装脚本先在
check_requirements中要求 PATH 已包含 conda,之后才进入init_conda。因此,Conda 已装在用户目录但尚未加入登录 shell 的 PATH 时,会被当成缺少依赖而退出。原初始化分支还会执行conda init bash,要求用户加载.bashrc或重新打开终端后再跑一遍。根因是“查找、加载、使用”的顺序错误,而不是需要重新安装 Conda。
2. 新版 tegrastats 的合法输出被旧解析规则丢弃
现场记录出现双值温度、三值功耗,例如:
旧温度匹配要求单个
C后立即结束 token;旧功耗匹配要求整个 token 恰好为两个值。上述合法输出因此无法进入原有温度和功耗字段;有其他有效内容的帧可能仍被接受,但相应字段为空。修复依据:先确认各位置含义,再扩展格式
现场示例的各位置数值相等,无法靠这些例子判断字段含义。本次静态核对了 NVIDIA 官方发行包中的
/usr/bin/tegrastats,没有安装或执行该工具:max(previous_max, current)得到;顺序是 当前温度/本次采集进程累计最高温度。average += (current - average) / count更新均值,并单独维护最高值;输出顺序是 当前功耗/平均功耗/本次采集进程累计最高功耗。INA2xx、INA3221 和直接电源读取路径顺序一致。39.2 官方说明页仍描述旧格式。新增最高值的结论来自发行包的计算及输出路径,不能把它表述为说明页已经明确记载,也不能仅凭格式相符声称已确认现场安装版本。
可复核的函数位置与说明保存在本 PR 的 1.1.2 格式说明。
实现与保留的合同
Conda:在当前脚本中完成查找和加载
init_conda。bin/conda。shell.bash hook并在当前脚本中加载,供后续conda activate使用。conda init,不写入.bashrc或.profile。既有环境复用、创建、Python 包安装和服务流程保持原样。本 PR 没有增加 Conda 自动安装、递归目录搜索或其他安装框架。
温度和功耗:接受新旧格式,返回原有字段
下表使用不同数值说明映射,避免相等值掩盖取错位置:
tj@56.968Ctemperature.tj = 56.968tj@56.968C/61.25C56.968,保持浮点类型VDD_GPU_SOC 5147mW/4900mWcurrent = 5147、average = 4900、unit = "mW"VDD_GPU_SOC 5147mW/4900mW/6000mW原有无单位功耗 token 继续支持;三值 token 同样要求各位置单位一致。完整 token 边界、残缺值/错误后缀/额外值拒绝、重复 rail 的 current/average 冲突处理均保留。合法零值仍为零;缺失或非法功耗保持空对象,不补零、不延续上一帧。
HTTP 路由、Socket.IO 的
tegrastats_update事件、正常 TJ 字段及 JSON 类型、遥测合同版本和采集周期不变。此前的数据身份、自洽快照、重启隔离、输出管道所有权、GPU 释放重试和信号退出修复未被改写。验证结果
全部验证为本地离线验证,Python 3.12.3:
--no-index --no-deps安装后跑离线回归main和 ERR trap,仅替换部署阶段:正常 hook 加载并按--env-name激活成功;hook 失败退出码为 1,不进入后续阶段。两项均通过,不计入上述 182 项bash -n scripts/install.sh与git diff --check通过;本轮增量补丁可还原对应源码;wheel 内运行模块与源码一致,包版本和发行版本均为 1.1.2复核命令(已有本地测试依赖时):
测试脚本已检查副作用边界,没有盲跑整个
tests/目录,也没有执行真实安装流程。Conda 使用命令替身;采集进程和 GPU 使用替身;HTTP/Socket.IO 使用内存测试客户端。测试中的既有datetime.utcnow()弃用警告不在本轮修复范围。提交范围、验收边界与回退
本 PR 共 8 个文件:安装入口、解析器、两处版本号、两个新增测试文件、一处既有版本断言,以及本轮格式说明。旧 1.1.1 修复已在基线中;本地工作树的其他修改、wheel、证据归档和临时环境没有带入提交。
本地复审未发现阻断问题,可以进入手动真机验收。这不等于部署已经通过:现场真实 Conda 的激活、实际 tegrastats 原始行与 HTTP/Socket.IO 的一致性、驱动和服务退出行为,以及现场 Python 环境仍待用户手动确认。
本轮没有连接设备、启动真实采集、安装到 Orin、重启服务,也没有修改天山 OS、TJ 绑定、风扇或热模型。
需要回退时,由操作者使用现场保留的上一版本源码/环境,按既有流程切换并重新启动服务;仅修改磁盘文件不会替换已运行进程。回退到 1.1.1 也会恢复本 PR 所修复的 Conda 入口和新版格式限制,因此应保留上一环境及其配置,再进行手动验收。