FreeBSD, Asterisk 18, Huawei E1550

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) но с моими правками,
я бы ее не плагиатил но во-первых ее нет в гугле поиске, а еще там нет комментариев, то что моё то пометил зелененькими.

Коментувати

Простий текст

  • Не дозволено жодних HTML теґів.
  • Рядки й абзаци переносяться автоматично.
  • Адреси вебсторінок та адреси електронної пошти автоматично перетворюються у посилання.