У меня разлоченный модем Huawei E1550 (от МТС, это важно, так как в нем по умолчанию активирован голосовой модуль) был добавлен ещё при жизни Asterisk 13.
# 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-файл, распаковываем, затем в распакованной папке выполняем команды:
# ./bootstrap
Так как у меня Asterisk 18.8, то:
# ./configure --with-astversion=18.8
START UPD 2024-03-24
После обновления asterisk до 18.21, мой chan_dongle перестал запускаться, в логах астера была запись о том, что модуль собран не для этой версии asterisk. Сходил на гитхаб, оказалось, исходники обновляются (хороший знак), скачал, но configure выдал ошибку:
configure: error: sqlite3 library missing
Как лечить? Вот улучшенная строка запуска:
# ./configure --with-astversion=18.21 CFLAGS='-I /usr/local/include' LDFLAGS='-L /usr/local/lib'
END UPD 2024-03-24
Затем идет make, но тут меня ждала засада:
# make
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 = /usr/local/lib/libiconv.so
Если вдруг выскочит ошибка "error: blocks support disabled - compile with -fblocks or pick a deployment target that supports them", то ищем в Makefile строку CFLAGS и добавляем туда опцию -fblocks
Правки Makefile закончены, продолжакм:
# make
.....
# make 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> 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