Skip to content

Repository files navigation

DJI 第一代 4G 模块模式切换工具

一个面向 DJI 第一代 4G 蜂窝模块的第三方 macOS 工具。连接模块后,可以在原始模式与 USB 上网模式之间切换。应用会自动完成设备识别、AT 接口探测、参数写入、模块重启、 USB 重连和结果验证。

当前版本:1.1

Warning

本项目由社区独立开发,与 DJI、大疆创新、Quectel、运营商或相关硬件厂商不存在授权、 隶属或合作关系。工具不会刷写固件,但修改 USB 模式会重启模块,并可能暂时影响原有 设备功能。使用前请阅读使用条款与免责声明

功能

  • 自动检测 USB 标识为 2CA3:4006 的目标模块
  • 自动枚举 Bulk IN/OUT 接口,并用独立的 AT / OK 往返确认 AT 接口
  • 一键切换到 USB 上网模式:AT+QCFG="usbnet",1
  • 一键恢复原模式:AT+QCFG="usbnet",0
  • 写入后自动重启、等待 USB 重新枚举,并读取配置完成最终验证
  • 串行化设备访问,防止重复操作和并发占用
  • 中文原生 SwiftUI 界面、深色模式、进度提示与操作确认
  • 可复制诊断信息,以及 2 MB × 5 文件轮转日志
  • 无硬件演示模式和命令行协议验证工具

本项目不提供短信、eSIM、APN、SIM 信息读取、通用 AT 终端、流量统计、固件刷写、 账号登录或云服务功能。

系统与硬件要求

项目 要求
Mac Apple Silicon(arm64)
macOS 13.0 或更高版本
模块 第一代 DJI 4G 模块,USB 标识 2CA3:4006
连接 建议首次使用时直接连接 Mac,避免未经验证的扩展坞

当前发行版不支持 Intel Mac。

安装

PKG 安装包(推荐)

打开 DJIModeSwitcher-1.1-arm64.pkg,按安装器提示操作。应用会被安装到:

/Applications/DJIModeSwitcher.app

ZIP 便携包

解压 DJIModeSwitcher-1.1-arm64.zip,将 DJIModeSwitcher.app 拖入“应用程序”目录。

外部依赖说明

最终用户不需要安装 Homebrew、Xcode、Swift、Python 或单独安装 libusb。发行包已经包含:

DJIModeSwitcher.app/Contents/Frameworks/libusb-1.0.0.dylib

除内置的 libusb 之外,应用只链接 macOS 自带系统框架。安装和首次运行均不下载运行组件。 开发者从源码首次构建时才会下载 libusb 1.0.30 官方源码包,并在校验 SHA-256 后本地编译。

Gatekeeper

公开分发的 PKG 或 ZIP 应使用 Developer ID Application / Developer ID Installer 证书签名, 并通过 Apple 公证。未签名或未公证的本地构建可能被 Gatekeeper 拦截;不要建议用户关闭 系统安全功能。完整流程见分发与公证

使用方法

  1. 连接目标 4G 模块,并关闭可能占用其 USB 接口的其他工具。
  2. 启动“4G 模块模式切换”。
  3. 等待状态区显示已识别的模块和当前模式。
  4. 选择“切换为上网模式”或“恢复为原模式”。
  5. 阅读确认提示后继续,并保持线缆连接直到验证完成。

切换到上网模式后,模块可能无法继续用于原有 DJI 设备功能;需要时可使用同一工具恢复。

诊断与隐私

应用不包含账号系统、云服务或运行时遥测。诊断日志仅保存在本机:

~/Library/Logs/DJIModeSwitcher/

日志可能包含 USB 标识、接口号、操作阶段和 AT 响应。分享诊断内容前请自行检查。

从源码构建

开发环境需要 Apple Silicon Mac、macOS 13+ 和支持 Swift 6 的 Xcode Command Line Tools。

./script/build_and_run.sh

首次构建会下载固定版本的 libusb 1.0.30 源码,校验:

fea36f34f9156400209595e300840767ab1a385ede1dc7ee893015aea9c6dbaf

无硬件查看完整界面流程:

DJI_MODE_SWITCHER_DEMO=1 ./script/build_and_run.sh

命令行验证:

swift run mode-switcher detect
swift run mode-switcher status
swift run mode-switcher network
swift run mode-switcher restore

测试

./script/build.sh

自动化测试覆盖 C 解析器、命令白名单、核心生命周期和 Swift 状态机。正式发布仍必须完成 真机兼容性与 50 次往返耐久测试,详见测试指南

构建交付包

./script/archive.sh   # dist/DJIModeSwitcher-1.1-arm64.zip
./script/package.sh   # dist/DJIModeSwitcher-1.1-arm64.pkg

版本号统一维护在 script/version.sh。签名、公证和成品验证命令见 分发与公证

项目结构

Sources/DJIModeCore/       C 核心、AT 解析和 libusb 动态加载
Sources/DJIModeKit/        Swift 并发服务层、状态机和诊断
Sources/DJIModeSwitcher/   macOS SwiftUI 应用
Sources/ModeSwitcherCLI/   命令行验证工具
Tests/                     C 与 Swift 自动化测试
ThirdParty/                第三方声明及内置 libusb 构建产物
script/                    构建、运行、归档、PKG、公证脚本
docs/                      架构、测试、分发和免责声明

文档

许可证

项目原创代码、文档和自有资源采用 Apache License 2.0。libusb 保持其 LGPL-2.1-or-later 许可证,不会被重新授权;发行包同时包含其许可证和第三方声明。

About

DJIModeSwitcher

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages