您尚未登录。

楼主 #1 2019-10-16 10:07:16

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

如何把esp32作为WiFi设备挂在到linux内核上

我想把esp32当作网卡挂到linux上不知道行不行?esp32和f1c100s通过串口通信,esp32就当是串口wifi透传作用。驱动是不是不好写,坛子里有做过linux驱动的大神吗?

离线

#2 2019-10-16 10:13:33

ffplay
会员
注册时间: 2019-08-31
已发帖子: 92
积分: 92

Re: 如何把esp32作为WiFi设备挂在到linux内核上

我记得ESP32有个AT固件,就是干这个活的

离线

楼主 #3 2019-10-16 10:23:16

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

透传不是问题,自己写也行。关键是linux驱动

离线

#4 2019-10-16 10:44:39

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 如何把esp32作为WiFi设备挂在到linux内核上

是说AT库吗: https://whycan.cn/t_3015.html





离线

楼主 #5 2019-10-16 11:02:48

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

晕哥 说:

不是,更直接来说是在linux把串口模拟成网卡来用

离线

楼主 #6 2019-10-16 11:10:13

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

网上搜了一下,找到一个我可以实现的方案:
1.linux下创建一个虚拟网卡
2.编写linux下网络转串口的透传驱动程序
3.linux串口连接esp32
4.最后实现linux通过esp32上网功能

最近编辑记录 kekemuyu (2019-10-16 11:11:28)

离线

#7 2019-10-16 11:26:00

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

离线

#8 2019-10-16 13:44:26

小智
会员
注册时间: 2019-10-16
已发帖子: 109
积分: 86

Re: 如何把esp32作为WiFi设备挂在到linux内核上

可以参考linux挂载sim800吧,sim800c可以挂载到linux,用ppp拨号,自己编写esp32的固件模拟sim800c的指令,做一个假的sim800c模块

最近编辑记录 小智 (2019-10-16 13:46:49)

离线

#9 2019-10-16 13:47:20

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 如何把esp32作为WiFi设备挂在到linux内核上

小智 说:

可以参考linux挂载sim800吧,sim800c可以挂载到linux,用ppp拨号,自己编写esp32的固件模拟sim800c的指令,做一个假的sim800c模块

对, 这个就是 PPP 点对点协议

https://blog.csdn.net/LucasDove/article/details/41243685

https://www.elementzonline.com/blog/PPP-internet-using-SIMCOM-SIM800-modem





离线

#10 2019-10-16 14:10:33

小智
会员
注册时间: 2019-10-16
已发帖子: 109
积分: 86

Re: 如何把esp32作为WiFi设备挂在到linux内核上

不过esp32实现ppp协议,要自己搞,读协议,难度比较大偶,只能是linux省事,esp32费事了

离线

楼主 #11 2019-10-16 14:18:24

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

小智 说:

不过esp32实现ppp协议,要自己搞,读协议,难度比较大偶,只能是linux省事,esp32费事了

esp32也需要ppp协议吗?这就有点麻烦了,我的设想是esp32做透传,只要实现linux网络转串口就行了

离线

#12 2019-10-16 14:18:59

yuliang_8
会员
所在地: 番禺 广州 中国
注册时间: 2019-08-28
已发帖子: 20
积分: 20

Re: 如何把esp32作为WiFi设备挂在到linux内核上

对,将ppp协议改为支持底层AT指令,要对PPP协议很熟,改驱动,难度比较大,,,,,,,

离线

楼主 #13 2019-10-16 14:26:45

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

有了更好的方案,不用psip,也不用ppp。就是在linux凭空模拟虚拟网卡设备,然后再做网络到串口的透传即可。
https://zhoujianshi.github.io/articles/ … index.html

最近编辑记录 kekemuyu (2019-10-16 14:27:12)

离线

#14 2019-10-16 14:30:51

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 如何把esp32作为WiFi设备挂在到linux内核上

优秀, 我说这篇文章怎么这么熟悉呢, 原来就在我的收藏夹 ^_^

那 WIFI配网和网络连接都在 ESP32 实现?





离线

楼主 #15 2019-10-16 14:37:32

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

晕哥 说:

优秀, 我说这篇文章怎么这么熟悉呢, 原来就在我的收藏夹 ^_^

那 WIFI配网和网络连接都在 ESP32 实现?

对,在esp32配好就行,更好的是linux驱动和esp32之间加点协议,在linux下就可配置了。我先在ubuntu下试下。

离线

楼主 #16 2019-10-16 14:56:35

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

这哥们的博客质量很高,原来这个方案人家已经实现了,请看:
https://zhoujianshi.github.io/articles/ … index.html

离线

#17 2019-10-16 14:58:45

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 如何把esp32作为WiFi设备挂在到linux内核上

对,仰望。
几天前在那个置顶帖就列出来了: https://whycan.cn/t_3019.html#p25008





离线

#18 2019-10-16 15:02:50

小智
会员
注册时间: 2019-10-16
已发帖子: 109
积分: 86

Re: 如何把esp32作为WiFi设备挂在到linux内核上

不过有个小问题,这种虚拟网卡都是直接走的网卡数据吧,而不是tcp或者udp的数据,esp32能直接传输网卡数据?你这是最底层的网卡传输偶

离线

楼主 #19 2019-10-16 15:32:31

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

小智 说:

不过有个小问题,这种虚拟网卡都是直接走的网卡数据吧,而不是tcp或者udp的数据,esp32能直接传输网卡数据?你这是最底层的网卡传输偶

多虑了,数据就是用户发送的数据不会携带tcp/udp任何多余信息的。

最近编辑记录 kekemuyu (2019-10-16 15:32:51)

离线

楼主 #20 2019-10-16 15:41:46

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

按照博客正确模拟出来了网卡,编译时有点小坑,就是

sg_dev = alloc_netdev(0, "eth_uart", ether_setup);

改为:

sg_dev = alloc_netdev(0, "eth_uart",1, ether_setup);

none_20191016-1538.png

离线

楼主 #21 2019-10-16 15:51:36

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

博客的虚拟网卡驱动做的很好,模拟出来网卡后,直接对文件/proc/eth_uart/uio的读写即可实现网络读写,从串口接收的数据写入文件实现网络数据的收,从文件读到的数据通过串口发送实现网络数据的发。到此本主题已基本实现,下一步可以移植到f1c100s了,这样f1c100s就可以通过esp32上网了。

最近编辑记录 kekemuyu (2019-10-16 15:52:16)

离线

#22 2019-10-16 15:59:49

xgui
会员
注册时间: 2019-09-07
已发帖子: 224
积分: 224

Re: 如何把esp32作为WiFi设备挂在到linux内核上

看到这里, 我都有点小激动, 小手跃跃欲试。
楼主干得漂亮!

离线

#23 2019-10-19 22:51:52

ifree64
会员
注册时间: 2019-06-27
已发帖子: 74
积分: 143.5

Re: 如何把esp32作为WiFi设备挂在到linux内核上

给楼主点赞,好玩!

最近编辑记录 ifree64 (2019-10-19 22:53:18)

离线

#24 2019-10-20 00:38:36

jiangming1399
会员
注册时间: 2018-06-14
已发帖子: 113
积分: 113

Re: 如何把esp32作为WiFi设备挂在到linux内核上

用esp8089的驱动啊,就是esp8266+驱动内置固件这种方案的,esp32还是贵了点

离线

#25 2019-10-20 10:54:53

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 如何把esp32作为WiFi设备挂在到linux内核上

牛逼啊,不过,F1C200S用ESP8089比较好,使用SPI接口驱动。具体github能搜到驱动,不知道哪个大神试一下。
对了,呼叫晕哥,赶紧github备份一下esp8089-spi,免得以后找不到了。直接去晕哥github找就行了。
毕竟F1C200S有两个SPI,
一个flash 一个WIFI。

离线

#26 2019-10-20 11:07:26

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 如何把esp32作为WiFi设备挂在到linux内核上





离线

#27 2019-10-20 11:27:36

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 如何把esp32作为WiFi设备挂在到linux内核上

没错,就是这个。esp8089-spi。

离线

楼主 #28 2019-10-21 10:17:28

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 如何把esp32作为WiFi设备挂在到linux内核上

经过后续研究发现esp32/esp8266等模块的透传方式都是基于指定ip和端口号的透传,这样就不能使用f1c100s任意上网了,真正意义上的串口wifi透传模块,就是串口数据直接通过wifi发送出去不经过socket包装,这样才能实现本方案。有种实现方法是用mt7688,在上面安装虚拟网卡来实现。

最近编辑记录 kekemuyu (2019-10-21 10:34:31)

离线

#29 2019-10-21 10:32:34

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 如何把esp32作为WiFi设备挂在到linux内核上

感觉难,WIFI 不同于 有线, 协议栈复杂。





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn