Односторонняя слышимость в модемах Huawei

Иногда бывают проблемы при использовании голосовых модемов вместе с asterisk: слышимость только в одну строну. Причём как через datacard, так и через dongle.

Что бы это исправить нужно добавить модуль huawei_voice.ko (а так же патч в виде модуля option.ko). Как это правильно сделать:

— качаем свежую версию модулей отсюда или через git:

# cd /usr/src
# git clone git://github.com/Novax/kmod-huawei-voice.git

— компиллируем:

# cd kmod-huawei-voice && make

— останавливаем asterisk и подгружаем модули:

# /etc/init.d/asterisk stop
# rmmod option
# insmod ./option.ko
# insmod ./huawei_voice.ko
# /etc/init.d/asterisk start
# lsmod | grep huawei
huawei_voice           13005  2 
usb_wwan               17915  2 huawei_voice,option
usbserial              33270  11 huawei_voice,option,usb_wwan

В данном случае цифра 2 означает количество модемов: у меня их 2. Если вы увидели цифру 0, тогда попробуйте вынуть/вставить физически модемы. Нужно что бы модемы подхватились модулем huawei_voice, иначе проблему это не решит.

В dmesg можно наблюдать следующее:

huawei_voice1 ttyUSB1: Huawei 3G modem diag(voice) port converter now disconnected from ttyUSB1
huawei_voice 1-1:1.1: Huawei 3G modem diag(voice) port converter detected
huawei_voice1 ttyUSB4: Huawei 3G modem diag(voice) port converter now disconnected from ttyUSB4
huawei_voice 1-5:1.1: Huawei 3G modem diag(voice) port converter detected

Теперь можно пробовать звонить.
Если же это не исправило проблему, попробуйте переназначить audio/data порты: поменять местами в конфиге datacard/dongle ttyUSB1 / ttyUSB2 местами. Этот метод, как пишут в сети, помогает.

Односторонняя слышимость в модемах Huawei: 9 комментариев

  1. Алексей

    …нужно добавить модуль huawei_voice.ko (а так же патч в виде модуля option.ko)…
    Что подразумевается под словом «патч»? Это самостоятельный модуль option.ko вместо оригинального или патчить тот что есть в системе? Работает и старый (не помню с чем он пришел) и этот который с huawei_voice компилился. Но проблема вылезла другая. DTMF съедает и пропадает звук с той стороны после посыла dtmf, как бы модем перестает слушать. Лечится? Сколько стоит?

  2. skeletor Автор записи

    Патч, это значит, что вместо одного модуля huawei_voice.ko подгружается 2: huawei_voice.ko и option.ko. Если не пропатчить и просто подгружать один модуль huawei_voice.ko, то работать не будет.
    Все финансовые вопросы через форму обратной связи.

  3. Виктор

    У меня такая проблема появляется периодически.
    Нормально, нормально, и в очередной вызов при поднятии трубки вызываемым абонентом, слышно только одну сторону. В итоге Ало, Ало и вешают трубку.
    Этот патч исправить проблему?

  4. Anton

    Доброго времени!

    Не компилируется модуль kmod-huawei-voice (вываливает кучу ошибок)
    CentOS 5.11 kernel 2.6.18

    Какая у вас OS и ядро, в сети пишут, что на другой версии ядра нужно компилировать
    Вот только на какой?

    С уважением.

    1. skeletor Автор записи

      Вы б хотя б ошибки привели. Возможно нужно доставить хидера или либы какие-то.

      1. Anton

        Ок, вот полный вывод:

        [root@pbx kmod-huawei-voice]# make
        make -C /lib/modules/2.6.18-371.1.2.el5/build M=/usr/src/kmod-huawei-voice modules
        make[1]: Entering directory `/usr/src/kernels/2.6.18-371.1.2.el5-x86_64′
        CC [M] /usr/src/kmod-huawei-voice/option.o
        In file included from /usr/src/kmod-huawei-voice/option.c:45:
        /usr/src/kmod-huawei-voice/usb-wwan.h:17: предупреждение: декларация ‘struct ktermios’ внутри списка параметров
        /usr/src/kmod-huawei-voice/usb-wwan.h:17: предупреждение: область действия типа — только данная декларация или определение, что может не соответствовать вашим намерениям
        /usr/src/kmod-huawei-voice/usb-wwan.h:54: ошибка: поле ‘delayed’ имеет неполный тип
        /usr/src/kmod-huawei-voice/option.c:908: ошибка: ‘usb_serial_suspend’ undeclared here (not in a function)
        /usr/src/kmod-huawei-voice/option.c:909: ошибка: ‘usb_serial_resume’ undeclared here (not in a function)
        /usr/src/kmod-huawei-voice/option.c:910: ошибка: неизвестное поле ‘supports_autosuspend’ в инициализаторе
        /usr/src/kmod-huawei-voice/option.c:910: предупреждение: initialization makes pointer from integer without a cast
        /usr/src/kmod-huawei-voice/option.c:926: ошибка: неизвестное поле ‘usb_driver’ в инициализаторе
        /usr/src/kmod-huawei-voice/option.c:926: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:930: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:931: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:932: ошибка: неизвестное поле ‘dtr_rts’ в инициализаторе
        /usr/src/kmod-huawei-voice/option.c:932: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:933: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:934: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:935: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:936: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:937: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:938: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:940: ошибка: неизвестное поле ‘disconnect’ в инициализаторе
        /usr/src/kmod-huawei-voice/option.c:940: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:941: ошибка: неизвестное поле ‘release’ в инициализаторе
        /usr/src/kmod-huawei-voice/option.c:942: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:944: ошибка: неизвестное поле ‘suspend’ в инициализаторе
        /usr/src/kmod-huawei-voice/option.c:944: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:945: ошибка: неизвестное поле ‘resume’ в инициализаторе
        /usr/src/kmod-huawei-voice/option.c:945: предупреждение: initialization from incompatible pointer type
        /usr/src/kmod-huawei-voice/option.c:967: ошибка: поле ‘delayed’ имеет неполный тип
        /usr/src/kmod-huawei-voice/option.c: In function ‘option_instat_callback’:
        /usr/src/kmod-huawei-voice/option.c:1101: ошибка: implicit declaration of function ‘tty_port_tty_get’
        /usr/src/kmod-huawei-voice/option.c:1101: ошибка: ‘struct usb_serial_port’ has no member named ‘port’
        /usr/src/kmod-huawei-voice/option.c:1101: предупреждение: initialization makes pointer from integer without a cast
        /usr/src/kmod-huawei-voice/option.c:1104: ошибка: implicit declaration of function ‘tty_kref_put’
        make[2]: *** [/usr/src/kmod-huawei-voice/option.o] Ошибка 1
        make[1]: *** [_module_/usr/src/kmod-huawei-voice] Ошибка 2
        make[1]: Leaving directory `/usr/src/kernels/2.6.18-371.1.2.el5-x86_64′
        make: *** [all] Ошибка 2

        1. skeletor Автор записи

          Теперь немного стало яснее. Что можно сделать:
          1) обновить компилятор до последней версии (gcc), заодно и make.
          2) найти версию huawei-voice для старых ядер 2.6

          Или обновиться до ядра 3.Х

          1. Anton

            Спасибо, помогло

            Обновился до ядра 3.2.72 из репозитория elrepo
            с установкой kernel-lt-devel все сходу заработало
            без модуля huawei-voice.
            модем E171

            С уважением.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *