Portfolio Обо мне Блог
24 June 2020
HARDWARE DDWRT

В этой статье я решил рассказать, как можно накатить стороннюю прошивку на роутер LINKSYS EA6500V2. Нашей конечной целью будет установка FreshTomato. Почему именно ее? Тут все очень просто, на главной странице сайта скрин с темной темой.

screen

В отличие от OpenWRT DDWRT (и все что на ней основано) работает в readonly режиме поэтому для хранения настроек нужен особый раздел во флеш памяти или отдельный чип. В нашем случае применяется первый вариант и данный раздел все называют NVRAM. Проблема заключается в том что дефолтный загрузчик поддерживает раздет на 32кб, а FreshTomato нужно 64кб. Поэтому план действий вот какой:

  1. Заставить роутер прошиваться (в теории это можно сделать через режим восстановления прошивки, описанный в 3-м пункте, но к сожалению я узнал о его существовании только когда приступил к реализации 3-го пункта).

  2. Установить легкую DDWRT.

  3. Через нее поставить кастомный загрузчик - CFE.

  4. Установить FreshTomato.

Откат до прошивайки

Для начала необходимо подключиться к админки роутера. Для этого необходимо подключить роутер к питанию и соединить витой парой с компом (LAN порт). Далее все просто заходим на 192.168.1.1, пароль admin. Далее переходим в меню прошивки и смотри там версию.

version

Если у вас стоит 1.1.40.166281 и ниже то вы везучий человек скачиваем ddwrt и устанавливаем ее через это меню. После можно переходить к пункту 2. Если нет, то про попытки обновления прошивки на кастом или отката вылезет вот какое сообщение:

message

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

downgrade

После нажатия на кнопку начнется процесс пере прошивки, закончится тогда, когда перестанет мигать диод на плате. Этот процесс можно повторять до бесконечности роутер будет зашивать все прошивки которые сохранились у него в памяти. Задача получить прошивку ниже 1.1.40.166281 если получили то зашиваем dd-wrt как описано выше.

К сожалению, есть вероятность, что все прошивки сохраненные на устройстве слишком новые и тогда придется зашивать прошивку в ручную. Для этого нам потребуется usb->UART переходник, типа такого и разобрать роутер.

teardown

Здесь нас интересует белый разъем посередине, вот его распиновка:

pin

Подключаем туда usb-uart. Далее берем любой эмулятор терминала (Putty или MobaXterm для windows, picocom для linux), выставляем скорость 115200 остальное по дефолту. После подключения жмем enter и система попросит ввести логин и пароль - root admin. Вывод системной информации ведется тоже в этот порт, поэтому в процессе работы может дополнительно сыпаться куча строк.

Linksys07634 login: admin
Password:
/ $

Для дальнейших манипуляций потребуется доступ в интернет т.к. мы будем подгружать прошивку.

cd /tmp
wget ftp://ftp.dd-wrt.com/betas/2013/12-24-2013-r23204/linksys-ea6500v2/linksys-ea6500v2-webflash.bin
flashcp -v linksys-ea6500v2-webflash.bin /dev/mtd2
reboot

Кастомное CFE

Ждем пока система загрузится, а после заходим через браузер по адресу 192.168.1.1. Там предложат ввести логин и пароль, вводим что-то простое (admin admin), т.к. нам далее придется ставить другую прошивку. Далее у меня все зависло и я отключил питание роутера. После перезагрузки веб интерфейс начал работать.

Далее необходимо перейти на вкладку Services, и включить Secure Shell -> SSHd.

Далее необходимо скачать этот архив Flash Linksys EA6500v2 with 3rd Party Firmware.7z (если в будущем ссылка побьется, то можно обратится ко мне или попробовать найти архив по названию) и в нем пропачить новый CFE. Для этого в винде переходим в Flash Linksys EA6500v2 with 3rd Party Firmware\Tools\CFEEdit.exe открываем в нем linksys_ea6500_cfe.bin далее в поля MAC и WPS (без "-") вводим значения написанные с обратной стороны роутера. После чего сохраняем новый получившийся файл как new_cfe.bin.

Необходимо сделать бекап текущего файла CFE. Для этого переходим по ссылке и сохраняем его где-то, на всякий случай.

Далее необходимо доставить новый сгенерированный файл внутрь роутера, для этого можно использовать софт из архива. Запускаем Tools\WinSCP-5.9.6-Portable\WinSCP.exe и выставляем следующие параметры:

File protocol: SFTP
Host name: 192.168.1.1
Port: 22
User name: root
Password: admin

Заходим в правом экране в /tmp/root и копирует туда new_cfe.bin. Закрываем WinSCP.

После чего необходимо зайти в консоль роутера через ssh (который мы включили выше) или UART, в любом случае логин и пароль - root admin. Увидим следующее приглашение.

==========================================================

 ____  ___    __        ______ _____         ____  _  _
 | _ \| _ \   \ \      / /  _ \_   _| __   _|___ \| || |
 || | || ||____\ \ /\ / /| |_) || |   \ \ / / __) | || |_
 ||_| ||_||_____\ V  V / |  _ < | |    \ V / / __/|__   _|
 |___/|___/      \_/\_/  |_| \_\|_|     \_/ |_____|  |_|

                       DD-WRT v24-sp2
                   http://www.dd-wrt.com

==========================================================
Jan  1 00:34:07 login[9235]: root login on 'console'

BusyBox v1.21.1 (2013-12-24 04:32:20 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

root@DD-WRT:~# 

Далее нужно записать на флеш память скопированный выше CFE, выполнив следующие команды:

mtd unlock /dev/mtd0
mtd write -f /tmp/root/new_cfe.bin /dev/mtd0
reboot now

Установка FreshTomato

Ждем включение роутера, после чего заживаем кнопку reset на 10-15с, светодиод должен сначала вспыхнуть а потом погаснуть. После этого заходим на 192.168.1.1, должно появятся такое окно:

update

Нажимаем Restore default NVRAM values, потом выбираем файл прошивки freshtomato-EA6500v2-ARM_NG-2020.3-AIO-64K.trx (или более новой) и жмем Upload. Ждем когда роутер прошьется. Проверить то, что он включился можно пингом: ping 192.168.1.1.

Здесь у меня возникла проблема, какая именно я не понял, но прошивка не стартовала. Из такой ситуации есть следующий выход, режим восстановления прошивки:

  1. Необходимо отключить питание
  2. Включить с нажатой кнопкой Reset, при этом диод должен начать мигать раз в 3 секунды, если этого не произошло возвращаемся к 1.
  3. Выставляем себе ip адрес 192.168.1.2 маску 255.255.255.0 шлюз 192.168.1.1.
  4. Соединяем LAN4 и наш пк витой парой.
  5. Проверяем жизнеспособность роутера ping 192.168.1.1.
  6. Отправляем файл через CMD (PowerShell) винды tftp -i 192.168.1.1 put FW_EA6500v2_1.1.41.183873_prod.img, в Win по умолчанию TFTP отключен! Идем в пуск -> панель управления -> удаление программ -> вкл/выкл компонентов Windows, активируем TFTP там. В CMD получаем что-то типа Transfer successful: 3706880 bytes in 7 seconds, 529554 bytes/s значит все загрузилось.

Далее необходимо сбросить NVRAM. Для этого отключаем роутер от питания и включаем с нажатой кнопкой vps. Через 10-15с диод на плате начнет мигать - значит можно отпускать.

Тут нужно не забыть вернуть обратно динамическое получение ip адреса.

Ждем загрузки и заходим в 192.168.1.1.

first

Настройка FreshTomato

Первое что бросается в глаза, это то что тема не соответствует скрину в начале статьи, чтобы это поправить переходим Administration -> Color Scheme -> Advanced Dark. После чего получаем:

second

После чего делаем то что от нас просит прошивка - установить пароли для WiFi и запретить сбор информации про ваше устройство.

Интересные ссылки рас, два. Также есть страничка на wiki_ddwrt.