Сборка Asterisk под OpenWRT
Собрал OpenWRT для Mikrotik RB450G, чудно залил. Теперь сижу думаю, как мне собрать на Ubuntu asterisk.
Ни как не могу найти доки, которые бы я понял, как собирать софт, в окружении, на одном железе для другого.
Можете поделиться опытом и рекомендациями?
Например: http://paulus.ru/articles/crosscompile
Есть ещё что-нибудь полезное и доходчивое?
Added after 3 minutes:
На самом деле, вам нужно где-то скачать или собрать самому тулчейн под необходимый тип процессора.
Потом с помошью ключей gcc и некоторых переменных среды gcc указывается, что идет кросскомпиляция и нужно использовать
для получения правильных бинарей тулчейн из первого шага.
Но в любом случае, библиотеки, с которыми будет собиратся ваша программа для другой архитектуры должны быть уже собраны
под эту архитектуру и имется в наличии на хост-системе.
Ну или, как по ссылке выше, настроить соотвествующим образом chroot. И там пользоваться gcc как обычно. НО! Необходимы библиотеки
под данную архитектуру вам все равно придется либо собирать самому, в том же chroot-е, либо где-то брать готовые.
"тулчейн " - это что?
http://wiki.openwrt.org/doc/howto/voip.asterisk
_________________
нанотехнолигии в области Asterisk
| Cache @ Thu Nov 15, 2012 16:37 писал(а): |
| первая ссылка в гугле http://wiki.openwrt.org/doc/howto/voip.asterisk |
Это не сборка. Это инсталяха, и как бы мальца есть свои праблы, там есть пару пакетов, которые не ставяться через менюху, которая в самом начале в опенврт, типа взаимоисключаемых пакетов.
| Цитата: |
| Toolchain лежит там же где и сам openwrt |
А его юзать нельзя? Просто я собирал OpenWRT, может и окружение уже готово практически?
| EXA @ Пт Ноя 16, 2012 14:49 писал(а): |
| . А его юзать нельзя? Просто я собирал OpenWRT, может и окружение уже готово практически? |
Если сам собирал OpenWRT то у тебя все готово для кросссборки. Заюзай этоже окружение для сборки астериска.
| Код: |
| PATH=$PATH:/usr/src/OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin export PATH STAGING_DIR=/usr/src/OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir export STAGING_DIR TOOLCHAIN_DIR=$STAGING_DIR/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2 export TOOLCHAIN_DIR export LDCFLAGS=$TOOLCHAIN_DIR/usr/lib/ export LD_LIBRARY_PATH=$TOOLCHAIN_DIR/usr/lib/ ./configure --prefix=$TOOLCHAIN_DIR --host=mips-openwrt-linux-uclibc make clean make CC=mips-openwrt-linux-uclibc-gcc LD=mips-openwrt-linux-uclibc-ld V=99 |
Руководствовался https://gnunet.org/mhd-on-openwrt , потому что из http://wiki.openwrt.org/doc/devel/crosscompile вообще не жизненоспособный для сборки
| Код: |
| make CC=architecture-openwrt-linux-uclibc-gcc LD=architecture-openwrt-linux-uclibc-ld |
| EXA писал(а): | ||
| потому что из http://wiki.openwrt.org/doc/devel/crosscompile вообще не жизненоспособный для сборки |
| Код: |
| make CC=architecture-openwrt-linux-uclibc-gcc LD=architecture-openwrt-linux-uclibc-ld |
мдя
architecture - это кто за вас должен менять? почтальон Печкин?
сразу видно что читали слишком мало документации - курите мануалы еще!
Посмотрел сию ссылку
http://lab.mitty.jp/trac/lab/wiki/TipAnd ... ossCompile
Выкинул только это
| Код: |
| --with-terminfo-dirs=/usr/share/terminfo --with-default-terminfo-dir=/usr/share/terminfo |
И скомпилилось, сейчас бодаюсь с zlib.
| Код: |
| CC=mips-openwrt-linux-gcc AR=mips-openwrt-linux-ar RANLIB=mips-openwrt-linux-ranlib ./configure --prefix=$STAGING_DIR |
И пока что вот так, поставил autoconf-2.69, libtool-2.4.2, libiconv-1.14
| Код: |
| Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf(). Checking for vsnprintf() in stdio.h... Yes. Checking for return value of vsnprintf()... Yes. Checking for attribute(visibility) support... Yes. ./ztest6251: 1: ./ztest6251: Syntax error: "(" unexpected Looking for a four-byte integer type... Not found. |
Added after 11 minutes:
А где список сокращений можно взять "mips-openwrt-linux-gcc" - просто хотел бы я понять, какая у меня конкретно. Я на микротик собирал, там выбрать можно в конфигурационном меню, а как это в параметре написать не знаю.
http://wiki.openwrt.org/doc/start
промотай до "Building OpenWrt"
И ещё вопрос если я архитектуру для Mikrotik Rb450G использую AR71XX, то так же указывать в компиляции mips ? Потому что нет такого в параметрах как AR71, есть ARM но это вообще другое.
_________________
Умный дом
| Цитата: |
| Hello, my package asterisk11 became accepted and merged into openwrt trunk. ~Jiri |
opkg install asterisk11
, и оно само скачает и поставит в систему с роутером?
Есть вопрос, как указать куда ставить, ибо на DIR-320 место крайне мало, хочу указать ставить пакеты именно на USB.
насчет usb флешки - не знаю есть ли какойто "стандартный" способ (уверен в гугле есть ответы), но как вариант - можно из init откуданить свой скрипт запускать, пусть после старта монтирует папку в которую он обычно пакеты устанавливает, пусть монтирует на флешку эту папку. ну и скопировать содержимое оригинальной папки туда же. так можно вообще весь корень системы на флеш перенести, я думаю. подсмотреть можно в live-cd дистрах которые поддерживают монтирование хоума юзера с флешки.
Астер собранный также. Так по опыту важно собирать нормальными тулзами.
Как вариант решения: есть Beaglebone black - 50$ платы, под них собирается нормально астер. Рвет по ценам и производительности.
Зы: у нас скоро на этой платформе будет решение с е1 - следите за анонсами
_________________
http://mh.otx.ru SIP/E1 шлюзы Alvis, Добавь E1 к Asterisk, Проапгрейди Заказчику TDA/LDK!
NEW! Alvis-GW-2E1-L по 29500р, спеши! цены
| Цитата: |
| не забудьте перед установкой астериска сделать opkg update && opkg upgrade сперва. да и вообще всегда, сразу после свежей установки openwrt. |
А вот смотрите, какая штука ./scripts/feeds search asterisk - находит пакеты только для 1.8
брал вот это, т.к. самое новое svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment
_________________
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Но вот тут наткнулся на такое
https://dev.openwrt.org/browser/packages/net/asterisk-11.x?rev=35548
А в svn его нет....
svn co svn://svn.openwrt.org/openwrt/packages/ | grep aster
A packages/net/ntripcaster
A packages/net/ntripcaster/Makefile
Скопирую с веба ручками, лишнее по удаляю... Или я не по тому пути в этот SVN смотрю? Хотя уже всякие пути по перепробовал.
тут 11ю вижу
Я тут по другому начал развлекаться ещё на RB951G (600 Mhz, 128 RAM , 128 Flash) , т.к. делать makefile не смог сам для asterisk 11, по этому воспользовался вот этим
http://openwrt.wk.cz/trunk/mr-mips/packages/
Установил всё под MetaRouter, 12-15 звонков сквозных через Астериск (с основного Астериска на cisco, коллфайлами по 2 коннекта подряд нагружал) , нагрузка на линуксе 99%, на роутере 20% общая. Т.е. ещё и как роутер можно использовать.
Тестировал на 711alaw, без конвертаций, т.к. и не хотелось и нет кодека 729 в наличии собранного в том репозитарии, только формат.
Хм, теперь найти как сделать компиляцию под MetaRouter, на сайте микротика есть, есть какой-то минимальный makefile, но что и как я вообще ещё не в зуб ногой.
Для версии 3.10.4 ядра в trunk 3.10.12, заменил тупо заменой, посмотрю соберётся ли
https://forum.openwrt.org/viewtopic.php?id=45613
Вот уже образ скомпиленый , но 3.3.4 версия.
http://www.kriskinc.com/mikrotik-metarouter
Added after 1 hours 6 minutes:
НЕ скомпилелось
| Код: |
| Applying patch platform/000-linux-metarouter.patch patching file arch/mips/include/asm/fixmap.h Hunk #1 FAILED at 68. 1 out of 1 hunk FAILED -- rejects in file arch/mips/include/asm/fixmap.h patching file arch/mips/include/asm/io.h Hunk #1 FAILED at 201. Hunk #2 FAILED at 209. 2 out of 2 hunks FAILED -- rejects in file arch/mips/include/asm/io.h patching file arch/mips/include/asm/mach-metarouter/kernel-entry-init.h patching file arch/mips/include/asm/mach-metarouter/spaces.h patching file arch/mips/include/asm/mach-metarouter/war.h patching file arch/mips/include/asm/vm.h patching file arch/mips/Kconfig Hunk #1 succeeded at 713 with fuzz 2 (offset 1 line). patching file arch/mips/metarouter/Platform patching file arch/mips/Kbuild.platforms patching file arch/mips/metarouter/irq.c patching file arch/mips/metarouter/Makefile patching file arch/mips/metarouter/prom.c patching file arch/mips/metarouter/setup.c patching file drivers/char/hvc_meta.c patching file drivers/char/Kconfig Hunk #1 succeeded at 157 with fuzz 2. patching file drivers/char/Makefile Hunk #1 FAILED at 7. 1 out of 1 hunk FAILED -- rejects in file drivers/char/Makefile patching file drivers/net/Kconfig Hunk #1 succeeded at 287 with fuzz 2. patching file drivers/net/Makefile patching file drivers/net/mtveth.c patching file fs/Kconfig patching file fs/Makefile Hunk #1 FAILED at 72. 1 out of 1 hunk FAILED -- rejects in file fs/Makefile patching file fs/metafs/inode.c patching file fs/metafs/Kconfig patching file fs/metafs/Makefile Patch platform/000-linux-metarouter.patch does not apply (enforce with -f) make[4]: *** [/home/openwrt/trunk/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-mr-mips/linux-3.10.12/.quilt_checked] Error 1 make[4]: Leaving directory `/home/openwrt/trunk/target/linux/mr-mips' make[3]: *** [compile] Error 2 make[3]: Leaving directory `/home/openwrt/trunk/target/linux' make[2]: *** [target/linux/compile] Error 2 make[2]: Leaving directory `/home/openwrt/trunk' make[1]: *** [/home/openwrt/trunk/staging_dir/target-mips_mips32_uClibc-0.9.33.2/stamp/.target_compile] Error 2 make[1]: Leaving directory `/home/openwrt/trunk' make: *** [world] Error 2 |
Added after 1 hours 7 minutes:
Попробовал проиграть файл голосовой кодек wav, нагрузка 100%, заикается.
Подсунул мелкий файла alaw коде, тоже самое заикается
Added after 20 minutes:
Да нагрузка на проц от этого
Не долго думаю\я поставил это
asterisk18-res-timing-pthread_1.8.10.0-1_mr-mips.ipk
asterisk18-res-timing-timerfd_1.8.10.0-1_mr-mips.ipk
Но тут затыка есть, нет модуля очередей, поставил все пакеты из репозитария который указывал сверху, но нет модуля очередей
Надо посмотреть, может собрать можно.
| Цитата: |
| Из свежего транка, в каталог для микротика переносим ./scripts/feeds (позволит вытащить свежие пакеты, а не указанной ревизии, ну и там ещё по мелочи) ./feeds.conf.default ./include/autotools.mk (исправит ошибку — Unsupported libtool version) ./tools/libtool — каталог целиком Для сборки пакетов, требующих glib2 придётся сделать ещё один финт ушами — скачать транк из ветки backfire |
В общем выполнил ./scripts/feeds update -a и ./scripts/feeds install -a , приминил патч, от микротика v1.2, всё собралось нормально в астериске, то что не вошло в пакеты, такие модули как app_queue.so queues.conf res_monitor.so res_timing_pthread.so res_timing_timerfd.so, покопировал на микротик руками и их астериск скушал отлично
Теперь новая затыка, астериск не собирает модуль конференции, потому что нет dahdi, но есть zaptel 1.4, попробовал прикрутить по такому
https://forum.openwrt.org/viewtopic.php?id=32048
| Код: |
| cat feeds/packages/libs/dahdi/Makefile # # Copyright (C) 2006-2009 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk PKG_NAME:=dahdi-linux-complete PKG_VERSION:=2.3.0.1+2.3.0 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/ PKG_MD5SUM:=947cc668a8e6a24d6fb1fb1ee52049a8 include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/kernel.mk define Package/dahdi SECTION:=libs CATEGORY:=Libraries TITLE:=DAHDI linux driver URL:=http://downloads.asterisk.org/pub/telephony/dahdi/ endef define Package/dahdi/description DAHDI module endef define Build/Configure endef TARGET_CFLAGS += $(FPIC) define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) \ $(TARGET_CONFIGURE_OPTS) \ HOSTCC="$(HOSTCC)" \ CFLAGS="$(TARGET_CFLAGS) -I. \ KSRC="$(LINUX_DIR)" \ KVERS="$(LINUX_VERSION)" \ DESTDIR="$(PKG_INSTALL_DIR)" \ endef define Build/InstallDev ls -l $(INSTALL_DIR) endef define Package/dahdi/install $(INSTALL_DIR) $(1)/usr/lib # $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtonezone.so.* $(1)/usr/lib/ endef $(eval $(call BuildPackage,dahdi)) |
При компиляции, получаю фигу
| Код: |
| $ make V=99 package/dahdi/compile make[1]: Entering directory `/home/openwrt/8.09/trunk' make[1]: *** No rule to make target `package/dahdi/compile'. Stop. make[1]: Leaving directory `/home/openwrt/8.09/trunk' make: *** [package/dahdi/compile] Error 2 |
https://dev.openwrt.org/ticket/9491#no1
Скачал файлы
dahdilinux.tar, dahditools.tar
Распихал их содержимое dahdilinux.tar в ./package и dahditools.tar в ./feeds/packages/net
+100500 раз удалил их опять скопировал, сделал make clean в директории trunk, несколько раз, запустил по новой компиляцию.
И удалось начать выполнять такое
make package/dahdilinux/compile V=99
До бубна, просто говорило, что не определено вот такое package/dahdilinux/compile
Но dahdi не собирается
| Код: |
| /home/openwrt/8.09/trunk/build_dir/linux-mr-mips/dahdi-linux-2.4.1.2/drivers/dahdi/voicebus/voicebus.c:1193:2: error: implicit declaration of function 'pci_clear_mwi' /home/openwrt/8.09/trunk/build_dir/linux-mr-mips/dahdi-linux-2.4.1.2/drivers/dahdi/voicebus/voicebus.c: In function '__voicebus_init': /home/openwrt/8.09/trunk/build_dir/linux-mr-mips/dahdi-linux-2.4.1.2/drivers/dahdi/voicebus/voicebus.c:1817:2: error: implicit declaration of function 'pci_set_mwi' make[6]: *** [/home/openwrt/8.09/trunk/build_dir/linux-mr-mips/dahdi-linux-2.4.1.2/drivers/dahdi/voicebus/voicebus.o] Error 1 |
Added after 8 minutes:
В dahdilinux поменял на версию 2.5.1, и поменял md5sum, первый раз забыл, собралось. Дальше смотрим...
Удалось собрать и asterisk18 и dahdilinux, dahditools, там на правил в Makefile как надо, но пробовал на другую архитектуру brcm47xx (AR71xxx), но как только в конфигураторе выбираю архитектуру Microtik Metarouter Mips, всё в конфигураторе исчезают пункты по выбору создания пакеты kmod-dahdi-linux, dahdi-monitor, dahdi-cfg, dahdi-tools-libtonezone
Во что смотреть? Почему вообще такое может быть? Не понимаю, не знаю как понять.
Помогите в какое направление думать?
Added after 1 hours 1 minutes:
USB_SUPPORT - закоменчиваю в Makefile с dahdilinux.
MetaRouter не даёт доступ к USB, не знаю соберётся ли теперь...
Added after 6 minutes:
Но всё равно думаю это тупик, с чего прерывания будет кушать dahdi, хотя может в эмуляции есть эмуляция IRC или типа того. Блин плохо плохо знать
| Код: |
| http://192.168.110.47:8088/static/config/index.html |
Где написано в конфигах, что страничка лжит по такому пути там-то там, как типа в апаче.
Один раз пустило, сменило пароль и перестало пускать, переустановил пакет, предварительно удалил его, больше не спросило.
Порт открыт
| Код: |
| tcp 0 0 0.0.0.0:8088 0.0.0.0:* LISTEN 2044/asterisk |
Собрался dahdi и на астериске модули очереди, модуль realtime, хотел бы узнать IVR в каком модуле сидит?
Added after 15 minutes:
Хм, легче не стало, что значит не понимаю.
| Код: |
| [Oct 16 11:55:03] DEBUG[2124]: http.c:681 handle_uri: HTTP Request URI is /static/config/index.html [Oct 16 11:55:03] DEBUG[2124]: http.c:730 handle_uri: match request [static/config/index.html] with handler [httpstatus] len 0 [Oct 16 11:55:03] DEBUG[2124]: http.c:730 handle_uri: match request [static/config/index.html] with handler [amanager] len 10 [Oct 16 11:55:03] DEBUG[2124]: http.c:730 handle_uri: match request [static/config/index.html] with handler [arawman] len 8 [Oct 16 11:55:03] DEBUG[2124]: http.c:730 handle_uri: match request [static/config/index.html] with handler [manager] len 7 [Oct 16 11:55:03] DEBUG[2124]: http.c:730 handle_uri: match request [static/config/index.html] with handler [rawman] len 7 [Oct 16 11:55:03] DEBUG[2124]: http.c:730 handle_uri: match request [static/config/index.html] with handler [static] len 6 |
/usr/lib/asterisk/static-http
/usr/lib/asterisk/static
/usr/share/asterisk/static-http
/usr/share/asterisk/static
Или совсем по другому?
Added after 13 minutes:
Родил ответ
| Код: |
| mkdir /var/lib mkdir /var/lib/asterisk ln -s /usr/lib/asterisk/static-http /var/lib/asterisk/static-http |
Нашёл в исходниках астериска
| Код: |
| astdatadir => /var/lib/asterisk for x in static-http/*; do \ $(INSTALL) -m 644 $$x "$(DESTDIR)$(ASTDATADIR)/static-http" ; \ |
От туда взял себе папку static-http, ещё не знаю, что сделал, не проходил ping, не понял почему, не было tcpdump на моей openwrt, что бы заглянуть в ami, у меня пинг проходил, сам строчку в браузер втыкал
192.168.110.47:8088/rawman?action=login&username=admin&secret=admin123
А asterisk-gui, гонял пинг по кругу, бесконечно.
ещё файла одного не хватало у меня guipreferences.conf , нашёл конфиг первый попавшийся в инете, и воткнул его.
Пока что веб работает, астериск стартует. Не пробовал ни чего ещё. Блин хоть бы работало.
| Код: |
| [Oct 21 08:57:54] WARNING[4790]: format_wav.c:171 check_header: Read failed (block header format) [Oct 21 08:57:54] WARNING[4790]: file.c:376 fn_wrapper: Unable to open format wav |
Модули есть
| Код: |
| OpenWrt*CLI> module show like wav Module Description Use Count format_wav_gsm.so Microsoft WAV format (Proprietary GSM) 0 format_wav.so Microsoft WAV/WAV16 format (8kHz/16kHz S -11 |
https://issues.asterisk.org/jira/secure/attachment/41476/format_wav.patch - немного поправить путь до файла format_wav.c, положить с в директорию патчей для пакета Астериска.
Играет теперь шкатулка-макатулка.
и даже не заикается?
Из багов, не могу загрузить через веб свой голосовой файл, узнал от друзей, что JS грузит файлы submit скрытой формы, пока что не знаю, как мне это поможет.
Проверил очереди, IVR.
Факсы я так понял конвертить 1.8.8 не умеет, но модуль res_fax.so в системе загружен. Просто есть тема, что чудо коробку подключать к провайдеру у которого T.30, а восьмёрку на прова, где факс Т.38 ибо инет гумус и другой протокол фигня. Думаю будет насквозь работать в любом случае.
Ещё конференцию попробовать нужно, вдруг чаго там бажного тоже есть. И нет agi (не смотрел в мейк файле, зависимость, просто не доступно --), думаю надо там perl или php заинсталить.
В общем прикольно получается, офис в одной коробке и инет резать можно на микротике хоть по мегабайтно в месяц и скорости, и АТС получается и тунель можно создать, если злой опсос опять порубит SIP, как было в начале года.
Ещё из минусов, нельзя всё время быть в консоли микротика, на второй третий день, вешается виртуалка, и если там чаго вебка делала с конфигом, она не дописывает файлы и усё тормоши бекап.
Сейчас попробую 6.5 версию Микротика.
Added after 3 hours 26 minutes:
Поставил прошивку 6.5, туда залил по новой всё, чуть другая прошивка по байтам почему-то получилась, не знаю почему.
100% не заикалось, потом через минутку начало чуть чуть подцоковать. Что можно крутить из таймингов и есть ли в этом смысл?
Единственное просто сам по себе микротик перезагрузился, в последняя время микротики чёт тупить начинают иногда. Связываю с тем что цена за год не поменялась на роутеры с завода, а инфляция как бы 7-10% глобальная.
Added after 5 minutes:
WireSharkom проиграл дамп звонка, звук идеален, таки и должно быть?
Всё ещё не понимаю, зачем этот откровенно говоря геморрой лепить.
2014 год, неужели с железом такой дефицит?
Для этого хлама же ни кодеков ничего не собрать, тестов полноценных не провести.
Я бы понял если бы массовое производство было, >10000 девайсов с предустановленным ПО.
Ради экземпляра зачем всё это? Время потраченное на сборку этого установку - оно дороже чем Atom без вентилятора.
_________________
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI