树莓派 ZeroW + Openwrt 如何驱动 RNDIS Ethernet-Gadget 网卡

大家好,我是 Archer,那个困扰我几年之久的问题,终于解决了。
Openwrt 的 gadget-eth 网卡,在19.07.3版本,终于能用啦!(Ohhhhhhhhhh!)
这里我仅仅验证了19.07.3版本,19.07.4版本应该没问题。

首先,搞一个树莓派ZW,一个OTG的USB分线器,还有一个USB以太网卡,一个键盘,一个屏幕,另一台电脑。这就是调试这个用法所需要的设备。

然后,去下载这个系统镜像,然后往一张大于512M的TF卡上,烧录这个系统。烧录好之后,不要先拔出储存卡,然后下载这些驱动包,放在TF卡的引导分区里面(Fat32那个分区)。

kmod-usb-net_4.14.180-1_arm_arm1176jzf-s_vfp.ipk
kmod-mii_4.14.180-1_arm_arm1176jzf-s_vfp.ipk

最后一个视乎你有什么以太网卡,看芯片,下载其中一个包:
kmod-usb-net-asix-ax88179_4.14.180-1_arm_arm1176jzf-s_vfp.ipk(任天堂Switch主机和安卓手机等设备通用网卡)
kmod-usb-net-asix_4.14.180-1_arm_arm1176jzf-s_vfp.ipk(任天堂Wiiu主机及安卓手机等设备通用网卡)
kmod-usb-net-rtl8152_4.14.180-1_arm_arm1176jzf-s_vfp.ipk(小螃蟹USB2和USB3网卡的通用驱动)
kmod-usb-net-dm9601-ether_4.14.180-1_arm_arm1176jzf-s_vfp.ipk(电脑城坑爹10M低速网卡)
kmod-usb-net-mcs7830_4.14.180-1_arm_arm1176jzf-s_vfp.ipk(MCS7830网卡的驱动)

然后把储存卡插到树莓派ZW上,街上网卡键盘屏幕,然后通电开机。

开机之后,首先切换到fat32分区。

cd /boot

然后再安装放在引导分区里面的三个驱动包(第三个驱动包根据自己的网卡自选)

opkg install kmod-usb-net_4.14.180-1_arm_arm1176jzf-s_vfp.ipk kmod-mii_4.14.180-1_arm_arm1176jzf-s_vfp.ipk kmod-usb-net-dm9601-ether_4.14.180-1_arm_arm1176jzf-s_vfp.ipk

安装完毕之后,可以通过修改Lan口参数:

vi /etc/config/network

然后修改(此处请按照自家网络实际参数进行设置,此处仅供参考)

config interface 'lan'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
list dns '180.76.76.76'
option ipaddr '192.168.254.1'
option ifname 'eth0'

修改之后,再执行更换软件源的指令

sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf

这样重启之后,把网卡的网线跟另一台电脑连接之后,电脑就可以通过浏览器输入192.168.254.1来网页遥控树莓派ZW。

可以网页控制树莓派之后,首先去network ——firewall处,去修改防火墙配置,找到Zone,把wan→REJECT处的两处reject改成accept,这样就可以上层网络访问路由器了。

然后去network —— wireless处,找到Scan选项,扫描自家的WiFi,然后配置,加入,这样就联网成功了。之后把树莓派和电脑之间连接的网线拔开,把自己的电脑连接上层的网络,然后扫描IP地址,找到树莓派ZW的IP,浏览器输入IP继续网页遥控树莓派ZW。

进去网页控制之后,去network —— interfaces处,编辑LAN口,找到physical setting,把eth0网卡给取消掉,再去 system——software 处,去installed列表,把USB网卡的三个驱动包给删除掉,然后点update lists,去更新软件列表,然后安装一下软件包 kmod-usb-gadget kmod-usb-gadget-eth kmod-usb-dwc2。

修改 /boot/config.txt,往文本末尾加一行:

dtoverlay=dwc2

再修改/etc/rc.local,在exit0前加一行:

modprobe g_ether

下次开机,就会自动加载gadget-eth网卡驱动,然后把ZW的OTG口接上安卓手机数据线连到电脑,你的电脑就能感知到RNDIS设备了(如果Win10,还需要驱动

接下来只要开着网页,把usb0接口添加到lan界面,电脑就可以通过树莓派上网了。

这个东西其实还有高阶玩法,例如安装aircrack-ng ,reaver等软件,剩下的你们都懂,或者钓鱼截包等都可以。由于采用openwrt这种轻量级系统,系统占用资源降到最低,可以用于更加高阶的需求,是一件给高手的玩具,虽然有基于kali的开源项目P4wnP1,但多一个openwrt的选项未尝不好,而且openwrt跟电脑的连接其实更加灵活,除了g_ether网卡模式以外,还可以安装kmod-usb-gadget-serial串口驱动包和kmod-usb-gadget-mass-storage储存模式等可选,这样一件玩具,希望大家喜欢。

我想把这玩意命名为大师网卡,因为塞尔达玩久了,发现强力的不是大师之剑,而是能打通剑之试炼的玩家。

附:
最后附上 Archer 制作好了的系统镜像文件,可以直接烧录好给树莓派 ZeroW 使用。

链接: https://pan.baidu.com/s/1UmQml_ltZIFNgg-KxMIVMw 提取码: 13rd

将本镜像(树莓派网卡openwrt)往至少256M的TF卡上烧录,然后装进树莓派ZW里,设置一个无线网络 test1 密码 abcdefgh,让其开机后自动联网,然后用一根 Micro USB 数据线连接树莓派ZW的OTG口和电脑的USB口,让其开机并与电脑相连,然后通过内网找到树莓派ZW的IP地址,往浏览器地址栏输入,账号root密码admin,然后找到系统——启动项——本地启动脚本处,在 exit0 之前添加语句 modprobe g_ether (越前越好),让树莓派ZW下次开机即可与电脑连接,然后重启树莓派,启动完毕之后即可把树莓派ZW当无线网卡用,请留意已经安装的软件包,有惊喜。(若Win10系统,打开设备管理器请往多余的COM串口设备添加里面的驱动)



1 评论

  1. 有点困惑了,让电脑通过树莓派上网的应用场景是啥?zw是需要无线才能上网的设备,无限模式下,网速慢到令人暴躁。电脑本身不是自带各种网卡么?

发表评论

你的邮件地址不会公开


*