04.07.2019

Восстановление Прошивки Роутера Upvel

Восстановление Прошивки Роутера Upvel Average ratng: 3,7/5 3955 reviews

Как-то раз, еще до скачков курса доллара, мне понадобился очень дешевый SOHO-роутер. Требования — 5 портов, NAT и Wi-Fi, не помешал бы и USB. Выбор пал на, который в те времена стоил в Citilink’е смешные 860 рублей. Роутер был куплен и выполнял свои обязанности вполне сносно, стабильно зависая раз в неделю. Кроме того, не работал проброс портов, ну и что, он не больно сильно был нужен. К тому же в Web-интерфейсе был доступ к командной строке, так что в критичных случаях можно было просто написать iptables -A PREROUTING -j DNAT и наслаждаться работающими портами до следующего зависания.

Прошу всех, кто может, толково объяснить способы восстановления прошивки роутера UPVEL UR-312N4G. В результате подборов прошивок, скачанных с офсайта производителя, одна из прошивок дала сбой, правильнее сказать, по непонятным причинам прошивка не завершилась, соответственно роутер перестал определяться браузерами. Пересмотрел много информации в Инете, но толком ничего не нашел. Если возможно это сделать с помощью telnet, то подскажите, пожадуйста, как правильно в таких случаях надо с ним работать, потому что никогда ранее с telnet не имел дело, обходясь иными способами удаленного администриро. Как настроить роутер UPVEL UR-315BN с поддержкой IPTV с русским интерфейсом. (прошивки) роутера UPVEL UR-315BN и продолжительность работы. А затем, при необходимости восстановить настройки на роутере.

Впрочем, большего я от коробочки за такую смешную цену я не ждал. Потом кое-что в моей жизни поменялось и роутер лег на дальнюю полку, а его заменил TP-Link TR-ML3420. Надо сказать, TR-ML3420 отлично работает под OpenWRT и никаких проблем с ним не возникает, а вот роутеры Upvel официально не поддерживаются OpenWRT чуть менее, чем полностью (из всего модельного ряда — только два роутера).

Когда стало ясно, что Upvel UR-313N4G мне уже не жалко, я решил попробовать поставить на него OpenWRT. Основная задача — заставить работать 3G-модем Megafon M21-4, он же Huawei E3531. Надо сказать, что опыт прошивки роутеров на OpenWRT у меня был, как через Web-интерфейс, так и через UART, но он сводился к “выберите файл для прошивки и молитесь” или “наберите эти три команды в консоли и молитесь”. На этот раз мне хотелось разобраться, почему вводятся именно такие команды, ну и вообще получить общее представление об архитектуре MIPS, с которой я до этого не работал. Тут, конечно, нужно отметить, что читать этот материал отцам, разрабатывающим Gigabit Ethernet карты на FPGA и пишущим видеодрайверы для Mali-400, будет, наверное, смешно — они все это и так давно знают. Для начала спросим у Гугла о том, что мы будем шить и куда. В архитектуре x86 для загрузки ОС используется специальным образом подготовленный носитель — жесткий диск, SSD или флеш-память, размеченная по стандарту MBR или GPT, с основной загрузочной записью и специально отмеченным загрузочным разделом.

Внутренняя структура диска скрыта от ОС его прошивкой, а BIOS предоставляет минимальный фунционал даже тогда, когда ОС не установлена. В роутере с архитектурой MIPS все устроено по-другому. Данные хранятся на MTD-устройстве, которое представляет собой микросхему EEPROM без контроллера, так что когда мы пишем на эту схему, нам нужно стараться не писать в одни и те же сектора слишком часто. Кроме того, у MTD фиксированный и довольно большой размер блоков, которыми допустимо производить стирание (в моем случае — 64Кб). Таблицы разделов на MTD-устройстве нет, но, когда загружено ядро Linux, то оно симулирует наличие таблицы разделов. Настройки этой симуляции задаются либо при сборке ядра, либо с помощью параметра mtdparts при загрузке.

В начале MTD расположен загрузчик, который при неудачном стечении обстоятельств можно стереть, и тогда поможет только прошивка EEPROM на программаторе. Загрузчик распаковывает в память прошитый в MTD образ и передает управление ядру Linux. Теперь настало время экспериментов. Для начала вскроем роутер и посмотрим маркировку основного чипа — Ralink 5350F. Легкое гугление показывает, что этот чип поддерживается OpenWRT, и довольно неплохо, — есть целый каталог с прошивками под серию 5350. Еще на плате видна микросхема RAM на 32Мб и чип EEPROM на 8Мб.

Поиск по сайту 4pda показывает, что на чипсете Ralink 5350F построен Upvel UR-322N4G, Hame MPR-A1 и Zyxel Keenetic 4G II. Ну что ж, OpenWRT для Hame MPR-A1 и попробуем прошиться через Web-интерфейс роутера. Прошивка не шьется, видимо, не проходит проверка каких-то сигнатур.

Выяснять с отладчиком наперевес, каких именно, нет желания. Ну и ладно, не больно надо было. Есть несколько способов прошить роутер без использования Web-интерфейса. Можно, например, воспользоваться режимом восстановления, в который загрузчик переходит при запуске роутера. Если нажата кнопка Reset. Забегая вперед, скажу, что в Upvel UR-313N4G этого режима нет, не повезло, что ж поделаешь.

Можно также подключиться к роутеру через telnet, который доступен в оригинальной прошивке, “расчистить” память роутера, убив ненужные процессы, загрузить в память новую прошивку через tftp и прошить ее командой mtdwrite. Способ этот плох тем, что у нас, по сути, есть только одна попытка — если прошивка окажется несовместимой с роутером и не сможет загрузиться, то на выходе мы получим “полукирпич”, который можно восстановить, но только через UART. К тому же в этом случае придется поломать голову над тем, в какой раздел MTD следует записывать прошивку. Сразу скажу — в разметке MTD, которая применяется в оригинальной прошивке, раздела Firmware нет. Прошивка через UART Из всего этого следует, что для экспериментов нам нужно подключиться к роутеру через UART, тогда у нас будет доступ к консоли с момента старта роутера. На всякий случай закажем из Китая за 160 рублей программатор. Если мы не убьем загрузчик, программатор нам не понадобится, но, как говориться, “случаи бывают разные”.

На плате, если держать ее светодиодами к себе, в верхней правой части заметны 4 нераспаянных отверстия в ряд, подозрительно похожие на UART. Внимательно смотрим на плату — первое слева отверстие сделано в широком слое фольги, кажется, это схемная земля, дорожки от следующих двух отверстий через резисторы уходят куда-то вглубь платы — это Rx и Tx, правда, пока не понятно. В каком порядке. Крайне правое отверстие так же располагается на слое фольги, но поменьше, это, скорее всего, +3,3 В. Берем в руки тестер и измеряем напряжение. На Tx должно быть +3,3 В, на Rx — 0 В. Получаем (слева направо) — 0В; 3,3В, 0В, 3,3В.

Значить, второй слева — Tx, а третий — Rx. Крайний справа контакт — 3,3В, мы распаивать не будем — сожгем переходник. Берем китайский клон шнура Nokia CA-42, разрезаем его, находим в Гугле и припаиваем (слева направо) — оранжевый, красный, синий. Ставим Putty (у меня Linux на рабочей станции, с Windows проблем тоже возникнуть не должно) и подбираем скорость порта: выставляем стандартные для COM-порта значения, включаем роутер и смотрим, чтобы на экране были не кракозябы, а осмысленный текст. У меня соединилось на скорости 57600 бод.

Теперь у нас есть доступ к загрузчику, а значит, шанс окирпичить роутер уменьшается. Хорошо, попробуем прошиться через загрузчик. В момент старта системы мы видим приветствие 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. 7: Load Boot Loader code then write to Flash via Serial. 9: Load Boot Loader code then write to Flash via TFTP. Меня в этом меню больше всего привлекает пункт 1 — получение прошивки через TFTP и запуск ее из RAM. Получается, проверить совместимость прошивки с устройством можно даже не прошивая ее в EEPROM.

Для меня это стало приятным сюрпризом. Устанавливаем tftp-сервер (я взял atftpd), кладем в рабочий каталог прошивку от Hame MPR-A1 и переименовываем ее поудобнее — в mpr-a1.bin. Запускаем роутер, нажимаем в консоли клавишу 1, выставляем на сетевом интерфейсе компьютера адрес 10.10.10.3, вводим в загрузчике нужные параметры и загружаем прошивку. Прошивка запустилась, ура! Даже есть доступ к Web-интерфейсу, а значить, большая часть прошивки работоспособна.

И это мы еще ничего не шили! Только со светодиодами твориться что-то странное — горит только Wi-Fi (а он отключен и гореть не должен), а вот светодиоды портов Ethernet не горят.

Разбираемся дальше. Для настройки коммутаторов в OpenWRT используется утилита swconfig.

На самом деле автор только начал постигать уличную магию. Качать готовые прошивки openwrt это неспортивно. Чаще всего они оказываются старыми — авторы выкладывают только прошивку без репов с пакетами под эту версию ядра, а из официальных пакеты уже не подходят. Я так со своим старичком dir-320 для дачи поплюхался, слил сорцы и собрал сам что мне нужно. Поэтому обновление вообще не вопрос в этом случае — обновил сорцы и пересобрал прошивку со старым конфигом.

Хотя при нормальной настройке не думаю что это потребуется — снаружи на роутере все равно все закрыто. Кажется, размер раздела /dev/mtd4 подходит (раздел занимает 3670016 байт, а прошивка — 3407876).

В принципе, можно прошиться на, но у него флешка на 4 Мб, и вам не хватит места, если вы надумаете ставить, например, OpenVPN. В указан размер флешки, так что можно его и пересобрать OpenWRT. Еще можно попробовать прошивку от, аппаратная платформа вроде та же, но флешка на 8Мб.

Хотя могут возникнуть проблемы с тем, что у Hame MPR-1A и Hame MPR-2A разное количество USB и Ethernet-портов. Ну и да, вы делаете это на свой страх и риск ). Как правило, это сначала стереть блок, затем записать блок. Размер блока зависит от флеша и будет, наверное, 64К.При этом erasesize ≠ writesize, как правило. С флешем вообще надо работать аккуратно (капризная штука), «наверное» здесь неуместно: после неправильной записи посыпятся ошибки ECC и мусор в прочитанных блоках; и хотя erasesize практически всегда кратен writesize, это совсем не обязательно 64K: вполне может быть, к примеру, 128K и 2K соответственно.

Upvel настройка

Восстановление Роутера Upvel После Неудачной Прошивки

Проще всего из userland писать через функции mtdutils.c; ядро не предоставляет достаточно высокоуровневого механизма работы с MTD, поэтому обычно приходится вручную определять все размеры, дергать blockisbad, устанавливать erasecallback и пр. (Это для корректного чтения/записи, если нужно лишь читать, то ничего сложного.). Прошу прощения за то, что ввел вас в заблуждение.

Гзмуд

Полностью прошивка называется openwrt-ramips-rt305x-dir-320-b1-initramfs-uImage.bin, я подумал, что uImage — ubootimage. А sysupgrade накатывался с целью проверить, действительно ли у меня «один шанс», правильнее было бы вернуть заводскую прошивку, а потом обратно openwrt. Давайте еще разберемся вот с каким вопросом. Я всегда считал, что прошивка со словами sysupgrade предназначена для обновления openwrt, а не для перепрошивки с родной, в первую очередь потому, что не трогает настройки, в отличие от полной прошивки (со словом firmware). Я честно сказать не понял вашего объяснения, начиная со слов «настройки в таком образе хранить просто негде». Так чем же отличаются firmware, sysupgrade и uImage прошивки?

Скажу сразу — сборочные скрипты я не смотрел (а посмотреть сейчас времени нет), поэтому все, что я сейчас напишу — мои личные предположения, основанные на анализе поведения OpenWRT в мое личном случае и логах загрузки: 1) Образ uImage стартует из RAM без прошивки. 2) Когда прошиваешь uImage, невозможно сохранить никакие настройки, например, пароль на root. Так что ФС доступна только на чтение. 3) Образ sysupgrade не стартует из RAM — в логах куча ошибок на невозможность создать ноды ФС JFFS2.

Upvel Настройка

Игра симулятор бога. 4) В прошитом образе sysupgrade видна инициализация JFFS2 на MTD устройстве. В uImage ее вроде бы нет. Из всего этого я сделал вывод, что uImage состоит из Kernel+Squashfs(RO) а sysupgrade — из Kernel+Squashfs(RO)+JFFS2(RW), при этом JFFS2 умеет при первом запуске разворачиваться до конца раздела (в логах это видно).

Но, конечно, все это догадки и ответ надо смотреть в сборочных скриптах. 1) Образ uImage стартует из RAM без прошивки. Означает ли это, что после перезагрузки роутер приводится в исходное положение?

Если да, то ваше мнение ошибочно, ибо именно uImage был залит мною через веб-интерфейс, после чего последовала ОБЯЗАТЕЛЬНАЯ перезагрузка. Jasmine gn1 113d инструкция. Если нет, то не могли бы вы пояснить своё утверждение. 2) Когда прошиваешь uImage, невозможно сохранить никакие настройки, например, пароль на root.

Так что ФС доступна только на чтение. Опять вы не правы: зашел телнетом поставил пароль, потом зашел ssh. Такое ощущение, что мы совсем о разном говорим. 3) Образ sysupgrade не стартует из RAM — в логах куча ошибок на невозможность создать ноды ФС JFFS2. Вот честное слово: не понимаю о чем вы.

Как Настроить Роутер Upvel

Из ssh заходим под рутом, вводим команду sysupgrade -v xxx-sysupgrade.bin. 4) В прошитом образе sysupgrade видна инициализация JFFS2 на MTD устройстве. В uImage ее вроде бы нет. Опять не могу с вами согласиться.

А куда, скажите пожалуйста, я записал пароль рута? Бред, но можно конечно (копируем распакованную систему во временный каталог, упаковываем в squashfs, заменяем образ), правда похоже на удаление гланд через анальное отверстие. Означает ли это, что после перезагрузки роутер приводится в исходное положение? Если да, то ваше мнение ошибочно, ибо именно uImage был залит мною через веб-интерфейс, после чего последовала ОБЯЗАТЕЛЬНАЯ перезагрузка.

Если нет, то не могли бы вы пояснить своё утверждение. 3) Образ sysupgrade не стартует из RAM — в логах куча ошибок на невозможность создать ноды ФС JFFS2. Нет, я всего лишь имел виду, что uImage можно запустить из загрузчика u-boot по нажатию кнопки 1 (загрузить образ в RAM без прошивки через TFTP, затем запустить его) В этом же режиме sysupgrade не стартует — т.е. Ему нужно, чтобы его честь все-таки была прошита на MTD. Опять вы не правы: зашел телнетом поставил пароль, потом зашел ssh. Такое ощущение, что мы совсем о разном говорим.

Игры рыбки 2. Вполне возможно, я действительно не прав — надо разбираться (.