FreeBSD, добавляем модем Huawei E1550 в Asterisk 18.
У меня разлоченный модем Huawei E1550 (от МТС, это важно, так как в нем по умолчанию активирован голосовой модуль) был добавлен ещё при жизни Asterisk 13.
# Установим нужный для сборки софт
# autotools gmake git а так же Asterisk должел быть собран с G729
# ls -la /dev | grep cua
crw-rw---- 1 uucp dialer 0x80 Feb 16 21:49 cuaU0.0
crw-rw---- 1 uucp dialer 0x81 Feb 16 21:49 cuaU0.0.init
crw-rw---- 1 uucp dialer 0x82 Feb 16 21:49 cuaU0.0.lock
crw-rw---- 1 uucp dialer 0x87 Feb 16 21:49 cuaU0.1
crw-rw---- 1 uucp dialer 0x88 Feb 16 21:49 cuaU0.1.init
crw-rw---- 1 uucp dialer 0x89 Feb 16 21:49 cuaU0.1.lock
crw-rw---- 1 uucp dialer 0x90 Feb 16 21:49 cuaU0.2
crw-rw---- 1 uucp dialer 0xac Feb 16 21:49 cuaU0.2.init
crw-rw---- 1 uucp dialer 0xad Feb 16 21:49 cuaU0.2.lock
crw-rw---- 1 uucp dialer 0x25 Feb 21 23:43 cuau0
crw-rw---- 1 uucp dialer 0x26 Feb 9 09:13 cuau0.init
crw-rw---- 1 uucp dialer 0x27 Feb 9 09:13 cuau0.lock
Для новеньких, после установки модема, добавляем пользователя asterisk в группу dialer:
# pw groupmod dialer -m asterisk
Asterisk 13 больше не поддерживается, пришло время переходить на Asterisk 18 и старый chan_dongle.so работать с новым астером напрочь отказался (вернее, отказался Asterisk, молча умирая)
Исходные данные
# uname -sr
FreeBSD 12.2-RELEASE
# pkg info | grep asterisk
asterisk18-18.8.0_1 Open Source PBX and telephony toolkit
chan_dongle.so
Рабочий asterisk-chan-dongle для asterisk18 (на 16-й версии не пробовал, но, скорее всего, тоже подойдет): https://github.com/wdoekes/asterisk-chan-dongle
Качаем zip-файл, распаковываем, затем в распакованной папке выполняем команды:
# chmod +x bootstrap
# ./bootstrap
Так как у меня Asterisk 18.8, то:
# ./configure --with-astversion=18.8
# ./configure --with-astversion=18.20 CFLAGS='-I /usr/local/include' LDFLAGS='-L /usr/local/lib'
Затем идет make, но тут меня ждала засада:
# gmake
make: "/root/asterisk18/asterisk-chan-dongle-master/Makefile" line 57: Missing dependency operator
make: "/root/asterisk18/asterisk-chan-dongle-master/Makefile" line 59: Need an operator
make: "/root/asterisk18/asterisk-chan-dongle-master/Makefile" line 65: Need an operator
make: "/root/asterisk18/asterisk-chan-dongle-master/Makefile" line 128: Missing dependency operator
make: "/root/asterisk18/asterisk-chan-dongle-master/Makefile" line 129: Need an operator
make: "/root/asterisk18/asterisk-chan-dongle-master/Makefile" line 130: Need an operator
make: Fatal errors encountered -- cannot continue
make: stopped in /root/asterisk18/asterisk-chan-dongle-master
Я посмотрел эти строки в Makefile, глубоко вникать не стал и просто закомментировал:
#ifneq (/usr/local/lib/asterisk/modules,)
$(INSTALL) -m 644 $(PROJM) /usr/local/lib/asterisk/modules
#else
# @echo >&2
# @echo "*** Asterisk modules directory was not auto-detected." >&2
# @echo "*** Please copy $(PROJM) to the appropriate modules directory yourself." >&2
# @echo >&2
# @false
#endif
#ifneq ($(wildcard .*.d),)
# include .*.d
#endif
Также в Makefile нужно добавить строку
#LIBS = -lsqlite3
LIBS = /usr/local/lib/libiconv.so
а еще в опции компилятора добавить ключ -fblocks Для этого находим строчку CFLAGS в файле Makefile и добавляем туда опцию -fblocks
CFLAGS = -I /usr/local/include -O6 -Wno-old-style-declaration -I$(srcdir) -std=gnu99 -DAST_MODULE_SELF_SYM=__internal_chan_dongle_self \
-D_GNU_SOURCE -I/usr/local/include -I/usr/include -DHAVE_CONFIG_H -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT $@ -MF .$(subst /,_,$@).d -MP -fblocks
Правки Makefile закончены, продолжакм:
# gmake
.....
# gmake install
И вот он, вожделенный модуль:
/usr/bin/install -c -m 644 chan_dongle.so /usr/local/lib/asterisk/modules
dongle.conf
У меня почти подошел файл от сборки для Asterisk 13, только пришлось обновить секцию [general], добавив строки:
smsdb=/var/db/asterisk/smsdb
csmsttl=600
Строка с smsdb есть в примере (находится в etc/dongle.conf в директории исходника), но она кривая, так что не забудьте поменять в ней путь на тот, что у меня, иначе будете получать вот такие ошибки:
[Nov 28 23:14:41] WARNING[101201]: smsdb.c:271 db_execute_sql: Error executing SQL (BEGIN TRANSACTION): (null)
[Nov 28 23:14:41] WARNING[101201]: smsdb.c:271 db_execute_sql: Error executing SQL (COMMIT): (null)
asterisk
Пример для добавления в extensions.conf есть в readme исходников. Дополнительно, можете посмотреть тут на сайте статью про модем E1550 в Asterisk 13.
# /usr/local/etc/rc.d/asterisk restart
# asterisk -r
CLI>module load chan_dongle.so
CLI>module unload chan_dongle.so
CLI>module reload chan_dongle.so
CLI> dongle show devices
ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
megafon 0 Free 10 5 4 Megafon E1550 11.608.12.00.143 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX Unknown
Статейка взята тут (site-motor.ru/manuals/asterisk/asterisk18_chan_dongle.html) но с моими правками,
я бы ее не плагиатил но во-первых ее нет в гугле поиске, а еще там нет комментариев, то что моё то пометил зелененькими.
Коментувати