将 ESP32 作为联网设备给 Linux 提供网络
1.espressif/esp-hosted: Hosted Solution (Linux/MCU) with ESP32 (Wi-Fi + BT + BLE)(未测试)
乐鑫官方提供的方案,ESP32C2以上设备几乎都支持。
几乎就是以网卡的方式实现的,使用起来跟普通网卡没什么区别。
可以以SPI,SDIO的方式将ESP连接到Linux,缺点就是引脚太多了,例如SPI模式,至少需要9个引脚。
2.esp-iot-solution/examples/usb/device/usb_dongle at master · espressif/esp-iot-solution(未测试)
也是乐鑫官方的例子,直接将ESP32当作USB网卡来用,以RNDIS/ECM的方式,用起来也是无缝使用很方便。
缺点就是只支持USB-OTG的设备,像ESP32C2这种不支持USB的就别想了(或许可以软件模拟USB低速设备?)

3.ESP32通过ppp协议给linux联网
emard/esp32ppp:尝试让 ESP32 连接到 WiFi 接入点,并为串行接口提供 PPP 隧道以进行数据传输
ep00ch/esp32-at-ppp:针对 ESP32 平台的 AT 应用程序,包含了 PPP 服务器和网页浏览器功能
这2个项目都年代久远,大概率不支持现在的ESP32
AI推荐的方案是用最新的esp32-at固件仔细修改增加ppp(还没试验过)
另外的方案是不用AT固件,直接用esp-idf里支持的PPPoS 服务端(ESP官方是支持这个功能的,只是没暴露给AT接口而已)
MCU_Project/ESP/at_ppp at main · jeason1997/MCU_Project,已完成测试,但是速度非常慢,受波特率影响(发射功率也影响,目前才20的发射功率)
curl / wget / apt / DNS / ping ↓ Linux 内核 TCP/IP 栈 ↓ 原始 IP 包 ppp0 ↓ PPP 帧(串口) ESP32 PPP 固件 ↓ NAT / Wi-Fi 互联网
4.esp-protocols/components/eppp_link/README.md at master · espressif/esp-protocols
网友的例子:hn/esp32-spi-eppp-server: ESP32 WiFi-to-SPI gateway using Espressif's EPPP Link
ESP官方的自定义PPP协议,叫EPPP,不兼容Linux那套,支持UART,SPI,SDIO等,因为是自定义的协议,速度可能会比PPP快?
要在Linux下,要自己写 pppos 代码来兼容?

5.esp32刷官方at固件,通过tun虚拟网卡上网
MCU_Project/ESP/at_tun at main · jeason1997/MCU_Project
linux里的tun程序虚拟一个网卡,访问数据的时候,它通过一个代理去跟接在uart串口上的esp32的at交互,转换数据
curl / wget / apt ↓ 普通 TCP/IP Linux 路由 → tun0 ↓ IP 包 tun2socks(用户态 TCP/IP 栈) ↓ SOCKS5 CONNECT at_gateway.py ↓ AT+CIPSTART / AT+CIPSEND / AT+CIPRECVDATA ESP-AT ↓ Wi-Fi 互联网
| 项目 | ESP-AT + TUN | PPP |
|---|---|---|
| ESP32 固件 | 官方原生 ESP-AT | 需要 PPP/NAT 固件支持 |
| Linux 网卡 | TUN 加用户态代理 | 真正的 PPP IP 接口 |
| TCP | 支持 | 原生支持 |
| HTTPS | 支持 | 原生支持 |
| DNS | 当前通过 DoH 特殊适配 | 原生 UDP/TCP DNS |
| 普通 UDP | 当前不支持 | 支持 |
| 系统 ping/ICMP | 不透明支持 | 原生支持 |
| IPv6 | 当前未实现 | 取决于 PPP 固件和配置 |
| 并发连接 | 受 ESP-AT 5 个连接 ID 限制 | 通常不受 AT 连接 ID 限制 |
| 性能 | 多次复制、AT 命令往返,较慢 | 数据流连续,通常更快 |
| 延迟 | 较高 | 较低 |
| CPU 开销 | tun2socks、Python和协议转换 | 主要由内核 PPP 处理 |
| 串口效率 | AT 命令和响应占用较多 | PPP 二进制帧更紧凑 |
| 异常处理 | 状态复杂,容易遇到 AT 超时 | 协议更标准,通常更稳定 |
| 开发维护 | 需要维护 AT 状态机和特殊适配 | Linux 侧成熟,但 ESP 固件更复杂 |

浙公网安备 33010602011771号