TN3399开发板折腾记录

0x01 背景

需要一个能支持GICv3的设备。春节时,在安卓旧手机上折腾了一圈,买了2个旧手机(红米2、1加3T),都不行。

  1. 板子是在闲鱼上买的。300块,包邮。
  2. 到手后发现内核版本是4.7的Armbian。不是我需要的5.x的。

所以就开始折腾了。记录下折腾的过程,希望能帮到各位同学。

以下操作过程中最好有个显示器或者串口设备,看不到输出的话,折腾效率很低。

0x02 换内核

内核在https://github.com/lanseyujie/tn3399_v3/
直接使用编译好的。按照板子的刷机流程,刷好了之后发现Wifi网络不稳定。

详细教程在这个论坛中也有https://www.right.com.cn/forum/thread-4033942-1-1.html

0x03 Wifi问题

具体表现是,在同网段的其他主机去ping它。出现超高延迟,达到200ms,还会丢包。

开始以为网卡的天线太小了。买了外置天线,接上也不行。开始怀疑是网卡的问题。

  1. 下载5.8.1的内核
  2. 准备内核编译环境
  3. 配置内核
    具体的配置过程,网上有教程。我使用的USB无线网卡是Realtek 8188CUS型号的。使用的内核中没有默认编译支持。需要自己开启。需要打开CONFIG_RTL8XXXU_UNTESTED=y选项。

在内核目录下,通过make M=drivers/net/wireless/realtek/rtl8xxxu modules,编译需要的驱动目录。

最终编译好了,加载驱动时,提示没有固件。从这里找到了固件,下载安装好。

1
wget http://ftp.de.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-realtek_20190114-2_all.deb

都安装好了。设备probe异常。提示如下错误:

1
Failed to write block at addr: 1080 size: 0080 

后来发现是插的USB口不对。它不支持USB3,换了USB2的口就可以了。

更换之后,网络就非常稳定了。

1
2
3
--- 192.168.31.111 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.546/4.366/8.557/2.348 ms

0x04 更新内核

默认的内核选项有一些不满足需求。经过修改后,更新到/boot下。在/boot/extlinux/extlinux.conf中添加一个启动项即可。Image和dtb可以从新编译出的内核目录拷出,github上有说明。

1
2
3
4
5
6
7
8
9
10
11
12
default kernel-5.8.1
timeout 10
prompt 0

label kernel-5.8.1
kernel /Image.new
fdt /tn3399-linux-new.dtb
append earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 coherent_pool=1m earlyprintk console=ttyS2,1500000n8 rw root=PARTUUID=b921b045-1d rootfstype=ext4 init=/sbin/init rootwait
label kernel-5.8
kernel /Image
fdt /tn3399-linux.dtb
append earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 coherent_pool=1m earlyprintk console=ttyS2,1500000n8 rw root=PARTUUID=b921b045-1d rootfstype=ext4 init=/sbin/init rootwait

反正我是更新了内核之后,可以在上面跑k8s的。这样直接操作是有点风险的,准备好重新刷系统。我是把内核的目标挂载在另外一个SD卡中,重新刷系统后,更新内核还算比较快。

0x05 小结

只能说ARM开发板折腾是需要点基础和毅力的,USB网卡驱动死活加载不成功时,都 一度想放弃了。

0x06 参考

  1. 恩山无线论坛帖子 https://www.right.com.cn/forum/thread-4033942-1-1.htm
  2. github上的内核 https://github.com/lanseyujie/tn3399_v3/