Главная
Главная Руководства Asterisk › Asterisk 18. FreeBSD. Модем Huawei E1550.



Автор:

Статья опубликована: 2021-11-28 23:19:26
Последние правки: 2024-03-25 00:55:39

FreeBSD, добавляем модем Huawei E1550 в Asterisk 18.

У меня разлоченный модем 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
    




Связанные странички:
Получаем SSL сертификаты от Let's Encrypt при помощи acme.sh.