图源PixivID:53742188
过了这么久,来玩票大的。

引子

最近新购入了红米ax5路由器,配合树莓派软路由成功突破了校园网只能同时登陆一台电脑和一台手机的限制。WIFI6内网,串流steam游戏效果杠杠的。还附带网易云灰色音乐解锁,科学上网等有趣功能(什么叫现代网上冲浪体验啊)。具体搭建过程以后会以教程形式放出一定不会咕咕咕的

组网成功后第一件事干什么呢——当然是测速啦。笔记本上speedtest.cn网能跑90M。考虑到本来就是百兆带宽还不错。剩下就是局域网测速了,准备使用老牌测速工具iperf3测速。可惜ax5没有iperf3软件包,需要人工手动编译,于是就有了这篇文章。

关于ax5开启ssh

Do you like MI4 I

Part.1

原理

进行交叉编译,原来是得手动构建目标平台完整的gcc的。但是现在是2020年,万能的Ubuntu软件源已经帮我们整好了目标平台完整的gcc,只需要一个apt install就可以安装,非常方便。

确定目标平台

ssh进ax5,执行cat /proc/cpuinfo

root@XiaoQiang:~# cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 48.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 7
CPU variant     : 0xa
CPU part        : 0x801
CPU revision    : 4

processor       : 1
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 48.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 7
CPU variant     : 0xa
CPU part        : 0x801
CPU revision    : 4

processor       : 2
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 48.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 7
CPU variant     : 0xa
CPU part        : 0x801
CPU revision    : 4

processor       : 3
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 48.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 7
CPU variant     : 0xa
CPU part        : 0x801
CPU revision    : 4

Hardware        : Generic DT based system
Revision        : 0000
Serial          : 0000000000000000

确定CPU是armv7,简称v7l,是32位相对比较老的一种cpu架构。
之后网上找了一番,确定了ubuntu上目标为arm平台的gcc的软件包名及其对应编译命令

软件包名 编译器名 架构名
gcc-aarch64-linux-gnu arm-linux-aarch64-gcc arm-aarch64-linux-gnu
gcc-arm-linux-gnueabihf arm-linux-gnueabihf-gcc arm-gnueabihf-linux-gnu
gcc-arm-linux-gnueabi arm-linux-gnueabi-gcc arm-gnueabi-linux-gnu

其中aarch64是新的64位armCPU所使用,gnueabihfgnueabi和区别仅仅在于对cpu执行浮点数运算的处理方案上,gnueabihf默认使用硬件计算浮点,gnueabi默认使用软件模拟浮点计算。因遂选择gnueabi。

安装目标平台交叉编译器

sudo apt install gcc-arm-linux-gnueabi

下载源码编译

运行于wsl版本的Ubuntu

git clone https://github.com/esnet/iperf.git
cd iperf
./configure CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ LDFLAGS="-static" --build=x86_64-pc-linux-gnu --host=arm-gnueabi-linux-gnu --prefix=`pwd`/build/arm/
make -j16 LDFLAGS="-all-static"
make install

设置静态链接LDFLAGS="-static"LDFLAGS="-all-static"是为了避免折腾跨平台动态链接库。能用就行

运行之后即可在/build/arm/文件夹里找到编译出来的文件

拷贝运行

使用netcat工具拷贝文件
x86主机

nc 192.168.31.1 15000 -q 1 < iperf3

ax5路由器(竟然带了netcat,不错)

nc -l -p 15000 > iperf3

结束之后赋运行权限

chmod +x iperf3
./iperf3


好耶!