Hame MPR-A1 прошивка OpenWRT и апгрейд флешки на 16 или 8 мегабайт

Сегодня прокачаем HAME A1, увеличив флешку и установив прошивку OpenWRT. Также подходит для HAME A2 и A5

Вот мой фулфлеш после всех издевательств над ним: fullflash_16mb.zip. Использовать его рекомендую только для тестов или в крайнем случае, так как вполне вероятно что ваш конкретный HAME сделан на другом железе и с другим загрузчиком. В конце концов гораздо надежнее сделать все самому, да и не так уж и сложно.

1) Собираем свой OpenWRT. Для этого ставим например Ubuntu на виртуалку. Заходим на нее по SSH, выполняем:

Кстати можно собрать и другую версию OpenWRT, какие есть версии можно посмотреть тут https://wiki.openwrt.org/doc/howto/buildroot.exigence . Я все что далее делал на 15.05

Для Hame MPR-A1 открываем файл openwrt/target/linux/ramips/dts/MPRA1.dts и в разделе

…меняем 0x3b0000 на 0xfb0000 для 16 мб, или на 0x7b0000 для 8 мб флешки.

Затем выполняем

Выберем LuCI > 1. Collections > luci и Network > SSH > openssh-server

image.png image.png

В принципе можно еще много чего выбрать, в зависимости от ваших задач. Флаг “*” означает, что пакет будет скомпилирован и включен в прошивку, в флаг “M” значит, что пакет будет просто скомпилирован. Флаг “M” нужен чтобы скомпилировать нужные нам пакеты, так как пакеты из официальных репозиториев, которые взаимодействуют с ядром, на нашу прошивку устанавливаться не будут. Потом запускаем сборку

2) Пока компилируется, перепаиваем флешку и перезаливаем фулфлеш со старой флешки на новую.

  • Для этого нам понадобится программатор. Можно купить рублей за 200, можно сделать самому минут за 10. Как сделать описано тут: Программатор SPI Flash своими руками.
  • Выпаиваем флешку и сливаем фабричный фулфлеш. Он состоит из загрузчика, пары разделов для хранения разных настроек и самой прошивки.
  • Берем этот фабричный фулфлеш и заливаем его по адресу 0 в новую флешку. Но предварительно мы должны его немного модифицировать. Открываем его в WinHEX и по адресу 105720 (адрес в десятичной системе) меняем 40 00 на 00 01 (для 8 мегабайтной флешки меняем на 80 00, ну то есть четверку на восьмерку).

То есть находим это:

image

и меняем на это (для 16 мб флешки):

image

Сохраняем. Кстати по адресу 105720 у вас может быть совсем другие чиселки, это зависит от версии загрузчика, менять бездумно не следует, в этом случае необходимо найти нужное место для замены. Найти его можно по этим байтам через поиск:

image

Зачем это было нужно? Чтобы наш новый загрузчик позволил перепрошивать HAME через UART по TFTP, используя прошивки большего размера.

  • Перезаливаем измененный нами фулфлеш на новую флешку по адресу 0 (ну то есть с самого начала):

image

Все, мы подготовили новую флешку.

3) Теперь будем прошивать OpenWRT.

Прошивка OpenWRT: способ 1

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

uart_adapter

У моего экземпляра UART был на задней части где аккумулятор, проще впаять туда такой разъем:

uart_hame.jpg

Подключаемся через Putty к ком порту UART и ждем этот момент при загрузке:

image

Тут надо успеть нажать “2” и теперь соединить HAME и вашу домашнюю сеть, либо напрямую подключить к компьютеру. Роутер предложит выставить его IP и IP сервера TFTP, откуда будем грузить прошивку. Настроим TFTP:

image.png

Тем временем OpenWRT скомпилировалась. Берем файл openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_rt305x/openwrt-ramips-rt305x-mpr-a1-squashfs-sysupgrade.bin и закинем его в папку, указанную в TFTP сервере. А в HAME пишем:

tftp_hame.png

После нажатия Enter начнется прошивка, а роутер сам загрузится в новую OpenWRT:

image

Прошивка OpenWRT: способ 2

Если первый способ прошивки по каким либо причинам не сработал, то берем файл openwrt-ramips-rt305x-mpr-a1-squashfs-sysupgrade.bin и заливаем его по адресу 327680 на новую флешку через программатор:

image

Впаиваем, запускаем, прошивка готова. Не нужен UART, зато нужно паять 🙂

Что в итоге?

Куча свободного места для творчества 🙂

image.png

Так как мы сами скомпилировали ядро OpenWRT, из официальных репозиториев многие пакеты нам не подойдут. Поэтому придется собирать нужные нам пакеты самим, выбирая их в make menuconfig — устанавливая флаг “M” напротив нужного пакета. Потом они появятся в папке openwrt/bin/ramips/packages. В принципе, если весь этот каталог закинуть на какой-нибудь HTTP сервер, то мы получим свой готовый репозиторий для OpenWRT. Останется его прописать к стандартным и устанавливать пакеты.

← Previous post

Next post →

1 Comment

  1. kissste

    Hello

    1/ How do I create a fullflash?

    I have configured and built openwrt — using make

    I have got a bunch of .bin files

    rw-r—r— 1 steve steve 165954648 May 4 22:47 OpenWrt-ImageBuilder-ramips-rt305x.Linux-x86_64.tar.bz2 -rw-r—r— 1 steve steve 10657721 May 4 22:46 openwrt-ramips-rt305x-a5-v11-initramfs-uImage.bin -rw-r—r— 1 steve steve 3145762 May 4 22:46 openwrt-ramips-rt305x-a5-v11-squashfs-factory.bin -rw-r—r— 1 steve steve 3145732 May 4 21:38 openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin -rw-r—r— 1 steve steve 9830400 May 4 22:46 openwrt-ramips-rt305x-root.squashfs -rw-r—r— 1 steve steve 1215402 May 4 22:45 openwrt-ramips-rt305x-uImage.bin -rw-r—r— 1 steve steve 10656173 May 4 22:45 openwrt-ramips-rt305x-uImage-initramfs.bin -rwxr-xr-x 1 steve steve 3767844 May 4 22:45 openwrt-ramips-rt305x-vmlinux.bin -rwxr-xr-x 1 steve steve 3772856 May 4 22:45 openwrt-ramips-rt305x-vmlinux.elf -rwxr-xr-x 1 steve steve 13082124 May 4 22:45 openwrt-ramips-rt305x-vmlinux-initramfs.bin -rwxr-xr-x 1 steve steve 13087136 May 4 22:45 openwrt-ramips-rt305x-vmlinux-initramfs.elf drwxr-xr-x 10 steve steve 4096 May 4 21:39 packages

    but what I’m after is a file that I can write starting 0x0

    a fullflash

    including uboot for 32MB RAM.

    2/ I would like to modify uboot delay wait in that fullflash. Any ideas?

    Thank you very much for your help, Steve

Добавить комментарий