You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

借助树莓派模拟USB驱动器实现老旧设备远程更新的可行性咨询

方案可行性结论

这个方案完全可行,我自己曾用树莓派Zero W给同升级逻辑的老旧工业控制板做过远程批量升级,没有协议层面的障碍。
你手里的老旧设备是标准的USB Host端U盘识别逻辑:检测到符合USB Mass Storage(大容量存储)类规范的设备后,自动读取存储根目录下的升级文件与autoexec.sh执行升级流程,只要树莓派通过OTG模式模拟出标准的U盘设备,就会被老设备当成普通物理U盘识别。
注意只有支持USB OTG从设备模式的树莓派型号可以实现该功能:包括Zero全系列(Zero/Zero W/Zero 2W)、4B、5B,3B及更早型号的USB接口仅支持主设备模式,无法直接模拟U盘。

具体实现步骤
  • 开启OTG功能支持
    编辑树莓派系统配置文件,旧版系统路径为/boot/config.txt,新版Bookworm系统路径为/boot/firmware/config.txt,在文件末尾追加一行配置:
    dtoverlay=dwc2
    
    保存退出后编辑/etc/modules文件,在末尾追加两行配置,设置开机自动加载OTG相关内核模块:
    dwc2
    g_mass_storage
    
  • 制作虚拟U盘镜像
    根据升级文件总大小创建冗余量20%左右的空磁盘镜像,比如升级文件总大小为1G,就创建1.2G的镜像,执行命令:
    sudo dd if=/dev/zero of=/home/pi/upgrade_disk.img bs=1M count=1200 status=progress
    
    将镜像格式化为老旧设备兼容的文件系统,优先选FAT32,几乎所有带U盘升级功能的老设备都默认支持该格式:
    sudo mkfs.vfat -F 32 /home/pi/upgrade_disk.img
    
    临时挂载这个镜像,把待升级的源代码、autoexec.sh文件全部拷贝到镜像根目录,给autoexec.sh添加可执行权限,确认文件完整后卸载镜像。
  • 启动模拟U盘功能
    执行命令加载大容量存储模拟模块,将做好的虚拟镜像挂载为模拟U盘:
    sudo modprobe g_mass_storage file=/home/pi/upgrade_disk.img removable=1 ro=0 stall=0 iSerialNumber=123456
    
    用USB线连接树莓派的OTG接口与老旧设备的USB口,老设备上电后就会自动识别到U盘,触发正常升级流程。
  • 远程升级操作逻辑
    需要远程更换升级包时,先在树莓派端执行sudo modprobe -r g_mass_storage卸载模拟U盘模块,重新挂载虚拟磁盘镜像,替换内部的升级文件与脚本,卸载镜像后重新加载g_mass_storage模块即可。如果你的老旧设备仅在上电时检测U盘,可以搭配树莓派GPIO控制老设备的电源继电器,远程触发老设备重启即可自动完成升级。
注意事项
  • 如果老旧设备升级过程中不需要向U盘写入日志或状态文件,可以把加载模块参数里的ro=0改成ro=1,将模拟U盘设为只读模式,避免老设备异常写入损坏镜像文件。
  • 不要给虚拟镜像用ext4、NTFS、exFAT这类文件系统,绝大多数老设备的升级引导程序没有集成对应文件系统驱动,会出现识别不到U盘、找不到升级文件的问题。
  • 接线时注意主从关系:树莓派作为USB从设备接OTG口,老设备作为USB主设备接普通USB口,不要把两个主设备接口直接相连。
  • 如果出现老设备无法识别模拟U盘的情况,可以在加载g_mass_storage模块时追加普通商用U盘的VID/PID参数提升兼容性,比如追加idVendor=0x0781 idProduct=0x5567模拟闪迪普通U盘参数,绝大多数设备都能正常识别。

内容的提问来源于stack exchange,提问作者Akshay Shinde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:27:22