威联通QHora-301W 是2021年推出的一款无线路由器,搭载了高通IPQ8072A四核 Cortex-A53 2.2GHz处理器,1GB RAM,4GB eMMC,机身配置了2个万兆网口(支持1G/2.5/10G自适应)、4个千兆网口,可灵活配置多WAN口并整合多个外网接入。支持满血WiFi 6(802.11ax)协议,内置8根5dBi高增益天线,双频并发可达3600M。机身还配置有2个USB3.2 Gen1接口,1个WPS按钮。
该款路由器性能强大,但官方固件功能较少,可玩性不强。@lean @asushugo为301W路由器开发了OpenWrt固件,大大拓展了该款路由器的功能!
最近入手了一台QHora-301W,下面结合自己的刷机经历介绍刷写OpenWrt固件的过程。
教程仅限lean的qsdk闭源固件,其他固件请参考网络上的其他教程。无损刷机
1、开启SSH服务
路由器通电,打开电源开关,等待一段时间,听到“嘟”一声后,表示系统启动完成。长按路由器WPS 键,直到听到两次“嘟”声后松开(大约 12 秒),顺利打开SSH功能。
2、连接路由器后台
默认开启SSH的端口号为22200,用户名是admin
,密码是路由器网页登录密码(默认密码在路由器后面的贴纸上)。
在Windows或MAC OS下,输入以下命令:
ssh [email protected] -p 22200
然后输入登录密码,进入路由器的shell环境。也可以使用putty或MobaXterm进行连接,简化操作过程。
3、切换第二分区启动
QHora-301W有两个启动分区,默认保存了两个官方固件,我们把OpenWrt固件刷入第一启动分区,以后也可以用命令切换回第二分区的官方固件。
输入以下命令,将启动分区切换为第二分区。
sudo fw_setenv current_entry 1
提示输入密码,输入前面登录ssh的密码。
输入以下命令重启系统:
sudo reboot
4、
检查路由器当前启动分区按前面1、2的步骤重新打开ssh,输入以下命令检查启动分区:
sudo fw_printenv -n current_entry
如果输出1,OK。如果不是,重复步骤3。
5、刷写固件
使用MobaXterm或Winscp将kernel.bin和rootfs.bin两个文件上传到路由器后台的/tmp目录(文章末尾有下载地址)。
依次执行以下命令,完成刷机
sudo dd if=/tmp/kernel.bin of=/dev/mmcblk0p1
sudo dd if=/tmp/rootfs.bin of=/dev/mmcblk0p4
sudo fw_setenv current_entry 0
sudo fw_setenv boot_0 good
sudo reboot
6、刷入10G PHY的firmware
OpenWrt系统的默认登录地址:192.168.1.1,账号密码:root/password。系统刷完后,万兆网卡还不能启动,还需要刷入网卡的firmware。
- 使用MobaXterm将AQR_ethphyfw_5.6.7.mbn文件上传到路由器的/tmp目录。
- 使用MobaXterm进入路由器后台,执行以下命令,抹除原ethfw分区mtd10的数据:
mtd erase /dev/mtd10
- 执行以下命令,刷入fw文件:
mtd -n write /tmp/AQR_ethphyfw_5.6.7.mbn /dev/mtd10
- 运行命令:fw_setenv bootcmd “aq_load_fw 0; aq_load_fw 8; bootipq”,修改环境变量。
- 运行以下命令看下是否有这条记录”bootcmd=aq_load_fw 0; aq_load_fw 8; bootipq”
fw_printenv
- 运行命令:reboot,重启完成刷机。
TTL刷机
如果按照免拆方法成功完成刷机,就无须TTL刷机。如果你像我一样,输错了命令,造成刷机后路由器不断重启,无法进入系统,那就只能用TTL刷机来拯救了。
1、拆解路由器
四个胶垫下面各有一颗螺丝,中间有一颗螺丝,右上的标签贴纸下面有一颗黑色的小螺丝(如下图所示),一共6颗螺丝。
拧下全部螺丝后,用塑料拆机工具,从两侧的缝隙撬开卡扣,就能取下外壳。
2、连接TTL
背板上有TTL插针,中间 3 根从左到右的顺序分别是TX-GND-RX,参数设置115200, 8N1, 3.3 V。
将电脑IP地址设置为192.168.10.1/24,打开tftpd软件,将服务器地址选择为刚才设置的IP地址,将openwrt-ipq807x-generic-qnap_301w-initramfs-fit-uImage.itb文件放入tftpd所在的目录,关闭系统的防火墙和杀毒软件。
连接好TTL线,将TTL连接板插上电脑,启动teraterm软件,设置好串口参数,打开路由器,在teraterm显示窗口出现字符后一直按空格键,中断启动,进入uboot界面。如果连接后无字符显示,请调换一下插针位置。
依次输入以下命令:
setenv serverip 192.168.10.1 setenv ipaddr 192.168.10.10 saveenv
然后执行下面命令:
tftpboot openwrt-ipq807x-generic-qnap_301w-initramfs-fit-uImage.itb
等到完成后,再执行以下命令重新启动系统:
bootm
3、刷写固件
完成第二步后,系统刷入了一个恢复固件,默认访问地址:192.168.1.1,默认账号:root/password,SSH默认开启。
刷机步骤与免拆刷机部分的4-6步相同,这里不再赘述。以下是固件的截图。
切换原厂固件
SSH连接路由器,输入以下命令切换:
1、启动OpenWrt
fw_setenv current_entry 0
2、切回原厂固件
fw_setenv current_entry 1
然后重启完成切换。
最后,要感谢LEAN提供了OpenWrt固件,得以发挥301W的最大性能,让我们有了更多的玩法。
参考文章:
固件下载地址:点我下载
我的机器不小心被玩成了砖头,现在通过TTL救砖,进行到使用tera term输入完命令,最后bootm启动系统,后面如何操作?电脑网卡要改地址后ssh连接路由器吗?无论如何操作,网卡灯都不亮,改什么地址呢?没有网址怎么通过SSH去刷入两个bin,请多指点,拜托了。
完成了第二步,系统就刷入了一个恢复固件,电脑设置成192.168.1.0/24 的网段,访问192.168.1.1地址,刷入其他固件即可。
检查能否PING通192.168.1.1,如果不能,重新执行第二步骤,确保正确刷入了恢复固件。
和你一样的问题 ttl救活了 但是原厂固件没有了 只能用op了 请问你的修复好了吗?
现在启动后,Tera term显示如下:
## Loading kernel from FIT Image at 44000000 …
Using ‘config@hk01’ configuration
Trying ‘kernel-1’ kernel subimage
Description: ARM64 OpenWrt Linux-5.10.176
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x440000ec
Data Size: 49046364 Bytes = 46.8 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x41000000
Entry Point: 0x41000000
Hash algo: crc32
Hash value: d25de5b7
Hash algo: sha1
Hash value: 3e13a2c256291800a9fc86b54b8bb909ff49616a
Verifying Hash Integrity … crc32+ sha1+ OK
## Loading fdt from FIT Image at 44000000 …
Using ‘config@hk01’ configuration
Trying ‘fdt-1’ fdt subimage
Description: ARM64 OpenWrt qnap_301w device tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x46ec6584
Data Size: 42671 Bytes = 41.7 KiB
Architecture: AArch64
Hash algo: crc32
Hash value: ccd4c9f8
Hash algo: sha1
Hash value: 27f50b1253eddebfb79d57785c328cd146944f04
Verifying Hash Integrity … crc32+ sha1+ OK
Booting using the fdt blob at 0x46ec6584
Uncompressing Kernel Image … Error: inflate() returned -5
Image too large: increase CONFIG_SYS_BOOTM_LEN
Must RESET board to recover
Erasing SPI flash…Writing to SPI flash…done
resetting …
Format: Log Type – Time(microsec) – Message – Optional Info
Log Type: B – Since Boot(Power On Reset), D – Delta, S – Statistic
S – QC_IMAGE_VERSION_STRING=BOOT.BF.3.3.1-00158
S – IMAGE_VARIANT_STRING=HAABANAZA
S – OEM_IMAGE_VERSION_STRING=CRM
S – Boot Config, 0x000002e1
B – 203 – PBL, Start
B – 2738 – bootable_media_detect_entry, Start
B – 2885 – bootable_media_detect_success, Start
B – 2889 – elf_loader_entry, Start
B – 11379 – auth_hash_seg_entry, Start
B – 11622 – auth_hash_seg_exit, Start
B – 250660 – elf_segs_hash_verify_entry, Start
B – 311329 – PBL, End
B – 496723 – SBL1, Start
B – 576511 – GCC [RstStat:0x10, RstDbg:0x600000] WDog Stat : 0x4
B – 586393 – pm_device_init, Start
B – 770552 – PM_SET_VAL:Skip
D – 182176 – pm_device_init, Delta
B – 772961 – pm_driver_init, Start
D – 5337 – pm_driver_init, Delta
B – 779336 – clock_init, Start
D – 2104 – clock_init, Delta
B – 783331 – boot_flash_init, Start
D – 15524 – boot_flash_init, Delta
B – 802546 – boot_config_data_table_init, Start
D – 1006 – boot_config_data_table_init, Delta – (575 Bytes)
B – 810202 – Boot Setting : 0x00000618
B – 813923 – CDT version:2,Platform ID:8,Major ID:1,Minor ID:0,Subtype:0
B – 820846 – sbl1_ddr_set_params, Start
B – 824659 – CPR configuration: 0x30c
B – 828105 – cpr_init, Start
B – 830881 – Rail:0 Mode: 5 Voltage: 832000
B – 836096 – CL CPR settled at 784000mV
B – 838933 – Rail:1 Mode: 5 Voltage: 888000
B – 843111 – Rail:1 Mode: 7 Voltage: 936000
D – 16531 – cpr_init, Delta
B – 850004 – Pre_DDR_clock_init, Start
B – 854000 – Pre_DDR_clock_init, End
B – 857294 – DDR Type : PCDDR3
B – 863058 – do ddr sanity test, Start
D – 1067 – do ddr sanity test, Delta
B – 867816 – DDR: Start of HAL DDR Boot Training
B – 872574 – DDR: End of HAL DDR Boot Training
B – 878247 – DDR: Checksum to be stored on flash is -1541410861
B – 888739 – Image Load, Start
D – 335988 – QSEE Image Loaded, Delta – (1376448 Bytes)
B – 1224819 – Image Load, Start
D – 30 – SEC Image Loaded, Delta – (0 Bytes)
B – 1232505 – Image Load, Start
D – 9760 – DEVCFG Image Loaded, Delta – (26008 Bytes)
B – 1242356 – Image Load, Start
D – 25956 – RPM Image Loaded, Delta – (86584 Bytes)
B – 1268403 – Image Load, Start
D – 136579 – APPSBL Image Loaded, Delta – (556008 Bytes)
B – 1405135 – QSEE Execution, Start
D – 61 – QSEE Execution, Delta
B – 1410930 – USB D+ check, Start
D – 0 – USB D+ check, Delta
B – 1417335 – SBL1, End
D – 922899 – SBL1, Delta
S – Flash Throughput, 4429 KB/s (2045623 Bytes, 461824 us)
S – DDR Frequency, 466 MHz
S – Core 0 Frequency, 1651 MHz
U-Boot 2016.01 (Aug 18 2020 – 16:35:27 +0800)
DRAM: smem ram ptable found: ver: 1 len: 4
1 GiB
NAND: Could not find nand_gpio in dts, no defaults defined
Nand Flash error. Status = 80
Reset cmd status failed
SPI_ADDR_LEN=3
SF: Detected W25Q64DW with page size 256 Bytes, erase size 4 KiB, total 8 MiB
ipq_spi: page_size: 0x100, sector_size: 0x1000, size: 0x800000
8 MiB
MMC: : 0
In: serial@78B3000
Out: serial@78B3000
Err: serial@78B3000
machid: 8010000
Hit any key to stop autoboot: 2
Net: MAC0 addr:24:5e:be:55:78:52
PHY ID1: 0x0
PHY ID2: 0x0
EDMA ver 1 hw init
Num rings – TxDesc:1 (0-0) TxCmpl:1 (7-7)
RxDesc:1 (15-15) RxFill:1 (7-7)
ipq807x_edma_alloc_rings: successfull
ipq807x_edma_setup_ring_resources: successfull
ipq807x_edma_configure_rings: successfull
ipq807x_edma_hw_init: successfull
eth0
我也遇到了相同的情况!请问你最后是怎么解决的?非常感谢!
我解决了这个问题了!我的情况是不需要重刷系统,在uboot环境下输入printenv检查boot_0,boot_1和boot_2等于good还是bad,如果有类似boot_0=bad之类的就会阻止正常进系统导致变砖。全部改成good然后就能正常倒数进系统了。希望能帮到你和别人!
以boot_0为例,在uboot下改成good的代码是setenv boot_0 “good”,其他以此类推
openwrt-ipq807x-generic-qnap_301w-initramfs-fit-uImage.itb;这个文件哪有下载?
楼主 您好 我已经成功把301W固件刷入。但是我在切换回官方系统后,就再也切不回open wrt 系统了。请指教。
如果命令切不回,那就重新来一次。正常刷完了,也没必要再切换了。
再重新刷一次呀好吧
老师 我在今天重新刷openwrt时 在刷入万兆网卡固件时,在执行mtd -n write /tmp/AQR_ethphyfw_5.6.7.mbn /dev/mtd10这个命令时总是提示未找到 !最后重启reboot后路由器所有的网络接口都不能识别了指示灯也不亮了!也没有不能进入刚才还能进入的192.168.1.1!现在没办法进入后台了!怎么办
提示没找到,应该是文件没上传到 /tmp目录。连不上了还可以用TTL去刷。
已变砖
openwrt重启之后就失联了,有WiFi信号,但是拒绝加入
请问老师,openwrt-ipq807x-R23.10.1-qnap_301w-squashfs-sysupgrade和openwrt-ipq807x-R23.10.1-qnap_301w-squashfs-factory这两个文件是干什么用的
一个是引导固件,一个是升级固件。先刷引导固件,然后在引导固件里刷入升级固件
刷这两个固件都显示“不支持所上传的映像文件格式”。请问要怎么办呢?
https://drive.google.com/drive/folders/19q9ZXNvUXArASm21ntiPbo1a_pmQByRj