Категорії
Misc, staff, other PBX (telephony)

Односторонняя слышимость в модемах 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 местами. Этот метод, как пишут в сети, помогает.

10 коментарів “Односторонняя слышимость в модемах Huawei”

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

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

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

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

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

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

С уважением.

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

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

[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) обновить компилятор до последней версии (gcc), заодно и make.
2) найти версию huawei-voice для старых ядер 2.6

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

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

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

С уважением.

Это инструкция для модемов huawei Е150, у них есть интересная особенность, E150 требует записи кадра нулевой длины после каждых 320 байт иди 20 мс записанных голосовых данных. Но драйверы linux с именем option, ничего не знает об этой функции E150. Этот патч лечит ту ситуацию. Я думаю, об этом нужно написать в шапке, чтоб все кому не лень не не тратили время на это решение. Да и собственно станет понятно к чему применима эта статья.
Ссылка на информацию от производителя http://wiki.e1550.mobi/doku.php?id=troubleshooting#one_way_voice_on_huawei_e150

Залишити коментар до skeletor Скасувати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff