QCA9531烧录固件方法
- 硬件连接,需要接收上串口与网口。如下图所示:
注意: 波特率115200,3.3V不用接,如果连接 失败,建议TX和RX交换一下。
- 板子一通电,在串口终端按回车,进入UBOOT的命令模式,输入httpd或者http,如下图所示:
- 把PC机的IP修改成:10.10.18.100,掩码:255.255.255.0。打开PC机的IE输入10.10.18.1,如下图所示:
- 点击“选择文件”后,然后点击“Update firmware”,
串口终端会出现下图所示:
- 固件升级成功后,会直接自动重启进入系统。
设置ip:192.168.1.1
子网掩码:255.255.255.0
从192.168.1.1进openwrt管理界面
一些配置:
network-firewall设置general settings 和port Forwards
general settings:改成accept
port Forwards 添加 ssh 22 22
http 80 80
QCA固件生成过程
下面讲解如何通过openwrt的路由器搭建batman网络,包括通过有线接入batman网络。本文假定路由器已经成功安装了openwrt系统,由于安装系统的较多,本文不再赘述。
1 batman-adv的安装
首先需要确保自己的路由器安装了batman-adv安装方法有很多种,这里推荐2种。通过以下命令可以查看是否安装了batman-adv
opkg list | grep kmod-batman-adv
如果常规安装了通常会有以下输出:
kmod-batman-adv - 4.9.172+2018.1-7
1.2 okpg安装法
输入opkg install kmod-batman-adv即可安装batman-adv
输入opkg install batctl可以安装一个batman-adv的管理工具,虽然不是必须,但是推荐安装一下
1.3 编译安装
此方法类似于重新编译openwrt,因此需要参考内核编译的相关内容,这里以qca9531为例讲解,以下操作在Linux中进行,作者采用的是ubunt18
- 下载Openwrt源码,然后进入源码的根目录
- 更新安装包:
./scripts/feeds update –a - 安装软件包到feeds文件夹:
./scripts/feeds install –a - 添加Batman源码和Batman调试工具batctl
scripts/feeds install kmod-batman-adv
scripts/feeds install batctl
5.通过输入下文进入配置:
make menuconfig
6.根据自己的路由器型号选择型号:
7.将Batman源码添加进编译选项中
Kernel modules ---> other modules ---> kmod-batman-adv
8.添加Batman的调试工具batctl
Network --->batctl
9.添加iperf带宽测试工具。
Network - - - >iperf
10.为OpenWrt系统添加LuCI,方便通过网络界面控制
LuCI ---> Collections ---> luci
11.(可选)为例方便控制我们可以添加以下服务
Network ---> SSH ---> openssh-client
Network ---> SSH ---> openssh-client-utils
Network ---> SSH ---> openssh-keygen
Network ---> SSH ---> openssh-server
Network ---> SSH ---> openssh-sftp-client
Network ---> SSH ---> openssh-sftp-server
12.开始编译,其中V=s表示显示详细信息,-jx表示x个线程(推荐与核心数相同):
make V=s -j1
第一次编译的时间较长,由电脑的CPU确定。
完成上述工作后,需要将编译好的系统植入路由器。读者根据当前路由器情况选择一种更新固件的办法:
1.已经烧录好了openwrt,想换成本文刚刚编译好的系统:固件在openwrt_project/openwrt/bin/targets/ar71xx/generic
把openwrt-ar71xx-generic-ap147-010-squashfs-sysupgrade.bin这个文件通过上面烧录方法进行烧录,可以通过xshell的xtfp工具移到桌面,然后进行烧录。
编译的时候出现这个,openssh-server-pam取消就正常了
本文主要基于batman官网说明书:https://www.open-mesh.org/projec ...
-adv-Openwrt-config
先说点基本概念
802.11s只是无线的mesh。通过batman才可以实现有线回传。
batman不同版本配置不一样,这里适用的是2019.0-3以后的版本。
batman的原理如上图所示,即把多个接口(interface)合并为一个batman格式的虚拟接口,然后该接口可以像eth0(lan口)一样并入br-lan中,实现batman网桥。
也就是说,我们需要构建了一个batman的虚拟接口,这个接口包含了802.11s的无线接口,某些有线网口(见文章后面的有线回传设置)。
先添加一个802.11s的wifi,要注意所有节点信道要一致。可以通过网页添加,也可以直接修改/etc/config/wireless(如下配置)。
2 组建无线batman网络
这一步主要是使得各个路由器可以通过batman网络互联。
下面会涉及到对许多文件的修改,可以使用ssh连接路由器后用vim命令打开文件并且修改,也可以通过fts或者sftp等方式把文件下载到电脑中然后修改并上传。
----无线设备的设置
下面进行修改:
config wifi-device 'radio0' //网卡的内置标识符
option type 'mac80211' //该接口使用的驱动或芯片类型。
option channel '9' //wifi信道;作为sta,可使用auto,作为AP,必须指明信道值channel应该根据自己的要求设置,应该选择一个干扰比较少的信道。
option hwmode '11g' //选择无线协议,这里表示是802.11g
option path 'platform/ar934x_wmac'
option htmode 'HT40' //value:HT20 HT40 or HT40+
option country 'US' //国家代码用来指名规定设置,影响可用的通道和传输功率
option disabled '0' //记得改为0
2、然后将2.4G的网络配置修改如下,本设置相当于是对网络中协议相关的部分进行设置,标红的部分下文会有讲解:
---无线接口设置,每个适配器至少包含一个
config wifi-iface 'wmesh' //指定使用的无线适配器,2.4G网段
option device 'radio0' //表明设定设备为'radio0'
option ifname 'adhoc0' //将设备的接口设定为adhoc0
option network 'batnet' //设定使用是batnet网络,桥接到batnet
option mode 'adhoc' //选择无线网络的操作模式,ap,sta,adhoc,wds,monitor,表明2.4G的网络工作在adhoc模式
option ssid 'mesh' //将wifi名称设置为mesh,
option mcast_rate '18000'
option bssid '02:CA:FE:CA:CA:40' //将wifi的bssid设置成02:CA:FE:CA:CA:40
option encryption 'none'
ssid: 就作用上来讲,SSID看起来就像是无线接入点(AP)MAC地址,所以无线局域网上的所有无线设备必须使用相同的SSID才能进行互相沟通。SSID就是一个WiFi网络的网络名称,我们平时连接WiFi网络的时候,能够看到一些TP-LINK_XXXX的网络,这个TP-LINK_XXXX就是该网络该路由的ssid.
bssid: WIFI MAC指的是你无线网卡的mac地址,BSSID来自于设备的的虚拟mac。要了解BSSID,首先得知道BSS的概念,BSS叫基础服务集,也就是提供独立WIFI服务的概念,那么BSSID就是设备虚拟的MAC地址,这个MAC可以和设备的实际MAC一样,也可以是在实际MAC基础上末尾数字有所变动,不同厂家实现方式不一样。
注意:在同一个网络中的所有Batman节点,应满足以下几个条件:(1)Wifi的频率相同,channel相同;(2)MAC地址不同,如果MAC地址相同的话,就不能够组网,这是当所有自组网不能组网的时候首先应该被排除的一个条件(3)bssid相同。:
可能会有一个“”的选项,见到了记得改成0
然后检查一下连接上了没有:
可以通过网页查看,如下图就是连上了
之后开始配置batman
首先建立batman虚拟接口,这里只能通过修改/etc/config/network来做,在里面添加下面内容
这里我们首先保证路由器直接可以ping通,之后再做桥接
1、添加如下
config interface 'batnet' //这里我们定义的batman接口名为bat0
option mtu '1560'
option proto 'batadv' //该接口使用batadv协议
option mesh 'bat0' // mesh网络为名为bat0
option routing_algo 'BATMAN_V' // 使用BATMAN_V路由算法
然后把之前创建的802.11s无线接口配置一下,同样是修改/etc/config/network文件,添加下面几行
2、添加如下
config interface 'bat'
option ifname 'bat0'
option type 'bridge'
option proto 'static'
option mtu '1560'
option ipaddr '10.0.0.1'
option netmask '255.0.0.0'
这里设置了一个桥接以及路由器在btaman网络中的IP地址
config interface 'bat':添加一个网络接口,名为bat
option ifname 'bat0':选择一个物理层的接口名为bat0,实际上bat0就是batman-adv对应的物理接口,向该接口发包就会在batman网络中转发
option type 'bridge':设定此网络接口为桥接
option proto 'static':静态IP协议
option ipaddr '10.0.0.1':这里就是设置路由器自己的IP地址,不同路由器应该要有不同的IP,可以根据需要选择合适的网段,通常可以作为内网的网段10.0.0.0~10.255.255.255,172.16.0.0~172.31.255.255,192.168.0.0~192.168.255.255。
option netmask '255.0.0.0':这是根据网段选择的掩码
2.3 测试
所有节点配置之后重启一下,应该无线mesh就配置好了,可以用登录路由器后输入batctl o或batctl n查看,像下面那样就成功了(我一共有三个mesh无线节点,所有batctl n能看到链接了两个节点)使用ping命令检查是否可以通过IP连同对应的路由器
在做有线回传的时候遇到的一个问题:
两台电脑ping不了,没有打开DHCP