Cоздаём свою прошивку open-wrt для tp-link tl-mr 3020

openwrt

Для чего нужна своя прошивка open-wrt для tp-link tl-mr3020

Иногда бывает что процесс допиливания прошивки приходится повторять, например если пришлось откатиться к дефолтной прошивке, или если куплен новый роутер. Если нет желания каждый раз заниматься установкой пакетов и редактирование конфигов, то можно один раз настроить сборку своей прошивки open-wrt, в которую будут включены только те программы которые вам нужны, и уже с необходимыми настройками.  А если надо будет поделиться результатом, то не  придется писать подробную инструкцию так как можно  просто выложить  прошивку.

Далее будет описан процесс создания своей прошивки open-wrt для tp-link tl-mr3020 в linux.

ВНИМАНИЕ!!! При использовании прошивки с этого сайта или собранной самостоятельно можно получить неработающий роутер. В этом случае, восстановление работоспособности возможно только путем разборки роутера и подключения к технологическому разъёму.

Получаем исходники прошивки open-wrt для tp-link tl-mr 3020

Скачиваем исходники open-wrt:

svn co svn://svn.openwrt.org/openwrt/trunk/ openwrt

Переходим в директорию с исходниками:

cd openwrt

Обновляем описание пакетов:

./scripts/feeds update -a

Создаём симлинки в директории  package/feeds:

./scripts/feeds install -a

Выполняем проверку, есть ли все необходимые  программы:

make prereq

На моём компьютере, например, не хватало libncurses, zlib и gawk, устанавливаю их:

apt-get install libncurses5-dev zlib1g-dev gawk

Конфигурируем прошивку open-wrt для tp-link tl-mr 3020

Для конфигурирования выполняем команду:

make menuconfig

выбираем в меню Target-Profile наш роутер tp-link tl-mr 3020

Далее выберем какие модули ядра linux будут включены в нашу прошивку. При выборе модуля возможно два варианта, первый  когда модуль  помечен буквой [M] , в этом случае он компилируется отдельно от ядра и упаковывается в отдельный пакет, который надо ставить при помощи opkg.  Во втором случае если выбранный модуль выделен [*],  то  он вкомпиливается в ядро linux. Нужный вариант выбирается клавишей пробел.

Добавляем в сборку open-wrt модули для работы с  преобразователями USB<->RS232

Для этого идем в Kernel Modules->USB support, и выбираем следующие модули: kmod-usb-acm, kmod-usb-serial, kmod-usb-serial-cp210x, kmod-usb-serial-ftdi, kmod-usb-serial-pl2303

 

Добавляем в прошивку tp-link tl mr 3020 модули для работы с web-камерами

Для этого идем в Video Support и выбираем модули: kmod-video-core kmod-video-uvc kmod-video-videobuf2

Добавляем в сборку open-wrt модули для работы со звуком

Идем в  Sound Support и добавляем модули: kmod-sound-core kmod-usb-audio

Добавляем в прошивку необходимые программы

Заходим в Multimedia и  выбираем mjpg-streamer

После того как конфигурация завершена выходим, выбрав пункт EXIT, и сохраняем изменения, нажав YES.

Настройка конфигов для tp-link tl-mr3020

Далее сделаем так, что бы после прошивки роутер сразу был настроен как надо.

Переходим в директорию с файлами, которые будут помещены в прошивку:

cd target/linux/ar71xx/base-files/

Все что мы добавим в эту директорию будет в прошивке роутера.

Но с конфигами есть один нюанс, дефолтные конфиги должны лежать в etc/defconfig

Создаем директорию для настроек по умолчанию:

mkdir etc/defconfig/tl-mr3020

Создаем файл с настройками сети:

vim etc/defconfig/tl-mr3020/network

Ну и приводим к тому виду который нам нужен, например вот к такому:

config interface loopback
        option ifname    lo
        option proto     static
        option ipaddr    127.0.0.1
        option netmask   255.0.0.0
 
config interface wifi_sta
        option ifname    wlan0
        option proto     static
        option ipaddr    192.168.1.123
        option netmask   255.255.255.0
        option gateway   192.168.1.1
        option dns       192.168.1.1
 
config interface lan
        option ifname    eth0
        option proto     static
        option ipaddr    192.168.2.2
        option netmask   255.255.255.0

С настройками wi-fi поступим точно так же:

vim etc/defconfig/tl-mr3020/wireless

Настраиваем на работу в режиме клиента:

config wifi-device  radio0
        option type        mac80211
        option channel     auto
        option hwmode      11ng
        option phy         phy0
 
config wifi-iface 
        option device      radio0
        option network     wifi_sta
        option mode        sta
        option ssid        SkyNet
        option encryption  psk2
        option key         terminator

Изменяем файл настроек для mjpg-streamer:

vim feeds/packages/multimedia/mjpg-streamer/files/mjpg-streamer.config

Задаём необходимые настройки:

config mjpg-streamer core
option enabled     1
option device      /dev/video0
option resolution  320x240
option fps         10
option www         /www/webcam
option port        8080

Компиляция прошивки open-wrt на tp-link tl-mr3020

Наконец-то дошли до этапа компиляции, выполняем:

make

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

Если же сборка не прошла, то что бы понять в чем дело можно запустить компиляцию с выводом дополнительной информации:

make V=99

 

Установка прошивки open-wrt на tp-link mr 3020

Собранная прошивка лежит тут:   bin/ar71xx/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin

Если на роутере установлена родная прошивка, то для установки надо воспользоваться WWW интерфейсом.

Если же уже стоит open-wrt, то что бы обновить прошивку,  надо сначала скопировать её на роутер:

scp bin/ar71xx/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin root@192.168.1.1:/tmp

после этого на роутере надо выполнить команду:

mtd -r write /tmp/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin firmware

после того как в консоли появиться Rebooting … процесс закончен.

Прошивку open-wrt для tp-link tl mr 3020, полученную по этой инструкции можно скачать тут.

 

Запись опубликована в рубрике Использование linux с метками , . Добавьте в закладки постоянную ссылку.

Один комментарий: Cоздаём свою прошивку open-wrt для tp-link tl-mr 3020

  1. Fozzy говорит:

    а где, сама прошивка, которую предложили скачать???

  2. Артём Двинин говорит:

    Упс.. а прошивки то и нет. Спасибо, что сказали. Сейчас еще раз соберу и выложу.

  3. Артём Двинин говорит:

    выложил

  4. Fozzy говорит:

    Прошивку установил, спасибо.
    Подскажите, что дальше:
    1)Wi-Fi как включить (не виден он),
    2)как на камеру выйти и из облака в том числе(Logitech c270, есть она в списке совместимости с линухом),
    3)как веб-морду поставить,
    4)как прикрутить usb-модем huawei ec1260-2 (потому что по вафле зайти не получилость и ssh по ethernet ).
    Заранее спасибо.

  5. Артём Двинин говорит:

    Буду отвечать по-порядку:
    1) wi-fi не виден, т.к. роутер настроен на работу в режиме клиента, т.е. он сам подключается к wi-fi роутеру. Что бы подключение прошло успешно надо что бы ID сети было SkyNet, пароль — terminator, а тип шифрования psk2. Для того что бы запустить в режиме точки доступа надо изменить конфиг /etc/config/wireless.
    2) Не совсем понял что значит «выйти из облака».
    Для того что получить изображение с web камеры надо просто набрать в браузере IP адрес роутера.
    3) web-морду для чего? у меня сейчас нет готовых файлов, но можно поставить на роутер простой web сервер ( например lighttpd) и наваять какую угодно web-морду.
    4) с usb модемами пока не разбирался. А доступ по wi-fi проверил — работает. по ethernet доступ тоже работает но почем-то только если роутер подключился к сети SkyNet, при этом подключаться надо не по ssh а при помощи telnet, т.к. после перепрошивки пароль root’а надо заново задавать.

  6. Дмитрий говорит:

    А модули для звука зачем?
    На роутере же нет звуковой карты

    Для этого идем в Kernel Modules->USB support, и выбираем следующие модули: kmod-usb-acm, kmod-usb-serial, kmod-usb-serial-cp210x, kmod-usb-serial-ftdi, kmod-usb-serial-pl2303

    и это для чего все?
    Тема не раскрыта, для какой цели собиралась своя прошивка?

  7. Артём Двинин говорит:

    Прошивку собирал для экспериментов, по этому и добавил интересующие меня модули.

    Модули для звука — что бы подключить usb звуковую карту.
    Модули для преобразователей usb rs232 — что бы можно было подключить микроконтроллер и управлять им.
    kmod-usb-acm так же потребуется при использовании usb модема.

    А заметка о том, как можно собрать свою прошивку и заточить ее именно под свои цели.

  8. oldi говорит:

    на базе mr3020 хочу сделать небольшой вебсервер….желательно с wordpress….
    не могу найти на него mysql на аналоге sqlite3 неразобрался как создать бд c юзер пароль….она создает файл и все ..

  9. Артём Двинин говорит:

    Когда-то ставил wordpress на openwrt, который работал на asus wl500gp, и он жутко тормозил.
    Мне кажется, что роутер не самая подходящая платформа для сайта на wordpress.

  10. Алексей говорит:

    Не могу утверждать что работает mysql на openwrt, но посмотрите этот мануал http://wiki.openwrt.org/doc/howto/lamp

  11. Bobby_ii говорит:

    Первый вопрос — где и в чем делается всё, что описано вами (ПО, среда)???
    Если у меня Виндовс что делать?

    Второй — чем заходить на роутер, по какому порту, … чтобы смотреть видео с ВК? Пока я набирая iP роутера выхожу в Веб-интерфейс (что в общем-то естественно).

    Прошивку пока не собирал — действовал методом установки модулей.
    Прошивка ОпенВРТ + Люси. Роутер TP-Link TL-WR842ND
    Но собирать скорее всего придется…
    Звуковая карта (E-MU 0204 USB) подцепилась нормально.
    Удалось запустить интернет-радио и поиграть файлы с компьютера (и-радио можно хоть на 24/7 включать, а вот для каждого файла — надо свое заклинание вводить).
    Плеера madplay и aplay работают, но не «кушают» хай-резов.
    mpd «объездить» не удалось — не понял, чего он хочет.
    начнем с того, что «фулл» не лезет т.к. занимает 4Мб
    мини скорее всего обладает недостаточным функционалом (как заявлено)

  12. Bobby_ii говорит:

    Результат такой:
    — работает
    — не потребляет лосслесс (только МРЗшки и ВаВы, переводить всю коллекцию в ВаВ … неее.)
    — управляется из консоли

    Чего хотелось бы:
    — вставить в прошивку mpd-full
    — понять, каких настроек он хочет — почему-то про это нигде не написано (типа как само собой разумеющееся)
    И главное — хочу в веб-морду страничку управления звуком где было бы:
    — выбор ЗК
    — выбор АПИ (как я понял, присутствуют alsa и OSS)
    — выбор выхода/входа ЗК
    — «руление» клоком (может — выбор рулилки клоком) авто(из композиции)/вручную
    — выбор регулятора громкости/управление им (или тупо все «движки» вывести)
    — некий плейлист.

  13. Bobby_ii говорит:

    Пока это всё в ручном режиме происходит:
    cat /proc/asound/cards выдает список ЗК
    cat /proc/asound/modules спизок записывающих у-в
    arecord -l то-же самое
    amixer contents какими устройствами можно управлять из микшера
    amixer -c 0 — sset ‘Clock rate Selector’ 0 в моем случае — управление клоком

  14. Bobby_ii говорит:

    вгет -q -O — фтр_192_168_0_226_a.mp3 | madplay -i -S -d — #слушаем a.mp3, находящегося в корне папки ftp-сервера на компе.
    вгет -q -O — хттп_radio,sampo,ru_modern,mp3 | madplay -i -S -d -# слушаем радио «Модерн»
    как видите, технически всё реализуемо, ничего особо сложного. Кроме того, что я не умею писать веб-морды.
    протоколы пришлось убрать и кое-что перевети на русский т.к. движок форума их не пропускает — пишет, «ОПАСНО»

  15. Артём Двинин говорит:

    Среда — linux debian, но подойдет и ubuntu. И, наверно, другие дистрибутивы linux.
    Если у Вас виндовс, то можно поставить виртуальную машину, и на неё linux, но компиляция будет занимать больше времени.
    На роутер заходить обычным web-браузером, у mjpg-streamer’a порт по-умолчанию 8080.

  16. Артём Двинин говорит:

    Спасибо за идею! Как появится свободное время, попробую сделать web-морду, что бы получилось wi-fi интернет-радио.

  17. Артём Двинин говорит:

    Ага, движок он такой, с ним не забалуешь :)

  18. Bobby_ii говорит:

    Очень хочется плеер, который:
    — работает без ресамплинга (только самый необходимый, н-р 16 бит в 24 )
    — переключает ЗК в нужный режим
    Я пробовал madplayer — он потребляет только МПЕГи!!! Даже ВаВы не разумеет!!!

    aplay маниакально пытается всё отресамплить в 48к.
    Например:
    вгет -q -O — ……/16_44.wav | aplay —disable-resample —disable-format —disable-softvol —
    Playing WAVE ‘stdin’ : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    aplay: set_params:1059: Sample format non available
    Available formats:
    — S24_3LE
    ладно, убираем —disable-format
    вгет -q -O — ……/16_44.wav | aplay —disable-resample —disable-softvol —
    Playing WAVE ‘stdin’ : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    Warning: rate is not accurate (requested = 44100Hz, got = 48000Hz)
    please, try the plug plugin (-Dplug:default)
    При этом из динамиков раздается вполне характерное хрипение на фоне звука, карточка 100% в режиме 44100, файл 100% 44100 (10 секунд СД-рипа)
    (клок карточки устанавливается сл. образом:
    amixer -c 0 — sset ‘Clock rate Selector’ 0
    0 — 44100, 1 — 48000, 2 — 88200, 3 — 96000, 4 — 176400, 5 — 192000)

    Ладно, добавим чего _оно_ хочет: -Dplug:default
    вгет -q -O — …../16_44.wav | aplay —disable-resample —disable-softvol -Dplug:default —
    Playing WAVE ‘stdin’ : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    Warning: rate is not accurate (requested = 44100Hz, got = 48000Hz)
    please, try the plug plugin
    Из динамиков — шум с хрипом.
    а вот если ставим ЗК в 48000 (amixer -c 0 — sset ‘Clock rate Selector’ 1) — получаем вполне нормальное звучание … но почему-то через раз
    вгет -q -O — …………………/16_44.wav | aplay —disable-resample —disable-softvol —
    Playing WAVE ‘stdin’ : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    Warning: rate is not accurate (requested = 44100Hz, got = 48000Hz)
    please, try the plug plugin (-Dplug:default)
    с -Dplug:default — опять только шум.

    В общем, надо найти какой-то адекватный способ засовывать ВАВы в ЗК

  19. Bobby_ii говорит:

    Есть замечательный плеер DeadBeef для линуха.
    Вполне хорошо работает.
    Есть он и для Андроида.
    Можно и с консоли.
    Но насколько могу понять, а) он будет не маленьким б) сомневаюсь, что он есть для ОпенВРТ.

  20. Bobby_ii говорит:

    Ну вот. Главное — пожаловаться.
    aplay не такой уж маньячный пересжиматель … если сказать ему играть прямо в у-во:
    amixer -q -c 0 — sset ‘Clock rate Selector’ 0 && вгет -q -O — …/16_44.wav | aplay -D plughw:0,0 —
    amixer -q -c 0 — sset ‘Clock rate Selector’ 5 && вгет -q -O — …/24_192.wav | aplay -D plughw:0,0 -

  21. Артём Двинин говорит:

    Спасибо Вам за предоставленную информацию, уверен, она много кому пригодится!

  22. fizick говорит:

    А что если ваша прошивка втает нормально а вот собранная таким же способом (по defconfig на mr3020) стартует но после нескольких секунд перезагружается?
    на этом месте(получено по serial-port):
    [ 9.530000] ieee80211 phy0: Atheros AR9330 Rev:1 mem=0xb8100000, irq=2
    [ 9.750000] PPP generic driver version 2.4.2
    [ 9.910000] ip_tables: (C) 2000-2006 Netfilter Core Team
    [ 9.930000] xt_time: kernel timezone is -0000
    [ 10.150000] NET: Registered protocol family 24
    [ 10.160000] nf_conntrack version 0.5.0 (455 buckets, 1820 max)
    [ 10.910000] ip6_tables: (C) 2000-2006 Netfilter Core Team

    и все сначала:
    U-Boot 1.1.4 (Mar 20 2012 — 11:37:54)

    AP121 (ar9330) U-boot

  23. Артём Двинин говорит:

    Мне кажется, дело в том, что исходники, полученные из svn://svn.openwrt.org/openwrt/trunk постоянно изменяются разработчиками OpenWrt (вносятся улучшения и исправляются ошибок). Но из за изменений иногда получаются нерабочие версии, разработчики OpenWrt тоже люди и могут ошибаться. Могу посоветовать обновить исходники (выполнить svn update) или взять за основу другую ветку svn://svn.openwrt.org/openwrt/branches/attitude_adjustment.
    Если не получиться собрать рабочую прошивку — напишите, пожалуйста.

  24. Артём Двинин говорит:

    Алексей, спасибо за ссылку!

  25. Bobby_ii говорит:

    Артём , как насчет веб-морды с радио?

    Еще подумал — как сделать плеер. Хранить записи на роутере не очень правильно (места мало!!!). Может, в той-же «морде» указывать на ФТП-каталог, из которого будет вестись проигрывание … или на компе сделать своё веб-радио с пом какого-либо плеера, а роутер будет этот поток в звуковуху пихать?
    Только надо как-то продумать, как ему сампл-рэйт на ходу переключать.

  26. Артём Двинин говорит:

    Что-то всё времени свободного нет :( Идея отличная, главное что бы руки дошли.

  27. Рустем говорит:

    у меня тоже постоянно перезагружается да это действительно из-за нерабочей прошивки но главная проблема что из-за того что он постоянно перезагружается невозможно ввести в него не одной команды чтоб предотвратить или приостановить это

  28. Артём Двинин говорит:

    Я так понял, что разработчики OpenWrt постоянно вносят изменения в исходный код, и иногда получаются неработающие версии. Тут видимо как повезёт, или надо исходники брать не из trunk’а а из какой-нибудь замороженной ветки.

  29. foofoo говорит:

    Да, да, приведенные автором исходники устарели, берите их отсюда
    https://dev.openwrt.org/wiki/GetSource

  30. Александр говорит:

    Классная статья – спасибо!

  31. Alexander говорит:

    Хочу попробовать 3020 сделать клиентом vpn виндового сервера и сервером usbip. Нужно ли ставить модули поддержки usb тех классов устройств, что собираюсь пробрасывать, или usbip по барабану на них?
    Спасибо. Если будут какие нюансы озвучены по этой затее — вдвойне спасибо.
    И где можно почитать про настройку конфигов ppp-клиента для openwrt?

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

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>