sublime text 不能编译或上传 arduino 代码,必须手动配置 arduino-cli 绝对路径、完整 fqbn(如 arduino:avr:uno)、真实串口(如 /dev/cu.usbmodem14301),并禁用已停更的 stino 插件。

Sublime Text 本身不能编译或上传 Arduino 代码——所有“成功”都来自你手动配对的 arduino-cli;配错路径、漏掉冒号、串口写成通配符,Build 就直接失败,不给任何提示缓冲。
必须禁用 Stino 插件,它已停更且破坏 CLI 配置
Stino 最后一次提交是 2021 年,硬编码依赖 Arduino IDE 1.x 的 boards.txt 和 Java 启动器,完全无法解析 arduino-cli 2.x 的 JSON 配置和扁平化平台目录。常见表现包括:
-
AttributeError: 'NoneType' object has no attribute 'get'—— 因为它试图从空响应里取字段 -
Failed to parse boards.txt—— 新版 CLI 根本不生成这个文件 - 串口列表为空,或上传时报
Serial was not declared in this scope—— 它偷偷覆盖了你本地的arduino-cli配置,导致核心库路径错乱
如果你已装过 Stino,请彻底删除 Packages/Stino 目录,并清空 ~/.arduino15/ 下可能被污染的 boards.local.json 或 staging 文件夹。
arduino-cli 必须独立安装并写死绝对路径
Arduino IDE 2.x 自带的 arduino-cli 不进系统 PATH,Sublime 启动时根本看不到它。pip install arduino-cli 更不行——那是社区旧分支,不支持 arduino:avr@2.3.5 这类最新 AVR 核心。
- macOS/Linux:下载官方二进制后放到
/usr/local/bin/arduino-cli,运行arduino-cli version确认可执行 - Windows:解压到固定路径如
C:rduino-clirduino-cli.exe,不要放带空格或中文的目录 - Build System 中的
"cmd"字段必须写完整路径:"cmd": ["C:\arduino-cli\arduino-cli.exe", "compile", ...],不能只写"arduino-cli" - macOS/Linux 别忘了加执行权限:
chmod +x /usr/local/bin/arduino-cli
FQBN 和串口必须填真实值,不能模糊匹配
--fqbn 是强制参数,不是可选项;串口名也不能用 /dev/cu.usbmodem* 这类 shell 通配符——Build System 不走 shell 解析,它原样传给 arduino-cli,而 CLI 不支持 glob。
- FQBN 示例:
arduino:avr:uno(Uno)、arduino:avr:nano:cpu=atmega328(Nano),不能简写为uno或漏掉中间的冒号 - 串口路径要和系统一致:
/dev/cu.usbmodem14301(macOS)、/dev/ttyACM0(Linux)、COM3(Windows,注意不是COM3:) - 串口名需实时确认:拔插板子后运行
arduino-cli board list查最新设备,避免写死一个已断开的端口 - Build System 建议用这种写法:
"cmd": ["arduino-cli", "upload", "--fqbn", "arduino:avr:uno", "--port", "/dev/cu.usbmodem14301", "$file_path"]
.ino 文件必须满足命名与结构约束
Sublime 不识别 .ino 的特殊语法糖(如自动添加 #include "Arduino.h"、封装 setup()/loop()),但 arduino-cli 却严格依赖它:
- 项目根目录下只能有一个
.ino文件,且文件名必须和文件夹名完全一致(如blink/blink.ino) - 若手动改过名或新建了多个
.ino,arduino-cli会报No sketch found - 头文件跳转失效?不是 Sublime 问题,是没告诉它去哪里找
Arduino.h:在 Project Settings 里补上"include_dirs": ["/path/to/arduino/hardware/arduino/avr/cores/arduino"]
真正麻烦的不是写错哪一行命令,而是你以为配好了,结果 arduino-cli 在后台静默跳过平台安装、用错核心版本、或把串口名当字符串原样传给 avrdude——这些错误不会报在 Sublime 控制台里,只会卡在 upload 步骤无响应。











