Openwrt-MT76S-WMD7688A总结
一、环境的搭建
本次实践操作的核心板采用的是无涯科技独立研发的WKA-M76S-WMD7688A开发板,此开发板已烧录带有串口传输、网络传输、烧写Flash功能的U-Boot,不建议自己重新烧写U-Boot。官网还提供了openwrt最新版本的系统源码,可直接编译即可生成可烧录的.bin文件,下载链接如下:
链接:百度网盘
提取码:9z9z
本开发套件已经板载CP2014芯片,Type-C接口可作为调试串口也可作为供电串口,PC端需要搭载有CP210x驱动,上方下载的开发环境配套软件已包含(/开发环境/开发工具/相关驱动),驱动下载安装成功后,在电脑设备管理器中查看对应的端口号。
二、SecureCRT的使用
SecureCRT 是一款终端仿真程序,支持 SSH(SSH1 和 SSH2)以及 Telnet 和 rlogin 协议。因此我们用 SecureCRT 来打开 Ubuntu 的控制台,也可以用来作为调试串口的超级终端。我们这里先讲解,如何让SecureCRT 打开 Ubuntu 的控制台。用 SecureCRT 打开 Ubuntu 的控制台,其实就是用 SecureCRT 的 serial 协议访问串口控制台。
(1)如图所示,在电脑设备管理器中查看到串口对应的串口号;
(2)运行“SecureCRT”并选择端口、波特率、数据位等,一定不要勾选流控,然后点“连接”,如图1所示:
图1:串口设置
三、openwrt源码的编译
1.FileZilla的使用(因为我使用的是老版本的ubuntu,没有设置共享文件夹这些)
打开FileZilla软件,主机输入你的Ubuntu的ifconfig的ip地址,用户名:wooya,密码:123456,端口:22,即可建立连接,软件示意图如下:
图2:软件示意图
成功建立连接后,将PC端上的openwrt源码拷贝至虚拟机中(注:在PC机与虚拟机之间进行文件传输时,为避免部分文件造成损坏,需先将文件转为压缩包形式传输进虚拟机再进行解压),接下来变可以进行源码的编译。
2.源码的配置与编译
(1)在虚拟机中解压源码,进入源码目录
$ cd openwrt-hiwooya/
(2)将设备对应的配置文件拷贝为 .config
cp 01-config-WMD-76X8-12816 .config
(3)在编译时,我们只需要关心Target System、Subtarget、Target、Profile 即可,只要这 3 个选项配置正确,系统就能正常启动,选中Package the OpenWrt-based Toolchain会编译过程中生成此开发板的交叉编译工具(后续编译quectel-CM)。
$ make menuconfig
进入内核模块后应选择调配至如下图所示(后续需要其他功能可重新添加选项重新编译烧录即可):
图3:系统配置
更多配置(建议勾选):
Kernel modules >>
USB Support >>
<*> Kmod -usb-core
-*-Kmod -usb-net
-*- kmod-usb-net-cdc-ether
<*> kmod-usb-net-cdc-mbim
-*- kmod-usb-net-cdc-ncm
<*> kmod-usb-net-cdc-subset
<*>kmod-usb-net-qmi-wwan
<*>Kmod-usb-ohci //这个选项一定要勾选,否则可能无法在系统中查看设备
<*>Kmod-usb-serial
<*>Kmod-usb-serial-option
<*>Kmod-usb-serial-wwan
<*>kmod-usb-uhci
<*>Kmod-usb2
NetWork >>
<*> wwan
<*>chat
<*>ppp
<*>uqmi
Utilities >>
-*- comgt
<*> comgt-ncm
<*>usb-modeswitch
Luci >> //方便web LuCi界面控制
Collections
<*> luci
Applications
<*> luci-app-multiwan (optional to support multiple 3g dongles)
<*> luci-app-qos (optional to provide QOS support)
Protocols
<*> luci-proto-3g
-*- luci-proto-ppp
(4)将openwrt整个文件目录赋予make执行权限,chown -R wooya:wooya openwrt-21.02(亲身实践,使用sudo make 编译过程可能会出错,反正我是这样,给予权限后直接make就能顺利编译了),接着输入make编译(首次编译时间较长),可执行 make V=s -j 12,此条命令指动用多少核心一起编译,具体数量看自己虚拟机配置,可大大提高编译速度。
(5)编译完成后固件生成在源码目录openwrt-21.02/bin/targets/ramips/mt76X8(编译的主控类型)/openwrt-ramips-7688A-squashfs-sysupgrade.bin
注:如果中途编译失败,一定记得进行make clean,需要删除之前中途编译生成的东西,可参考https://github.com/coolsnowwolf/lede
二次编译:
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make download -j8
make V=s -j$(nproc) //nproc虚拟机配置的核心数量
如需重新配置:
rm -rf ./tmp && rm -rf .config //若不删除文件,重新编译后的.bin文件可能没有变化
make menuconfig
make V=s -j$(nproc)
四、拨号上网
注:我自己当时不知道,我使用的源码配置可以直接通过fournet &,执行拨号上网操作,所以在网上搜寻了移远拨号的代码和具体配置环境情况如下(相比之下那是相当麻烦),我后面自己重新烧录后都直接使用fournt上网测试。
开发板采用的Quectel-EC20 Mini PCIe-CE 4G模块,7688A开发板连接天线是wifi作用,Quectel-EC20 Mini PCle-CE连接天线为4G上网使用(注:一定不要忘记连接天线),拨号上网使用的是移远提供的quectel-CM(
链接:https://pan.baidu.com/s/1PlCGpDocDSIfrBdA 提取码:1234),这是一个4G连接管理程序,使用需要将上面编译完成后的生成的交叉编译工具链(与编译出的.bin在同一目录)解压至 /opt 目录下,qucetel-CM源码需放置在/openwrt-21.02/package/中,
(1)$cd /openwrt-21.02/bin/targets/ramips/mt76x8
(2)sudo tar xjvf openwrt-toolchain-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64.tar.bz2 -C /opt
(3)设置环境变量
sudo vi /etc/bash.bashrc
最后一行添加:
export PATH=/opt/openwrt-toolchain-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64 / toolchain-mipsel_24kc_gcc-8.4.0_musl/bin:$PATH
export STAGING_DIR=/home/wooya/openwrt-21.02/staging_dir //保存并退出
$ source /etc/bash.bashrc
(4)交叉编译
$ mipsel-openwrt-linux- musl-gcc *.c -o quectel-CM -lpthread –ldl
编译结束会生成quectel-CM可执行文件,将其通过WinSCP(包含在配套开发工具中)传入开发板中,(注:进行此步骤时,最好断掉所有网络,一根网线连接PC主机与开发板,此时在串口控制面板中ifconfig查看板子IP地址才能顺利连接,避免部分网络网关可能会发生占用无法连接)
(5)执行文件
插入EC20 4G模块后,
$ ls /dev/ 正常情况将会看到USB转串口设备及cdc-wdm0,若不存在,则可能驱动编写有问题,未能读出USB设备,如图4所示:
图4:dev设备图
$ chmod 777 quectel-CM
$ quectel-CM & 即可拨号成功且分配一个IP地址,如图5所示也可使用fournet & 进行拨号,每次重新拨号后分配的IP地址并不相同。
图5:成功拨号
因为我是执行的插卡拨号,注意,有的板子SM卡可能不支持热拔插,需要断电重新插卡再重启。
补充点:自己经常使用的是使用Secuer-CRT和Xshell 7 进行SSH连接来操控Ubuntu和板子,每次在重新烧录后可能会导致连接不上板子,也用不了scp传输文件,是因为Ubuntu在连接一次后会有密钥,记录在/users/wooya/.ssh/known_hosts(你自己主机的名称哈)当下次访问相同子机服务器时,会核对公钥。如果公钥不同,会发出警告,此时删除known_hosts即可
wooya@ubuntu:~/gw1302s-change$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:PB3TrZA29BhySWBGV2HjGleJ5h0cKZcw3tgv3kCznVo.
Please contact your system administrator.
Add correct host key in /home/wooya/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /home/wooya/.ssh/known_hosts:2
remove with:
ssh-keygen -f "/home/wooya/.ssh/known_hosts" -R 192.168.2.15 //重点
ED25519 host key for 192.168.2.15 has changed and you have requested strict checking.
Host key verification failed.
//解决方法:此时执行 ssh-keygen -R 192.168.2.15 //IP地址输入你要连接的地址,接着再执行SSH
ssh [email protected]
/*************************scp问题*******************************/
usr@usr-virtual-machine:~$ sudo scp test.c [email protected]:~/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:PB3TrZA29BhySWBGV2HjGleJ5h0cKZcw3tgv3kCznVo.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /root/.ssh/known_hosts:4
remove with:
ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.2.15"
ED25519 host key for 192.168.2.15 has changed and you have requested strict checking.
Host key verification failed.
lost connection
rm -r /home/usr/.ssh/known_hosts
scp test.c [email protected]:~/
scp libloragw416.tgz [email protected]:~/
[email protected]'s password:
libloragw416.tgz 100% 1154KB 155.7KB/s 00:07 */
综上内容自己纯手打,参考了其他博主的方法,其实也就是算一个总结。针对其他部分的引用或者部分类似,本人十分抱歉,这原本是我自己弄完后做的一个总结,想的发出来让可供小白参考。