VentaFax->T38modem(SIP)->Asterisk->SIP-провайдер
------------------------------------
Добавлено 11.09.2008
Добавлено 15.09.2008
Описание сборки под WIN:
http://www.voipinfo.ru/forum/viewtopic.php?t=11906
--------------------------------------
При изучении данного вопроса было использовано:
1.статья T38modem configuration with Asterisk Автор Atis Lezdins
Источник: http://www.voip-info.org/wiki/index.php?page_id=5096
2.основной вклад в "исправление" Asterisk сделал dimas ( www.asteriskforum.ru ). Ему удалось понять происходящее и написать правильный код.
3.несколько ценных советов дал ded, это позволило развиваться мыслям в нужном направлении.
4. ну а я все это собрал в одну кучу. Как я двигался можно понять из этого топика http://www.voipinfo.ru/forum/viewtopic.php?t=11489
5. я использую AndLinux, т.е. все работает под Windows. То, что касается сути вопроса содержится в п.п.3-6
6. ну и конечно спасибо автору этого чудо-модема: Original author: Vyacheslav Frolov С удовольствием бы с ним списался (остались нерешенные вопросы), но нет координат.
1. Устанавливаем AndLinux andLinux Beta 1 (04/21/2008) под WIN
Берем отсюда KDE-версию.
http://www.andlinux.org/downloads.php
На диске NTFS понадобится около 5ГБ, если у вашего PC ореративной памяти 2гб, то 512мб под AndLinux будет в самый раз.
Разумно сразу ставить "как сервер windows", если нет желания запускать каждый раз, то потом поставите в службе Andlinux "запускать вручную"
Команды остановки-запуска будут:
| Code: |
| net start andlinux net stop andlinux |
Программа установки установит саму систему, виртуальный сетевой адаптер Tap-Colinux и программу Xming для комфортного доступа к интерфейсу линукс из win.
Для того чтобы видеть процесс загрузки "линукса" используется andLinux Console (NT), для остального она не нужна и не удобна.
Для загрузки иногда нужно нек. время, когда программа что-то ворошит на виртуальном "диске", пугаться не следует, надо подождать до 5 минут. На XP у меня так происходит постоянно после загрузки PC, на WIN2003 крайне редко.
Рядом с часами(в WIN) появится KDE-меню.
Основные программы, которыми имеет смысл пользоваться для комфортного общения с системой:
1) Konsole
2) Konqueror(красненький)-для просмотра папок в Линукс
3) Konqueror(синенький)-для просмотра интернет-страниц, для доступа к WIN-файлам по технологии SAMBA, для доступа в корзину.
4)Synaptic-для анализа и поиска имен недостающих пакетов. (Устанавливать я лично предпочитаю через apt-get)
Желательно сразу заменить звуковую систему pulseaudio на esd (все инструкции в файле esd.zip)
Важно понимать, что вся система находится в файле andLinux\Drives\base Это открывает возможность резервирования системы перед выполнением сомнительных действий, переноса ее на другой PC по сети, копирования на DVD-болванку.
Т.е. файл base + файл andlinux-beta1-kde.exe это ваш дистрибутив.
2. Настраиваем "сеть". Основная задача -чтобы Linux сидел в той же подсети, что и все остальное Voip-хозяйство.
Есть 2 способа
1)WinPcap
2)Сетевой мост WIN
Все тонкости и подводные камни описаны здесь:
http://www.voipinfo.ru/forum/viewtopic.php?t=11562
3.Собственно установка T38modem(SIP)
За основу взята инструкция:
http://www.voip-info.org/wiki/index.php?page_id=5096
(автор Atis Lezdins).
1)Доустанавливаем недостающие необходимые пакеты:
apt-get install g++
apt-get install flex
apt-get install bison
apt-get install libexpat1-dev
Необходимость первых 3-х достаточно очевидно, а вот насчет libexpat1-dev пришлось ломать голову около месяца, ибо при компиляции OPAL пишет про какую-то PXML, и никакого намека на название отсутствующего пакета. Из внимательного рассмотрения того что пишет ./configure в OPAL тоже ничего не очевидно.
2)Скачиваем дистрибутивы в папку /root
cd /root
cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co ptlib_unix
cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co -D "5/21/2007 23:59:59" opal
cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co t38modem
Дата дистрибутива OPAL существенна, ибо с более поздними дистрибутивами OPAL модем не компилируется.
Сам модем получится версии 1.0.0, существует версия 1.0.1 на сайте h323plus, но эта версия имеет проблемы при выполнении команды atd при использовании sredird, поэтому лучше следовать буквально.
3) Устанавливаем pwlib:
cd /root/pwlib
./configure
make
make install
4) Устанавливаем OPAL:
cd /root/opal
./configure
make
make install
ldconfig
Команда ldconfig существенна, без нее модем при запуске не найдет нужных библиотек.
5) Устанавливаем T38modem:
cd /root/t38modem
make USE_OPAL=1 opt
make USE_OPAL=1 install
4.Запуск T38modem по SIP
[root@andLinux1 ~]# t38modem -tt --no-h323 -u T38modem --sip-old-asn --sip-listen udp\$192.168.11.5:6060 --sip-redundancy 2 -p ttyx0,ttyx1 --route "modem:.*=sip:@192.168.11.5:5060" --route "sip:.*=modem:"
-u T38modem -это username of T38modem как сип-клиента
--sip-old-asn -без этой строчки факсы будут ходить только между двумя модемами
sip-listen udp\$192.168.11.5:6060 -модем слушает на порту 6060, где 192.168.11.5-адрес andLinux в локальной сети
192.168.11.5:5060-на этот адрес и на этот порт модем делает исх.звонки
---------------------------------------------------------------------------------
5. Настраиваем Asterisk (на примере Sipnet)
sip.conf
| Code: |
| [general] t38pt_udptl = yes register => sipname:sippassword@sipnet.ru/SIP-ID nat=no canreinvite=yes ... [sipnet] type=friend secret=sippassword username= SIP-ID host=sipnet.ru insecure=invite fromuser=SIP-ID fromdomain=sipnet.ru dtmfmode=rfc2833 ..... [T38modem] type=friend host=192.168.11.5 username=T38modem dtmfmode=rfc2833 nat=no canreinvite=no context=office callerid=2001 port=6060 t38udptlsupport=yes |
здесь canreinvite=no для модема в моем во всяком случае оказалось существенно,при yes модем ругался на какие-то кодеки
extensions.conf
| Code: |
| [office] exten => _8.,1,Dial(SIP/sipnet/${EXTEN},60,gA(Sendfax)) exten => 803,1,Dial(SIP/T38modem,90,g) |
A(Sendfax)-Астериск пригрывает фразу "Примите факс" перед передачей факса
803-extension, при дозвоне на который T38modem включается на прием
6. Правим код Астериск. Важно!!!
Здесь основная заслуга и основные идеи принадлежат dimas с www.asteriskforum.ru, я только правил,тестировал и снимал логи.
Тестирование проходило на asterisk-1.6/trunk, но я уже готов подтвердить что все работает с asterisk-1.4.21.1 (у меня он с Addons 1.4.7 и патчами для T38 и Send-Receive-fax, но это все роли не играет, можно брать чистый астериск).
Dimas любезно разрешил мне опубликовать результаты.
1) в исходнике правим файл /usr/src/asterisk-1.4.21.1/channels/chan_sip.c
Для asterisk-1.4.21.1 это примерно строка 5219
Для asterisk-1.6/trunk это примерно строка 6819
Находим код
| Code: |
| } else if (p->udptl && ( (sscanf(m, "image %d udptl t38%n", &x, &len) == 1) || (sscanf(m, "image %d UDPTL t38%n", &x, &len) == 1) )) { if (debug) ast_verbose("Got T.38 offer in SDP in dialog %s\n", p->callid); udptlportno = x; numberofmediastreams++; } else |
и меняем его на
| Code: |
| } else if (p->udptl && ( (sscanf(m, "image %d udptl t38%n", &x, &len) == 1) || (sscanf(m, "image %d UDPTL t38%n", &x, &len) == 1) )) { if (t38action != SDP_T38_INITIATE || (p->owner && p->lastinvite)) { if (debug) ast_verbose("Got T.38 offer in SDP in dialog %s\n", p->callid); udptlportno = x; numberofmediastreams++; } } else |
--------------------------
P.S. Еще неплохо бы сразу сделать 2 вещи:касается не столько данного вопроса, сколько T38 в астериск в принципе:
1/в этом же файле chan_sip.c найти место (приблиз.строка 834):
| Code: |
| /*!< This is default: NO MMR and JBIG trancoding, NO fill bit removal, transferredTCF TCF, UDP FEC, Version 0 and 9600 max fax rate */ static int global_t38_capability = T38FAX_VERSION_0 | T38FAX_RATE_2400 | T38FAX_RATE_4800 | T38FAX_RATE_7200 | T38FAX_RATE_9600; |
и поменять на
| Code: |
| static int global_t38_capability = T38FAX_VERSION_0 | T38FAX_RATE_2400 | T38FAX_RATE_4800 | T38FAX_RATE_7200 | T38FAX_RATE_9600 | T38FAX_RATE_12000 | T38FAX_RATE_14400; |
Это даст вашему факсу возможность проходить на 14400: в тех случаях когда астериск вмешивается в факс-трафик(не всегда!) он будет резать скорость на 9600 из-за этой строчки.
2/Применить сей патч: http://bugs.digium.com/view.php?id=10943
Это даст возможность поиграться-воспользоваться переменной disablep2p=yes в rtp.conf и Packet2Packet bridge при установке соединения у вас точно уже не получится. Дело в том что этот bridge частенько приводит к проблемам при T38, как я обратил внимание, и это не всегда лечится командой canreinvite=yes, кот.кстати с T38modem не в ладах.
-----------------------------
2) Пересобираем астериск, чтобы изменения вступили в силу:
| Code: |
| cd /usr/src/asterisk-1.4.21.1 make make install |
Здесь требуются некоторые пояснения.
Звонок с T38modem происходит так:
| dimas wrote: |
| 1.t38modem говорит о том что у него есть T38 уже в первом INVITE. При этом T38 перечислен вместе с голосовыми кодеками. |
| Code: |
| v=0 o=- 1220426658 1220426658 IN IP4 192.168.11.5 s=Opal SIP Session c=IN IP4 192.168.11.5 t=0 0 m=audio 5002 RTP/AVP 0 8 101 100 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15,32-49 a=rtpmap:100 NSE/8000 a=fmtp:100 192-193 m=image 5006 udptl t38 |
2.Asterisk почему-то обращает внимание на нижнюю строчку, игнорируя голосовые кодеки и сразу шлет факс-приглашение провайдеру
| Code: |
| v=0 o=root 1100491942 1100491942 IN IP4 192.168.11.5 s=Asterisk PBX SVN-trunk-r140692 c=IN IP4 192.168.11.5 t=0 0 m=image 4773 udptl t38 a=T38FaxVersion:0 a=T38MaxBitRate:9600 a=T38FaxFillBitRemoval:0 a=T38FaxTranscodingMMR:0 a=T38FaxTranscodingJBIG:0 a=T38FaxRateManagement:transferredTCF a=T38FaxMaxBuffer:400 a=T38FaxMaxDatagram:400 a=T38FaxUdpEC:t38UDPFEC |
3. в силу нек. особенностей некоторых провайдеров и ряда других невыясненных причин такой "наглый" звонок права на жизнь в большинстве случаев не имеет и если и проходит, то некорректно с т.зр.его дальнейшего развития.
Поэтому и пришлось править код:
| dimas wrote: |
| Фактически из-за этого исправления Астериск игнорирует T38 в изначальном INVITE (но поддерживает T38 в ре-INVITE). ...это значит что начальный T38 который сообщает T38modem игнорируется, но позже когда провайдер делает reinvite на T38, астериск его принимает и делает реинвайт на ноге t38modem. |
С успешными логами прохождения факса можно ознакомиться здесь:
1)лог звонка с т.зр. Астериск
http://dump.ru/file_catalog/1042097
2)лог звонка с т.зр. T38modem
http://dump.ru/file_catalog/1042098
---------------------------------------------------------------------------------
п.п.7-9 по аналогии,как описано здесь
http://www.voipinfo.ru/forum/viewtopic.php?t=11467
7. установка sredird и проброс модемов в TCP/IP
Разумно использовать
apt-get install sredird
apt-get install xinetd
Для перезапуска xinetd понадобится команда service. Чтобы она работала:
apt-get install sysvconfig
Для тестирования модема at-командами:
apt-get install cu
cu -l ttyx0
8. создание виртуальных COM-портов в Windows (DialOUT/EZ)
9. подключение программы (программ) Ventafax к этим портам
----------------------------------------------------------------------------
при установке на не совсем чистую систему в случае ошибок могут понадобиться след.пакеты: libsasl2-dev; libldap2-dev, libssl-dev, libsdl1.2-dev, libspeex-dev,libsrtp1-dev,libgsm1-dev,...и т.п.
Лучше всего смотреть на что ругается компилятор и пользоваться поиском через Synaptic для анализа ситуации и определения точного имени недостающего пакета, при этом не забывать обновлять информацию в его БД, ибо точное имя пакета в репозитории может измениться и установка закончится неудачей.
----------------------------------------------------------------------------
некоторые дополнительные соображения и описания по поводу нижеизложенного здесь: http://www.voipinfo.ru/forum/viewtopic.p ... p;start=20
Что оно умеет:
1)практически без проблем принимать факсы по T38 при входящем звонке на тот порт на кот. он слушает
Тестировались входящие звонки (с Asterisk, с AXON PBX, напрямую), c AP200B, Kapanga, ComISDN,X-CAPI,Zoiper,с приложения SendFax(*).
Принимать факсы от внешнего SIP-провайдера -был протестирован Sipnet через номер доступа-результат положительный.
T38modem корректно работает с ASTERISK по SIP, когда он принимает факс.
2) -отправлять факсы по "кривому методу"(см.картинку в соседнем топике) через AXON PBX на внешнего SIP-провайдера (тестировано на SIPNET без проблем)
-отправлять факсы на AP200B по "кривому методу" через AXON или напрямую на адрес AP.
-в нек. случаях но как-то криво и с ошибками отправлять факсы через Asterisk на внутр. extension's типа капанги и ReceiveFax(*). Но мне не нравится как это работает, и это всегда заканчивается ошибкой, даже если факс прошел целиком.
3)Умеет работать в режиме ECM по T38.
4)корректно отправлять факсы НА ВНЕШНЕГО SIP-ПРОВАЙДЕРА через ASTERISK при исходящих звонках при условии применения правки Астериск, что описано в п.6
Что оно не умеет:
1) не умеет сообщать SIP-серверу пароль и регистрироваться на SIP-сервере.
P.S. То что выше этой черты было добавлено после (06.09.0
---------------------------------------------------------------------
Удалось добиться нек. результатов в этом вопросе:
http://www.voipinfo.ru/forum/viewtopic.p ... p;start=20
Удается делать исходящий звонок на SIPNET через AXON PBX по извращенно-кривой схеме (схема звонка приведена на картинке) и передавать факс.
Прямая схема (T38modem как extension AXONA) не работает, т.к. T38modem:
1)не умеет авторизовываться с паролем
2)не умеет регистрироваться
Зато он может выполнять роль внутреннего extension к asterisk.
Я пробовал с Asterisk 1.4.21 1.4.22 1.6 и с callweaver
Результат приблизительно одинаковый.
В случае когда T38modem работает через Asterisk наблюдается следующая дурацкая картина:
(в зависимости от значения t38pt_udptl в основной секции файла sip.conf)
1) ;t38pt_udptl =yes -выключен
звонок успешно проходит, снимаем трубку, слышим позывные факса
стартуем, и как только включается t38
| Code: |
| *CLI> [Aug 31 13:58:19] WARNING[17493]: chan_sip.c:5226 process_sdp: Unsupported SDP media type in offer: image 5010 udptl t38 |
почему рвется звонок понятно-потому что я отключил t38
2) t38pt_udptl =yes включен
Звонок либо не проходит (not accseptable here) /Asterisk/
Либо проходит но не слышно позывных факса /Callweaver/, факс также не проходит.
Анализ sip-логов позволил выявить следующее:
1) при использовании AXON в исходящем запросе содержатся голосовые кодеки G711, соотв. звонок устанавливается на G711, писк исходящего факса на G711 ,а переход на T38 осуществляется тогда, когда стартует принимающий факс.
2) при использовании Asterisk и включенном t38pt_udptl астериск почему-то обрабатывает звонок так что при осуществлении звонка провайдеру в sip-приглашениях не содержится возможности установки связи на G711, т.е. пытается гнать чистый t38, за что и получает отбой.
3) при выключенном t38pt_udptl звонок проходит корректно, но, увы, без возможности переключения на t38.
Я пробовал менять другие параметры в sip.conf (т.е. играться c t38pt_udptl и callreinvite в пирах и осн.секции), но значение t38pt_udptl в general является определяющим, остальное на результат не влияет.
Есть некоторая идея, при каких условиях все будет нормально:
1) ;t38pt_udptl =yes -выключен
2) а когда соединение уже установлено включить поддержку t38pt_udptl =yes для данного соединения.
Но возможно ли это осуществить? Или как-то заставить идти звонок корректно по-другому?
P.S. Добавил еще маленько информации тут:
http://www.voipinfo.ru/forum/viewtopic.php?t=11767
Last edited by Дима77 on Mon Sep 15, 2008 13:39
Давайте разберемся с ситуацией когда udptl = yes.
Опишите плиз какую роль выполняет астериск - гейт, терминатор. отправляет он факс или принимает? всю схему передачи факса покажите - кто кому.
ну и конечно
core set debug 3
sip set debug
Added after 5 minutes:
just for records - я тут отвечал просто потому что топикстартер мне в личку писал. но что-то после перечитывания я так понимаю что не про меня это ксе :=)
2 Дима77: Так получилось у Вас запустить T38Modem на SIP провайдера?
Я сегодня как раз таким буду заниматься. Результаты отпишу.
_________________
"Фантазия важнее знания.", Альберт Эйнштейн
| ToxaP wrote: |
| 2 Дима77: Так получилось у Вас запустить T38Modem на SIP провайдера? ...буду заниматься. |
Да, но пока по кривой схеме через AXON PBX.
Насчет Asterisk: результат думаю скоро будет (при поддержке dimas),основной затык побороть удалось, немного терпения.
Не теряйте времени, ставьте. Инструкция прилагается:
http://www.voipinfo.ru/forum/viewtopic.php?t=11767
Если при слове WINDOWS вам становится плохо, начинайте с п.3 и заканчивайте на п.4
t38modem СРАЗУ включает t38 в первый инвайт. Так что T38CALL действительно никто не выставлял - она выставилась сама какраз из-за T38 в первом инвайте. Так что правильно его не сбрасывать конечно.
В общем вовзращаемся к изначальной проблеме - если SIP call, первйи инвайт которого содержит T38 проходит через Астериск на сипнет, то он не работает.
Вариант, конечно что именно из-за того что Астериск убирает все аудио кодеки из инвайта так получается. Будем смотреть.
Провайдер http://www.citysvyaz.ru/ поддерживает только Т38.
Работает стабильно 5 с 5.
_________________
"Фантазия важнее знания.", Альберт Эйнштейн
SIP Provider -> (неважно чего)-> T38Modem
как бы проблемой не является,
по крайней мере если знать все тонкости установки pwlib-opal-t38modem
и все тонкости командной строки его запуска,
что тьфу-тьфу мне удалось осознать и отловить после долгих мучений
сейчас основным вопросом философии является тема
T38modem-> (неважно чего) -> sip provider
попробуйте воспользоваться инструкцией с voip-info.org и попытаться послать факс с модема.
Намекну на нек. ключевые моменты:
Во первых-взгляните на эти строки в readme:
| Code: | |||||||
| 4.3.1 T.38 mode modifiers ------------------------- F - enable T.38 mode request after dialing. V - disable T.38 mode request after dialing (default). Examples: . ==ATDVV Попробуйте набрать ATD | |||||||
| Опубликовал основные результаты в первом посте топика. Код для Asterisk добавлен с разрешения dimas .
| |||||||
| Добавил про то как компилировать это дело под чисто Windows ! | |||||||
| собственно проблема, как мы согласились, в том что t38modem в начальном INVITE сразу просит и голос и T38 а для астериска как тольно он увидел T38 голоса уже не существует он делает чистый T38 на исходящем звонке (не передает m=audio наружу). Баг у них на трекере есть, они его признают и когда-нибудь :=) исправят - http://bugs.digium.com/view.php?id=12437 | |||||||
| dimas, там мне думается багов хватает окроме этого. 1)В случае с сипнетом мы действительно с проблемой разобрались. Я так понял на сипнет, как бы это сказать, "факс не идет через астериск". Т.е. я не добавлял | T38FAX_RATE_12000 | T38FAX_RATE_14400 , а он (после вашей правки) идеально идет на 14400 со всеми OK в конце. 2)А в другом случае "факс идет через астериск" (понял из того, что добавление | T38FAX_RATE_12000 | T38FAX_RATE_14400 повлияло на скорость) он вроде как тоже неплохо идет после этой правки, но с большой вероятностью до конца первой страницы или без подтверждения (udptl-OK от провайдера не всегда доходит-и это только на астериске)-и я думаю это еще один баг. 3) А в 3-м случае я пробовал досылать факс на +1(800).. через pulver.com и там похоже сразу включается t38 на удаленной стороне, я правда не пробовал на чистом астериск, но похоже в этом случае именно в силу правки факс-то и не проходит, именно потому (м.б.) что удаленная сторона сразу предлагает t38, а мы этот t38 запороли в первом инвайт. Мне удалось списаться с разработчиком чудо-модема (Vyacheslav Frolov), вот ответ:
Пока ждем-с. Однако пока я пошел по другому пути, т.е. в обход Астериска:
Оказалось, все есть в лучшем виде. Как говорится, глаза боятся, руки делают, криво-косо нужные места усмотрел и сделал сам,получилась идеальная T38 факс-машинка, не завязанная на Asterisk: http://www.asteriskforum.ru/viewtopic.php?t=2840 Dimas, понимаю времени мало, м.б. посмотрите на код (T38modem:пара файлов со словами manager и sip, opal: то что в папке sip), насколько грамотно я напортачил c авторизацией. Вы все же профессионал, м.б. там и регистрацию добавить несложно. P.S. О,придумал! надо модем с 3CX еще опробовать, неделю назад не получилось, а теперь ведь он поумнел и сумеет пароль назвать, да и линукс для этого теперь не требуется, модему ныне и в виндах неплохо ----------- PPS:не,фигня эта 3CX | |||||||
| Рано или поздно станет вопрос о добавлении модема в автозагрузку. Потратил несколько часов на поиск решения: казалось бы задача тривиальная, но для линукс оказалась тяжелой: 1)очень длинная строка запуска (а я ее еще удлиннил) 2)присутствуют кавычки Короче рабочее решение такое: Добавление T38modem в автозагрузку LINUX. 1. В рабочей папке модема, т.е. /usr/local/bin создаем текстовой файл скрипта t38start В него пишем строчки:
В свойствах этого файла существенно указать, что он "Is executable" 2. В файле /etc/inittab добавляем строчку:
3. Перезапускаем линукс, модем работает в фоне. (-tt я убрал, т.к. это вывод дебага на экран, а экрана как бы уже и нет) P.S. Конечно, был бы конфиг для модема было бы проще, а то длина командной строки просто переваливает критический порог, да еще и кавычки непонятно где и как обозначать. | |||||||
1.
просто для справки: у любого линукса есть уже готовый механизм: /etc/conf.d/local.start /etc/conf.d/local.stop путь к этим файлам как и само название файлов может слегка отличаться в зависимости от дистрибутива, но суть думаю понятна. /etc/conf.d/local.start:
2.
ну раз уж вы в линуксе то забудьте про мышу chmod +x /usr/local/bin/t38start сделает ваш скрипт "exeсutable". 3. конфиг можно сделать самому и положить его в /etc/t38modem.conf например после чего в своем скрипте считывать оттуда значения и подставлять в строку запуска вашей проги. аналоги этого решения есть в сотнях других скриптов в любом линуксе - просто загляните в них.. _________________ Успехов! | |||||||
Я пытался размещать скрипт в init.d, а ссылку делать в rc2.d Закончилось плохо, модем запустился в основной консоли, вырубить его никак нельзя: ctrl+c не сработал-других способов не знаю, а до X-сервера дело не дошло, т.е. к линуксу доступа нет. Просекаете прелесть ситуации? Хорошо потратил до этого 3 минуты на копирование "системы" -опыт есть, потому как файл base пошел в корзину (но это лучше чем "Федорино горе"), вернее сразу на выброс, т.к.он большой.
Ну так я и в линуксе под WIN, вы ж в курсе. А скрипты я писать еще не научился. Last edited by Дима77 on Mon Sep 22, 2008 03:17 | |||||||
| вы невнимательны я не говорил про /init.d/ - я говорил про /conf.d/ также я не говорил вам писать скрипты - я говорил про ваш скрипт
если из него все параметры вынести в файл конфига то в строке запуска можно просто переменные поставить. более элегантно, не надо лазить в скрипт чтоб поправить IP или еще чтото - все можно будет через конфиг делать. вобщем просто удобно. как - смотрите в башевые скрипты в линуксе которые свои параметры читают из конфигов в /etc. многому оттуда научитесь попутно в любом случае надеюсь что был хоть малость но чем то полезным.. _________________ Успехов! | |||||||
| Я искал /conf.d/ но видимо в ubuntu его нету, причем ничего похожего я не нашел, есть еще profile , но рез-т мало отличается от вышеописанного, разве что систему еще можно спасти. А все что нарыл в google ведет именно в init.d и rcX.d Там основная подлянка в том, чтобы загрузка модема не остановила загрузку самой системы, когда 98 win только появился, то в autoexec.bat засовывался norton commander, только там F10 нажал и win пошел загружаться, а здесь если модем не туда засунул, то f10 уже не нажмешь. | |||||||
| поставь в конце вызова команды амперсанд он загонит твое команду в демон тоесть типа так /usr/local/sbin/t38modemscript.sh & и усе если хочешь давить вывод от программы гони его в /dev/null /usr/local/sbin/t38modemscript.sh & >> /dev/null _________________ Ubuntu-Server 6.06 /Gentoo /Asterisk 1.4.21.1/app_fax(t38) /spandsp-0.0.5pre4 Digium TDM400/Polycom IP301 SP /Snom 360/ Seiros ТИ24/Linksys 9X/ Kirk 600IPv3 | |||||||
| мнэээ.... если у бинарки есть ключик который ее демоном делает, то надо его в омандной строке передать. Тогда сразу после запуска модема управление вернется в стартап-скрипт и все пойдет дальше. Если же такого ключика нет, то любую команду можно запустить в бэкграунде добавив амперсанд в конце командной строки. но при этом неплохо stderr/stdout в /dev/null завернуть. то есть
| |||||||
| OK, автозапуск t38modem, красивый вариант: 1) Скрипт t38start создаем по маршруту /etc/init.d/
2) Делаем ярлык в /etc/rc2.d/ :
3) переименовываем ярлык в S60t38start И все имеем в лучшем виде. & рулит... Два замечания: Замена & на & >> /dev/null (v.Cache) не отменяет вывод на экран Замена & на > /dev/null 2>&1 & (v.dimas) отменяет вывод на экран А по поводу "есть ключик который ее демоном делает"... Ну что сказать, м.б. и есть. Программа СУПЕР (в плане t38 и в плане modem), а по мелочам :кто ее знает, что там есть и еще может быть, я 3-й месяц уже воюю, дорабатываем-с по мере возможностей. Last edited by Дима77 on Mon Sep 22, 2008 22:20 | |||||||
| В чем же суперность-то если три месяца трахаться надо? :=)
| |||||||
| dimas, а вы все-таки попробуйте, если еще не попробовали. Вы внесли фундаментальный вклад (я бы не смог) но поймите, надо оторваться от земли и проникнуться идеей, чтобы понять всю красоту . Вы мастерски умеете конструировать самолеты, ну так сядьте за штурвал, оцените всю красоту сверху. Вам же 3-х месяцев не надо, я по пунктам все выложил,часа должно хватить (и даже отвязал от Астериска-получилась некая независимость от того решения, над которым мы с вами, неделю,извините "трахались" Я этим вопросом очень давно интересовался, я бы сказал 3 года, а не 3 месяца. http://www.voipinfo.ru/forum/viewtopic.php?t=4689
http://www.voipinfo.ru/forum/viewtopic.php?t=4866&
Нет, конечно, если прикручивать это дело к Hylafax, согласно классическим "руководствам для линуксоидов", преимуществ над Send-Receive-rx-tx вы можете и не увидеть вовсе. Я же описываю несколько более красивое решение, кот. использует Ventafax. Дело в том что Ventafax (с моей т.зр.)-это лучшее что есть и будет из всего факс софта - по удобству работы, качеству отработки факс-ошибок и дружелюбности к извините USER-у. Просто когда я на рабочем месте, и мне надо принять факс, я просто нажимаю alt+ctrl+f12, и у меня факс стартует, и я на экране вижу как он принимается и у меня опосля приема открывается папочка и там лежит картинка, кот. хочу открываю, хочу верчу, хочу редактирую. А если мне надо отправить факс, я просто жму на файл правой кнопкой мышки(Да, мышкой, есть господа такой зверь в природе...) и из меню выбираю пункт "Отправить факс", и смотрю как он уходит. И у меня в рабочее время нет возможности думать о логах, дебагах, сложных линукс-командах, и вспоминать где ж у меня лог лежит и какой параметр чего в нем значит. И эта система практически неизменна вот уже почти лет 10. В voip есть 2 способа передачи факса 1) g711 -и есть программа IAXmodem (эту я кстати осилил за один вечер! http://www.voipinfo.ru/forum/viewtopic.php?t=11467 2) T38 -и есть программа T38modem: а суперность ее в том, что она T38 и она МОДЕМ и эти 2 вещи, как писал ded
ded очевидно собрал модем по H323, SIP версия появилась год назад, да она сырая в плане ньюансов сборки, думаю у Вячеслава Фролова кроме модема хватает забот, потому как недоработана именно SIP-часть, хотя в OPAL все я так понял есть, но в принципе моих корявых "инструкций" вполне достаточно, чтобы "опытный линуксоид" собрал эти "швейцарские часы" (SIP) за час. 3 месяца. Но ведь удалось же! ------------------------------------------- P.S. Первый раз в своей жизни я увидел Линукс в мае-июне 2008г.(не помню точно) http://www.voipinfo.ru/forum/viewtopic.php?t=11180 Крайний раз я писал какую-то простенькую прогу обработки текста на C++ (скорее это был просто C) году эдак в 2001. Просто надо знать к чему стремишься, а 3 месяца это ерунда, тем более я не только над модемом сидел все это время. Ну, если я неправ и слишком навязываю свои идеи, то готов в общем-то рассмотреть вопрос уничтожения ряда своих топиков на обоих форумах. А то уже какой-то LiveJournal получается, а не форум. Только один вопрос -особенно это касается любителей посылать в google. Сколько разумных ссылок вы найдете в google по запросу T38modem+SIP, я боюсь даже добавить (+sip provider).???!!! Ну, естественно, не считая воплей о помощи, кот. как правило везде без ответа... | |||||||
| Поднял t38modem для приёма факсов, отлично работает в связке с * и Hylafax. По поводу "длинной командной строки": если один раз вызвать t38modem с параметром --save, то он все параметры сохранит в /root/.pwlib_config/.ini и при следующих запусках будет брать параметры оттуда.
| |||||||
Если еще чего-нибудь усмотрите ценного, обязательно сообщайте. | |||||||
| такой вопрос. Можно ли прикрутить всё это волшебство к trixbox ? Т.е. не пересобирая астериск, а просто добавляю в систему новые модули. Интересует принципиальная возможность
| |||||||
T38modem-это не модуль астериска. Это отдельное приложение, вы можете установить его как extension к астериску или чему то другому(можно на том же PC, можно на другом, можно и на виндах). От астериска требуется, чтобы он не делал гадостей, т.е. не извращал T38 и не "портил" звонок. С т.зр. входящих звонков все чисто, с т.зр. исходящих необходим код написанный dimas(т.е. все-же чуть пересобрать астериск), иначе будет бяка. Но надо тестировать на разных провайдерах (для sipnet c правкой работает). | |||||||
| то, что это не модуль астериска, я знаю. Мне нужно, чтобы этот сторонний модуль выступал в качестве виртуального "конечного устройства" и принимал факс по Т38, т.к. астериск в триксбоксе этого делать не может. Отправка факсов мне не нужна. В принципе, я понял, что сделать это можно, спасибо
| |||||||
| Тогда можете ничего не менять ни в трикбоксе ни даже в оригинальном T38modem, если у вас в трикбокс ...как это ..T38path..ru нормально работает то все в ваших руках. Делаете один ext (любой, если без правки модема, т.е.без его регистрации то в peer обязательно ip-адрес и порт(типа6060) модема пропишите)и число модемов сколько надо в его командной строке. напр. ptty=+/dev/ttyT38-1,+/dev/ttyT38-2,+/dev/ttyT38-3 в зависимости от операционки пишется по разному Last edited by Дима77 on Thu Oct 02, 2008 13:52 | |||||||
| спасибо за информацию | |||||||
| поставил, вроде работает. Вот только когда звонок идёт на T38modem и тот делает ансвер, нет привычного сигнала факса. Подскажите плз, как можно решить это.
| |||||||
| --sip-old-asn?
| |||||||
| sip-old-asn ни причем, он влияет на то договорятся ли они упростите задачу сделайте прямой звонок на модем с voip-шлюза плюньте на halafax, поставьте efax-gtk, там все проще пробросьте порт в винды в конце концов, почувствуйте себя user-ом, сидящим в комфорте ваша факс программа должна стоять в режиме автоответа наберитесь терпения пересоберите все сначала ничего не упуская и не добавляя "отсебятины",типа "давайте поставим 5-ю версию вместо 4-й", я описал достаточно подробно, старайтесь чтобы все пакеты ставились а-ля apt-get install либо, блин, уже забыл как в Федоре это делается-там другая команда.. сходите на voipinfo, там отдельная тема как я двигался. Все "не сразу строилось.." noize, я правильно понимаю что вы его по sip хотите пользовать? P.S. при "прямом" звонке может не быть гудков, но с писком все нормально. По крайней мере первый писк четкий. Ну, наконец, на http://sourceforge.net/projects/t38modem появилась наконец trunk-версия, еще не разбирался -некогда. | |||||||
| Дима77 прочитал все твои статьи про t38modem. Собрал его как описано + добавил регитрацию, по другому он и компилится. Но БЛЯ, уже 1,5 неделе ебусь эта хня факсы не шлет хоть убей. Помоги разобраться в чем дело? Запускаю его так /usr/local/bin/t38modem -ttt --sip-old-asn --ports udp:5061-5061 -u "000c-290c-f296" -s "0000000000" -q "11.0.72.10:5060" --no-h323 --sip-no-listen --sip-redundancy 3 --ptty +/dev/ttyT38-1,+/dev/ttyT38-2,+/dev/ttyT38-3 --route "modem:.*=sip:@11.0.72.10:5060" --route "sip:.*=modem:" . Модем регится нормально, звонок тоже, только его писка на другом конце не слушно. Система RHEL 5.2, а станция Huawei SoftSwitchX 3000 | |||||||
У меня при "твоих" настройках (модем-на виндах, 192.168.11.1:5065=AXON PBX), а именно
все пищит и передается нормально, и на соседний AP, и на сипнет и на много чего еще. Если все делал "как написано", то проблем быть не должно. Один совет могу дать, но он тебе может не понравиться: открой на своем линуксе в файрволе все порты, т.е. типа UDP 1000-64000 TCP 1000-64000. Я именно так поступал на "федоре" когда у меня с астериском там "было глухо". Ну а какие именно порты надо открывать х.з, но чувствую что у тебя проблема в этом. Ибо на всех форумах на все вопросы все умно кричат "надо открывать порты", а когда дело доходит до вопроса "какие именно?" все обычно дружно молчат, поэтому не парься и открывай все подряд, если заработает, будешь думать дальше. И вообще, учись комбинировать: попробуй послать факс на свой Huawei через что-то другое, скажем sendfax-ом из астериска с того же линукса, попробуй послать с одного модема на другой через свой Huawei (--no-listen замени только), пробрось порт в win и используй нормальный факс-софт(м.б. у тебя с твоим Hylafax проблемы), собери IAX-модем-это проще, и используй с тем же факс-софтом ну и т.п. Ну т.е. ты строишь свою систему из кирпичиков, меняй их по одному и смотри чего получается, истина где-то рядом. Собери под винды в конце концов, поверь, это приятнее чем мудохаться с pttty-ками. Лично мне в линуксе уже наскучило, я люблю комфорт. Ну, если все енто не для тебя,и 1,5 недели ето много, то добро пожаловать: www.comisdn.com www.xcapi.de и будет тебе счастье по цене 250 евробаксов за один факс. (Счастье правда будет неполное ибо там стандартный COM-портовский интерфейс не поддерживается). | |||||||
| Дима77 спасибо за ответ. Но я уже разобрался. Засада была в следующем - долго обрабатывались DNS запросы, так как в файле /etc/resolv.conf были прописаны DNS сервера, да еще из другой сети, а default gw про них ничего не знал. Когда все закоментил в этом файле стало СЧАТЬЕ. Теперь все ГУД А ТЕБЕ ДИМАН БОЛЬШОЙ РЕСПЕКТ ЗА ТАКОЕ ИССЛЕДОВАНИЕ!!!! | |||||||
| morion, а тебе никакого респекта, за неномативную лексику тут. В зоне факс настраиваешь? | |||||||
Очень прошу описать процедуру настройки T38modem и Trixbox. Цель: отправлять факсы из Windows Fax Services через Trixbox. Спасибо | |||||||
| нужно пересобрать ядро и включить там ptty, после этого делать всё по инструкции.
| |||||||
спасибо за оперативность а сам модем где ставить: в Trixbox(+ проброс COM-портов), или в Windows? Соответственно по какой инструкции? (VentaFax->T38modem(SIP)->Asterisk->SIP-провайдер T38modem(SIP) сборка под OS WINDOWS) | |||||||
| ну про винду я вам сказать ничего не могу - не ставил, не знаю. С этим вопросом лучше к автору статьи
| |||||||
| Ну во-первых используйте транки. Во-вторых, компилируйте все под винды и не парьтесь. Дело в том, что разработчики OPAL очень плохо поддерживают линукс крайнее время, отдельные вещи в линуксе просто не компилируются. А вод поддержка виндов ныне на пять баллов. И потом в виндах есть дармовой g723, что м.б.актуально если провайдер g711 не поддерживает, пример-Арктел; (модем может устанавливать звонок не обязательно на g711, если поколдовать с файлом sipep.cxx и опаловскими плагинами). Ну и с пробросом портов нормально работает только DialOut/EZ, он не бесплатен, com0com работает корректно только с виндовым модемом. Но не забывайте про тот глюк, который исправил dimas, что касается исходящих звонков через Asterisk. М.б. его сейчас и нет, я не проверял. По крайней мере ни с одной виндовой pbx этот глюк (убиение g711 из-за t38 в первом invite) не проявляется. Сегодня попробовал с pbxnsip на одного американского провайдера (а также и напрямую на провайдера), разжалобил меня один американец: no problem, и даже лучше чем axon в плане всяких там натов. | |||||||
Может есть у кого готовый набор:
Может уже выложено где-то? | |||||||
| Один товарищ выложил в моей ветке "про винды" http://www.asteriskforum.ru/viewtopic.php?t=2821 , я не сторонник такие вещи "выкладывать", достаточно того что и так "учебник" написал как собирать. Но там "голая" старая версия,естественно без авторизации, способная работать только с Астериском на исх.звонки, да и то не очень способная, в силу указанного выше глюка в Астериске, необх. правка кода астериска и это не со всеми провайдерами будет работать;использовать Asterisk с виндовой версией модема на мой взгляд крайне глупо; для работы модема нужен Microsoft net Framework 2.0 sp1.
| |||||||
статья хорошая, но маленький алерт - патч с добавлением кода
уже не прокатит - код поменялся - и имя переменной и значение тоже. пока раскопки результата не принесли. PS: собираю под FreeBSD 8.1Stable 1.4 астериск. | |||||||