Ты даже не смог убить свой роутер? (или FAQ: по восстановлению dir-620)

Привет хаб!

Существуют множество альтернативных прошивок для маршрутизаторов Dlink. После перехода на них могут возникнуть проблемы, а именно: дивайс не эффективно начнет работать или просто умрет. Если все таки прошили его не удачно. Это инструкция для вас и только для тех dir-620, которые не до конца сдохли. То есть он загружается, сетевая плата ПК не может с ним связаться по Ethernet интерфейсу.

Ну что ж приступим!

По мима софта и полуживого дивайса, нам понадобиться USB-UART (кстати очень нужная вещь в хозяйстве). Заходим на easyelectronics и делаем. Можно было конечно и купить, но у моего друга лежала без дела.
Незабываем что нужно вывести COM на самом роуторе.

(сразу предупреждаю нет возможности сфотографировать свой)

Прошивку переименуем в habr.bin (можно назвать хоть тюльпаном, главное чтоб были английские буквы и не превышала 127 символов )
прописываем адреса на сеттевой
  • адрес 10.10.10.3.
  • маска 255.255.255.0
  • шлюз 10.10.10.123



И так рассмотрим два варианта.

Вариант 1
Этот вариант очень распространённ им многие пользуются.
Сожалению я как не старался так не смог с помощью его восстановить dir-620.
для этого качаем putty, tftpd32. Что касается tftpd32, то я качал tftpd64 (битность системы не забываем).

Шаг 1
Кидаем прошивку в папку tftpd64.
Запускаем tftpd64, вкладка Tftp Server, нажимаем Browes выбираем папку где лежит программа.


Шаг 2
запускаем putty, заходим в Serial. Тут COM3 (у вас может быть другой, в диспетчере устройств посмотрите), Speed 57600, Flow control: None

Переходим в Session, жмем open.

Шаг 3
Подключаем USB-UART к COM на самом роуторе. Хочу предупредить после включения у вас есть 5 секунд что бы выбрать нужный пункт, вам нужно нажать 2.
и включаем роутер.

Лог
U-Boot 1.1.3 (Feb 9 2010 — 10:44:20)

Board: Ralink APSoC DRAM: 32 MB
relocate_code Pointer at: 81fb0000
flash_protect ON: from 0xBF000000 to 0xBF01D3F3
flash_protect ON: from 0xBF030000 to 0xBF030FFF
============================================
Ralink UBoot Version: 3.3
— ASIC 3052_MP2 (Port5<->None)
DRAM component: 128 Mbits SDR
DRAM bus: 32 bit
Total memory: 32 MBytes
Flash component: NOR Flash
Date:Feb 9 2010 Time:10:44:20
============================================
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384

##### The CPU freq = 384 MHZ ####

SDRAM bus set to 32 bit
SDRAM size =32 Mbytes

Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
9: Load Boot Loader code then write to Flash via TFTP.


после выбора 2: Load system code then write to Flash via TFTP появится:

2: System Load Linux Kernel then write to Flash via TFTP.
Warning!!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)

пишем Y жмем ENTER
Please Input new ones /or Ctrl-C to discard
Input device IP (10.10.10.123) ==:10.10.10.123

жмем ENTER
Input server IP (10.10.10.3) ==:10.10.10.3

жмем ENTER
Input Linux Kernel filename () ==:

пишем habr.bin — имя файла и жмем ENTER

после чего должна качаться прошивка, дивайс перезагрузится уже в рабочем состоянии.

но что делать если putty просто напросто отказывается заходить на ком, и tftpd32 не работает.

Вариант 2

на понадобится Terminal v1.9b by Bray и WinAgents TFTP Server Manager(с офф сайта 30 дней триалка нам хватит этого срока)

Шаг 1
кидаем прошивку C:\ProgramData\WinAgents\TFTP Server 4\TFTPRoot. Видем появился файл на сервере.


Шаг 2
настраиваем Terminal v1.9b by Bray (port:COM3, Baud rate: 57600) жмем конект. Включаем роутер и видем Terminal v1.9b by Bray. НЕЗАБЫВАЕМ ЧТО ЕСТЬ 5 СЕКУНД ЧТОБЫ НАЖАТЬ ЦИФРУ ДВА(2)


Лог
U-Boot 1.1.3 (Feb 9 2010 — 10:44:20)

Board: Ralink APSoC DRAM: 32 MB
relocate_code Pointer at: 81fb0000
flash_protect ON: from 0xBF000000 to 0xBF01D3F3
flash_protect ON: from 0xBF030000 to 0xBF030FFF
============================================
Ralink UBoot Version: 3.3
— ASIC 3052_MP2 (Port5<->None)
DRAM component: 128 Mbits SDR
DRAM bus: 32 bit
Total memory: 32 MBytes
Flash component: NOR Flash
Date:Feb 9 2010 Time:10:44:20
============================================
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384

##### The CPU freq = 384 MHZ ####

SDRAM bus set to 32 bit
SDRAM size =32 Mbytes

Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
9: Load Boot Loader code then write to Flash via TFTP.


после выбора 2: Load system code then write to Flash via TFTP появиться:

2: System Load Linux Kernel then write to Flash via TFTP.
Warning!!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)

пишем Y жмем ENTER
Please Input new ones /or Ctrl-C to discard
Input device IP (10.10.10.123) ==:10.10.10.123

жмем ENTER
Input server IP (10.10.10.3) ==:10.10.10.3

жмем ENTER
Input Linux Kernel filename () ==:

пишем habr.bin — имя файла и жмем ENTER

netboot_common, argc= 3

NetTxPacket = 0x81FE5600

KSEG1ADDR(NetTxPacket) = 0xA1FE5600

NetLoop,call eth_halt!

NetLoop,call eth_init!
Trying Eth0 (10/100-M)

Waitting for RX_DMA_BUSY status Start… done

Header Payload scatter function is Disable!!!

ETH_STATE_ACTIVE!!!
Using Eth0 (10/100-M) device
TFTP from server 10.10.10.3; our IP address is 10.10.10.123
Filename 'habr.bin'.

TIMEOUT_COUNT=10,Load address: 0x80100000
Loading: Got ARP REPLY, set server/gtwy eth addr (1c:6f:65:eb:c1:51)
Got it
T #
first block received
################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
############################################################
done
Bytes transferred = 5959680 (5af000 hex)
NetBootFileXferSize= 005af000
Erase linux kernel block!!!
From 0xBF050000 To 0xBF5FFFFF

b_end =BF7FFFFF
Erase Flash from 0xbf050000 to 0xbf5fffff in Bank # 1

erase sector = 12
sect = 12,s_last = 102,erase poll = 1008817

erase sector = 13
sect = 13,s_last = 102,erase poll = 984201

erase sector = 14
*sect = 14,s_last = 102,erase poll = 1007174

erase sector = 15
sect = 15,s_last = 102,erase poll = 998828

erase sector = 16


бла бла бла
он ребут
бла бла бла

start urlfilter
init wans
Intialize wan…
[17179582.684000] eth2.5: Setting MAC address to 00 0c 43 30 52 89.
Set mac 00:0C:43:30:52:89 on iface eth2.5 — OK
Set mtu 1500 on iface eth2.5 — OK
start_wan_link_on_l2 — Up iface eth2.5
start_ip: dhcp ipv4
start_wan_link_on_l2 — Iface eth2.5 is up
start_wan_link_on_l2 — Up iface br0
start_wan_link_on_l2 — iface br0 is not wan, pass it
start ddns
info, udhcp client (v0.9.8) started (iface: eth2.5, connect: 1)
udhcp client (v0.9.8) started (iface: eth2.5, connect: 1)
debug, interface eth2.5 index 9
debug, interface eth2.5 hwaddr 00:0c:43:30:52:89
debug, interface eth2.5 mtu is 1500

debug, execle'ing /tmp/udhcpc with name deconfig
start services
start_telnet…
start_printserver…
init_sysusers…
debug, Opening raw socket on ifindex 9

Out init_device
init_device: pid_status(WEXITSTATUS) = 0
Done.
Welcome to
_______ ___ __ ____ _ _ ___
| ___ \ | | |__|| \ | || | / /
| | | || ___ | |__ __ | \| || |/ /
| |___| || |___| | || || |\ || \
|_______/ |______||__||_| \____||_|\___\

= Building Networks for People =

info, Sending discover…
[17179583.076000] dwc_otg: version 2.72a 24-JUN-2008
[17179583.080000] DWC_otg: Core Release: 2.66a
[17179583.284000] DWC_otg: Periodic Transfer Interrupt Enhancement — disabled
[17179583.288000] DWC_otg: Multiprocessor Interrupt Enhancement — disabled
[17179583.292000] DWC_otg: Using DMA mode
[17179583.296000] DWC_otg: Device using Buffer DMA mode
[17179583.300000] dwc_otg lm0: DWC OTG Controller
[17179583.304000] dwc_otg lm0: new USB bus registered, assigned bus number 1
[17179583.308000] dwc_otg lm0: irq 18, io mem 0x00000000
[17179583.312000] DWC_otg: Init: Port Power? op_state=1
[17179583.316000] DWC_otg: Init: Power Port (0)
[17179583.320000] usb usb1: Product: DWC OTG Controller
[17179583.324000] usb usb1: Manufacturer: Linux 2.6.21 dwc_otg_hcd
[17179583.328000] usb usb1: SerialNumber: lm0
[17179583.336000] usb usb1: configuration #1 chosen from 1 choice
[17179583.340000] hub 1-0:1.0: USB hub found
[17179583.344000] hub 1-0:1.0: 1 port detected
D-link init done
info, Sending discover…
info, Sending discover…
[17179597.196000] br0: topology change detected, propagating
[17179597.200000] br0: port 5(ra0) entering forwarding state
[17179597.204000] br0: topology change detected, propagating
[17179597.208000] br0: port 4(eth2.1) entering forwarding state
[17179597.212000] br0: topology change detected, propagating
[17179597.216000] br0: port 3(eth2.2) entering forwarding state
[17179597.220000] br0: topology change detected, propagating
[17179597.224000] br0: port 2(eth2.3) entering forwarding state
[17179597.228000] br0: topology change detected, propagating
[17179597.232000] br0: port 1(eth2.4) entering forwarding state
info, Sending discover…
info, Sending discover…
info, Sending discover…


Шаг 3

меняем адреса на сетевой, наслаждаемся роутером)

  • при заливки файла на роутер вы уведите не только на терминале но и сервер вам скажет что файл уходил.



  • Что касается Terminal v1.9b by Bray, вводим в серое поля (по символьный ввод).



Ну вот и все, всем удачи! :)
Share post

Comments 12

    0
    У TP-linkами это единственный способ восстановить, а у D-Linkов есть консоль аварийного режима прошивки
      0
      … Начиная с определенной версии. На моем DIR-300 нет :) И там процесс восстановления после отключения питания в процессе записи FLASH немного более сложный, включая восстановление вручную значений по указанным (в моногочисленных туториалах) адресам.
        0
        А можно подробнее как восстановить DIR-300. Когда я подключаюсь через COM, то у меня печатается только

        U-Boot 1.1.3 (Jan 13 2009 - 17:40:14) (Alpha) - SVN revision : 105
        Model: WRGN23
          0
          ошибся, вот что пишет

          U-Boot 1.1.3 (Jan 13 2009 - 17:40:14) (Alpha) - SVN revision : 105
          Model: WRGN23
          Board: RT2880 DRAM: 256 kB

          Дальше не загружается, я так понимаю он пытается загрузиться с NOR Flash, но у него не получается это сделать. Как быть?
      +1
      Если нет USB-UART, но есть Arduino, то можно воспользоваться им. На ардуину накатываем пустую прошивку, соединяем TX, RX и GND ардуины с ножками платы, и запускаем штатный serial monitor одноимённой программы Arduino.

      Нужно помнить, что D-Link DIR-620 выпускается в двух модификациях совсем непохожих друг на друга по аппаратной и программной начинке. Например в моём DIR-620 это выглядит так:
      фото
      image


      Исходники прошивки и утилиты для её сборки есть в открытом доступе на сайте dlink. Часть исходников явно написана русскими программистами(в комментариях встречается русский мат)
        +2
        Так как в архивах на сайте очень много файлов, подскажу где искать: dl/webadmin-_seraph.tar.gz, dl/resident-_seraph.tar.gz и dl/libshared-_seraph.tar.gz. Это реализация веб-интерфейса роутера и его взаимодействия с основной системой. Люблю их периодически перечитывать в качестве примера того, как не надо писать код.

        Понравившиеся комментарии:
        Осторожно, мат
        json_t *bred =json_object(); //Ключ здесь вообще не нужен, но меня не слушают
        json_object_set(test_json,"ports_end",json_object_get(test_json,"ports_begin")); //нет, это не состязание в извращенности, просто не хочется плодить кучу объектов
        outbuf=malloc(st.st_size); //это конечно допущение, но думаю в конфиг бинари мы не будем пихать (UPD 3.02.2012 Я сильно заблуждался (T_T))
        #ifdef BCM47XX // это очень, блеать, костыльно!!! но, к сожалению, и на завод уйдет так же =(
        char* DSCPCheck; // большая хрень...поясню при необходимости см. qoscls.html
        char* DSCPMark; // ещё одна большая хрень...поясню при необходимости см. qoscls.html
        //TODO там в коде поставь, я потом и сам там подрулю в случае чего
        // на девайсе почему-то не матчит. сука!			if(!fnmatch("*( |\t)ppp[0-9]:*", buf, FNM_EXTMATCH)){
        res->name,   res->desc);*/ /* ВНЕЗАПНО! Найдено! */
        const char *bablo;            // Деньги
        // сделаем немного через ..опу, чтоб не вводить дополнительные поля
        

        +4
        Очень хочется отправить автора в школу. Ну правда, не стыдно писать статьи на таком русском языке?
          0
          А может автор и так в школе? 8)
        0
        Вас всех с 4PDA выгнали чтоли? То transmission на openwrt ставят, то uart подключают.
        Это уже на сто раз писано переписано и гуглится за минуту.
        • UFO just landed and posted this here
          0
          Народ помогите прошить по UART
          Кабель нашел, подключил к терминалу, роутер вроде как видеться, но только по моему он грузит ос с роутера не давая мне возможности выбрать прошивку через tftp ( это когда надо нажимать цифру 2 )
          Лог
          Decompressing...done
          Decompressing...done

          CFE version 5.100.138.2205 based on BBP 1.0.37 for BCM947XX (32bit,SP,LE)
          Build Date: Tue Jun 19 13:13:40 CST 2012 (dongdong@BBCOMPILE)
          Copyright © 2000-2008 Broadcom Corporation.

          Init Arena
          Init Devs.
          Boot partition size = 131072(0x20000)
          Found an ST compatible serial flash with 128 64KB blocks; total size 8MB
          et0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 5.100.138.2205
          CPU type 0x19749: 530MHz
          Tot mem: 65536 KBytes

          CFE mem: 0x80700000 — 0x807980A0 (622752)
          Data: 0x8072DEC0 — 0x80731110 (12880)
          BSS: 0x80731110 — 0x807320A0 (3984)
          Heap: 0x807320A0 — 0x807960A0 (409600)
          Stack: 0x807960A0 — 0x807980A0 (8192)
          Text: 0x80700000 — 0x8072DEC0 (188096)

          Device eth0: hwaddr AC-F1-DF-2B-D8-20, ipaddr 192.168.1.1, mask 255.255.255.0
          gateway not set, nameserver not set
          Loader:raw Filesys:tftp Dev:eth0 File:: Options:(null)
          Loading: Failed.
          Could not load :: Timeout occured
          Loader:raw Filesys:raw Dev:flash0.os File: Options:(null)
          Loading:… 5192 bytes read
          Entry at 0x80001000
          Closing network.
          Starting program at 0x80001000
          Linux version 2.6.22.19 (root@tomato) (gcc version 4.2.4) #10 Tue Jul 30 18:37:21 CEST 2013
          CPU revision is: 00019749
          wombo_reset set to gpio 22
          Determined physical RAM map:
          memory: 04000000 @ 00000000 (usable)
          Zone PFN ranges:
          Normal 0 -> 16384
          HighMem 16384 -> 16384
          early_node_map[1] active PFN ranges
          0: 0 -> 16384
          Built 1 zonelists. Total pages: 16384
          Kernel command line: root=/dev/mtdblock2 noinitrd console=ttyS0,115200
          Primary instruction cache 32kB, physically tagged, 4-way, linesize 32 bytes.
          Primary data cache 32kB, 4-way, linesize 32 bytes.
          Synthesized TLB refill handler (20 instructions).
          Synthesized TLB load handler fastpath (32 instructions).
          Synthesized TLB store handler fastpath (32 instructions).
          Synthesized TLB modify handler fastpath (31 instructions).
          PID hash table entries: 512 (order: 9, 2048 bytes)
          CPU: BCM5357 rev 2 pkg 8 at 530 MHz
          Using 265.000 MHz high precision timer.
          console [ttyS0] enabled
          Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
          Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
          Memory: 61256k/65536k available (33k kernel code, 4224k reserved, 2778k data, 128k init, 0k highmem)
          Mount-cache hash table entries: 512
          NET: Registered protocol family 16
          PCI: no core
          PCI: no core
          PCI: Fixing up bus 0
          NET: Registered protocol family 2
          Time: MIPS clocksource has been installed.
          IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
          TCP established hash table entries: 2048 (order: 2, 16384 bytes)
          TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
          TCP: Hash tables configured (established 2048 bind 2048)
          TCP reno registered
          squashfs: version 3.0 (2006/03/15) Phillip Lougher
          io scheduler noop registered (default)
          HDLC line discipline: version $Revision: 4.8 $, maxframe=4096
          N_HDLC line discipline registered.
          Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
          serial8250: ttyS0 at MMIO 0xb8000300 (irq = 8) is a 16550A
          PPP generic driver version 2.4.2
          MPPE/MPPC encryption/compression module registered
          NET: Registered protocol family 24
          PPPoL2TP kernel driver, V0.18.3
          PPTP driver version 0.8.5
          pflash: found no supported devices
          Found an ST compatible serial flash with 128 64KB blocks; total size 8MB
          Creating 5 MTD partitions on «sflash»:
          0x00000000-0x00020000: «pmon»
          0x00020000-0x007f0000: «linux»
          0x0010c800-0x007b0000: «rootfs»
          0x007b0000-0x007f0000: «jffs2»
          0x007f0000-0x00800000: «nvram»
          _nvram_init: allocat header: 2166128640, size= 32768
          u32 classifier
          OLD policer on
          Netfilter messages via NETLINK v0.30.
          nf_conntrack version 0.5.0 (512 buckets, 4096 max)
          ip_tables: © 2000-2006 Netfilter Core Team
          ipt_account 0.1.21: Piotr Gasidlo <quaker@barbara.eu.org>, www.barbara.eu.org/~quaker/ipt_account/
          net/ipv4/netfilter/tomato_ct.c [Jul 30 2013 18:37:21]
          NET: Registered protocol family 1
          NET: Registered protocol family 10
          ip6_tables: © 2000-2006 Netfilter Core Team
          NET: Registered protocol family 17
          802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
          All bugs added by David S. Miller <davem@redhat.com>
          VFS: Mounted root (squashfs filesystem) readonly.
          Freeing unused kernel memory: 128k freed
          Warning: unable to open an initial console.
          emf: module license 'Proprietary' taints kernel.
          eth0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 5.100.138.20
          wl_module_init: passivemode set to 0x1
          eth1: Broadcom BCM4329 802.11 Wireless Controller 5.100.138.20
          / # vlan0: No such device
          eth2: No such device
          eth3: No such device
          lo: File exists

          Only users with full accounts can post comments. Log in, please.