Сегодня прокачаем HAME A1, увеличив флешку и установив прошивку OpenWRT. Также подходит для HAME A2 и A5
Вот мой фулфлеш после всех издевательств над ним: fullflash_16mb.zip. Использовать его рекомендую только для тестов или в крайнем случае, так как вполне вероятно что ваш конкретный HAME сделан на другом железе и с другим загрузчиком. В конце концов гораздо надежнее сделать все самому, да и не так уж и сложно.
1) Собираем свой OpenWRT. Для этого ставим например Ubuntu на виртуалку. Заходим на нее по SSH, выполняем:
1 2 |
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
1 2 3 |
cd openwrt ./scripts/feeds update -a ./scripts/feeds install –a |
Для Hame MPR-A1 открываем файл openwrt/target/linux/ramips/dts/MPRA1.dts и в разделе
1 2 3 4 |
partition@50000 { label = "firmware"; reg = <0x50000 0x3b0000>; }; |
…меняем 0x3b0000 на 0xfb0000 для 16 мб, или на 0x7b0000 для 8 мб флешки.
Затем выполняем
1 |
make menuconfig |
Выберем LuCI > 1. Collections > luci и Network > SSH > openssh-server
В принципе можно еще много чего выбрать, в зависимости от ваших задач. Флаг “*” означает, что пакет будет скомпилирован и включен в прошивку, в флаг “M” значит, что пакет будет просто скомпилирован. Флаг “M” нужен чтобы скомпилировать нужные нам пакеты, так как пакеты из официальных репозиториев, которые взаимодействуют с ядром, на нашу прошивку устанавливаться не будут. Потом запускаем сборку
1 |
make -j4 |
2) Пока компилируется, перепаиваем флешку и перезаливаем фулфлеш со старой флешки на новую.
- Для этого нам понадобится программатор. Можно купить рублей за 200, можно сделать самому минут за 10. Как сделать описано тут: Программатор SPI Flash своими руками.
- Выпаиваем флешку и сливаем фабричный фулфлеш. Он состоит из загрузчика, пары разделов для хранения разных настроек и самой прошивки.
- Берем этот фабричный фулфлеш и заливаем его по адресу 0 в новую флешку. Но предварительно мы должны его немного модифицировать. Открываем его в WinHEX и по адресу 105720 (адрес в десятичной системе) меняем 40 00 на 00 01 (для 8 мегабайтной флешки меняем на 80 00, ну то есть четверку на восьмерку).
То есть находим это:
и меняем на это (для 16 мб флешки):
Сохраняем. Кстати по адресу 105720 у вас может быть совсем другие чиселки, это зависит от версии загрузчика, менять бездумно не следует, в этом случае необходимо найти нужное место для замены. Найти его можно по этим байтам через поиск:
Зачем это было нужно? Чтобы наш новый загрузчик позволил перепрошивать HAME через UART по TFTP, используя прошивки большего размера.
- Перезаливаем измененный нами фулфлеш на новую флешку по адресу 0 (ну то есть с самого начала):
Все, мы подготовили новую флешку.
3) Теперь будем прошивать OpenWRT.
Прошивка OpenWRT: способ 1
Сначала надо подключиться по UART к нашему роутеру. Для этого есть много всяких адаптеров, которые можно купить рублей за 150, а можно сделать из старого кабеля для телефона:
У моего экземпляра UART был на задней части где аккумулятор, проще впаять туда такой разъем:
Подключаемся через Putty к ком порту UART и ждем этот момент при загрузке:
Тут надо успеть нажать “2” и теперь соединить HAME и вашу домашнюю сеть, либо напрямую подключить к компьютеру. Роутер предложит выставить его IP и IP сервера TFTP, откуда будем грузить прошивку. Настроим TFTP:
Тем временем 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 пишем:
После нажатия Enter начнется прошивка, а роутер сам загрузится в новую OpenWRT:
Прошивка OpenWRT: способ 2
Если первый способ прошивки по каким либо причинам не сработал, то берем файл openwrt-ramips-rt305x-mpr-a1-squashfs-sysupgrade.bin и заливаем его по адресу 327680 на новую флешку через программатор:
Впаиваем, запускаем, прошивка готова. Не нужен UART, зато нужно паять 🙂
Что в итоге?
Куча свободного места для творчества 🙂
Так как мы сами скомпилировали ядро OpenWRT, из официальных репозиториев многие пакеты нам не подойдут. Поэтому придется собирать нужные нам пакеты самим, выбирая их в make menuconfig — устанавливая флаг “M” напротив нужного пакета. Потом они появятся в папке openwrt/bin/ramips/packages. В принципе, если весь этот каталог закинуть на какой-нибудь HTTP сервер, то мы получим свой готовый репозиторий для OpenWRT. Останется его прописать к стандартным и устанавливать пакеты.
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