SIP-GSM шлюз из RT-N16 на прошивке энтузиастов (Инструкция)
Эта инструкция предназначена для тех, кто знает что такое asterisk и умеет хоть немного его администрировать
Итак делаем из RT-N16 шлюз GSM-SIP с 3G модемом Huawei E1550
(подойдут и другие модемы) E173, E169, K3520, K3715, K3765
Заведомо рабочие прошивки модема E 1550 (firmware - не путать с dashboard):
МТС 11.608.12.00.143
11.608.14.15.311 ссылка на прошивку http://depositfiles.com/ru/files/sz0ljt8q4
Нерабочая firmware: Мегафон 11.608.12.10.209 -при активированном голосе из под винды звонит, из под Linux - нет.
прошивка роутера от энтузиастов с ядром 2.6.22
Итак приступим:
- 1. Покупка модема модема Huawei E1550 (МТС) c прошивкой 11.608.12.00.143
- 2. Разлочка код разлочки генерируем тут (подставляем IMEI модема получаем код разлочки) http://a-zgsm.com/huawei.php
- 3. Программу для разлочки прикладываю Unlock.exe http://www.asteriskforum.ru/download...489a1405bebedb
- 4. В Windows запускаем терминал (Гиперерминал) (Модем должен быть отключён от интернета)
- 5. Выставьте COM порт (Huawei Mobile Connect 3G Modem)
- 6. Нажимаем "Connect"
- 7. В нижней строке прописываем команду AT и нажимаем ENTER в ответ модем должен написать "OK"
- 8. Теперь вводим команду:AT^U2DIAG=0 (девайс в режиме только модем)
- 9. Отсоединяем модем и снова подсоединяем
- 10 Установка Asterisk 1.6 из репозитория
Code:
ipkg update
ipkg install asterisk16
установка chan_datacard из исходников (для версии asterisk 1.8 возможно нужно будет взять пропатченную версию chan_datacard http://iqlab.ru/downloads/chan_datacard-175-1.8.zip)
Code:
svn co http://www.makhutov.org/svn/chan_datacard/trunk/ chan_datacard
cd ~/chan_datacard/
./configure
make
копируем получившийся файл chan_datacard.so в /opt/lib/asterisk/modules/
если нет компилятора просто берем готовую библиотеку отсюда:
http://iqlab.ru/downloads/chan_datacard.so и копируем ее в в /opt/lib/asterisk/modules/
или
для asterisk 1.6.2.22
(аналог chan_datacard c расширенным функционалом)
http://code.google.com/p/asterisk-chan-dongle/
ссылка на готовый скомпилированный модуль
http://iqlab.ru/downloads/chan_dongle.so
Убедимся что модем Huawei E1550 определился в системе
Code:
ls /dev | grep USB
ttyUSB0
ttyUSB1
ttyUSB2
Если Модем не определяется в системе
добавьте в файл /usr/local/sbin/post-mount
Code:
kernel="$(uname -r)"
kernel=${kernel:0:3}
if [ "$kernel" = "2.4" ]; then
acm_mod="acm"
else
acm_mod="cdc-acm"
fi
usbserial="$(lsmod | grep usbserial)"
acm="$(lsmod | grep $acm_mod)"
option="$(lsmod | grep option)"
[ -z "$usbserial" ] && insmod usbserial;
[ -z "$acm" ] && insmod $acm_mod;
[ -z "$option" ] && insmod option;
перегрузите роутер снова проверьте определился ли модем в системе
Code:
ls /dev | grep USB
ttyUSB0
ttyUSB1
ttyUSB2
Если модем определился продолжаем! В файл /opt/etc/asterisk/modules.conf добавляем:
Code:
noload => res_timing_timerfd.so
noload => res_timing_pthread.so
noload => chan_iax2.so
редактируем /opt/etc/asterisk/datacard.conf
Code:
[datacard0]
context=datacard-incoming ; context for incoming calls
audio=/dev/ttyUSB1 ; tty port for audio connection
data=/dev/ttyUSB2 ; tty port for AT commands
group=1 ; calling group
rxgain=3 ; increase the incoming volume
txgain=-4 ; increase the outgoint volume
autodeletesms=yes ; auto delete incoming sms
resetdatacard=yes ; reset datacard during initialization
u2diag=0 ; set U2DIAG parameter (0 = disable everything except modem function)
usecallingpres=yes ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation
disablesms=yes ; chan_datacard has currently a bug with SMS reception. When a SMS gets in during a
; call chan_datacard might crash. Enable this option to disable sms reception.
; Default = no
перезапускаем asterisk и заходим в консоль asterisk
Code:
# killall asterisk
# /opt/sbin/asterisk
# /opt/sbin/asterisk -r
Проверим состояние модема из консоли Asterisk (CLI)
Code:
boxer*CLI> datacard show devices
ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
datacard0 1 Free 24 3 3 MTS RUS E1550 11.608.12.00.143 35296XXXXXXXXXX 25001XXXXXXXXXX +7916XXXXXXX
boxer*CLI>
Если ответ у Вас похожий - это значит что библиотека заработала и asterisk увидел модем, если нет возвращаемся и ищем в чем проблема.
Далее настройка Asterisk
Для входящих вызовов, sms и ussd запросов настроим /opt/etc/asterisk/extensions.conf:
Code:
[datacard-incoming]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()
exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD}: ${USSD}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()
exten => s,1,Dial(SIP/100,,)
exten => s,n,Hangup()
Для исходящей связи
Code:
exten => _X.,1,Dial(Datacard/datacard0/${EXTEN})
применяем изменения из консоли asterisk
Code:
[admin@RT-16N root]$ /opt/sbin/asterisk -r
Connected to Asterisk 1.6.2.13 currently running on RT-16N (pid = 606)
Verbosity is at least 5
RT-16N*CLI> reload
запуск asterisk автоматом при загрузке роутера
добавьте в конец файла /usr/local/sbin/post-mount
p.s. Модем должен быть подключен напрямую без хаба и удлиннителей !!!!
Проверяем все должно работать. Задавайте вопросы в этой ветке, по мере возможности буду отвечать