一个基于开源项目 usbipdcpp_esp32 的增强版本,专注于优化和稳定 USB/IP 协议在 ESP32S3 上的数据传输。
原项目实现了基础框架。本项目着重解决了在实际应用中遇到的数据传输稳定性、兼容性和性能瓶颈问题,旨在提供一个可用于更稳定场景的生产力工具或开发基础。
- 设备兼容性:测试支持U盘(可能失败,写入大于60kb的文件会直接出错),有线鼠标/键盘,usb串口工具,STlink
- 连接速度:u盘连接后需要30s才能完成,STlink烧录需要30s左右。
- PCB尺寸:22mm*28mm,无按钮,1个LED用于指示
- 硬件准备:一个esp32s3,我使用的型号是N16R8,只有IO18、19是必须使用的,其余引脚只是用于LED指示和按钮检测。
- 软件准备:安装ESP-IDF V5.5.1。
- 获取代码:
git clone https://github.com/psdscsv/esp32_usb_over_ip.git - 配置项目:进入目录,运行
idf.py set-target esp32s3选择开发板。 - 编译与烧录:编译烧录...
- 网络连接:可以设置设备连接电脑的热点(速度稍慢),也可以直接连接设备的热点(名称:“登录-192.168.4.1”,速度最快)
- 客户端连接:往设备插入一个usb设备,在 windows的usbip_win2 客户端连接 ESP32-S3 的 IP 地址(如果是设备连接电脑热点,可以在电脑的热点设置找到设备的ip;如果是电脑连接设备热点,输入192.168.4.1即可)。
- tcp间隔从10ms改为1ms,以传输速率优先。目前因内存不足attach大容量存储设备有可能失败
- stlink烧录f1芯片需要31秒
- 现在可以向大容量存储设备写入,但由于内存不足,写入大文件必定失败
- 更换了普通的led灯,取消了按钮
- 修复了Bulk OUT 传输长度默认为0的问题
- 实现了STlink的连接,可以在keil5检测并烧录,f103烧录简单的LED灯需要90s
- 测试了有线鼠标、串口模块,可以正常使用,但会卡顿
- 提升了传输的速率,
- tcp间隔从250ms修改为10ms,传输延迟大幅降低
- esp32连接u盘,服务端从开始连接到显示u盘文件目录,需要30秒
- u盘中的文件表现仍为只读,修改等操作会卡死
- 增大了数据传输量,可以达到247kb/s(两台电脑进行同样的操作,得到的传输数据量是499kb/s)
- 增加了灯光指示,增加了WiFi连接界面
- led-红色:尝试连接wifi;黄色:启动热点,用户可以连接“登录-192.168.4.1”,并打开浏览器输入192.168.4.1进入配网界面,输入wifi名和密码;蓝色:开始共享设备(另外配网模式会等待30秒,之后无论有没有连接都会开始共享)
- esp32连接u盘,服务端从开始连接到显示u盘文件目录,需要160秒
- u盘中的文件表现为只读,修改等操作会卡死
- 增大了数据传输量,可以达到15kb/s
- 从原项目
usbipdcpp_esp32分叉并进行增强 - 修复了因数据传输包大于设备缓冲区导致的卡死
- 本项目基于 Apache License Version 2.0 开源。
- 衷心感谢原项目作者 yunsmall 及的工作。
- 感谢 USB/IP 协议的开源社区及 Espressif 提供的 ESP-IDF 框架。
本项目在开发过程中,使用了 AI 编程助手进行部分代码的构思、重构和文档撰写,以提高开发效率。项目的核心逻辑、关键优化及最终实现均由开发者验证、测试并负责。 这段话也是AI生成的