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

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

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

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

sudo apt-get install subversion git libncurses5-dev zlib1g-dev gawk flex libssl-dev
git clone git://git.openwrt.org/15.05/openwrt.git

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

cd openwrt
./scripts/feeds update -a
./scripts/feeds install –a

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

                partition@50000 {
                    label = "firmware";
                    reg = <0x50000 0x3b0000>;
                };

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

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

make menuconfig

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

image.png image.png

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

make -j4

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. Останется его прописать к стандартным и устанавливать пакеты.

← Предыдущая запись

Следующая запись →

1 комментарий

  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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *