esdreiem/usb-endoscope

GitHub: esdreiem/usb-endoscope

通过 WebUSB 在浏览器中直接串流非标准 UVC 协议 USB 内窥镜实时画面的离线可安装 PWA,替代厂商专有应用。

Stars: 0 | Forks: 0

# USB-Endoscope **一款可安装的、完全本地化的 Web 应用,通过 WebUSB 直接在浏览器中串流 i4season / "Usee Plus" USB 内窥镜画面——这是一个开放、注重隐私的替代方案,用于取代设备专有的配套应用程序。** 🇬🇧 英文 | [🇩🇪 德文](README.de.md) [![License: GPL-3.0-or-later](https://img.shields.io/badge/License-GPL--3.0--or--later-blue.svg)](LICENSE) [![PWA](https://img.shields.io/badge/PWA-installable-blueviolet.svg)](manifest.webmanifest) [![offline-capable](https://img.shields.io/badge/offline-capable-success.svg)](sw.js) [![no dependencies](https://img.shields.io/badge/dependencies-none-brightgreen.svg)](index.html) [![WebUSB](https://img.shields.io/badge/WebUSB-vendor%20protocol-orange.svg)](#how-it-works) ![USB-Endoscope — 带有拍摄、旋转、缩放和全屏控制的实时摄像头预览](https://static.pigsec.cn/wp-content/uploads/repos/cas/e7/e787dacb1b5ca2761801113a5040013b962e0a2e648b00a7dd9aaaaa1ea28a1f.png) ## 它是什么 廉价的 USB 内窥镜通常需要依赖专有的配套应用程序才能工作。本项目是它的一个完全本地化的替代方案:**一款可安装的 Web 应用,无需构建步骤,无依赖,且没有任何网络请求。** 摄像头画面永远不会离开您的设备。 它只做一件事:通过 **WebUSB** 连接 **i4season / "Usee Plus"** USB 内窥镜(USB `VID 0x2ce3` / `PID 0x3828`,以 "Geek szitman useepluscam" 名称销售)并显示其实时视频——无需原生应用,无需厂商软件。 ## 工作原理 这款内窥镜**不是**标准的 **UVC** (USB Video Class) 设备。正因如此,您的操作系统绝不会将其视为网络摄像头,浏览器也无法使用常规的 camera API 打开它——这正是厂商转而提供专有 Android 应用的原因。 因此,该应用采取了不同的路径:它通过 **WebUSB** 声明了设备的厂商接口,并直接在浏览器中使用**逆向工程的厂商协议**进行通信。在实践中,这意味着通过两个简单的厂商 **control transfers** 来启动流,然后通过 bulk endpoint `0x82` 读取原始的 **YUYV422** 帧,并将它们转换为 canvas 上的 RGB。 完整的故事、截图以及精确的协议常量位于 **[docs/REVERSE_ENGINEERING.md](docs/REVERSE_ENGINEERING.md)** 和 **[PROTOCOL_NOTES.md](PROTOCOL_NOTES.md)**。 ## 将其安装为应用 USB-Endoscope 是一款可安装的 **Progressive Web App (PWA)**: - 出现时点击页眉中的 **⤓ Installieren** 按钮,或使用浏览器地址栏中的**安装图标**。 - 安装后,它可以运行在主屏幕/桌面上,并支持**完全离线**工作——service worker 会缓存应用外壳,并且依然没有任何外部请求。 - 在 **iOS / iPadOS** 上,您可以通过 Safari 的**“添加到主屏幕”**将其添加到主屏幕,但请注意,它**无法进行串流**——iOS 上没有任何浏览器支持 WebUSB(请参阅[平台支持](#platform-support))。 ## 功能 - **实时预览** —— 插入已知的内窥镜时会自动连接 - 📷 **照片拍摄** —— JPEG,带有时间戳的文件名 - ⏺ **视频录制** —— WebM - ⏸ **定格画面** —— 在探头晃动时非常实用 - ↻ **旋转** / ⇋ **镜像** —— 内窥镜图像经常是倒置的;变换也会应用于保存的照片 - 🔍 **数字变焦** - ⛶ **全屏** - ⤓ **可安装/离线工作** —— 作为 PWA ## 快速开始 WebUSB 需要**基于 Chromium 的浏览器**和**安全上下文**:`https://` 或 `http://localhost`。双击直接打开 `index.html`(`file://`)会被浏览器阻止,因此请在本地提供托管服务。 ### 在 PC / 笔记本电脑上 插入内窥镜,然后运行: ``` git clone https://github.com/esdreiem/usb-endoscope.git cd usb-endoscope python3 -m http.server 8000 # → 在 Chrome / Edge / Brave 中打开 http://localhost:8000 ``` 按 **Verbinden** (连接) 开始串流,按 **Stopp** 停止串流。 ### 或者使用托管版本 该应用通过 **GitHub Pages** 进行静态托管——它依然不会发出任何网络请求,因此图像会保留在本地: **** ## 平台支持 WebUSB 是一个**仅限 Chromium** 的 API,因此支持与否完全取决于浏览器引擎。 | 平台 | 浏览器 | WebUSB 串流 | 备注 | |---|---|---|---| | **桌面端** (Windows / macOS / Linux) | Chrome, Edge, Brave, Opera | ✅ 可用 | 推荐的使用方式。 | | **桌面端** | Firefox | ❌ 不支持 | Mozilla 拒绝实现 WebUSB。 | | **桌面端** | Safari | ❌ 不支持 | 无 WebUSB 支持。 | | **Android** | Chrome / Chromium | ✅ 可用 | 任何基于 Chromium 的 Android 浏览器均可。 | | **iOS / iPadOS** | 任何浏览器 | ❌ 不支持 | 所有 iOS 浏览器都被强制使用 WebKit,因此都不支持 WebUSB——您可以安装该 PWA 但无法串流。 | 在非 Chromium 浏览器中,该应用会显示明确的**“在 Chrome / Edge / Brave 中打开”**消息,而不是毫无反应的 UI。无论哪种情况,都需要**安全上下文**(`https://` 或 `http://localhost`)。 ## 支持的设备 | 设备 | VID / PID | 接口 | 状态 | |---|---|---|---| | i4season "Usee Plus" — "Geek szitman useepluscam" (型号 `su4p-002`) | `0x2ce3` / `0x3828` | WebUSB 厂商协议 | ✅ 已测试 | 有**不同厂商的内窥镜**?请帮助我们添加它——请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## WebUSB 协议是如何被逆向工程的 "Usee Plus" 内窥镜的 USB descriptors 公布了名为 `iAP Interface` 和 `com.useeplus.protocol` 的厂商接口——而不是 UVC——这使得调查经历了一些复杂的死胡同(旧版的 "BB AA" / MJPEG bulk protocol,然后又深入绕道至 Apple 的 iAP2 配件握手)。突破来自于一部已 root 的手机和对原生 `USBDEVFS` ioctl 接口的 Frida hook,捕获了**真正的** Android 应用实际上通过 USB 发送的内容。结果发现它只是两个简单的厂商 control transfers,随后是原始的 YUYV422 bulk 读取——花哨的握手协议一直都是障眼法。 完整的故事、截图以及精确的协议常量位于 **[docs/REVERSE_ENGINEERING.md](docs/REVERSE_ENGINEERING.md)** 和 **[PROTOCOL_NOTES.md](PROTOCOL_NOTES.md)**。 ## 隐私 隐私是本项目的核心目标,而不是事后补充: - **自包含** —— 没有外部或第三方请求,没有 CDN 字体,没有分析工具。所有 assets 都是同源的 (same-origin)。 - **完全离线可用** —— 一旦作为 PWA 安装,它完全不需要网络即可工作。 - **摄像头图像永远不会离开您的设备。** - 照片 (JPEG) 和视频 (WebM) **仅作为本地下载**保存。 - 整个源代码都是可读且可审计的——从 [`index.html`](index.html) 开始查看。 ## 免责声明 这是一个独立的、非官方的项目——**不附属于、未受认可于,也未与** i4season、"Usee Plus"、"Geek szitman" 或任何内窥镜制造商有关联。产品和公司名称是其各自所有者的商标,仅用于识别兼容硬件( nominative fair use )。 此处的 WebUSB 协议是为了**互操作性**而逆向工程的——以便您使用受您自己控制的软件来操作您拥有的内窥镜。不包含任何专有的厂商代码。该软件在 GPL-3.0-or-later 许可下“按原样”提供,不提供任何形式的担保;您需自行承担使用风险。 ## 许可证 基于 **GPL-3.0-or-later** 获得许可。完整文本请参见 [LICENSE](LICENSE)。 Copyright © 2026 [esdreiem](https://github.com/esdreiem).
标签:WebUSB, 云资产清单, 前端工具, 可安装网页应用, 后端开发, 图像处理, 数据可视化, 本地应用, 视频流, 逆向工程