新闻详情

新闻详情

首页 / 资讯中心 / 详情

Valetudo 升级指南:从内置更新器到旧版本手动刷写全流程

发布时间:2026/9/25 5:47:36来源:尧图网络
Valetudo 升级指南:从内置更新器到旧版本手动刷写全流程
物联网后端前端【免费下载链接】ValetudoCloud replacement for vacuum robots enabling local-only operation项目地址https://gitcode.com/gh_mirrors/va/Valetudo点击查看免费下载导读本文围绕 Valetudo 的升级机制展开覆盖两条主线一是 Valetudo 2021.11.0 及以后版本内置的集成更新器integrated updater的架构、配置与安全校验流程二是针对 RoborockS5/V1/S6与 Dreame 机型的旧版本手动升级步骤包括 SSH 刷镜像、双系统切换、二进制替换等实操命令。读者读完后将能根据自己机器人型号与 Valetudo 版本选择最合适的升级路径并理解底层检查→下载→校验→应用的完整调用链避免升级中常见的 Text file busy、磁盘空间不足等问题。一、升级方式总览内置更新器与手动升级Valetudo 的升级策略以2021.11.0 版本为分界线如果你运行的 Valetudo 是2021.11.0 或更新版本应优先使用其**内置更新器integrated updater**功能无需 SSH、无需手动下载二进制文件升级过程由 Web 界面/API 触发并自动完成如果你运行的是更早的旧版本则只能走本文后面给出的手动升级路径Roborock 刷镜像、Dreame 替换二进制。内置更新器并非一个简单的下载即覆盖而是一个带状态机的多步骤流程。在源码中它由 backend/lib/updater/Updater.js 中的Updater类实现整个流程被拆解为三个阶段Step检查阶段ValetudoUpdaterCheckStep确认嵌入式环境、机器人状态、磁盘空间并从更新源获取版本清单下载阶段ValetudoUpdaterDownloadStep流式下载新二进制并做 SHA-256 校验应用阶段ValetudoUpdaterApplyStep把下载的二进制替换到当前可执行文件路径然后重启或重生。下面先说明内置更新器的工作原理与配置再给出旧版本的手动升级实操。二、内置更新器2021.11.0架构、配置与触发方式2.1 触发入口Web API 与状态查询内置更新器通过 HTTP API 暴露路由实现在 backend/lib/webserver/UpdaterRouter.jsGET /api/v2/updater/state查询更新器当前状态空闲、错误、待确认、下载中、待应用等PUT /api/v2/updater/触发动作body.action可取check、download、apply三种值其中check动作还可带force: true强制检查GET /api/v2/updater/config与PUT /api/v2/updater/config读写更新源updateProvider配置可选值为github与github_nightly。也就是说Web 前端点击检查更新 → 确认 → 应用的每一步最终都会落到Updater.triggerCheck()/triggerDownload()/triggerApply()这三个方法上。2.2 配置项与默认值更新器相关的配置集中在 backend/lib/res/default_config.json默认配置如下updater: { enabled: true, updateProvider: { type: github, implementationSpecificConfig: {} } }参数说明enabled是否启用内置更新器。若为falseUpdater会进入ValetudoUpdaterDisabledState不进行任何检查见 backend/lib/updater/Updater.jsupdateProvider.type更新源类型。github对应GithubValetudoUpdateProvidergithub_nightly对应GithubValetudoNightlyUpdateProvider。如果配置了无效类型会退化为NullUpdateProvider并记录错误日志implementationSpecificConfig扩展配置默认空对象。2.3 检查阶段Check嵌入式约束与前置条件ValetudoUpdaterCheckStepbackend/lib/updater/lib/steps/ValetudoUpdaterCheckStep.js在拿到检查更新请求后会依次完成如下前置校验任一不满足都会以ValetudoUpdaterError拒绝升级前置条件校验逻辑失败时的错误类型嵌入式模式this.embedded ! true则拒绝NOT_EMBEDDEDUpdating is only possible in embedded mode机器人状态可查询轮询robot.pollState()失败UNKNOWN机器人已回充StatusStateAttribute.value ! DOCKED则拒绝NOT_DOCKEDUpdating is only possible while the robot is docked二进制位置可写fs.accessSync(process.argv0, W_OK)失败NOT_WRITABLE磁盘空间充足由UpdaterUtils.storageSurvey()评估NOT_ENOUGH_SPACE磁盘空间评估逻辑见 backend/lib/updater/lib/UpdaterUtils.js常规二进制需要约40 MBSPACE_REQUIRED_REGULAR 40 * 1024 * 1024可用空间若空间不足但大于20 MBSPACE_REQUIRED_UPX更新器会自动改用UPX 压缩二进制文件名带.upx后缀若二进制所在分区的总容量本身小于40 MB * 3也会强制走 UPX 路径下载暂存位置按可用空间从大到小依次尝试/tmp与/dev/shm。架构与二进制选择方面backend/lib/updater/Updater.jsUpdater.ARCHITECTURES { arm: armv7, arm64: aarch64 };检查阶段会根据process.arch映射出armv7/aarch64目标并结合低内存主机Tools.IS_LOWMEM_HOST()与是否 UPX拼接出期望的二进制名valetudo-{arch}{-lowmem}{.upx}然后从发布源中精确匹配该文件名。2.4 发布源Update ProviderGitHub 与 NightlyGithubValetudoUpdateProviderbackend/lib/updater/lib/update_provider/GithubValetudoUpdateProvider.js实现了更新源接口通过 GitHub Releases APIhttps://api.github.com/repos/Hypfer/Valetudo/releases拉取发布列表只保留**非预发布prereleasefalse且非草稿draftfalse**的正式版本并按发布时间倒序排列每个 Release 还需要配套的valetudo_release_manifest.json清单文件清单内记录每个二进制的sha256sums与version清单版本与 Release 版本不一致即视为无效除清单外的其余 Release assets 会被解析为可下载的二进制携带downloadUrl与sha256sum。版本选择策略实现在determineReleaseToDownload()backend/lib/updater/lib/UpdaterUtils.js强制检查forcetrue时直接选最新版当前版本不在发布列表中时默认升到最新版当前版本在列表中且非最新时只升到下一个相邻版本逐级升级避免跨大版本直接跳升当前已是最新时返回updateRequired: false即无需更新。2.5 下载与校验流式下载 SHA-256 防篡改ValetudoUpdaterDownloadStepbackend/lib/updater/lib/steps/ValetudoUpdaterDownloadStep.js负责实际下载使用流式管道pipeline把 HTTP 响应流写入暂存文件并通过PipelineThroughputTracker按content-length计算下载进度百分比供 Web 界面展示下载完成后对文件计算SHA-256与 Release 清单中记录的expectedHash比对校验失败会以INVALID_CHECKSUM错误终止并清理暂存文件防止安装被篡改或损坏的二进制。下载完成后进入待应用状态等待用户确认。值得注意的是如果用户10 分钟内未确认更新器会自动清理下载文件并回到空闲状态见 backend/lib/updater/Updater.js。2.6 应用阶段原子替换与重启ValetudoUpdaterApplyStepbackend/lib/updater/lib/steps/ValetudoUpdaterApplyStep.js执行最后的替换动作从已校验的暂存文件复制内容到目标目录下的临时文件binary.upd并设置可执行权限fs.renameSync(tmpDestination, process.argv0)原子替换当前正在运行的二进制执行sync落盘若启用了 Phoenix 重生机制phoenixManager.canReincarnate()则以REBIRTH_REASONS.UPDATED触发进程重生携带新旧版本号否则执行reboot重启设备。因此升级完成后系统会自动重启或重生无需手动干预。2.7 常见错误速查内置更新器的错误类型定义在 backend/lib/updater/lib/ValetudoUpdaterError.js遇到失败时可在 Web 界面或/state接口中看到对应的type错误类型含义常见诱因not_embedded非嵌入式环境在 Docker/桌面环境运行not_docked机器人不在充电座升级前先让机器人回充not_writable二进制位置不可写权限/挂载问题not_enough_space空间不足需 ≥20MB常规 40MB存储被占满download_failed下载失败网络问题no_release无可用发布更新源异常no_matching_binary没有匹配架构的二进制架构不匹配invalid_checksum校验和不匹配下载损坏/被篡改三、手动升级 Roborock 吸尘器旧版本若你的 Valetudo 早于 2021.11.0没有内置更新器可按机型选择下面的手动方案。3.1 S5、V1 与 S6刷写新镜像双系统切换S5 / V1 / S6 的推荐升级方式是刷写新镜像前提是你拥有机器人的SSH 访问权限。完整步骤如下在 Dustbuilder 中选择Build for manual installation (requires SSH to install)选项之后会通过邮件收到一个tar.gz归档包的下载链接。SSH 登录机器人。将 tar.gz 下载到/mnt/data目录并解压cd /mnt/data wget url to tar from dustbuilder tar xzf file.tar.gz机器人存在A/B 双系统正在使用的系统不能被直接更新。默认你在系统 A因此先在系统 A 下更新系统 B然后重启进入系统 B./install_b.sh reboot重启后重新 SSH 登录此时已在系统 B反过来更新系统 A再重启回系统 A 正常运行cd /mnt/data ./install_a.sh rm -f file.tar.gz reboot完成上述步骤后机器人即运行最新版本。3.2 替代方案直接替换二进制除刷镜像外也可以停止 Valetudo 服务后用 scp 直接替换二进制/etc/init/S11valetudo stop # 通过 scp 上传新二进制到对应路径 # 然后重启或重新启动服务3.3 排障与兜底升级后出现 No Map Data 或设置丢失等问题建议直接做一次完整重刷full reflash这是官方文档明确给出的兜底手段没有 SSH 权限无法手动升级需要先对受支持的机型做**恢复出厂设置factory reset**以重新启用 OTA 更新然后走首次安装流程。四、手动升级 Dreame 吸尘器Dreame 机型的手动升级更为直接——替换二进制文件即可SSH 登录吸尘器并停掉正在运行的 Valetudokillall valetudo用新版本二进制替换/data/valetudo下的旧二进制wget https://github.com/Hypfer/Valetudo/releases/latest/download/valetudo-{armv7,armv7-lowmem,aarch64} -O /data/valetudo注意务必根据 supported robots 文档中的说明选择与机型匹配的正确二进制armv7、armv7-lowmem或aarch64如果遇到Text file busy错误说明 Valetudo 仍在运行先再次执行killall valetudo若问题依旧先删除旧二进制再上传新二进制。重启机器人rebootDreame 机型的 Text file busy 之所以出现是因为 Linux 不允许覆盖正在执行的二进制文件——这正是内置更新器在 ValetudoUpdaterApplyStep.js 中采用先写临时文件再rename原子替换这一做法的原因手动替换时则需要先确保进程退出。五、升级方式选择速查场景推荐方式关键动作Valetudo ≥ 2021.11.0内置更新器Web 界面/API 触发check → download → applyRoborock S5/V1/S6旧版刷镜像双系统install_b.sh→ reboot →install_a.sh→ rebootRoborock有 SSH旧版scp 替换二进制S11valetudo stop scp 重启Dreame旧版替换二进制killall valetudo wget 覆盖/data/valetudo reboot无 SSH 的旧版机器人恢复出厂设置重新启用 OTA 后走首次安装流程结语从内置更新器的check → download → apply状态机到 Roborock 的 A/B 双系统镜像刷写再到 Dreame 的二进制直替Valetudo 为不同版本、不同机型都设计了明确的升级路径。理解底层约束——嵌入式模式、机器人必须回充、磁盘空间门槛40MB/20MB UPX 兜底、SHA-256 校验与先写临时文件再原子替换的策略——不仅能帮你顺利完成升级也能在升级失败时快速定位根因。若升级后出现地图数据丢失等异常请务必回到完整重刷的兜底方案。赞分享物联网后端前端【免费下载链接】ValetudoCloud replacement for vacuum robots enabling local-only operation项目地址https://gitcode.com/gh_mirrors/va/Valetudo点击查看免费下载相关推荐Baiduwp-PHP更新升级指南从旧版本迁移到新版Baiduwp PHP更新升级指南从旧版本迁移到新版 想要快速安全地将你的Baiduwp PHP从旧版本升级到最新版吗这份终极升级指南将带你一步步完成从2.后端SwiftHub终极GitHub iOS客户端开发指南 - RxSwift与MVVM-C架构实践SwiftHub终极GitHub iOS客户端开发指南 RxSwift与MVVM C架构实践 SwiftHub是一款功能强大的GitHub iOS客户端应用Nokogiri版本升级指南从旧版本迁移到新版本的完整流程Nokogiri版本升级指南从旧版本迁移到新版本的完整流程 Nokogiri鋸是Ruby生态中最受欢迎的XML和HTML处理库让开发者能够轻松解析和操作后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

微信小程序房屋租赁系统开发全攻略:从技术选型到上线避坑 2026/9/25 6:59:15

微信小程序房屋租赁系统开发全攻略:从技术选型到上线避坑

简介:围绕微信小程序房屋租赁管理系统的毕业设计完整资料包,面向计算机专业学生在课程设计、毕业答辩或SSM框架实践中的需求,覆盖房源管理、租房订单、账单、用户及中介角色等核心功能,实现房屋租赁业务的系统化流程。压缩包共106…

阅读更多 →
WebGIS五层架构与三种数据传输模型:从课件到生产环境 2026/9/25 6:59:15

WebGIS五层架构与三种数据传输模型:从课件到生产环境

简介:这份PPT课件面向地理信息科学、测绘及计算机相关专业的学生与教师,系统讲解网络地理信息系统(WebGIS)的核心知识,帮助读者建立从概念到技术框架的完整认知。内容围绕WebGIS概述、功能、应用、组成与技术框架五大模…

阅读更多 →
Docker安装(idea上安装) 2026/9/25 6:59:09

Docker安装(idea上安装)

1、需要一个全新的操作系统,然后使用yum安装docker yum install -y docker 2、使用docker version查看是否安装成功,如下图则成功。(我这个是配置证书后的) 3、重启docker或开机自启。 systemctl start docker systemctl enable…

阅读更多 →
treg:多CLI多MCP多模型Agent编排工具链实战指南 2026/9/25 6:59:09

treg:多CLI多MCP多模型Agent编排工具链实战指南

1. 从"treg"这个标题说起:一个被低估的CLI Agent工具链第一次看到"treg"这个词,很多人会以为是某个拼写错误,或者某个小众库的缩写。但如果你最近在折腾 AI Agent 的本地开发环境,尤其是围绕 OpenRouter、MCP…

阅读更多 →
光子晶体线缺陷波导能带计算:COMSOL建模仿真与实操 2026/9/25 6:59:09

光子晶体线缺陷波导能带计算:COMSOL建模仿真与实操

拿光子晶体线缺陷波导做仿真,最容易遇到的一个现象是:打开COMSOL,能带图也画出来了,但自己心里并不踏实——不知道算出来的模式是波导模式还是边界引入的杂散模式,不知道k点扫得对不对,也不知道“线缺陷”到…

阅读更多 →
磁悬浮定位系统悬浮力全解析计算:从椭圆积分到参数灵敏度分析 2026/9/25 6:59:09

磁悬浮定位系统悬浮力全解析计算:从椭圆积分到参数灵敏度分析

上个月我在Research Square挂出一篇预印本,核心是磁悬浮定位系统里永磁体与线圈之间悬浮力的全解析计算方法。说白了,这套方法想解决一个很实际的问题:设计初期要反复扫描磁体尺寸、线圈匝数、气隙等工作参数,但每改一个参数都跑有…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉