четверг, 1 марта 2018 г.

Установка OpenWRT на Dlink DIR-615 E4

Опишу историю, как я устанавливал OpenWRT на Dlink DIR-615 E4 из-под линукс.

Решил установить неоригинальную прошивку, почитал, как это сделать на офф сайте OpenWRT: https://wiki.openwrt.org/toh/d-link/dir-615

Оказалось, что в моём случае не пришлось использовать танцы с бубном, описанные в соответствующем разделе, посвященном модификации C1 и E4. Я просто прошил через стандартный веб-интерфейс роутера.

Всё заработало сразу, кроме wifi.

Нужно было сразу смотреть на английском, а я зачем-то прочитал русскую версию, где не сказано, что в образе отсутствует wifi. Ну да ладно.

Затем, гугля кучу ненужного, нашёл, что из-за того, что у роутера всего 4 Мб флеш, на него не помещаются пакеты kmod-ath9k и wpad-mini. Я их пробовал ставить – действительно не помещаются. А другие пакеты не удаляются, т.к. вшиты.

Между тем попробовал dd-wrt ( http://www.dd-wrt.com ), всё работало, но я хотел именно OpenWRT. В мануале по прошивке OpenWRT была ссылка https://forum.openwrt.org/viewtopic.php?id=62912 , перейдя по которой были примеры, как уместить в прошивку и wifi и luci. Для этого нужно было разобраться, как эту прошивку делать самому, что описано в https://wiki.openwrt.org/doc/howto/obtain.firmware.generate .

И так, я скачал ImageGenerator, как написано. А конкретно по ссылке: https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2 , распаковал, добавил файл ./files/etc/config/wifitoggle с содержимым:

config wifitoggle
    option button    'wps'

    option persistent    '0' 
    option timer        '0'

    option led_sysfs        'd-link:blue:wps'
    option led_enable_trigger    'none' 
    option led_enable_delayon    '0'
    option led_enable_delayoff    '0'
    option led_disable_default    '0'

Запустил сборку, выключив ppp и ipv6, но включив руссификацию luci:

make image PROFILE=DIR615E4 PACKAGES="kmod-ath9k wifitoggle wpad-mini luci \
luci-i18n-base-ru -wpad -hostapd -hostapd-mini -ppp -ppp-mod-pppoe -kmod-ppp \
-kmod-pppoe -kmod-pppox -ip6tables -odhcp6c -kmod-ipv6 -kmod-ip6tables \
-luci-proto-ipv6 -luci-proto-ppp" FILES=files/

После чего появились файлы в папке ./bin/ar71xx. Два файла являются прошивками: openwrt-15.05.1-ar71xx-generic-dir-615-e4-squashfs-factory.bin – для полной прошивки со сбросом настроек, openwrt-15.05.1-ar71xx-generic-dir-615-e4-squashfs-sysupgrade.bin – для обновления существующей прошивки OpenWRT.

После dd-wrt пришлось потанцевать с бубном, как в мануале по первой ссылке. Перезагрузился на винду, через телефон скачал Firefox 13 Portable, после этого получилось прошить. В линукс как только не извращался, даже из VirtualBox запускал IE 6.

Дело в том, что я из консоли пытался прошить, т.к. dd-wrt никак не хотел использовать другую прошивку. В итоге даже там ничего не получалось, пока я из девайса не сделал кирпич где-то нагугленной командой:

mtd -e linux -r write firmware.bin linux

На самом деле нужно было:

mtd -r write firmware.bin firmware

но возникала ошибка, что этот firmware не доступен для записи. firmware.bin – любая прошивка.

Вообще, этот метод должен работать, но не на dd-wrt. Читал, что люди никак не могли файл прошивки закинуть на роутер, для этого приходилось поднимать веб-сервер на компе. Но, зная линукс, можно многими способами это сделать, не устанавливая ничего лишнего. Я сделал через netcat:

nc 192.168.1.125 9900 > /tmp/firmware.bin – на роутере;

nc -l 9900 < firmware.bin – на компе (тут вместо firmware.bin может быть любой файл, который нужно передать).

В общем прошил я снова OpenWRT, что ставил первую, затем, убедившись, что всё работает, прошил одной из своих сборок, которую сделал, как указано выше. Wifi включается, всё работате, даже установил vnstat для статистики потребления трафика.