跳转到内容

常见问题 FAQ

能跑在 ESP32 经典版 / C3 / C6 上吗?

Section titled “能跑在 ESP32 经典版 / C3 / C6 上吗?”

当前只在 ESP32-S3-N16R8 验证。其他芯片没有验证证据,不是“明确不支持”。内存与 PSRAM 是关键门槛,移植前先看 支持范围。

不需要。ESP32 只主动连接入口,可以连局域网内的节点,也可以连有公网地址的共享节点。需要的是出站 TCP 可达。

能让 ESP32 当 EasyTier 服务器/中继服务器吗?

Section titled “能让 ESP32 当 EasyTier 服务器/中继服务器吗?”

不能当入口服务器:组件不监听端口,不能被其他节点主动连入。它可以作为数据中继转发别人的帧,但这不等于服务器角色。

不支持。只实现 TCP 客户端入口。

不支持。只实现非安全模式握手(网络名 + SipHash 摘要);数据面可以用 AES-128-GCM。

不支持 proxy_network、routes、子网代理与广播/组播。ESP32 只处理虚拟 IP 到虚拟 IP。

在 [network_identity].network_secret 填与所有对端一致的字符串。不要提交真实密钥;main/easytier.toml 已被 .gitignore 忽略。

如果写了 [network_identity] 表,network_name 必填。完全不写该表时,缺省网络名是 default。

这是与上游 get_ipv4().parse().ok() 对齐的唯一例外:字符串类型正确但内容无法解析时静默忽略。结果可能是“既没有静态地址也没有 DHCP”,随后结构校验失败。

可以,但静态地址优先,dhcp 被关闭。建议只写一个。

为什么从上游复制的 listeners 没生效?

Section titled “为什么从上游复制的 listeners 没生效?”

组件不实现监听,也不解析该字段;不支持的字段统一忽略且不报错。见 能力矩阵。

576..1380,缺省 1380。超过 1380 会构造失败。

为什么 start() 成功但网络没通?

Section titled “为什么 start() 成功但网络没通?”

start() 只创建资源。要等 NetworkReady 或 Status.state == Ready。中间还要 TCP、握手、路由同步、虚拟地址就绪。

disconnect() 后组件不会自动恢复;Wi-Fi 重新取得 IP 后必须再次 connect()。

它是预留事件,当前实现不产生。用 Status.direct_peer_count 与日志观察连接变化。

0.0.2 已修复。先确认组件版本 ≥ 0.0.2;仍复现时记录组件版本、日志与状态快照。

可以。每个 et::Inst 独占资源;注意内存、socket、虚拟网段与构造串行化。见 线程、回调与多实例。

入口 URI 不支持 IPv6;虚拟网络当前是 IPv4。

没有。传输层是明文 TCP;数据面由 AES-128-GCM 保护。不要在不可信网络上关闭加密。

开 PSRAM → 降连接槽/队列/RPC 重组槽 → 降栈(先确认高水位)→ 减少实例。见 内存与资源。

为什么构造 Inst 的任务栈要大?

Section titled “为什么构造 Inst 的任务栈要大?”

TOML 解析是递归下降,Inst 构造也在调用者栈上完成。建议 ≥ 8 KiB,并用高水位核对。

不可以。回调在控制面任务中同步执行,stop() 会等待该任务退出,导致死锁。析构同理。

start()/stop() 在宿主构建返回 ESP_ERR_NOT_SUPPORTED;纯逻辑模块可以在宿主侧编译测试,但当前仓库没有 tests/ 目录。