如何使用 TFTP 和 TBS Bootloader 恢复损坏的 D-LINK DAP-1360 wifi 接入点?

如何使用 TFTP 和 TBS Bootloader 恢复损坏的 D-LINK DAP-1360 wifi 接入点?

screen我有一个 D-LINK DAP-1360 WiFi 接入点(硬件版本 F2),它似乎已损坏。我可以通过 RX 和 TX 端口以及使用命令的会话访问终端screen /dev/ttyACM0 115200

以下是我从 RX/TX 端口获取的终端上可用的命令D-LINK DAP-1360

RTL8196# ?
?       - alias for 'help'
base    - print or set address offset
booth   - boot kernel from host
bootm   - boot application image from memory
cmp     - memory compare
cp      - memory copy
crc32   - checksum calculation
erase   - erase FLASH memory
flinfo  - print FLASH memory information
flitem  - print item information on FLASH memory
go      - start application at address 'addr'
help    - print online help
ifcfg   - Set the Ethernet interface up or down
loadb   - load binary file over serial line (kermit mode)
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing)
modify_sysc    - sysc modify
mtest   - simple RAM test
mw      - memory write (fill)
nm      - memory modify (constant address)
protect - enable or disable FLASH write protection
reg     - read[write] register at address 'addr'
reset   - Perform RESET of the CPU
saveb   - download BIN image via network using TFTP protocol and save it to flash
saves   - save image file over serial line (kermit mode)
savet   - download IMG image via network using TFTP protocol and save it to flash
tftp    - download image via network using TFTP protocol
unlzma  - decompress code with LZMADecoder
version - print monitor version
RTL8196# 

我尝试使用“savet”命令将原始固件从 tftp 服务器传输到设备来更新固件,但没有成功。

RTL8196# savet 192.168.1.2 dap612_03.img
TFTP from server 192.168.1.2; our IP address is 192.168.1.1
Filename 'dap612_03.img'.
Load address: 0x80001000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ################################################################
done
Bytes transferred = 3654824 (37c4a8 hex)
Erasing ........................................................
Burning .......................................................
Done

System update completely! Restarting system!

Booting...


TBS bootloader V1.0 (Dec 13 2018 - 16:29:10)

DRAM:  32 MB
Flash:  4 MB
The config data has lost!
Can't get system configuration.Use default vlaue.
init ehternet...
IP: 192.168.1.1 MAC: 00:02:03:04:05:06
IN: eth_init...
Hit Space or Enter key to stop autoboot:  0 
out : abortboot
Can't found system configuration! Please use "bootm addr" command.
IN: eth_init...
RTL8196# 

我拥有的硬件版本的原始固件版本是DAP-1360_fw_revf_612eub03_EU_en_20181211.zip可以下载的这里以及最新版本(如果有)这里。我尝试过其他版本的固件,但没有成功。

命令bootm失败:

RTL8196# bootm 0x80001000
##failed!

该命令的输出flinfo是:

RTL8196# flinfo

Bank # 1:   Spi flash ID: 0xef4016
  Size: 4 MB in 64 Sectors
  Sector Start Addresses:
    BFC00000      BFC10000      BFC20000      BFC30000      BFC40000     
    BFC50000      BFC60000      BFC70000      BFC80000      BFC90000     
    BFCA0000      BFCB0000      BFCC0000      BFCD0000      BFCE0000     
    BFCF0000      BFD00000      BFD10000      BFD20000      BFD30000     
    BFD40000      BFD50000      BFD60000      BFD70000      BFD80000     
    BFD90000      BFDA0000      BFDB0000      BFDC0000      BFDD0000     
    BFDE0000      BFDF0000      BFE00000      BFE10000      BFE20000     
    BFE30000      BFE40000      BFE50000      BFE60000      BFE70000     
    BFE80000      BFE90000      BFEA0000      BFEB0000      BFEC0000     
    BFED0000      BFEE0000      BFEF0000      BFF00000      BFF10000     
    BFF20000      BFF30000      BFF40000      BFF50000      BFF60000     
    BFF70000      BFF80000      BFF90000      BFFA0000      BFFB0000     
    BFFC0000      BFFD0000      BFFE0000      BFFF0000   

该命令的输出flitem是:

RTL8196# flitem

Dump part 0:
Item tbs_app_cfg locate at 0xbfc10002, length=0x11, flag=00, CRC=OK
Item llconfig locate at 0xbfc10018, length=0xf1, flag=00, CRC=OK
Item tbs_app_cfg locate at 0xbfc1010e, length=0x11, flag=00, CRC=OK
Item llconfig locate at 0xbfc10124, length=0xf1, flag=00, CRC=OK
Item tbs_app_cfg locate at 0xbfc1021a, length=0x11, flag=00, CRC=OK
Item llconfig locate at 0xbfc10230, length=0xf1, flag=00, CRC=OK
Item tbs_app_cfg locate at 0xbfc10326, length=0x11, flag=00, CRC=OK
Item llconfig locate at 0xbfc1033c, length=0xf1, flag=00, CRC=OK
Item tbs_app_cfg locate at 0xbfc10432, length=0x11, flag=00, CRC=OK
Item llconfig locate at 0xbfc10448, length=0xf1, flag=00, CRC=OK
Item tbs_app_cfg locate at 0xbfc1053e, length=0x11, flag=00, CRC=OK
Item llconfig locate at 0xbfc10554, length=0xf1, flag=00, CRC=OK
Item tbs_app_cfg locate at 0xbfc1064a, length=0x11, flag=11, CRC=OK
Item llconfig locate at 0xbfc10660, length=0xf1, flag=11, CRC=OK
Item �������������������� locate at 0xbfc10756, length=0xffff, flag=ff, CRC=BAD

Dump part 1:
Item �������������������� locate at 0xbfc20002, length=0xffff, flag=ff, CRC=BAD

binwalk -e dap.img固件的输出提供以下文件和目录:

$ ls -lah
total 9,7M
drwxrwxr-x  4  username  username 4,0K jul 24 00:40 .
drwxrwxr-x  3  username  username 4,0K jul 24 00:40 ..
-rw-rw-r--  1  username  username 2,4M jul 24 00:40 1174A4.squashfs
-rw-rw-r--  1  username  username 3,8M jul 24 00:40 A4
-rw-rw-r--  1  username  username 3,5M jul 24 00:40 A4.7z
drwxrwxr-x 13  username  username 4,0K jul 24 00:40 squashfs-root
drwxrwxr-x 13  username  username 4,0K jul 24 00:40 squashfs-root-0
$ cd squashfs-root
$ ls -lah
total 52K
drwxrwxr-x 13  username  username 4,0K jul 24 00:40 .
drwxrwxr-x  4  username  username 4,0K jul 24 00:40 ..
drwxrwxr-x  2  username  username 4,0K jan 14  2023 bin
drwxrwxr-x  5  username  username 4,0K jan 14  2023 dev
drwxrwxr-x  6  username  username 4,0K jan 14  2023 etc
drwxrwxr-x  3  username  username 4,0K jan 14  2023 lib
drwxrwxr-x  2  username  username 4,0K jan 14  2023 mnt
lrwxrwxrwx  1  username  username    3 jan 14  2023 pool -> var
drwxrwxr-x  2  username  username 4,0K jan 14  2023 proc
drwxrwxr-x  2  username  username 4,0K jan 14  2023 root
drwxrwxr-x  2  username  username 4,0K jan 14  2023 sbin
drwxrwxr-x  2  username  username 4,0K jan 14  2023 sys
lrwxrwxrwx  1  username  username    9 jul 24 00:40 tmp -> /dev/null
drwxrwxr-x  7  username  username 4,0K jan 14  2023 usr
drwxrwxr-x  2  username  username 4,0K jul 24 00:51 var
$ cd etc/
$ ls -lah
total 256K
drwxrwxr-x  6  username  username 4,0K jan 14  2023 .
drwxrwxr-x 13  username  username 4,0K jul 24 00:40 ..
drwxrwxr-x  2  username  username 4,0K jan 14  2023 ath
-rw-rw-r--  1  username  username  70K jan 14  2023 config_full.xml
-rwxrwxr-x  1  username  username  88K jan 14  2023 config.xml
lrwxrwxrwx  1  username  username   25 jan 14  2023 dhcp6c.conf -> ../var/dhcpv6/dhcp6c.conf
lrwxrwxrwx  1  username  username   25 jan 14  2023 dhcp6s.conf -> ../var/dhcpv6/dhcp6s.conf
lrwxrwxrwx  1  username  username   18 jan 14  2023 dproxy.conf -> ../var/dproxy.conf
-rwxrwxr-x  1  username  username  647 jan 14  2023 functions.sh
-rw-rw-r--  1  username  username   51 jan 14  2023 group
-rw-rw-r--  1  username  username   41 jan 14  2023 gshadow
-rw-rw-r--  1  username  username   17 jan 14  2023 host.conf
lrwxrwxrwx  1  username  username   12 jan 14  2023 hosts -> ../var/hosts
lrwxrwxrwx  1  username  username   21 jan 14  2023 igmpproxy.conf -> ../var/igmpproxy.conf
lrwxrwxrwx  1  username  username   17 jan 14  2023 inetd.conf -> ../var/inetd.conf
drwxrwxr-x  3  username  username 4,0K jan 14  2023 init.d
-rw-rw-r--  1  username  username   61 jan 14  2023 inittab
lrwxrwxrwx  1  username  username   15 jan 14  2023 iproute2 -> ../var/iproute2
lrwxrwxrwx  1  username  username   11 jan 14  2023 mtab -> ../var/mtab
-rw-rw-r--  1  username  username  130 jan 14  2023 passwd
-rwxrwxr-x  1  username  username  108 jan 14  2023 pc.ini
drwxrwxr-x  2  username  username 4,0K jul 24 00:40 ppp
lrwxrwxrwx  1  username  username   17 jan 14  2023 radvd.conf -> ../var/radvd.conf
lrwxrwxrwx  1  username  username   18 jan 14  2023 resolv.conf -> ../var/resolv.conf
-rw-rw-r--  1  username  username  164 jan 14  2023 services
-rw-rw-r--  1  username  username  235 jan 14  2023 shadow
lrwxrwxrwx  1  username  username   19 jan 14  2023 siproxd.conf -> ../var/siproxd.conf
-rwxrwxr-x  1  username  username  279 jan 14  2023 siproxd.tplt
lrwxrwxrwx  1  username  username   13 jan 14  2023 TZ -> ../var/tmp/TZ
lrwxrwxrwx  1  username  username   18 jan 14  2023 udhcpd.conf -> ../var/udhcpd.conf
lrwxrwxrwx  1  username  username   21 jan 14  2023 upnpd.conf -> ../var/miniupnpd.conf
-rw-rw-r--  1  username  username  30K jan 14  2023 var.tar
drwxrwxr-x  2  username  username 4,0K jan 14  2023 wps

答案1

根据您提供的引导加载程序输出,似乎固件升级过程已完成,但设备无法找到系统配置。发生这种情况的原因可能有多种。

固件文件可能已损坏或格式不正确,不适合您的设备。当您使用该savet命令传输固件时,系统似乎接受了它,擦除闪存,并将新固件写入闪存。但是当它尝试从这个新固件启动时,它报告说找不到系统配置并且无法启动。

您使用的内存地址也有可能不正确,或者设备的闪存以某种方式损坏。

您可以采取以下步骤来解决此问题:

  1. 尝试不同的固件文件:您提到尝试多个版本的固件,但请确保您使用的固件版本适合您的硬件版本。如果您使用的固件文件已损坏,请尝试再次下载固件文件。

  2. 确保固件文件格式正确:您的 D-Link 设备可能需要特定格式的固件文件。固件可能需要采用原始格式,而不是您使用的 .img 格式。您可能需要使用您binwalk似乎熟悉的工具(例如)从 .img 文件转换或提取正确的文件。

  3. 检查闪存问题flinfoflitem命令提供有关闪存的信息。从您的输出来看,似乎可能存在一些坏扇区。您可能需要进一步调查。

  4. 联系 D-Link 支持:如果您仍然无法恢复设备,最好联系 D-Link 的支持人员。他们可能有其他未公开的资源或固件恢复方法。

最后一点,不建议强制将不同版本的固件安装到设备中,因为这可能会永久损坏设备。始终确保您使用的是专为特定设备型号和版本设计的固件版本。

希望对您有所帮助!如果您需要进一步的帮助,请告诉我。

答案2

我找不到修复它的方法。我把它扔进了垃圾桶,准备回收。无论如何,还是要谢谢你。

相关内容