Добрый день,
Предлагаю Вашему вниманию мини обзор последовательной SPI флеш-памяти в корпусе SOIC8 от производителя Winbond размером 16Мбайт. В этом обзоре я опишу как с минимальными затратами усилий сделать апгрейд постоянной памяти роутера TP-Link TL-MR3020.
Зачем?
Мне понадобился компактный роутер на базе Atheros с большим объемом ROM, чем предлагают производители. В частности, мне нужно было место для нескольких пакетов, чтобы организовать
APRS шлюз. Обычно в таких случаях используют внешнюю USB флеш память, но мне этот вариант не подходил, так как создавал проблемы с надежностью и занимал единственный USB-порт роутера.
Теоретические изыскания
Я провел поиски в Сети и нашел несколько вариантов расширения памяти роутера. Все они задействуют альтернативный загрузчик UBoot, требуют работы в HEX редакторе с пониманием происходящего и пайки консольного вывода к USB-TTL переходнику и работы в консоли.
Моя реализация
Мною был найден
UBoot, которому не нужна последовательная консоль.
Мною была написана
программа, которая позволяет собрать прошивку без использования HEX-редактора.
Герой обзора
Пришла в отрезке ленты:
Она же без упаковки:
Идентификаторы:
Необходимые инструменты и материалы
Паяльник, флешка, роутер и программатор CH341A.
Процесс замены
1.Выпаиваем родную флешку, считываем программатором и сохраняем в файл с именем 4mb.bin. Должен получится файл размером 4194304 байта.
2.Качаем
программу и помещаем файл 4mb.bin в одну папку с MR3020FW.exe
3.Запускаем MR3020FW.exe:
Жмем «Собрать прошивку с ART». Программа вытащит калибровки ART из оригинального дампа и соберет файл final_16mb_with_ART.bin
4.Прошиваем файл final_16mb_with_ART.bin в новую флешку, проверяем записанное и впаиваем новую флешку в роутер.
Я убил исходную флешку! Что делать?
Если содержимое исходной флешки недоступно — программа соберет прошивку без калибровочных данных. Роутер будет полностью работоспособен за исключением wifi-интерфейса.
Программная часть
1.Подключаем роутер к сетевой плате компьютера патч-кордом.
2.Назначаем сетевой плате компьютера IP: 192.168.1.2, маску:255.255.255.0.
3.Зажимаем кнопку WPS на выключенном роутере и подключаем питание.
4.Считаем вспышки светодиодов. После пятой(!) вспышки отпускаем кнопку WPS.
5.Заходим браузером на 192.168.1.1:
6.Качаем подходящую сборку OpenWRT и обновляем основную прошивку:
PS:
Вот так выглядел тестовый стенд
С наступающим Новым Годом!
Я беру обычно по 5, 10 и больше (за исключением nand — их я обычно держу по 2-5 шт максимум). Стараюсь держать актуальный набор флешей.
За софтварное решение вопроса, отдельный плюс и респект! Хотя, сам предпочитаю работать с hex- редактором, программатором и иногда дизассемблированием
а вот чтобы так воткнуть усб звук в роутер и готово? паять ничего не надо даже
Абсолютно уверен в этом способе, ни разу меня не подводил. Вот только вчера дважды снимал и ставил 25q32 с китайского преобразователя Modbus.
Но на вопрос есть прямой ответ
На работающем роутере снимите ART в файл: cat /dev/mtd4 > /tmp/backup_art.bin
И каким-то образом перепишите его себе на компьютер(TFTP?). Должен получиться файл размером 65536
В середине файла должно быть «ABEG12». Нечто похожее на вот такое:
Потом по моей инструкции соберите прошивку без 4mb.bin и залейте в новый чип. Выполните запуск по инструкции.
Сам файл backup_art.bin пролейте вот здесь(UBoot позволяет):
Хотя breed позволит поставить 32Мб флешку и на mr3020
Меня prom77 заинтриговал breed-ом. Попробую 32Мбайт на досуге.
Кстати нашел софт программатора, который совместно с CH341A декларирует возможность шить нормально чипы размером более 16Мб. Тоже на досуге проверю.
Всё никак не могу найти список поддерживаемых breed-ом последовательных флешек. Интересно каков максимальный размер?
apkservice.ru/articles/page,1,4,28-soft-dlya-programmatora-na-ch341a.html
Можно заюзать Postal софт, но тогда нестабильно. Можно взять софт CH341 версии 1.30, но я помню при автодетекте у меня был вылет.
Пока лучше Colibri нету ничего. Ну и с CH341 можно шить ATMEL контроллеры, STC вроде.
Asprogrammer тоже неплох…
Они часто в комплекте продаются.
Дайте ссылку на бинарник от китайцев, посмотрю на него. Ну и перепишу софт на свободный размер.
Вот тут можно глянуть
Этого всего можно было и не делать, а реализовать на дешевом андроид-смарте.
Или можно для других модемов прошивки делать???
github.com/pepe2k/u-boot_mod
Смотрите Supported devices.
Альтернативный UBoot нужен именно потому, что штатный не умеет распознавать большие по размеру флешки.
Мне достался с дохлой флешкой, ох и намучился в поисках art-раздела (вроде о 3220-го подошёл). Вставил какую то на 8 мегабайт, работает на dd-wrt для 2.4 Ггц сетей.
У меня 2 штуки wt3020 на MediaTek MT7620n
Софт: aprx
Есть еще вариант делать KISS TNC на базе самых дешевых Arduino. Заливается в них прошивка и паяется пяток деталей. Работает такой вариант весьма неплохо с любыми радиостанциями. Исходные коды прошивок и готовые бинарники есть по ссылкам на GitHub ТУТ (заметку писал для себя), самый нижний блок. KISS TNC на Arduino хорош тем, что можно собрать несколько штук, подключить их по USB в хаб, хаб воткнуть в роутер любой и вещать сразу на нескольких диапазонах. А по поводу aprx, если кому-то нужно, соберу под любую платформу.
Ну, для самого-самого старта и ознакомления с этим PacketRadio «жужжанием» данный проект на Arduino самое то.
Не понравилось или отпала надобность — разобрал конструкцию. Да и почти у каждого железячника валяется в столе Arduino лишняя и через одного старая LPD/PMR рация для тестов.
UBoot из моего обзора не пойдет на v1.
Вот как выглядит нормально распознанный чип в консоли:
Есть модем Technicolor TG784n v3
Модем хороший по функционалу, но залоченый оператором, работает только с портом ADSL, порт WAN неактивный. Есть прошивки под него, но они все с блокировкой. Так же есть и другие прошивки на подобный роутер, но роурер отказывается их шить. Может кто помочь сделать работающий WAN порт?
Здесь через cli сменили WAN на один из портов LAN. Думаю можно попробовать разобраться с командами и модифицировать их под свой вариант
Вам надо:
1) Разжиться программатором под вашу м/с.
2) Купить такую же, только чистую.
3) Поискать в сети дамп от такого роутера или тех, кто его может вас сделать. Не путать дам с прошивкой, вещи разные.
4) Старую м/с выпаять, а новую, с прошитым дампом впаять.
Часть пунктов можно исключить, если считать дамп с вашей, найти дамп другой в сети (с чистого, не леченого) и залить в вашу м/с.
Сорри, это коммент чтоб восстановить работоспособность?
1. Снял флешку.
2. Копеечным прогером на сн341 снял дамп.
3. В hex редакторе дописал необходимое число FF (до получения размера новой флешки) перед калибровочным разделом art.
4. Тем же прогером залил получившийся .bin на новую флешку и запаял.
5. Загрузчик увидел новый размер флешки корректно. OpenWrt нормально загрузился. (Загрузчик Breed насколько я помню)
По размещению разделов на флешке много инфы здесь:
cyber-place.ru/showthread.php?t=387
А ваша программа может собрать прошивку для 8 мегабайт флешь?
подскажите, а какая подходящая сборка? может ссылкой поделитесь… все сделать получилось, вот только не могу понять по образу для прошивки…
Загрузите последнюю стабильную версию Attitude Adjustment 12.09
Или поновее:
archive.openwrt.org/barrier_breaker/14.07/ar71xx/generic/
И tl-mr3020-v1-squashfs-factory.bin
Купил флешку по ссылке, проапгрейдил роутер, все работает на ура.
Теперь можно изобретать не обвешивая аппаратик хабами и не занимаясь жесткой экономией флеша.
От себя добавлю:
В текущем транке LEDE, чтобы не ограничивать сборку прошивки старыми 4Мб, надо изменить 4m на 16m в файле
в строках