Восстановление роутера после неудачной прошивки

Иногда бывают ситуации, когда роутер прошивается неудачно. Причин тому может быть много: неправильная прошивка, сбой при прошивки, ошибка разработчиков прошивки и прочие. В любом случае выяснять это не имеет смысла, а лучше займёмся восстановлением прошивки роутера.

Тестовый стенд: Linksys WRT160NL, USB-кабель DKU-5 от телефонов nokia, ОС Windows XP

0) Предисловие.

Оказывается, OpenWRT можно запустить и в VirtualBox’e! О том, как это сделать, описано здесь http://habrahabr.ru/post/195592/

1) Подготовительные работы.

Первым делом нужно подготовить нужный кабель. Используйте кабель именно DKU-5, так как только с ним удалось добиться успеха. Остальные кабеля (COM, USB) не подошли. И так, вот распайка кабеля: 

Нам нужны RXD, TX и GND. Аккуратно к ним припаять кабеля которые мы присоединим (а можно и припаять) к соответствующим на роутере:

В моём случае попался китайский кабель DKU-5 в котором были перепутаны GND и RX. В любом случае попробуйте поэксперементировать.

Если кабель подключён верно, то при запуске вы увидите вполне читаемый вывод о процессе загрузки роутера. Если же нет — вы либо ничего не увидите (перепутан RX и TX; даже если вы подключили правильно — попробуйте поменять местами) либо увидите мусор (значит либо кабель плохой, либо перепутаны RX/TX/GND или другие контакты).

Ещё нужно будет установить драйвера на этот USB кабель. Найти их можно по ID устройства на сайте devid.info. Замечу сразу, что драйвера есть только для WindowsXP. После удачной установки, наш кабель будет использовать порт COMX. У меня это COM3 (посмотреть можно в Списке оборудования)

2) Подготовка к подключению.

Для подключения используем любую программу эмулирующую подключение по терминалу: Putty, HyperTerminal (идёт с поставке Windows XP).

Для Putty используем такие параметры:

скорость: 115200
порт: COM3

Для HyperTerminal:

скорость: 115200
порт: COM3
биты данных: 8
чётность: нет
стоповые биты: 1
управление потоком: нет

3) Подключение.

После включения роутера процесс загрузки будет выглядеть так:

U-Boot 1.1.6 (Apr 14 2010 - 14:02:36)
DRAM:  ar7100_ddr_initial_config(237) enter!
ar7100_ddr_initial_config(269) exit!
U-Boot 1.1.6 (Apr 14 2010 - 14:02:36)
AP81 (ar7100) U-boot
sri
32 MB
WRT160NL u-boot version: 1.0.0
Top of RAM usable for U-Boot at: 82000000
Reserving 279k for U-Boot at: 81fb8000
Reserving 192k for malloc() at: 81f88000
Reserving 44 Bytes for Board Info at: 81f87fd4
Reserving 36 Bytes for Global Data at: 81f87fb0
Reserving 128k for boot params() at: 81f67fb0
Stack Pointer at: 81f67f98
Now running in RAM - U-Boot at: 81fb8000
id read 0x100000ff
flash size 8MB, sector count = 128
Flash:  8 MB
*** Warning - bad CRC, using default environment
In:    serial
Out:   serial
Err:   serial
Net:   ag7100_enet_initialize...
ag7100 get ethaddr for device eth0
Fetching MAC Address from 0x81feb1e0
--------***** Get the RTL8306SD Manufactory ID=379c *****-------
Reg6: speed=0 nway=1 duplex=0
Reg5: speed=0 nway=0 duplex=0
Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0 a5=0
Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0
Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0
Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0
Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0
eth0: c0:c1:c0:dd:12:fd
eth0 up
eth0
### main_loop entered: bootdelay=1
Hit any key to stop autoboot:  1  0

и когда увидите последнюю строку — нажмите enter, этим вы прервёте дальнейшую загрузку и ввойдёте в режим управление роутера.

Теперь вводим такую строку:

ar7100> upgrade code.bin
check link duplex:Full/speed:100
dup 1 speed 100
Tftpd start listening on port[69]!
Load address: 0×80060000

Теперь возьмите прошивку и переименуйте её в code.bin. Далее соедините патчкордом копмьютер и роутер, назначив адрес компьютеру 192.168.1.[2-254]. Далее на компьютере выполните такую команду:

C:\tmp> tftp -i 192.168.1.1 put code.bin

Для линукс пользователей

tftp -m binary 192.168.1.1 69
tftp> put code.bin

Процесс прошивки должен завершиться таким выводом:

Receiving firmware [code.bin] from [192.168.1.10]
Write File : CODE.BIN

После этого загружайте роутер

ar7100 > go

Если всё прошло успешно — роутер загрузится.

4) Возможные проблемы.

При использовании оригинальной прошивки, проблем не наблюдалось. Но мне нужна была прошика OpenWRT. В итоге я перепробовал все доступные прошивки и во всех выскакивала ошибка:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Решение нашлось такое: использовать прошивку из trunk-ветки (http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-wrt160nl-squashfs-factory.bin), выпущенной за 2 дня до этого.

Теперь всё работает, за исключением того, что по дефолту не было Web интерфейса. Установка довольно простая:

— обновляем список доступных пакетов

#opkg update

— устанавливаем luci

#opkg install luci

— настраиваем web-сервер

#/etc/init.d/uhttpd enable
#/etc/init.d/uhttpd start

Восстановление роутера после неудачной прошивки: 29 комментариев

  1. Janis Alnis

    Zdravstvujte.
    Prekrasnoje opisanije.

    U menja ta ze problema
    Kernel panic

    Gde vzjatj versiju trunk dlja WRT160NL

    Ja zashival 3 routera ranshe v etom godu vse rabotalo, a teperj kupil dva novix i polucajetsa kernel panic…

    Budu blagodaren za pomosch.

    1. skeletor Автор записи

      Да. И не только 160, но и 320 модели и много других, так как распайка у них одинаковая.

  2. Vetal

    Что-то не врубился.
    Открываем в кабеле (там где USB) чтоб увидеть цвета, а припеваем к роутеру другой конец кабеля? Верно? А usb в комп.
    или нет?

      1. Vetal

        1. Что-то Вы путаете. Речь идет о dku-5 (в статье именно он указан)
        Так какой «специальный»
        2. Ещё нужно будет установить драйвера на этот USB кабель
        значит все-аки usb в комп?
        3. Для чего Вы распаяли (на рисунке) сторону USB если нужно распаивать противоположную?

        1. skeletor Автор записи

          Нет, имелось ввиду для этого «Открываем в кабеле (там где USB) чтоб увидеть цвета». П3 — какую противоположную? Не вводите в заблуждение ни меня ни себя. Можете распаивать любую из сторон, главное что бы вы поняли, где какой контакт.

          1. skeletor Автор записи

            Можете использовать любой метод.

    1. skeletor Автор записи

      Если честно, не скажу, я пробовал обычный COM-USB, но не заработало, поэтому не стал экспериментировать дальше и взял сразу DKU-5

  3. Игорь

    Подскажите пожалуйста, куда положить файл прошивки? просто на диск С:?
    Обновлял Tenda N3 и запорол… походу не ту прошивку взял:(
    Win 7 пишет «неопознаная сеть» по адресам веб интерфейса не заходит….

  4. skeletor Автор записи

    Без разницы, главное указать полный путь к ней, когда будете прошивать.

  5. Игорь

    Спасиба за ответ!
    Всё разрешилось без программатора, как и предполагал что залил прошивку от точки доступа (Tenda A3), нашёл её адрес вебинтефейса(192.168.0.254), прописал- но сразу не зашёл, прописал подходящий адрес метевой карты- и всё получилось!!! Зашел в меню обновления прошивки, прописал путь к зараннее скачаному файлу для роутера(уже перепроверил) и обновил!
    Всё заработало, точка доступа стала опять роутером:)

  6. Влад

    для тех у кого цвета в DKU 5 красный зеленый коричневый и еле розовый
    gnd -зеленый
    rx — коричневый
    tx- еле розовый

  7. Олег

    Все делаю так как у вас но не могу прервать загрузку все клавиши пережал ни какого эффекта
    U-Boot 1.1.6 (Apr 14 2010 — 14:02:36)

    DRAM: ar7100_ddr_initial_config(237) enter!
    ar7100_ddr_initial_config(269) exit!

    U-Boot 1.1.6 (Apr 14 2010 — 14:02:36)

    AP81 (ar7100) U-boot
    sri
    32 MB
    WRT160NL u-boot version: 1.0.0
    Top of RAM usable for U-Boot at: 82000000
    Reserving 279k for U-Boot at: 81fb8000
    Reserving 192k for malloc() at: 81f88000
    Reserving 44 Bytes for Board Info at: 81f87fd4
    Reserving 36 Bytes for Global Data at: 81f87fb0
    Reserving 128k for boot params() at: 81f67fb0
    Stack Pointer at: 81f67f98
    Now running in RAM — U-Boot at: 81fb8000
    id read 0x100000ff
    flash size 8MB, sector count = 128
    Flash: 8 MB
    *** Warning — bad CRC, using default environment

    In: serial
    Out: serial
    Err: serial
    Net: ag7100_enet_initialize…
    ag7100 get ethaddr for device eth0
    Fetching MAC Address from 0x81feb1e0

    ———***** Get the RTL8306SD Manufactory ID=379c *****——-
    Reg6: speed=0 nway=1 duplex=0
    Reg5: speed=0 nway=0 duplex=0
    Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0 a5=0
    Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0
    Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0
    Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0
    Reg1: a1=7fd9 a2=30e0 a3=15ac a4=30e0
    eth0: 48:f8:b3:25:76:ee
    eth0 up
    eth0
    ### main_loop entered: bootdelay=1

    Hit any key to stop autoboot: 1 0
    ## Booting WRT160NL …

    и потом дальше грузиться хотя должно остановиться на этом

    1. skeletor Автор записи

      может вас клиент для COM-порта вообще не воспринимает нажатие клавиш?

      1. Олег

        Воспринимает нажатие путем замыкания Тх и Rх в терминале печатаются символы которые нажимаю на клавиатуре. Спаял уже 4 кабеля рабочих на разных микросхемах, + 1 на макетке собрал. Ну не могу остановить загрузку . пробовал на ХР на 7 на разных платформах и на 32 и на 64. Идет дальше и все

        Hit any key to stop autoboot: 0
        ## Booting WRT160NL …
        Application code length 0x004b0000
        CRC OK

  8. Art

    FSB v0.06 PLL w ln p08 zi

    Solos 461x PP boot v1.5

    SDRAM size = 0x1000000
    Processor clock speed 264.0MHz
    Finding flashfs partition…done.

    Uncompress/Self extract image:
    UnComp.Size 0x4f8790 Comp.Size 0x147090

    LZMA 4.05
    00CK1D4EA676H
    Quantum v1.01
    Phys region /region/stung-sdram start @ 0xe00000, end @ 0x1000000, alignment 0x100000
    Allocatable memory starts @ 0x616500, end @ 0xe00000
    No, or invalid, configuration information in EEPROM — trying FLASH
    Valid configuration (size 256)
    TENDA version V0.0.2_TD_EN_NEPAL_110722 (18th May 2009)
    BSP: V1.1.02
    CSP: Solos 461x CSP v1.0
    Copyright (c) 2004 Conexant Systems Ltd.
    Entering crypto process.
    SNMP Research EMANATE/Lite Agent Version 16.1.0.25
    Copyright 1989-2004 SNMP Research, Inc.
    Invalid main partition
    msc16_load_file returned 1

    TENDA w 548d Никак немогу прошить, помогите

  9. Игорь

    U-Boot 1.1.5 (Apr 6 2009 — 13:54:11)

    DRAM: ar7100_ddr_initial_config(237) enter!
    ar7100_ddr_initial_config(269) exit!

    U-Boot 1.1.5 (Apr 6 2009 — 13:54:11)

    AP81 (ar7100) U-boot
    sri
    32 MB
    WRT160NL u-boot version: 1.0.0
    Top of RAM usable for U-Boot at: 82000000
    Reserving 277k for U-Boot at: 81fb8000
    Reserving 192k for malloc() at: 81f88000
    Reserving 44 Bytes for Board Info at: 81f87fd4
    Reserving 36 Bytes for Global Data at: 81f87fb0
    Reserving 128k for boot params() at: 81f67fb0
    Stack Pointer at: 81f67f98
    Now running in RAM — U-Boot at: 81fb8000
    id read 0x100000ff
    flash size 8MB, sector count = 128
    Flash: 8 MB
    *** Warning — bad CRC, using default environment

    In: serial
    Out: serial
    Err: serial
    Net: ag7100_enet_initialize…
    На этом моменте уходит в ребут… что бы это могло быть?

    1. Игорь

      Судя по строке Reserving 277k for U-Boot at: 81fb8000 у меня бит юбут. Во время хард ресета роутера произошло отключение света, видимо причина в этом. Возможно ли в домашних условиях его перезалить? И если да то можно ссылку на инструкцию?

  10. Василий

    Прекрасное описание, все сделал. В результате роутер восстановлен!

  11. Дмитрий

    Прошивка дд врт не обновляется через веб интерфейс.
    Полагаю что нужно принудительно её установить через tftp
    Я в этом деле новичок, если кто шарит, подскажите, пожалуйста. И напишите на почту dipersona@ya.ru
    Wrt160nl

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *