Увеличиваем объем памяти роутеру TP-Link

Опубликовал | 01.06.2015

Прочитав несколько обзоров уважаемого lolipop открыл для себе прошивку OpenWrt. Начала гуглить и узнал сколько всяких интересных проектов можно сделать на базе этой прошивки и роутера с USB разъемом.
В качестве примера увеличение памяти роутера TP-Link на примере TL-MR3220v2 используя память Winbond W25Q128.
Тем кому интересно прошу под кат.

Для начала захотел попробовать торрент качалку на внешний HDD который можно в любой момент отключить. Сразу же споткнулся о маленькое колличество памяти. Поиски решения привели к 2-м вариантам.
1)Покупка и использование USB хаба кому интересно здесь инструкция.
2)Увеличение установленной в роутере памяти.
Я решил идти по 2-му пути т.к. программатор есть, паяльная станция тоже.
Память заказал на Ali ссылка
Так же будет использован программатор на CH431A на который было уже несколько обзоров. Заказан был здесь
И панелька для 25 серии. Заказана была здесь

Все что вы делаете дальше, вы делаете на свой страх и риск. Не делайте шаг который вы не понимаете.

Прошивка в OpenWrt.
Еще до того как память пришла роутер был уже прошит на OpenWrt. Ничего сложного в этом нет, скачиваем прошивку для роутера с официального сервера openwrt downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/
нас интересует файл openwrt-ar71xx-generic-tl-mr3220-v2-squashfs-factory.bin
Обязательно со словом factory. Оно означает что файл предназначен для перехода с заводской прошивки. Выбираем в Web интерфейсе обновление ПО. Роутер перезагружается после чего мы получаем рабочий роутер на OpenWrt.

Прошивка.
Прошивка состоит из 3-х достаточно больших частей.
1)Загрузчик
2)Непосредственно прошивка
3)Таблица калибровок радиомодуля Wi-Fi (art)

1.Загрузчик
Он нам нужен не простой а с поддержкой 16 мегабайтных флешек. В качестве загрузчика я использую U-Boot от pepe2k.
Много информации по загрузчику есть на странице проекта
Непосредственно здесь можно скачать загрузчик под определенные модели.
Здесь список памяти поддерживаемой загрузчиком U-Boot от pepe2k.
Под загрузчик у роутеров TP-Link отводится диаппазон адресов 0x00000000-0x00020000.
Это первые 128кб флеш памяти. При этом размер скачиваемого загрузчика 64кб. Это нормально, я в дальнейшем объясню что с этим делать.
2.Прошивка
Здесь самая я столкнулся с самой большой проблемой. Нашел инструкцию по которой следовало что для того чтобы прошивка увидела всю память необходимо пересобирать ее под себя. Компьютера с линуксом не имею поэтому я продолжил поиск и наткнулся на следующее объявление (не реклама).
В которой нашел ссылку на пачку уже пропатченных прошивок. Там некоторое количество моделей среди которых был необходимый мне файл.
3.Таблица калибровок радиомодуля Wi-Fi (art)
Про таблицу и необходимость ее считывать и записывать отдельно хорошо написано по ссылке
Там предлагается считывать таблицу в оперативную память и потом как-то скачивать backup оттуда например посредством SCP, только не этого а этого. Я буду делать немного по своему с использованием программатора.

Собираем прошивку
Итак у нас уже есть файл загрузчика под вашу модель роутера + прошивка пропатченная под 16-мегабайтную память. И желательно дамп файл прошивки openwrt слитый с роутера.
Для непосредственной сборки нам нужен любой HEX редактор. Я буду использовать HEX WorkShop.
Открываем в HEX редакторе файл прошивки. Переходим в конец файла и видим что он займет
адреса только до 0x00F80000, для справки у 16 мегабайтной флешки 0x01000000 адресов. Значит нам нужно заполнить 80000 адресов.

Опять же пользуясь ссылкой понятно что нам нужно перед прошивкой добавить 0x020000 адресов под загрузчик.
Делаем это командой «Edit-Insert»

Обратите внимание. Необходимо заполнить добавляемое пространство символами FF как это показано на картинке.
После этого вставляем загрузчик в диапазон адресов 0x000000-0x010000. Я для этого выделяю адреса и вставляю командой «File-Insert File».
После этого необходимо вписать собственные Mac адрес, модель и pin. Далее цитата:
MAC адрес во всех роутерах начинается с адреса 0х1FC00. Под MAC адрес отводится, соотвественно, 6 байт.
Версия роутера начинается с адреса 0х1FD00. Запись роутера 3420 второй ревизии выглядит так: 3420000200000001
PIN начинается с адреса 0х1FE00. Длина 8 байт. PIN, например, 80751205 (тот, что вы видите на шильдике роутера) в файле прошивке будет выглядеть как 3830373531323035.
После этих действий мы заполним 0x00FA0000 от всей памяти. остается заполнить еще 0x60000 адресов. Для этого мы открываем дамп нашей прошивки и переходим на адрес 0x003A0000 и копируем все значения до 0x00400000 после чего вставляем в конец прошивки которую мы собираем. Получается как на скрине..
После этого остается самое простое. Сохраняем файл, прошиваем флешку и запаиваем в роутер. Включаем роутер, заходим на 192.168.1.1 и наслаждаемся.

Вот и все. Спрашивайте, чем смогу помогу.
P.S. спасибо всем чью информацию я так или иначе использовал в обзоре.

(c) 2015 Источник материала.

Рекламные ссылки