前言

本文介绍Tenda AC6路由器实机拆解,区分UART串口以及使用USB to TTL、JTAGulator等工具进行测试和连接
具体型号如下所示

拆开Tenda AC6在下方可以看到四个连在一起的孔就是我们的UART口

下面介绍两种方法用于区分UART的串口

方法一:万用表测量

  • 将万用表调节到蜂鸣档(在电阻档下面)
  • 将黑色笔接在PCB板的金属块位置(可以是任意导电部位,我选择的是锡焊电线的地方)
  • 红色笔在4个PIN之间移动,如果电表发出响声,则认为该pin脚为GND

以图中为例,左侧第一个孔响而其他孔不响,所以左侧第一个孔为GND串口

之后使用适配电源对路由器PCB板进行通电

下面开始对RX和TX以及VCC口的测试

  • 将万用表调节到20v直流电压档位
  • 将黑色笔放在刚刚测出的GND上
  • 然后将红色笔一个个放在不同的孔上进行测试,电压最大的就是VCC孔,电压一直变化的则是TX孔

但是这里出现了一个问题,不知道是不是笔者的姿势不对或者别的原因,笔者测出的结果是从左2到左4的结果依次是 3.26v、3.27v、3.28v,并且笔者每个孔都放置了将近1min,电压没有任何变化,以此导致笔者无法区分出其他串口

下面是其他区分方法

  • 如果其中一个引脚的焊接处呈现正方形,则该引脚是VCC
  • 通过万用表测试RX和VCC的电压,一般而言,VCC的电压会稍高几毫伏
  • 在设备启动过程中,VCC的电压恒定不会波动,而RX会有几毫伏的波动

笔者猜测左4的正方形应该就是VCC口,当然这样依旧没有办法完全确认,于是笔者用了个损招,直接使用杜邦线将GND和各个串口短接,如果是VCC口,那么路由器就会短路然后触发重启,但是为什么是损招,因为笔者之前对着小米路由器用的时候发现居然冒出了火花,但是这款Tenda路由器并没有这么强烈的反应,不知道会不会对路由器造成什么损害,但是总归是确认了那个方框就是VCC

然后就需要区分TX和RX

  • 将万用表调节到20v直流电压
  • 黑色笔放在GND上
  • 红色笔放在不同的孔上,然后重启路由器,电压稳定的是RX,电压变化的是TX

用这个方法可以测出左2是RX,左3是TX,还是比较明显的,左2的电压一直在3.27-3.28,但是左3的电压在3.28-1.5之间不断变化。

下面使用 FT232 USB to TTL 测一下验证一下结论
如下所示,使用杜邦线将USB to TTL的RXD和TXD连接起来,然后使用SSCOM来测试一下这个USB to TTL是否完好
显然测试结果是它是好的

然后我们使用它来对我们的串口做一个简单的测试
注意USB to TTL的TX应该要接在路由器的RX上,也就是左2,那么USB to TTL的RX就要接在左3上,然后GND对应GND,VCC不需要连接,具体如下所示(笔者没有焊接,直接使用杜邦线连接,只要插得紧和焊接效果应该是一样,如果插不紧那就只能焊接一下了)

然后使用SSCOM软件进行连接,这里多次实验后得知笔者手头这款Tenda AC6路由器的波特率是 38400
每次修改波特率之后需要重启一下路由器,最后没有乱码,并且最后出现CIL就意味着成功了
下面是重启路由器后输出的内容

出现CLI输入?就可以得知路由器中有哪些命令了

使用SecureCRT的界面更好看一点(两个不能同时用,一个占用端口另外一个就用不了了)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

CLI> ?
Realtek's command:

Commands Descriptions Usage
-------- ------------ -----
db db <Address> <Len>
dw dw <Address> <Len>
eth eth
wlan0 wlan0
wlan0-va0 wlan0-va0
wlan0-va1 wlan0-va1
wlan0-va2 wlan0-va2
wlan0-va3 wlan0-va3
wlan0-vxd wlan0-vxd
wlan1 wlan1
wlan1-va0 wlan1-va0
wlan1-va1 wlan1-va1
wlan0-va2 wlan0-va2
wlan1-va3 wlan1-va3
wlan1-vxd wlan1-vxd
eb eb <Address> <Value1> <Value2>...
ew ew <Address> <Value1> <Value2>...
alg alg
brconfig brconfig
cat
cpuload cpuload
date show system local time
excep cause exception
fastpath fastpath
getmib getmib
help Displays a list of commands
? Displays a list of commands
hexcat
dump Shows a memory dump
hw_nat hw_nat
ib ib
idd idd
ifconfig ifconfig
ipfw ipfw
irf irf
iw iw
iwpriv iwpriv
ll
mac mac <ifname> [mac addr]
mroute mroute
ob ob
od od
orf orf
ow ow
pdump dump a thread
ping ping
port_fwd port_fwd
version Shows build version
ps Shows a list of threads
reboot Reset the system
reinit reinit
reinit_test reinit_test
reset Reset the system
route set static route
rssi rssi
alias show alias table
rtl_vlan rtl_vlan
sp Sets a threads priority [thread ID]
setmib setmib
show show
tcpstats tcpstats
test_skb test_skb
kill Kills a running thread [thread ID]
release Break a thread out of any wait [thread ID]
trigger_port trigger_port
uptime Shows system uptime
watchdog on/off/res/reboot

Tenda's command:
msg ce_power app_debug build stat_link link_status
iwpriv realtek splx thread mbuf debug
route et wlconf fw ping ifconfig
syslog time tenda_arp arp envram nvram
restart reboot
CLI>

方法二:使用JTAGulator来识别

如下所示,GND连接GND,假装我们未知TX和RX随便连接两个接口,VCC不进行连接

同样使用SecureCRT进行连接
然后选择V设定电压为3.3v

然后使用U进行检测

在输出的结果里面可以看到当7号接口(路由器的左3)为TX,6号接口(路由器的左2)为RX,并且波特率为38400的时候可以输出有意义的字符串 Unknown
因此我们可以知道路由器的左2为RX,左3为TX,并且波特率为 38400

显然JTAGulator的优点就是非常方便,只需要测出GND然后其他随便连接在接口上就可以了开始测试了
缺点是贵

使用CH341A进行固件提取

这个部分的内容失败了,并且笔者放弃了…

将红线对着芯片右下角那个圆的位置夹住,然后CH341A插入电脑打开软件分辨芯片型号并进行拷贝

但是不知道什么原因提取

笔者后续查询了很多资料,在软件中切换不同型号的芯片进行提取,但是最后都失败了,并没有找到原因,提取出来的固件尝试使用binwalk进行分解的时候连头文件都没有办法区分出来,最后笔者也是选择放弃

参考:
UART串口基础及通过万用表定位UART引脚 | kafroc