Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

jiaqiwang969/cat-flir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CAT S61 FLIR 热成像二次开发项目

项目概述

本项目对 CAT S61 手机内置的 FLIR Lepton 3.5 热成像传感器进行逆向工程分析,探索三种二次开发方案。

硬件信息

项目 规格
手机型号 CAT S61
热成像传感器 FLIR Lepton 3.5
传感器分辨率 160 x 120 (原始) / 80 x 60 (输出)
测温范围 -20°C ~ 150°C (High Gain)
接口 SPI (图像) + I2C (控制)

三种开发方案

方案 A: 复用 SDK (已验证 ✓)

原理: 从官方 APK 提取 SDK 类和 Native 库,在自定义 App 中调用。

成果:

  • 成功提取 libsystemimage.so 等 Native 库
  • 反编译获得 SDK Java 接口
  • 创建了 Android Demo 项目框架
  • 实现了从 FLIR JPG 图片提取温度数据

工具:

  • flir_heatmap_v2.py - 分析 FLIR 图片,生成温度热力图
  • flir_analyzer.py - 提取温度数据

使用方法:

python3 flir_heatmap_v2.py <flir_image.jpg>

方案 B: 绑定 ThermalCameraService (部分探索)

原理: 通过 Binder IPC 直接与系统服务通信。

发现:

  • 服务名: ThermalCameraService
  • 客户端库: libthermalcamera_client.so
  • 接口: IThermalCameraService

主要接口:

setProperty(key, value)
getProperty(key)
writeCalibration(data)
readCalibration()
ioctlGetFrameStatus()
read_frame()

方案 C: 直接硬件访问 (已验证 ✓)

原理: 通过系统测试工具直接读取 Lepton 原始帧数据。

关键发现:

  1. 设备节点:

    • /dev/lepton_drv - Lepton SPI 驱动 (root only)
    • /dev/i2c-6 - Lepton I2C 控制 (root only)
  2. 系统测试工具: /system/bin/ThermalCameraTestClient

    # 读取原始帧
    ThermalCameraTestClient readframe
    
    # 检查帧状态
    ThermalCameraTestClient getframestatus
    
    # I2C 读写
    ThermalCameraTestClient readi2c <reg> <words>
    ThermalCameraTestClient writei2c <reg> <data>
  3. 数据格式:

    • 帧大小: 10332 字节
    • 格式: VoSPI 类似,每行 164 字节
    • 像素: 16-bit,范围 0x0C00-0x1000

工具:

  • lepton_realtime.py - 实时读取温度数据

使用方法:

# 单次读取
python3 lepton_realtime.py

# 循环读取 (每3秒)
python3 lepton_realtime.py --loop 3

# 保存热力图
python3 lepton_realtime.py --save

文件结构

/Users/jqwang/175-热成像/
├── 文档
│   ├── flir_development_analysis.pdf   # 技术分析报告 (LaTeX)
│   └── README.md                       # 本文件
│
├── 方案 A - SDK 复用
│   ├── demo_app/                       # Android Demo 项目
│   ├── decompiled/                     # 反编译的 SDK 源码
│   ├── FlirCamera.apk                  # 官方 APK
│   ├── libsystemimage.so               # 核心处理库
│   ├── flir_heatmap_v2.py              # FLIR 图片分析工具
│   └── flir_analyzer.py                # 温度提取工具
│
├── 方案 C - 硬件直接访问
│   ├── lepton_realtime.py              # 实时温度读取工具
│   ├── parse_raw_frame_v3.py           # 原始帧解析工具
│   ├── ThermalCameraTestClient         # 系统测试工具 (提取)
│   └── raw_frame_*.txt                 # 原始帧数据样本
│
└── 输出样本
    ├── flir_20260126T211533_heatmap.png  # 温度热力图
    ├── flir_20260126T211533_temp.csv     # 温度矩阵
    └── lepton_*.png                      # 实时热力图

温度转换

Planck 方程 (精确)

从 FLIR EXIF 数据获取校准参数:

T = B / ln(R1/(R2*(S+O)) + F) - 273.15

参数:
  R1 = 17988.6
  R2 = 0.0125
  B  = 1435
  F  = 1
  O  = -1813

简化公式 (近似)

T(°C) ≈ (raw - 3200) × 0.04 + 25

下一步开发建议

  1. 完善方案 A: 用 Android Studio 构建 Demo App,实现实时预览
  2. 深入方案 B: 逆向 AIDL 接口,实现自定义服务调用
  3. 优化方案 C: 获取 root 权限后直接读取 /dev/lepton_drv
  4. 校准优化: 获取出厂校准数据,提高温度精度

依赖

  • Python 3.x
  • numpy, pillow
  • adb (Android Debug Bridge)
  • exiftool
pip3 install numpy pillow
brew install exiftool

作者

逆向工程分析 - 2026-01-27

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •