Wasabules/picoscope-libusb
GitHub: Wasabules/picoscope-libusb
一个开源的PicoScope 2204A USB示波器驱动与跨平台GUI,绕过专有SDK实现协议级控制与信号分析。
Stars: 0 | Forks: 0
# picoscope-libusb
**PicoScope 2204A** USB 示波器的开源 libusb 驱动 + 跨平台 GUI。通过对 USB 协议进行逆向工程从零构建——
无需专有的 PicoSDK 运行时。
目标平台为 **Linux 桌面** 和 **Android**(通过 NDK + JNI)。通过 Wails 构建的 Windows/macOS
版本尚未针对硬件进行验证。
## 包含内容
| 路径 | 描述 |
|---|---|
| `driver/` | C 驱动(`libpicoscope2204a.{so,a}`)——核心部分,纯 libusb |
| `gui/` | Wails 桌面 GUI(Go + Svelte),通过 cgo 链接到驱动 |
| `android-lib/` | 将驱动和 JNI shim 封装为 AAR 的 Gradle 模块(通过 JitPack 分发) |
| `python/` | 参考 Python 驱动(PyUSB)——适合快速测试 |
| `tools/firmware-extractor/` | 从您自己的设备中提取固件 |
| `docs/` | 协议逆向工程笔记和操作指南 |
## 快速开始 (Linux)
```
# 1. udev rule (只需一次, 以 root 身份)
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0ce9", MODE="0666"' \
| sudo tee /etc/udev/rules.d/99-picoscope.rules
sudo udevadm control --reload && sudo udevadm trigger
# 2. 构建 driver
cd driver && make
# 3. 构建并运行 GUI
cd ../gui && wails build -tags webkit2_41
./build/bin/picoscope-gui
```
首次启动时,GUI 会检测到缺失的固件,并提示为您提取固件
(需要预先安装官方 Pico SDK)。CLI 替代方案:
```
./tools/firmware-extractor/extract.sh
```
如果您没有安装 SDK,请参阅 [`docs/firmware-extraction.md`](docs/firmware-extraction.md) 了解
离线 提取方法。
## 硬件
- **型号**:PicoScope 2204A (VID=`0x0CE9`, PID=`0x1007`)
- **ADC**:8 位,100 MSPS(单通道),50 MSPS(双通道)
- **通道**:2 个模拟通道(A + B),1 个信号发生器
- **量程**:50 mV – 20 V(9 个量程)
理论上只需微调即可在相近型号(2202、2203、2205、2205A)上运行——
但尚未测试。
## 状态
### 驱动
| 功能 | 状态 |
|---|---|
| 数据块捕获(单 / 双通道) | ✅ |
| 快速数据块流式传输(~330 kS/s) | ✅ |
| 原生流式传输(~100 S/s,DC 监控) | ✅ |
| SDK 风格的连续流式传输(无间隙,500 ns..1 ms/样本,默认 1 MS/s) | ✅ |
| SDK 流式传输:客户端自动停止(`set_sdk_stream_auto_stop`) | ✅ |
| 触发:边沿 / 窗口 / PWQ | ✅ |
| 触发:ETS(等效时间采样) | ✅ |
| 增强分辨率(通过过采样最高可达 12 位) | ✅ |
| 信号发生器:频率 | ✅ |
| 信号发生器:任意波形(AWG + LUT) | ✅ 代码路径已集成 |
| 信号发生器:幅度 / 偏移 | ⚠️ 在受测设备上硬件无响应 |
| DC 偏移校准(出厂表 + 运行时自动拟合) | ✅ |
| 按量程覆盖增益/偏移的 API | ✅ |
| EEPROM 读出(序列号、校准日期、原始页面) | ✅ |
### GUI
| 功能 | 状态 |
|---|---|
| 实时示波器视图,支持时基、平移、缩放、暂停 | ✅ |
| 测量(Vpp、平均值、RMS、频率、占空比、上升/下降沿等) | ✅ |
| FFT + 光标(X/Y)+ 余晖 + XY 模式 + 数学运算 | ✅ |
| 协议解码器:UART、I²C、SPI、CAN | ✅ |
| 时间码解码器:DCF77、IRIG-B、AFNOR | ✅ |
| CSV + PNG 导出,预设保存/加载 | ✅ |
| 固件提取向导(首次启动) | ✅ |
请参阅 [`docs/protocol.md`](docs/protocol.md) 获取逆向工程后的协议
参考。
## 许可证
MIT —— 请参阅 [`LICENSE`](LICENSE)。明确排除固件 blobs。
## 贡献
欢迎提交 Pull requests。请保持提交聚焦,在提交前请务必在
`gui/` 目录下运行 `go test ./...`,并在 `driver/` 目录下运行 `make test`。新的协议
发现请更新至 `docs/protocol.md`。
标签:libusb, USB, Wails, 云资产清单, 硬件驱动, 示波器, 跨平台GUI, 逆向工程