Upvel ur 329bnu прошивка openwrt

Upvel UR-326N4G

Поддерживаемые версии

Версия/Модель Поддерживаемые версии Скачать последнюю версию Данные устройства Примечания
UR-326N4G v1 15.05 view
UR-326N4G v2, v3 4pda.ru 15.05.1 8mb 4pda.ru 15.05.1 16mb view

Аппаратные характеристики

Версия Процессор ОЗУ ПЗУ Интерфейсы WiFi USB Serial JTag
v1 Ralink RT3052 384MHz 32 МБ 8 МБ 4 LAN + 1 WAN 2×2 2.4Ghz 802.11n 300 Мбит/с 1×2.0 Да
v2 MediaTek MT7620N 580MHz 64 МБ 4 МБ 4 LAN + 1 WAN 2×2 2.4Ghz 802.11n 300 Мбит/с 1×2.0 Да

Данные по светодиодам V2

PIN GPIO LED
65 gpio 39 usb
81 gpio 72 wifi
9 gpio 44 wan
7 gpio 43 lan 4
83 gpio 42 lan3
8 gpio 41 lan2
82 gpio 40 lan1

Версия v2

(Возможно и версия v3)

Пока испробывал две прошивки:

1. от ZBT WR8305RT wr8305 . Светодиоды работают правильно, за исключением: “usb” — работает инверсно. В настройках Led Configuration нужно настроить только “usb” (led name — wr8305rt:usb trigger — usbdev) и “wifi” (led name — wr8305rt:wifi trigger — netdev device — wlan0 trigger mode — linkOn и Transmit). Светодиодом “Power” управлять не получится, он напрямую запитывается от питания. Проблемы прошивки: В случае увеличения flash, эта прошивка не видит 16 mb flash. Надо пересобирать ядро……

2. от ASUS RT-N14U rt-n14u. В случае увеличения flash, видит 16mb Проблемы прошивки: Настроить правильную работу светодиодов не получается. Надо пересобирать ядро……

Собрал прошивки для версии V2 на базе Chaos Calmer 15.05.1 с kernel 3.18.23-1. Как сюда выложить так и не понял, поэтому выложил ссылку на forum.4pda.ru. Для скачивания нужно будет зарегистрироваться

  • Last modified: 2022/04/18 05:15
  • by 80.27.190.23

Self-registration in the wiki has been disabled.
If you want to contribute to the OpenWrt wiki, please post HERE in the forum or ask on IRC for access.

Except where otherwise noted, content on this wiki is licensed under the following license:
CC Attribution-Share Alike 4.0 International

Источник

Прошиваем роутер Upvel UR-313N4G на OpenWRT

Как-то раз, еще до скачков курса доллара, мне понадобился очень дешевый SOHO-роутер. Требования — 5 портов, NAT и Wi-Fi, не помешал бы и USB. Выбор пал на Upvel UR-313N4G, который в те времена стоил в Citilink’е смешные 860 рублей. Роутер был куплен и выполнял свои обязанности вполне сносно, стабильно зависая раз в неделю. Кроме того, не работал проброс портов, ну и что, он не больно сильно был нужен. К тому же в Web-интерфейсе был доступ к командной строке, так что в критичных случаях можно было просто написать iptables -A PREROUTING -j DNAT и наслаждаться работающими портами до следующего зависания. Впрочем, большего я от коробочки за такую смешную цену я не ждал. Потом кое-что в моей жизни поменялось и роутер лег на дальнюю полку, а его заменил 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, и довольно неплохо, — есть целый каталог ramips с прошивками под серию 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 и прошить ее командой mtd_write. Способ этот плох тем, что у нас, по сути, есть только одна попытка — если прошивка окажется несовместимой с роутером и не сможет загрузиться, то на выходе мы получим “полукирпич”, который можно восстановить, но только через 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 бод. Теперь у нас есть доступ к загрузчику, а значит, шанс окирпичить роутер уменьшается.

Хорошо, попробуем прошиться через загрузчик. В момент старта системы мы видим приветствие

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

Прошивка запустилась, ура! Даже есть доступ к Web-интерфейсу, а значить, большая часть прошивки работоспособна. И это мы еще ничего не шили! Только со светодиодами твориться что-то странное — горит только Wi-Fi (а он отключен и гореть не должен), а вот светодиоды портов Ethernet не горят. Разбираемся дальше. Для настройки коммутаторов в OpenWRT используется утилита swconfig. Выясняем, что может наш коммутатор

На первый взгляд — обнадеживающе, мы можем управлять не только VLAN’ами, что жизненно необходимо для разграничения трафика LAN и WAN-подсетей, но и программировать светодиоды.
Делаем

и… ничего не происходит. Видимо проблема где-то глубже, в драйверах. Хорошо, что у OpenWRT открытый код. Идем в git-репозитоий, находим там исходники драйвера и видим

тут, кажется, используется магия вуду. И еще — по коду драйвера сразу понятно, что без детальной документации на регистры коммутатора нам в нем не разобраться. Но видно, что параметры драйвера задаются не через аргументы команды modprobe, а, судя по всему, через вкомпилированные в ядро строки:

Ладно, отложим исходники и попробуем зайти с другой стороны. Все три роутера — Upvel UR-322N4G, Hame MPR-A1 и Zyxel Keenetic 4G II — двухпортовые. Наверняка среди тучи поддерживаемых моделей на Ralink 5350 есть и пятипортовые модели. Идем на WikiDev и находим, например, D-Link 320 NRU B1. Пятипортовый роутер, один USB порт — то, что надо. Качаем прошивку, загружаем в память роутера, запускаем. Светодиоды работают как положено. Очень интересно. Будем прошиваться на нее, а пока попробуем найти разницу между OpenWRT для Hame MPR-A1 и D-Link 320 NRU B1. Разницу нужно искать в профилях сборки — DTS. Вот, например, параметр led_polarity для Hame не указан, а для D-Link равен 0x17. А я то думал, что полярность бывает только прямая и обратная! Опять лезем в исходники драйвера, находим там константу

находим способ задания полярности

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

Мы выяснили, что для нашего роутера лучше всего подходит прошивка от D-Link DIR-320 NRU B1. Теперь нужно прошиваться. Быть может вы заметили, что для тестирования работы прошивок я выбирал файлы со словом uImage в имени. Такой файл содержит только образ ядра и файловую систему, загружаемую в RAM и доступную только для чтения. Такой образ можно запускать прямо из памяти, а вот для прошивки он не очень подходит — настройки в таком образе хранить просто негде. Поэтому для прошивки мы выберем образ с расширением sysupgrade — в конце такого образа прицеплен раздел JFFS2, в котором будут храниться изменения, внесенные нами в файловую систему роутера. Поэтому образ sysupgrade стартовать из памяти без прошивки на флешку не может.
Очень хорошо, что у Upvel UR-313N4G флешка на 8Мб, после установки у нас останется еще чуть больше 4Мб для дополнительных пакетов. А вот в TP-Link TR-ML3420 флешка на 4Мб и свободного места там — кот наплакал.
Перезагружаем роутер, нажимаем 2, указываем имя прошивки и шьемся. Итак, вроде все нормально: интерфейсы поднялись, светодиоды моргают, в общем — жизнь бурлит. Вы еще не забыли, что нашей основной целью было заставить работать роутер с модем Megafon M21-4? Втыкаем модем в USB-порт, смотрим в dmesg и… ничего. То есть, совсем ничего. Тут есть два варианта — либо ядро не увидело какую-нибудь адскую шину, на которой внутри чипа висит USB-порт (тут уж мы ничего не поделаем), либо в прошивку забыли добавить драйверы для этого порта. В D-Link 320 NRU B1 USB-порт есть, так что более вероятен второй вариант. Гуглим “OpenWRT usb support”, настраиваем на роутере WAN-порт, чтобы прошивка получила доступ в Интернет и ставим пакеты.

Именно в таком порядке, потому что модуль kmod-usb2 должен быть загружен раньше, чем kmod-usb-ohci

В консоли тут же появляются строки:

Ого, система увидела устройство на шине USB, значит, продолжаем.

Теперь ставим пакет, который при подключении модема пошлет на него “магическую последовательность”, переключающую модем из режима CD-ROM/TF Card в режим CD-ROM/TF Card+3 COM-порта.

В консоли видим следующее:

Значит, usb-modeswitch сработал — отправил команду модему, а модем после этого исчез с шины USB и появился там уже как другое устройство.

Поставим два пакета с драйверами, которые увидят COM-порты и сделают их доступными системе

Видно, что модем определился правильно и в системе появилось 3 COM-порта

Ставим пакет, необходимый для создания отправки команд 3G-модемам и расширение для Web-интерфейса:

Заходим в Web-интерфейс, настраиваем 3G, в качестве порта указываем /dev/ttyUSB0, все работает.

Теперь возьмемся за светодиоды. Сначала установим пакет kmod-ledtrig-usbdev — он позволит нам управлять светодиодами в зависимости от наличия устройств на шине USB. Зайдем в Web-интерфейс на вкладку System->LED Configuration и определим там два светодиода:

и нажмем кнопку Save/Apply
На этом настройка роутера закончена.
Стоить добавить, что светодиод “usb” ссылается на конкретный адрес устройства на шине USB (1-1), а поэтому, если адрес изменится, то светодиод работать не будет.

Прошивка через Telnet

А вот теперь пришло время выяснить, можно ли прошить роутер без доступа к UART. Для начала попробуем режим восстановления — обычно он включается, если при зажатой кнопке сброса подать питание. Зажимаем, подаем и смотрим в консоли: ничего. Режим не доступен. Откатимся через загрузчик на оригинальную прошивку и посмотрим в лог загрузки:

Видно, что u-boot читает 64 байта, начиная с адреса 0x00050000 (отцы, объясните, почему в логе bc050000?). Начиная с 0x00050000 на MTD прошит образ uImage и в первых 64-х его байтах находится заголовок. Из заголовка берется размер образа, его будущий адрес в оперативной памяти и точка входа, после чего образ распаковывается в RAM и на точку входа передается управление.
Подождем, пока оригинальная прошивка загрузится и посмотрим в лог:

Начиная с адреса 0x00050000 начинается раздел Kernel, и этот адрес подозрительно совпадает с адресом из лога u-boot. Значит, именно здесь храниться прошивка роутера, сюда мы и запишем OpenWRT. Посмотрим, на какие устройства отобразились разделы:

Размер раздела Kernel — 7680 Кб, а образ OpenWRT занимает примерно 3,5 Мб, следовательно, можно прошиваться без опасения, что новая прошивка не поместится в старый раздел.

Посмотрим, сколько у нас свободной памяти:

Нам нужно примерно 3,5 Мб и они у нас есть.

Запустим на рабочей станции atftpd (адрес 192.168.10.100) и скопируем прошивку в RAM роутера:

Сначала сотрем раздел RW_FS. Может, этого и не надо делать, но на всякий случай перестрахуемся:

Теперь запишем прошивку:

Ключ -r значит, что после выполнения команды роутер перезагрузится. Корректировать таблицу разделов не нужно, потому что она существует только внутри ядра Linux.

После перезагрузки заходим в Web-интерфейс, ставим пакеты kmod-usb2, kmod-usb-ohci, kmod-usb-serial, kmod-usb-serial-option, kmod-ledtrig-usbdev, usb-modeswitch, comgt, luci-proto-3g, настраиваем интерфейсы и светодиоды.

Роутер прошит, можно открывать печеньки и наливать чай.

Источник

READ  Navitel e500 magnetic прошивка
Smartadm.ru