Openwrt从入门到放弃
我用Openwrt也有相当一段时间了,并且零零散散的写过不少东西,本文整合了以前几篇文章,算是一站式攻略。
关于OpenWrt
全称:Open Wireless Router
是一个Linux发行版
能够跑在很多路由器上
相比原厂固件,可以完全掌控路由器,自行安装软件包
入坑原因
我用的猫(modem)是TP-Link的TC-W7960,这个设备有点特殊,是猫(modem)和路由器一体的。但是这个猫的WIFI只有2.4GHz,不能跑满我的带宽,所以在2019年黑五另外买了TP-Link Archer A7 v5,税后价格是$35。在美国,这个价格买全新路由器感觉也还可以了,不过当然没有国内实惠。碰巧我有台激光打印机,想连接到路由器实现无线打印功能,但是TP-Link原厂固件没法实现这个需求。后来我发现了Openwrt这个东西,就打开了新世界的大门。
安装
首先,在[OpenWrt Wiki] Table of Hardware查看支持的路由器型号,然后进入对应型号的Wiki页面。下面以我的Archer A7 v5为例。
进入[OpenWrt Wiki] TP-Link Archer A7 v5之后,就能找到所有的相关信息了。基本上就两种安装方法,一种是直接在原厂固件的升级页面安装,另一种就是通过TFTP来安装。
注意:有些型号可能很难甚至无法恢复到原厂固件,所以刷机前三思而后行。
设置密码
有两种方式可以登录安装了OpenWrt的路由器,分别是命令行(ssh)和WebUI(LuCI)。值得注意的是,路由器默认没有密码,并且不会自动开启WIFI,所以这里需要接一根网线进行设置。
ssh
进去之后应该会看到类似下面这样的内容,然后要通过passwd命令设置密码。注意,这里密码在输入的时候是看不到的。
12345678910111213141516> ssh root@192.168.1.1BusyBox v1.30.1 () built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 19.07.7, r11306-c4a6851c72 -----------------------------------------------------=== WARNING! =====================================There is no root password defined on this device!Use the "passwd" command to set up a new passwordin order to prevent unauthorized SSH logins.--------------------------------------------------
LuCI
浏览器直接访问192.168.1.1,然后不需要输入密码,直接点登录,就进去了。接下来在 System(系统)> Administration(管理权)> Router Password(路由器密码)可以直接修改密码。
一般来说OpenWrt都是自带LuCI的,如果没有,可以用下面命令安装。
12345opkg updateopkg install luci// 如果要安装中文语言包,还要额外运行下面命令// 因为语言设置默认是auto,所以安装完语言包之后就会自动切换成中文opkg install luci-i18n-base-zh-cn
开启WIFI
WIFI最好通过图形界面(LuCI)开启,相关设置在 Network(网络)> Wireless(无线)里头。
选择启用之后,记得进入 Edit(编辑)> Interface Configuration(接口配置)> Wireless Security(无线安全)来设置密码。
WIFI名在 Interface Configuration(接口配置)> General Setup(常规设置)> ESSID 修改。
opkg包管理
OpenWrt通过opkg来管理软件包,可以在LuCI的 System(系统)> Software 进行管理,或者直接使用命令行操作。
opkg命令行的用法可以参考[OpenWrt Wiki] Opkg package manager。
基本用法如下:
123456789101112131415// 安装软件包opkg updateopkg install
个人建议能正常运作就不要瞎折腾。
安装打印服务
如果你有一台有线打印机,那么可以把打印机直接连接到路由器上,从而实现无线打印。
路由器端
先安装下面这几个模块
1opkg install kmod-usb-printer p910nd luci-app-p910nd
然后把打印机用USB连到路由器上,输入dmesg | grep printer,如果返回类似下面这个就代表打印机被识别了。
1[ 12.358708] usblp 1-1:1.0: usblp0: USB Bidirectional printer dev 2 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0062
确认打印机能够被识别后,记得重启路由器!
接下来登入LuCI,进入“服务” > “p910nd - Printer server”。
enable打勾
如果默认的设备(/dev/usb/lp0)不对,可以自行修改(ls /dev/usb/lp*可以查看打印机是否被识别)
接口保持“未指定”,无需修改
端口也不需要改,就是默认的9100
Bidirectional mode打勾
到这里,路由器这边就配置完成了。
电脑端
Windows 10
控制面板 > 硬件和声音 > 设备和打印机
添加打印机
点击“我需要的打印机不在列表中”
选从TCP/IP添加
这步之后会要求更多信息,选自定义
添加标准TCP/IP端口(Standard TCP/IP Port)
端口名随意(我写的打印机型号)
打印机名或IP地址:192.168.1.1
协议(Protocol):Raw
端口(Port Number):9100
安装打印机驱动
Linux
Linux则是通过CUPS配置,需要准备打印机的ppd文件,打印机地址是socket://192.168.1.1:9100。
恢复出厂设置
注意:出厂设置指的是重置OpenWrt系统,并不能恢复原厂固件。
OpenWrt使用的是overlayfs,所有的修改都是在/overlay目录下,因此可以很容易的还原。直接运行firstboot就可以了。
跑完之后,就直接输入reboot,然后ssh就会断开,稍等片刻就可以尝试再次连接。因为恢复了出厂设置,所以登录密码也会被清除。
系统升级
升级OpenWrt是很容易的,可以通过ssh或者LuCI操作。
首先在对应设备的Wiki页面找到带有 sysupgrade 的升级包。
ssh
使用wget下载升级包,如下所示。
1root@OpenWrt:~# wget http://downloads.openwrt.org/releases/19.07.1/targets/ath79/generic/openwrt-19.07.1-ath79-generic-tplink_archer-a7-v5-squashfs-sysupgrade.bin
然后就使用sysupgrade命令进行升级。
12345root@OpenWrt:~# sysupgrade -v openwrt-19.07.1-ath79-generic-tplink_archer-a7-v5-squashfs-sysupgrade.bin (篇幅所限,省略对本文无意义的输出内容。。。)Commencing upgrade. Closing all shell sessions.Connection to 192.168.1.1 closed by remote host.Connection to 192.168.1.1 closed.
稍等片刻,就可以再次尝试登录OpenWrt了。
LuCI
在电脑上直接下载升级包,然后在 System(系统)> Backup / Flash Firmware(备份/升级)> Flash new firmware image(刷写新的固件)上传固件进行升级。
问题排查
出现问题之后千万不要慌,先看日志。
在 System(系统)菜单可以找到 System Log(系统日志)和 Kernel Log(内核日志)。如果发现了报错信息,可以复制出来上网搜下,大概率别人已经遇到过了。如果没找到相关问题,可以在OpenWrt论坛上面发帖求助。
TP-Link Archer A7 / C7 间歇性断流
似乎是这俩型号特有的问题,表现就是全部设备的WiFi被断开,然后过10秒左右自动恢复。完整日志如下所示:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133Sun Nov 28 13:53:51 2021 kern.warn kernel: [2750260.203769] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:51 2021 kern.warn kernel: [2750260.306164] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:51 2021 kern.warn kernel: [2750260.408586] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:51 2021 kern.warn kernel: [2750260.510985] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:51 2021 kern.warn kernel: [2750260.613385] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:51 2021 kern.warn kernel: [2750260.715785] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:51 2021 kern.warn kernel: [2750260.818187] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:51 2021 kern.warn kernel: [2750260.920592] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.022992] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.125391] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.227795] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.330184] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.432594] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.535001] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.637397] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.739808] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.842191] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:52 2021 kern.warn kernel: [2750261.944618] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.047010] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.149411] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.251815] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.354220] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.456724] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.559017] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.661421] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.763833] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:53 2021 kern.warn kernel: [2750262.866227] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.warn kernel: [2750262.968634] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.071038] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.173435] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.err kernel: [2750263.185820] ath10k_pci 0000:00:00.0: Cannot communicate with firmware, previous wmi cmds: 36904:274997163 36954:274997100 36904:274997090 36904:274997088, jiffies: 274997408, attempting to fake crash and restart firmware, dev-flags: 0x42Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.208099] ath10k_pci 0000:00:00.0: failed to send wmi nop: -143Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.214587] ath10k_pci 0000:00:00.0: could not request stats (type -268435456 ret -143 specifier 1)Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.224477] ath10k_pci 0000:00:00.0: failed to send pdev bss chan info request: -143Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.234778] ath10k_pci 0000:00:00.0: failed to set beacon mode for vdev 0: -143Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.242615] ath10k_pci 0000:00:00.0: failed to set dtim period for vdev 0: -143Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.250709] ath10k_pci 0000:00:00.0: firmware crashed! (guid 0b8c75c5-c47d-46de-8864-73c4d3092d00)Sun Nov 28 13:53:54 2021 kern.info kernel: [2750263.260233] ath10k_pci 0000:00:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043202ff sub 0000:0000Sun Nov 28 13:53:54 2021 kern.info kernel: [2750263.269947] ath10k_pci 0000:00:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 0Sun Nov 28 13:53:54 2021 kern.info kernel: [2750263.282073] ath10k_pci 0000:00:00.0: firmware ver 10.1-ct-8x-__fW-022-ecad3248 api 2 features wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,regdump-CT,txrate-CT,flush-all-CT,pingpong-CT,ch-regs-CT,nop-CT,set-special-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT,beacon-cb-CT,wmi-block-ack-CT crc32 3e4cf97fSun Nov 28 13:53:54 2021 kern.info kernel: [2750263.313602] ath10k_pci 0000:00:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08Sun Nov 28 13:53:54 2021 kern.info kernel: [2750263.321340] ath10k_pci 0000:00:00.0: htt-ver 2.1 wmi-op 2 htt-op 2 cal file max-sta 128 raw 0 hwcrypto 1Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.331391] ath10k_pci 0000:00:00.0: firmware register dump:Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.337425] ath10k_pci 0000:00:00.0: [00]: 0x00940750 0x00400C00 0x00980000 0x009AF0DCSun Nov 28 13:53:54 2021 kern.err kernel: [2750263.345787] ath10k_pci 0000:00:00.0: [04]: 0x009AF148 0x009AF264 0x00941B6C 0x00941B20Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.354139] ath10k_pci 0000:00:00.0: [08]: 0x00941B00 0x009423A4 0x009422DC 0x009422C4Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.362501] ath10k_pci 0000:00:00.0: [12]: 0x00941B90 0x009423F4 0x009423D4 0x009423DCSun Nov 28 13:53:54 2021 kern.err kernel: [2750263.370866] ath10k_pci 0000:00:00.0: [16]: 0x009423E4 0x009423EC 0x00942888 0x00942520Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.379230] ath10k_pci 0000:00:00.0: [20]: 0x009424FC 0x0094241C 0x00942540 0x00942498Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.387588] ath10k_pci 0000:00:00.0: [24]: 0x00942450 0x0094250C 0x009424D0 0x00942750Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.395945] ath10k_pci 0000:00:00.0: [28]: 0x00942798 0x00942844 0x009428C4 0x00942594Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.404298] ath10k_pci 0000:00:00.0: [32]: 0x0094258C 0x00942C28 0x00942F4C 0x00942F7CSun Nov 28 13:53:54 2021 kern.err kernel: [2750263.412658] ath10k_pci 0000:00:00.0: [36]: 0x00942F90 0x00942FE4 0x00942FF8 0x00943040Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.421016] ath10k_pci 0000:00:00.0: [40]: 0x0094077C 0x00940790 0x00943084 0x00942F00Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.429376] ath10k_pci 0000:00:00.0: [44]: 0x009AF290 0x00942A80 0x00942D40 0x00942D64Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.437735] ath10k_pci 0000:00:00.0: [48]: 0x00942D78 0x00942D9C 0x00957E18 0x00957E28Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.446094] ath10k_pci 0000:00:00.0: [52]: 0x00957E20 0x00940788 0x009430EC 0x00000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.454446] ath10k_pci 0000:00:00.0: [56]: 0x00000000 0x00000000 0x00000000 0x00000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.462804] ath10k_pci 0000:00:00.0: Copy Engine register dump:Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.469111] ath10k_pci 0000:00:00.0: [00]: 0x00057400 8 8 3 3Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.475952] ath10k_pci 0000:00:00.0: [01]: 0x00057800 31 31 65 66Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.482782] ath10k_pci 0000:00:00.0: [02]: 0x00057c00 0 0 111 0Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.489624] ath10k_pci 0000:00:00.0: [03]: 0x00058000 18 18 18 18Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.496462] ath10k_pci 0000:00:00.0: [04]: 0x00058400 6645 6645 36 252Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.503471] ath10k_pci 0000:00:00.0: [05]: 0x00058800 30 30 336 350Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.510317] ath10k_pci 0000:00:00.0: [06]: 0x00058c00 5 5 5 5Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.517161] ath10k_pci 0000:00:00.0: [07]: 0x00059000 0 0 0 0Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.524103] ath10k_pci 0000:00:00.0: debug log header, dbuf: 0x411aa8 dropped: 0Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.532082] ath10k_pci 0000:00:00.0: [0] next: 0x411ac0 buf: 0x40f90c sz: 1500 len: 480 count: 30 free: 0Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.542225] ath10k_pci 0000:00:00.0: ath10k_pci ATH10K_DBG_BUFFER:Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.548799] ath10k: [0000]: AA0BDC07 204CFC0B 08000000 0B000000 BE0BDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.558326] ath10k: [0008]: D30BDC07 204CFC0B 08000000 0B000000 E70BDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.567851] ath10k: [0016]: FC0BDC07 204CFC0B 08000000 0B000000 100CDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.577378] ath10k: [0024]: 250CDC07 204CFC0B 08000000 0B000000 390CDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.586897] ath10k: [0032]: 4E0CDC07 204CFC0B 08000000 0B000000 620CDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.596424] ath10k: [0040]: 770CDC07 204CFC0B 08000000 0B000000 8B0CDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.605949] ath10k: [0048]: A00CDC07 204CFC0B 08000000 0B000000 B40CDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.615467] ath10k: [0056]: C90CDC07 204CFC0B 08000000 0B000000 DD0CDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.624988] ath10k: [0064]: F20CDC07 204CFC0B 08000000 0B000000 060DDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.634513] ath10k: [0072]: 1B0DDC07 204CFC0B 08000000 0B000000 2F0DDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.644038] ath10k: [0080]: 440DDC07 204CFC0B 08000000 0B000000 580DDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.653562] ath10k: [0088]: 6D0DDC07 204CFC0B 08000000 0B000000 810DDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.663086] ath10k: [0096]: 960DDC07 204CFC0B 08000000 0B000000 AA0DDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.672612] ath10k: [0104]: BF0DDC07 204CFC0B 08000000 0B000000 D30DDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.682135] ath10k: [0112]: E80DDC07 204CFC0B 08000000 0B000000 FC0DDC07 204CFC0B 08000000 0B000000Sun Nov 28 13:53:54 2021 kern.err kernel: [2750263.691657] ath10k_pci 0000:00:00.0: ATH10K_ENDSun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.696593] ath10k_pci 0000:00:00.0: [1] next: 0x411aa8 buf: 0x40fefc sz: 1500 len: 0 count: 0 free: 0Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.711174] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.719087] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.726943] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.734751] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.742611] ath10k_pci 0000:00:00.0: SWBA overrun on vdev 0, skipped old beaconSun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.763620] ath10k_pci 0000:00:00.0: failed to set cts protection for vdev 0: -143Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.771680] ath10k_pci 0000:00:00.0: failed to recalculate rts/cts prot for vdev 0: -143Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.780252] ath10k_pci 0000:00:00.0: failed to set preamble for vdev 0: -143Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.787729] ath10k_pci 0000:00:00.0: failed to set mgmt tx rate -143Sun Nov 28 13:53:54 2021 kern.warn kernel: [2750263.834240] ath10k_pci 0000:00:00.0: failed to transmit management frame via WMI: -143Sun Nov 28 13:53:55 2021 kern.warn kernel: [2750263.940262] ath10k_pci 0000:00:00.0: removing peer, cleanup-all, deleting: peer faa4cef1 vdev: 0 addr: 3c:6a:a7:93:2a:c4Sun Nov 28 13:53:55 2021 kern.warn kernel: [2750263.951823] ath10k_pci 0000:00:00.0: removing peer, cleanup-all, deleting: peer 2deeafc4 vdev: 0 addr: 74:e2:0c:ac:46:24Sun Nov 28 13:53:55 2021 kern.warn kernel: [2750263.963357] ath10k_pci 0000:00:00.0: removing peer, cleanup-all, deleting: peer f35f1b0d vdev: 0 addr: 44:5e:cd:b1:9c:96Sun Nov 28 13:53:55 2021 kern.warn kernel: [2750263.974856] ath10k_pci 0000:00:00.0: removing peer, cleanup-all, deleting: peer ac4a0710 vdev: 0 addr: fc:49:2d:40:62:11Sun Nov 28 13:53:55 2021 kern.warn kernel: [2750263.986359] ath10k_pci 0000:00:00.0: removing peer, cleanup-all, deleting: peer aa7968b7 vdev: 0 addr: 98:da:c4:0a:7d:23Sun Nov 28 13:53:55 2021 kern.info kernel: [2750264.160387] ieee80211 phy0: Hardware restart was requestedSun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.136442] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16 peers: 127 tid: 256Sun Nov 28 13:53:56 2021 kern.info kernel: [2750265.154051] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'Sun Nov 28 13:53:56 2021 kern.info kernel: [2750265.160725] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424 sw-crypt: 0 ct-sta: 0'Sun Nov 28 13:53:56 2021 kern.info kernel: [2750265.169220] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 24984 iram: 38672'Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.237998] ath10k_pci 0000:00:00.0: pdev param 0 not supported by firmwareSun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.245750] ath10k_pci 0000:00:00.0: set-coverage-class, phyclk: 88 value: 0Sun Nov 28 13:53:56 2021 kern.info kernel: [2750265.254112] ath10k_pci 0000:00:00.0: rts threshold -1Sun Nov 28 13:53:56 2021 kern.err kernel: [2750265.271405] ath10k_pci 0000:00:00.0: Invalid state: 3 in ath10k_htt_tx_32, warning will not be repeated.Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.281432] ------------[ cut here ]------------Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.286475] WARNING: CPU: 0 PID: 15852 at target-mips_24kc_musl/linux-ath79_generic/ath10k-ct-regular/ath10k-ct-2021-09-22-e6a7d5b5/ath10k-5.10/htt_tx.c:1490 ieee80211_is_robust_mgmt_frame_tx+0xba8/0xc24 [ath10k_core]Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.306575] Modules linked in: ath9k ath9k_common pppoe ppp_async iptable_nat ath9k_hw ath10k_pci ath10k_core ath xt_state xt_nat xt_conntrack xt_REDIRECT xt_MASQUERADE xt_FLOWOFFLOAD xt_CT pppox ppp_generic nf_nat nf_flow_table_hw nf_flow_table nf_conntrack mac80211 ipt_REJECT cfg80211 xt_time xt_tcpudp xt_multiport xt_mark xt_mac xt_limit xt_comment xt_TCPMSS xt_LOG usblp slhc nf_reject_ipv4 nf_log_ipv4 nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_filter ip_tables hwmon crc_ccitt compat ledtrig_usbport nf_log_ipv6 nf_log_common ip6table_mangle ip6table_filter ip6_tables ip6t_REJECT x_tables nf_reject_ipv6 sha256_generic libsha256 seqiv jitterentropy_rng drbg hmac ghash_generic gf128mul gcm ctr cmac ccm fsl_mph_dr_of ehci_platform ehci_fsl ehci_hcd gpio_button_hotplug usbcore nls_base usb_common aead cryptomgr crypto_null crypto_hashSun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.383875] CPU: 0 PID: 15852 Comm: kworker/0:2 Not tainted 5.4.155 #0Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.390926] Workqueue: events_freezable 0x86c00118Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.396068] Stack : 85869c80 877adcac 00000009 4000001e 86f48c30 800be140 80623e78 00000017Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.404879] 85869cbc 00000000 80616d54 85915b04 877adcac 00000001 85915ad8 95cb7e69Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.413696] 00000000 00000000 806d64a0 0000044d 00000000 00000000 20307838 36633030Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.422510] 0000044d 859159e3 ffffffff ffffffff 00000000 00000000 00000000 877adcacSun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.431317] 00000009 4000001e 86f48c30 87ec6070 00000003 8032d470 00000000 80820000Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.440125] ...Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.442825] Call Trace:Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.445541] [<8006970c>] show_stack+0x30/0x100Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.450317] [<80084fe8>] __warn+0xc0/0x10cSun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.454721] [<80085090>] warn_slowpath_fmt+0x5c/0xacSun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.460096] [<877adcac>] ieee80211_is_robust_mgmt_frame_tx+0xba8/0xc24 [ath10k_core]Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.468301] [<87782308>] 0x87782308Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.472090] ---[ end trace 8d6ffe41140f20d1 ]---Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.477046] ath10k_pci 0000:00:00.0: failed to transmit packet, dropping: -19Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.484600] ath10k_pci 0000:00:00.0: failed to submit frame: -19Sun Nov 28 13:53:56 2021 kern.warn kernel: [2750265.490992] ath10k_pci 0000:00:00.0: failed to push frame: -19Sun Nov 28 13:53:56 2021 kern.info kernel: [2750265.497223] ath10k_pci 0000:00:00.0: device successfully recovered
很明显,固件崩溃了,然后自动重启,那具体的表现当然是设备掉线咯。这种问题,复制报错第一行内容,然后搜论坛,大概率有人踩过坑了~
果不其然,很快就找到了一些相关帖子:
TP-Link Archer C7 v2 AC1750 ath10 firmware crashes
Please consider ath10k (non-ct) drivers instead of ct
Changing to non-CT drivers via OPKG
看起来,这里有两种固件,一种是原厂的闭源驱动(Ath10k),另一种是Candela Technologies的改版驱动(Ath10k-ct)。然而不知道从什么时候开始,Openwrt就把默认的驱动从Ath10k换成了Ath10k-ct,然后一些型号就出了奇奇怪怪的毛病。所以把驱动手动换回去就完事了。。。
1234opkg updateopkg remove ath10k-firmware-qca988x-ct kmod-ath10k-ctopkg install ath10k-firmware-qca988x kmod-ath10kreboot
救砖
OpenWrt还是比较经得起折腾的,万一弄坏了,也还有救。不过如果变砖(无法进入系统),那就稍微有点麻烦了。
一般来说,bootloader不会被破坏,所以可以通过TFTP(Trivial File Transfer Protocol)来传输固件。关于TFTP的使用方法,可以看[OpenWrt Wiki] Setting up a TFTP server for TFTP Recovery/Install
TFTP服务端有很多,这里推荐几个:
Windows
Solarwinds TFTP server
Tftpd64 / Tftpd32
Linux
tftpd-hpa
Windows上的TFTP服务端操作比较友好,所以这里单独写下Linux上的操作。
123456789101112131415161718// 修改配置文件来指定ip地址sudo nano /etc/dhcpcd.conf// 重启网卡sudo ifconfig eth0 downsudo ifconfig eth0 up// 检查69端口(查看tftp server是否启动)sudo netstat -tupena | grep :69// 重启tftpd-hpasudo systemctl restart tftpd-hpa// 修改tftpd-hpa配置sudo nano /etc/default/tftpd-hpa// 查看tftpd-hpa日志tail -n 100 /var/log/syslog | grep tftpd
如果TFTP都救不回来,那基本只能拆机了。如果真走到这一步,除非你有成套的工具,否则还是建议直接买个新的好了。。。