Железо        18.02.2024   

Tl wr841n прошивка openwrt. Пошаговая прошивка OpenWRT на роутер TP-LINK TL-WR741ND

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

TP-Link продолжает потихоньку мигрировать на новые чипсеты от Mediatek. На этот раз компания выпустила новые версии популярных роутеров WR841N и WR840N.

Человек с ником svobodavac сделал начальную поддержку роутера wr840n v4. на данный момент не принят в LEDE и временно закрыт.

К сожалению, open source драйвер для Wi-Fi чипа (mt76) на данный момент ведёт себя не очень адекватно. Постоянные дисконнекты, игнорирование beacons прямо в момент передачи трафика, потери пакетов, низкая мощность сигнала (это удалось исправить прописав правильное расположение EEPROM в dts). Мне не удалось понять масштаб проблемы (касается ли это только тплинков или это общая проблема всех mt76xx-устройств).

Поэтому было решено собрать LEDE с проприетарным драйвером от MTK.

Все образы версии 17.01.

Для WR840N v4 (ВНИМАНИЕ! Тестирование на WR840N V4 не производилось! Ставить на свой страх и риск! Хотя никаких проблем быть не должно, устройства похожие, но я вас предупредил ):

FAQ:

Как устанавливать?

Установка производится только через TFTP. Тут всё стандартно, как и для остальных тплинков. Имя файла прошивки должно быть tp_recovery.bin .

Более подробная инструкция о том, как заливать прошивки через TFTP на TP-Link’и можно найти, например, (Windows-only).

Как обновлять с LEDE/OpenWrt?

Через LuCI Backup/Flash Firmware , либо sysupgrade через SSH. Обновиться можно с помощью образа sysupgrade. Образ factory пока не принимается.

Если до этого была установлена прошивка LEDE от wr840n v4 на wr841n v13, то лучше установить через TFTP (см. предыдущий пункт).

Будет ли установка через web-интерфейс?

Когда-нибудь будет. По этому поводу были дискуссии в обсуждении pull request’а, из которых ясно, что у новых прошивок новый формат заголовка. На данный момент прошивки собираются с пустым заголовком и из-за этого их можно заливать только через TFTP.

Насколько стабильно работает?

Довольно стабильно. Фатальных дисконнектов или потерь пакетов не наблюдалось.

Что точно работает и протестировано?

Сам Wi-Fi:), управление им через UCI, MultiSSID.

Что не работает?

Управление через LuCI. Связано это с тем, что LuCI получает некоторые параметры через iwinfo, который работает, однако не дружит с драйвером MTK и не отображает полностью всю текущую информацию. Собственно, фактически через LuCI можно настроить SSID, интерфейс и WEP-шифрование. За остальными настройками придется сходить в консольку:).

Также не работает сам индикатор Wi-Fi. Если очень хочется, можете в LuCI LED Configuration настроить его на интерфейс rai0, чтобы моргал, когда по вайфаю данные текут:).

Что возможно работает?

WDS и режим клиента. Не проверял, однако поддержка в драйвере имеется. Вообще, драйвер должен иметь полную поддержку вайфай чипа, на то он и проприетарный-фирменный:). Проблемы могут возникнуть на этапе трансляции UCI-конфига в конфиг mt7628_ap, который расположен отдельно и из которого, собственно, и идёт чтение конфигурации.

Wireless is disabled or not associated - вот такую фигню пишет!

Опять же, из-за недостатка информации в iwinfo. На самом деле Wi-Fi должен работать и вы должны его видеть с других устройств, просто в LuCI это пока никак не отображается.

Нет интерфейса wlan0!

Вместо wlan0, wlan1, wlan2… драйвер создаёт интерфейсы rai0, rai1, rai2…

Что по поводу репозитория пакетов?

Репозиторий core был заменён на репозиторий на моем сервере. В репозиторий core входят все собранные модули, имеющиеся в LEDE. Модули ядра с lede-project.org вы не сможете установить из-за несоответствия хэш-суммы ядра (это было сделано специально ещё в OpenWrt). Остальные репозитории (base, routing, telephony…) используются стандартные, от lede-project.org . Разве что их придётся раскомментировать в конфигах.

Как долго будет существовать core-репозиторий?

Репозиторий core я буду стараться держать максимально долго. При выходе новых билдов, пакеты к нему будут складываться в отдельный каталог, чтобы никому не ломать opkg:).

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

Почему бы не сделать pull request разрабам LEDE?

LEDE не принимает решения, содержащие несвободные компоненты. MTK драйвер как раз относится к таким. Для официальной поддержки LEDE надо править опенсорсный драйвер. Более того, не была решена проблема с заголовком прошивки, так что о pull request’е можно пока забыть.

На данный момент параллельно разбираюсь с проблемами опенсорсного драйвера и заголовком. Если проблемы будут решены – сделаю pull request.

Важно. Если вы скачаете прошивку с фирменного сайта TP-Link и прошьете ее - Ваш роутер TP-Link TL-WR1043ND, вероятнее всего, если не хотите танцы с бубнами, придется нести уже в сервис. Это потому, что в фирменную прошивку входит загрузчик, который шить в данной ситуации нельзя, а в специальной прошивке tplink.bin он вырезан (об этом вы можете почитать на сайте OpenWRT).

И еще, у роутера TP-Link TL-WR1043ND - НЕТ возможности запустить режим восстановления, когда он будет «Кирпич» без вскрытия корпуса! Даже со вскрытием корпуса роутера - придется распаивать COM порт на плате или делать выносной (имеется ввиду выводить 3 провода, как сделал я - любитель экспериментов) и делать переходник USB-COM!!!

Так что, если нет желания получить "Кирпич", не лезьте без достаточных знаний!!!
(тем не менее, я же полез, сделал из роутера по начальной неопытности «Кирпич», а позже все же восстановил его).

Что будем прошивать с прошивки OpenWRT на заводскую прошивку

Процесс возврата с OpenWRT на прошивку TP-Link

Выключаем роутер и вынимаем флэшку/жесткий диск, если у Вас загрузка OpenWRT происходит с внешнего носителя, а не с памяти роутера.

Важно. Подключение к роутеру должно быть через сетевой кабель, а не через Wi-Fi.

Далее, включаем роутер и входим в веб интерфейс роутера с OpenWRT через ip адрес.
У меня адрес роутера настроен на 192.168.1.1.
Далее, необходимо, в интернете найти оригинальную прошивку TP-Link для Вашего роутера без boot.

Важно. Прошивка должна быть обязательно без загрузчика boot. С сайта TP-Link прошивка превратит Ваш роутер однозначно в «Кирпич». Поэтому, шьем прошивку без boot, для TL-WR1043ND качаем прошивку

tplink WR1043ND.rar (прошивка в архиве - распакуйте ее),

для других производителей роутеров ищем прошивки для отката сами...

Итак, нажимаем вкладку «Система».
Во вкладке «Система» нажимаем вкладку «Резервная копия/Прошивка». Внизу снимаем галочку «Сохранить настройки» и через кнопку «Обзор» указываем путь к прошивке без загрузчика (без boot) - tplink WR1043ND.bin.

Начинается процесс прошивки, ждем его окончания.
Процесс длится менее 5 минут, при этом, нельзя выключать питание роутера.
Идем пока наливать себе кофе…

Сам процесс прошивки происходит достаточно быстро, но по горящим светодиодам роутера окончательно нельзя судить о завершении процесса, поэтому, попиваем кофе и ждем нужное время.

После истечения 3 минут прошивки набираем ip адрес роутера 192.168.1.1, появится окно авторизации, где заходим через стандартные для TP-Link логин «admin» и пароль «admin».

Может получиться так, что роутер после ввода ip адреса не отвечает - тогда, зайдите через другой браузер, а по идее, Вам необходимо просто сбросить кэш браузера, и Вы войдете в веб интерфейс роутера по умолчанию.

Примечание. Я сейчас могу ошибаться, но по моему на прошивке без загрузчика английский интерфейс (скрина к сожалению не сохранилось). Но это сути не меняет.

Заходим на сайт производителя и качаем последнюю прошивку для вашего роутера. Для TP-Link TL-WR1043ND ver.1.8 прошивку можно скачать тут

wr1043nv1_ru_3_13_11_up_boot(121102).rar (прошивка в архиве - распакуйте ее).

Прошиваем роутер последней прошивкой с сайта производителя.

Ну вот, мы вернулись к прошивке TP-Link.

Для этого, нажимаем строчку «Системные инструменты», а затем, «Заводские настройки» и нажимаем кнопку «Восстановить».

Появится окно о предупреждении сброса всех настроек по умолчанию, соглашаемся.
Ждем процесса сброса настроек по умолчанию и перезагрузки роутера.

Поздравляю! После перезагрузки роутера - Вы вернули роутер к заводской прошивке.

Роутеры лишаются своих родных прошивок по разным причинам. Желание добавить функционал, припаять USB порт или просто добавить стабильности в работу роутера.

В моём случае роутер на последней стабильной родной прошивке при 3 WiFi и 2 Ethernet потребителях подвисал 4 раза в неделю. Это не очень страшно, но и перезагружать его надоело. Хотелось стабильности. После поисков и чтения отзывов выбор пал на OpenWRT. В статье уже представлена пошаговая инструкция без ошибок, которые мне пришлось пройти.

Шаг 1, прошиваем на последнюю официальную прошивку
Первое, что стоит сделать, это обновиться и поставить последнюю родную прошивку.
вы можете найти последнюю прошивку для TL-WR741ND, для соответствующей версии оборудования.
  • Переверните роутер и уточните версию железок в нём ориентируясь по наклейке на корпусе.
  • Скачайте архив с последней прошивкой.
  • Прошейте роутер прошивкой из архива обычным способом. Системные инструменты -> Резервная копия & Восстановление (System Tools -> Firmware Upgrade).
Шаг 2, скачиваем и устанавливаем OPENWRT
Далее необходимо выбрать версию прошивки OpenWRT.

Следует использовать именно тот файл, который согласуется с версией железа вашей модели. Не пренебрегайте этим правилом! Возможны два варианта файловой системы для загрузки: JFFS2 и SquashFS.

Прежде чем продолжить описание сборки, остановлюсь немного на том, как устроена корневая файловая система OpenWRT. Она представляет собой файловую систему mini_fo, которая прозрачно объединяет две другие файловые системы: неизменяемую SquashFS, смонтированную в /rom, и изменяемую JFFS2, смонтированную в /overlay. Все файлы, которые создаются или изменяются после установки прошивки, находятся в /overlay. При удалении файлов, изначально бывших в прошивке, mini_fo просто помечает их как удаленные, сами же файлы остаются в /rom и продолжают занимать место. Как SquashFS, так и JFFS2 используют сжатие, но SquashFS дает лучшую степень сжатия, поэтому помещение всех необходимых пакетов сразу в /rom дает прошивку меньшего размера. Исключение ненужных пакетов из прошивки также позволяет сэкономить столь драгоценное место на флешке.
alt

Слово factory в названии файла значит, что такой файл вы должны заливать на ваше устройство поверх заводской (родной) прошивки. файл со словом sysupgrade применим только для обновления OpenWRT, т.е. заливается после factory прошивки.

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

Ниже представлена одна прошивка с разной аппаратной версией устройства, выбираем ту к которой принадлежит ваш роутер, для того что бы определить версию смотри Шаг 1 :

Качаем factory прошивку и шьём обычным способом. Системные инструменты -> Резервная копия & Восстановление (System Tools -> Firmware Upgrade).

Шаг 3, входим в WEB интерфейс прошивки
После успешной прошивки мы получаем рабочий роутер с включенным web-интерфейсом. Поэтому заходим в настройки прошивки через браузер. Дальнейшие действия таковы:

Вводим в адресную строку адрес роутера 192.168.1.1

Нажимаем клавишу Enter и появляется web интерфейс роутера. Мы увидим то что нам предложили ввести Username и Password. В Username вводим root , поле Password оставляем пустым. Нажимаем Login .


На этом прошивка закончилась, вы попали в web интерфейс прошивки Openwrt.

Шаг 4, настраиваем интернет соединение
Нажимаем на Network -> Interfaces -> Wan -> Edit

Выбираем нужный нам протокол, в моем случаи это PPPoE. Вводим логин от интернета в строку PAP/CHAP username , а пароль в PAP/CHAP password . Нажимаем Save & Apply .

Возвращаемся обратно в Interfaces , нажимая на этот раздел, выбираем строку WAN и нажимаем connect . Интернет настроен.

Шаг 5, настраиваем Wi-Fi соединение
Настраивается оно почти так же как и интернет соединение так что расскажу кратко.
Заходим раздел Network -> Wifi -> edit (если есть) или Add (если нет созданной). В разделе General Setup меняем ESSID , это название вашей сети, потом заходим в Wireless Security . В строке Encryption выбираем WPA-PSK/WPA2-PSK Mixed Mode . В строке Key пишем пароль от wi-fi сети. Нажимаем Save & Apply .


Возвращаемся в раздел Wifi и нажимаем connect . Wi-fi настроен.
Шаг 6, русифицируем прошивку
Для того чтобы русифицировать прошивку нам надо зайти в раздел System -> Software -> и нажать на кнопку Update List .

После этого нажимаем на Available Packages , выбираем раздел L . Находим файл с именем "luci-i18n-russian " нажимаем кнопку Install . На запрос согласны ли вы, нажимаете ок .

Языковой пакет скачали, теперь его нужно применить. Открываем раздел System -> Language and Style -> Language -> Русский . После этого нажимаем кнопку Save & Apply.

Обновляем страницу(нажимаем на клавиатуре F5 ) и видим русский интерфейс.

Шаг 7, устанавливаем пароль на маршрутизатор
Заходим в раздел Система -> Управление. Устанавливаем Пароль маршрутизатора . Нажимаем сохранить и применить .

Шаг 8, заключительный этап
-> Выполнить перезагрузку .

Это не очередное руководство, где всё разжёвано, в этой заметке я хочу обобщить свой опыт и оставить на память для себя некоторые нюансы (распиновка, цвета проводов, адреса, команды и т. д.).

Показать

Принёс мне знакомый админ роутер , вот такой:

Во время грозы у него выбило порты WAN и LAN1. Знакомым железка была прошита на DD-WRT с целью переназначения WAN-порта на какой-нибудь LAN. Я решил поставить на маршрутизаторе прошивку Open-WRT и благополучно превратил устройство в кирпич:

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

Ясно, что роутер теперь с полностью стертой или поврежденной прошивкой. При вскрытии устройства на плате обнаружен нераспаянный последовательный порт JP1:

В интернете нашёл электрическую схему кабеля:


Прозвонил разъём и узнал цвета проводов Vcc, GND, Tx и Rx (в моём случае они были такие: жёлтый, красный, синий и белый соответственно). Полная распиновка разъёма:

На плате роутера к последовательному порту подпаялся так, как указано на рисунке (последовательно слева направо - не подключен, красный, белый, синий):

Пач-корд от компьютера вставил в живой LAN-порт (LAN3). На сетевом интерфейсе компьютера установил IP-адрес 192.168.0.2/30 и настроил демон tftpd, с помощью которого файл прошивки будет залит в устройство (пользователям Windows рекомендую воспользоваться программой ) . С официального сайта TP-Link скачал прошивку . Причём (по указанию мануалов) скачивал файл без слова "boot" в имени. Положил скачанный файл прошивки в папку, настроенную в конфигурации tftpd, переименовав его в firmware.bin. Включил роутер и вставил USB-кабель в компьютер.

При включении кабеля в USB-порт компьютера он определился как новое устройство /dev/ttyUSB0 (у пользователей Windows появится новое устройство Serial Data Cable, создающее виртуальный COM-порт и требующее установки драйверов) . После запуска команды

Sudo minicom --device /dev/ttyUSB0

(пользователи Windows могут воспользоваться программой HyperTerminal, PuTTY или ) и установки скорости обмена в 115200 бод 8N1 я увидел на экране диагностические сообщения и периодически появляющуюся надпись "Autobooting in 1 seconds ...". Сразу после очередного появления этого сообщения быстро набрал на клавиатуре tpl . Система перешла в режим ожидания команд, индикаторы роутера перестали мигать и сетевое подключение, не активное до этого, стало активным.

Затем я ввёл команды для заливки прошивки в железку:

Setenv serverip 192.168.0.2

(установка IP-адреса, с которого будет залит файл прошивки в память)

Setenv ipaddr 192.168.0.1

(установка IP-адреса оживляемого устройства)

Tftpboot 0x81000000 firmware.bin

(скачивание файла прошивки с компьютера в память устройства (во временную область, начиная с адреса 0x81000000). Если при выполнении этой команды идет строчка Т Т Т Т Т Т, то это означает Timeout (нет ответа от 192.168.0.2). Должно быть заполнение экрана символами ##########.

Erase 0x9f020000 +0x3c0000

(подготовка (очистка) блока памяти с адреса 0x9f020000 под прошивку длиной 0x3c0000 байт (3932160 в десятичной системе)

Cp.b 0x81000000 0x9f020000 0x3c0000

(копирование блока памяти с адреса 0x81000000 в адрес 0x9f020000 длиной 0x3c0000 байт)

Bootm 0x9f020000

(передача управления программе по адресу 0x9f020000)

Роутер перезагрузился и стал отвечать на ICMP-запросы с адресом 192.168.0.1. Половина дела сделано, железку я поднял с родной прошивкой, но с не рабочим WAN-портом.