This post in English

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

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

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

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

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

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

Для WR841N v13:

lede-ramips-mt7628-tl-wr841n-v13-squashfs-factory.bin

lede-ramips-mt7628-tl-wr841n-v13-squashfs-sysupgrade.bin

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

lede-ramips-mt7628-tl-wr840n-v4-squashfs-factory.bin

lede-ramips-mt7628-tl-wr840n-v4-squashfs-sysupgrade.bin

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.
Откуда был взят драйвер?
Драйвер был взят для ядра 4.1.X.X из прошивки Padavan для Asus RT-N56U. Makefile для пакета отсюда. Некоторые зависимости были взяты из репозитория witi-openwrt и, собственно, из прошивки падавана.
Насколько стабильно работает?
Довольно стабильно. Фатальных дисконнектов или потерь пакетов не наблюдалось.
Что точно работает и протестировано?
Сам Wi-Fi :), управление им через UCI, MultiSSID.
Что не работает?
Управление через LuCI. Связано это с тем, что LuCI получает некоторые параметры через iwinfo, который работает, однако не дружит с драйвером MTK и не отображает полностью всю текущую информацию. Собственно, фактически через LuCI можно настроить SSID, интерфейс и WEP-шифрование. За остальными настройками придется сходить в консольку :).

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

Что возможно работает?
WDS и режим клиента. Не проверял, однако поддержка в драйвере имеется. Вообще, драйвер должен иметь полную поддержку вайфай чипа, на то он и проприетарный-фирменный :). Проблемы могут возникнуть на этапе трансляции UCI-конфига в конфиг mt7628_ap, который расположен отдельно и из которого, собственно, и идёт чтение конфигурации.
Как настроить из консольки?
Основная дока по параметрам UCI находится тут. Сразу после первого включения вайфай уже светит с SSID “MT7628” без пароля и подключен к мосту br-lan, так что стандартную конфигурацию можно увидеть в /etc/config/wireless.
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 чуть позже, там необходимо немного прибраться и привести всё в порядок.
Можно ссылку на репу гитовую? Или патч?
LEDE Feed находится здесь: https://github.com/worm202/lede-mt7603
Почему бы не сделать pull request разрабам LEDE?
LEDE не принимает решения, содержащие несвободные компоненты. MTK драйвер как раз относится к таким. Для официальной поддержки LEDE надо править опенсорсный драйвер. Более того, не была решена проблема с заголовком прошивки, так что о pull request’е можно пока забыть.

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

Почему не протестировано на wr840n v4?
Все просто – нет железки. Прошивку для wr840n v4 я всё равно выкладываю потому что wr841n v13 по железу похож на wr840n v4.
Чем отличается wr841n v13 от wr840n v4?
Насколько мне известно, разница только в индикаторах. У wr841n v13 есть 4 LAN индикатора, тогда как у wr840n v4 он один. В остальном по железу устройства если не одинаковые, то хотя бы похожие. Прошивки LEDE друг с другом совместимые, на wr841n отлично встаёт прошивка от wr840n.
Можно ли использовать драйвер для других Wi-Fi чипов Mediatek?
По идее, да, можно. Там есть поддержка различных чипов, в том числе и недоступного для LEDE/OpenWrt MT7610E, например. Проблема в моей репе сейчас конкретно в том, что пришлось редактировать Makefile и исходники, чтобы всё это корректно собралось и работало именно на WR840N/WR841N. В итоге криво-косо-костыльно, однако собралась рабочая прошивка с нормальным Wi-Fi драйвером, который нормально работает, но всё заточено именно под два конкретных роутера. Это как раз я и пытаюсь сейчас привести в нормальный вид.
Ничо ниработат / ничо нипанятна, как вернуться обратно?
Через TFTP.

Стандартные прошивки TP-Link без boot: WR840N v4, WR841N v13.

(НЕ ИСПОЛЬЗУЙТЕ ПРОШИВКИ С САЙТА TP-LINK ПРИ ВОССТАНОВЛЕНИИ ЧЕРЕЗ TFTP! ИНАЧЕ ПОЛУЧИТЕ КИРПИЧ!)

Имя файла должно быть tp_recovery.bin.