跳转至

Air8380 默认出厂固件

作者:王城钧 | 最后修改:2026-10-22

本文介绍 Air8380 工业模组默认出厂固件的资源、版本与使用方式。

特别说明

  1. Air8380 支持二次开发,正式发布的固件会明确标注是出厂演示固件还是量产固件;
  2. 固件内核基于 Air8000W,Luatools 选择底层时按 Air8000W 选;
  3. 内核版本说明统一见 Air8000 固件版本,本工程使用的是2054-113号固件(理论上最新版本的113号固件也可以,如果使用最新版本的固件不可以,可以烧录V2054-113固件对比验证){:target="_blank"}。

一、最新版本固件

固件更新说明(2026-10-10)

  1. 更新第一版出厂固件。

二、历史版本固件

固件更新说明(2026-10-10)

  1. 更新第一版出厂固件。

三、源码链接

module/Air8380/project/factory · 合宙Luat/LuatOS - 码云 - 开源中国

四、图文使用说明

4.1 AirCloud 上报记录

设备联网后经 excloud 接入合宙 AirCloud,按 app_config.report_interval(默认 60s)周期上报,平台「AirCloud 上报记录」页可逐条查看上行与下行报文:

从记录里能直接读到的信息:

现象 说明
类型「上报」、Tag 782 / 783 / 263 / 799 / 269 / 512 / 513 一轮周期上报的 7 个字段(信号、ICCID、CPU 温度、VBAT、当前链路、经度、纬度)
类型「下发」、Tag 21 平台下发的指令(irtu 下行命令),如 read_link、set_wifi{"ssid":"116","pwd":"wangshuai123"}
类型「上报」、Tag 20 设备对下行指令的应答(控制响应),如 {"active":"WiFi"}、{"ok":true}
269 字段值 Ethernet / WiFi 当前实际生效的链路,随 exnetif 切换变化

AirCloud 上报记录(设备 864793080864528)

4.2 设备管理平台(Web)

合宙设备管理平台:web网页

  • 设备列表 / 设备管理:按项目展示设备,卡片直接显示在线状态、最近上报时间、信号值;
  • 右上设备面板:设备名称、所属项目、最后上报时间、状态、序号、固件 / 固件版本、首次上报时间;
  • 实时数据:Air8380 只上报 CPU 温度与信号,其余项显示 --;
  • 位置:按上报的经纬度反查地址,可点击「在地图中查看」;

设备管理平台 · 设备详情(8380测试)

4.3 手机端合宙 IOT(小程序)

  • 入口:微信搜索「合宙IOT」小程序,登录同一合宙账号后进入设备详情;
  • 顶部:设备号、在线状态、最近上报时间、位置信号原值;
  • 最近上报数据:CPU 环境温度 33、4G 信号 20、GNSS 经度 114.299997°、纬度 34.80651°;温度、湿度、电压显示「暂无上报」;
  • 设备位置:腾讯地图显示定位点,并给出反查地址与坐标、上报时间;
  • 页签:概览 / 历史数据 / 控制,控制页可下发查询与配置指令。

合宙 IOT 小程序 · 设备详情

4.4 网络与外设电源

网络(由 exnetif 统一调度):

项目 说明
优先级 默认 网口 > WiFi > 4G,可在 app_config.priority 调整
网口(CH390H) 默认静态 192.168.1.183,可切 DHCP;LDO 使能 GPIO1,IRQ = GPIO17
WiFi STA 模式;未配置 SSID 时不进优先级表(否则 WiFi 连不上会把 4G 一起拖死)
4G 插 Micro-SIM + 接好 LTE 天线后自动拨号
连通性判定 need_ping = false,IP 就绪即视为可用(工业现场常无外网)
AP 热点 / 内置网页 不提供,配置入口 = app_config 预置 + AirCloud set_wifi

外设电源(三路 3.3V LDO,board.lua 里唯一改引脚的地方):

LDO 用途 使能脚
U230 外供 3.3V(邮票孔引出,给客户外设) GPIO20(AGPIO,低功耗/PSM+ 保持)
U200 板载 SPI NAND 供电 GPIO2
U401 CH390H 网口供电 GPIO1
gpio.setup(20, 1)  -- 外供 3.3V
gpio.setup(2, 1)   -- 板载 SPI NAND 供电
gpio.setup(1, 1)   -- CH390H 网口供电

顺序要求:三路 LDO 先上电 → 等 50ms → 再 spi.setup(SPI1, 26MHz);上电前先把两路片选(GPIO12 / GPIO16)置高,否则 CH390H 会抢总线导致 NAND 识别失败。main.lua 已按此实现。

4.5 AirCloud 下行指令

项 内容
下行通道 excloud 下行 TLV,字段 CONTROL_COMMAND / IRTU_DOWN / RANDOM_DATA 任一命中即可
载荷格式 JSON 字符串;另兼容 命令名{json参数} 与纯命令名
应答通道 CONTROL_RESPONSE(ASCII 型,值为 JSON 字符串)
应答编码 仅 ASCII,中文经该通道必然乱码,因此应答里不放中文
前置条件 设备已联网并连上 AirCloud(use_getip 自动认证,不需要 project_key)
执行环境 excloud C 回调内,命令本身不阻塞(耗时动作已投递 sys.taskInit / sys.timerStart)
应答保证 尽力发送,失败只记 log.warn,平台侧表现为无应答

三种下发写法:

read_flash                        ← 纯命令名(无参数命令可用)
read_flash{"bytes":50}            ← 命令名 + JSON 参数(平台现用写法)
{"type":"read_flash"}             ← 标准 JSON

带参数的命令同理:

set_wifi{"ssid":"Luats_5G","pwd":"12345678"}
{"type":"set_wifi","ssid":"Luats_5G","pwd":"12345678"}

无法解析的载荷(既不是 JSON,也不符合 命令名{...})不会回包,设备串口只打印 忽略无法解析的下行。

指令总表:

# type 参数 成功应答 失败应答
1 read_status — 全量快照(见下) —
2 read_csq — {"csq":19} —
3 read_imei — {"imei":"86..."} —
4 read_iccid — {"iccid":"8986..."} —
5 read_version — {"version":"001.999.001","core":"..."} —
6 read_link — {"active":"Ethernet"} —
7 read_location — {"lat":23.1,"lng":113.3} 未定位时 null
8 read_flash — {"val":"1234567890","len":10} {"val":"","err":"..."}
9 set_wifi ssid pwd {"ok":true} —
10 sync_time — {"ok":true} —
11 reboot — {"ok":true} —
— 其他 — — {"error":"未知命令","cmd":"xxx"}

read_status 全量快照:

{
  "device":  { "model":"Air8380", "mcu":"Air8000W", "project":"Air8380_Factory",
               "version":"001.999.001", "core":"V2054", "imei":"...", "muid":"...",
               "iccid":"...", "imsi":"...", "operator":"中国移动" },
  "network": { "active":"Ethernet", "eth_ready":true, "wifi_ready":false, "gprs_ready":true,
               "eth_ip":"192.168.1.183", "wifi_ip":"--", "csq":19, "rssi":0, "wifi_ssid":"" },
  "system":  { "cpu_temp":34, "vbat":3954, "mem_used":0, "mem_total":0,
               "psram_used":0, "psram_total":0, "uptime":67,
               "time":"2026-10-20 15:16:41", "flash_mounted":true },
  "config":  { "device_name":"Air8380", "eth_ip":"192.168.1.183",
               "wifi_pwd":"****", "project_key":"****" }
}
  • 应答体积最大,平台若限制单条 TLV 长度可能整条发不出,日常排障建议用单项查询;
  • config 中 wifi_pwd / project_key 已打码;
  • 内部会读 ADC 与内存信息,不要在 C 回调里高频连发。

逐条要点:

命令 要点
read_csq 0~31,越大越好,99 表示未知
read_imei / read_iccid 返回模组 IMEI / SIM 的 ICCID
read_version version 是脚本版本、core 是内核版本(rtos.version())
read_link 取值 Ethernet / WiFi / 4G / 无,由 exnetif 切换回调更新
read_location airlbs 最近一次定位结果,未定位过为 null;间隔由 lbs_interval(默认 600s)控制,不是实时定位
read_flash 读 /little_flash/fixed.txt 的固定值,用于远程验证 NAND 通路;失败回 flash_not_mounted / fixed_missing;旧指令 read_log 已删除
set_wifi 写 fskv → 发布 APP_CONFIG_UPDATED → 500ms 后重建网络;ok:true 只表示受理,不代表已连上,要看 read_status.network.wifi_ready 或 read_link;ssid 传空等于关 WiFi;已有 socket 不切换,配完建议再发 reboot
sync_time 调一次 socket.sntp(),不等待结果;时区由 app_config.timezone(默认 UTC+8)决定
reboot 先回应答,2 秒后重启

下发了没反应怎么查(按顺序看串口日志):

日志 含义 处理
无 下行 TLV 命令没到设备 检查设备是否在线、平台是否选对设备
忽略无法解析的下行: xxx 载荷格式不对 改成 {"type":"xxx"} 或 xxx{...}
收到命令: xxx 后无应答 应答发送失败 看 [excloud]数据发送成功/失败
返回 {"error":"未知命令"} 指令名拼错或已删除 对照上面的指令总表

五、相关文档

搜索