T38modem(SIP) сборка под OS WINDOWS
P.S. Копия. Оригинал http://www.voipinfo.ru/forum/viewtopic.php?t=11906
----------------------------------------------------------------------------------------------------------
Удалось собрать T38modem(SIP)+OPAL+PWLIB под OS Microsoft Windows,
а также сформулировать четкие положения что надо и что не надо делать. Данная инструкция по сборке работает на:
Microsoft Windows XP SP3
Microsoft Windows Server 2003 SP2
Для работы модема необходимо:
1. t38modem.exe 272кб
2. opal.dll 5.79мб
3. PTLib.dll 2.13мб
4. libexpat.dll 148кб
Программа без проблем переносится на другой PC указанных ОС. В этом случае необходима установка Microsoft.NET Framework 2.0 Service Pack 1 (дистрибутив 23,6мб)
T38modem в Windows работает точно также как и в Линукс.
Описание сборки под Линукс здесь:
http://www.voipinfo.ru/forum/viewtopic.php?t=11767
1.Установка Visual C++,SDK,NET Framework
Для успешной компиляции старая среда VC++6 не годится. Более того желательно, чтобы она вообще не была установлена на PC, иначе с ней придется бороться в процессе компиляции модема.SDK:новая,что for Windows Server 2008 не годится,там отсутствует ряд файлов и она слишком новая,старая XP SP2 SDK также нежелательна, в принципе с ней компилируется, но будет очень много предупреждений,оптимально Microsoft ® Windows Server® 2003 R2 Platform SDK,для работы модема также необходим NET Framework 2.0 SP1 (SP1-существенно).
1)Устанавливаем Microsoft Visual C++ 2005 Express Edition
http://msdn.microsoft.com/ru-ru/visualc/default.aspx
http://msdn.microsoft.com/ru-ru/vstudio ... n-us).aspx
2) http://www.microsoft.com/msdownload/pla ... sdkupdate/
Следуя этой инструкции устанавливаем Platform SDK.
http://msdn.microsoft.com/ru-ru/vstudio ... n-us).aspx
Вам нужна именно эта SDK:
Microsoft ® Windows Server® 2003 R2 Platform SDK Web Install
или
Windows® Server 2003 R2 Platform SDK Full Download
(Ссылки доступны на лицензионной ОС Windows)
После установки существенно: 3)Устанавливаем Microsoft.NET Framework 2.0 Service Pack 1
Он устанавливается либо через Windows Update, либо непосредственно с сайта Microsoft (google легко найдет нужную ссылку).
2.Устанавливаем необходимые вспомогательные инструменты и пакеты.
1) flex и bison -необходим для компиляции ptlib.
Скачиваем архив http://www.opalvoip.org/bin/flexbison.zip , распаковываем и кладем папку Tools в C:\Tools .
2) expat -если вы не установите этот пакет, то при компиляции Opal выскочит "ошибка PXML".
По ссылке http://sourceforge.net/project/showfile ... e_id=11277 скачиваем файл expat_win32bin_1_95_8.exe , устанавливаем expat в папку C:\ Expat-1.95.8
Не следует скачивать версию expat2.0.1, т.к. она плохо схватывается конфигуратором ptlib.
3) cvsnt -эта программа необходима для поддержки команды cvs в Windows
Скачиваем WinCvs2_0_2-4.zip:
http://www.wincvs.org/download.html#WINCVS
http://prdownloads.sourceforge.net/cvsg ... p?download
Из полученного архива берем один файл: cvsnt_setup.exe и устанавливаем.Второй файл-это графическая оболочка, для работы "cvs" cvsnt достаточно.
3.Скачиваем дистрибутивы pwlib,opal,t38modem. Дата opal существенна -с более поздним opal модем не компилируется. Дата t38modem для Win также существенна, дело в том, что поддержка opal была добавлена 28.05.07
* Revision 1.15 2007/05/28 13:44:53 vfrolov
* Added OPAL support
Однако 17.07.2007-20.07.2007 были сделаны нек. изменения:
* Revision 1.16 2007/07/17 10:05:26 vfrolov
* Added Unix98 PTY support
* Added OPAL example
И с этими изменениями модем под Windows уже не компилируется, поэтому 28.05.07Projects and Solutions->VC++ Directories
Сверху в обязательном порядке должно присутствовать(нужно дописать) стедующее: Если у вас неважно где присутствуют пути типа "C:\Program Files\Microsoft Visual Studio\VC98...",то эти пути надо убрать, эти пути приведут лишь к ошибкам.
5.Проводим предварительный тест configure.exe, дабы застраховать себя от дальнейших ошибок.
Из командной строки: В файле test.txt мы должны увидеть следующее. Существенно, чтобы первые строчки ссылались на "sdk for windows server 2003 r2" и "Expat XML" был бы обнаружен, если первые строчки ссылаются на другие пути, напр. в VC98, или обнаружено что-то еще в каких-то иных местах, ваша задача всеми известными методами (архивирование файлов, перенос на другой PC,убиение файлов) обеспечить недоступность "лишнего" и доступность "нужного" на момент компиляции, т.е. картинка в test.txt должна быть похожа на мою, иначе успех не гарантирован и двигаться дальше нельзя.
6.Компиляция в Microsoft Visual C++ 2005 Express Edition
1)PTLib Static 2)MergeSym Результатом будет файл C:\pwlib\Lib\MergeSym.exe Он необходим для компиляции dll в п.3),но скомпилировать его можно лишь после выполнения п.1)
3)PTLib DLL (ptlib.dll) 4)OPAL Static и OPAL_dll (opal.dll)
Важно: необходимо использовать именно проект opal_samples_2005.sln (для проверки:там внутри есть OpenPhone).Если вы случайно сделаете все в проекте opal_2005.sln,то у вас внешне все включая модем скомпилируется "правильно",но opal.dll получится дефектной и больше по размеру, и модем при запуске будет выдавать "Catastrofic failure". 5)T38modem (t38modem.exe)
Важно:необходимо использовать проект из папки t38modem\opal Результатом будет файл C:\t38modem\opal\Release\t38modem.exe
7. Сборка приложения:
Если все прошло успешно, то имеем 4 файла: Эти 4 файла собственно и представляют собой законченное win32 приложение.
Создаем папку напр. C:\MyModem и копируем эти 4 файла туда.
8.Проверяем модем:
Запускаем файл t38modem.exe без параметров.
Если вы все сделали правильно, то увидите примерно следующее: Если вы вдруг увидели такое: это означает, что вы невнимательно п.6 подпункт 4) и opal.dll у вас скомпилировался неправильно.
9.Устанавливаем и настраиваем Null-modem emulator (com0com)
1)Скачиваем http://sourceforge.net/projects/com0com/
2)Устанавливаем (соглашаемся с автоматической установкой всех драйверов что предложит)
3)Настраиваем Пуск->Программы->com0com->Setup
У нас должны получиться 2 Virtual Port Pair (будем запускать 2 модема): CNCB0 и CNCB1 -оставляем как предлагает программа, они смотрят в сторону T38modem
COM14 и COM15 -назначаем свободные порты, они смотрят в сторону нашей факс-программы, имена должны быть нормальные, ибо VentaFax напр. просто не увидит кривое имя CNCA0.
10.Формируем справочные файлы (для удобства)
1)В папке где у нас находится t38modem.exe выполняем команду: в рез-те получаем справочный файл help.txt где подробно описаны опции запуска модема
2)Открываем файл C:\t38modem\README в WORD и сохраняем в удобочитаемом формате ReadMe.doc в папке C:\MyModem.
11.Конфигурируем модем(ы), для чего:
В рабочей папке C:\MyModem создаем файл modem.bat и пишем внутрь него следующее: --no-h323 //работаем по SIP
-u T38modem //username
--sip-old-asn //как правило без этого параметра факсы если и ходят,то плохо
--sip-listen udp$192.168.11.2:6060 //сидим и принимаем звонки на порту udp6060 192.168.11.2-наш ip
-p \\.\CNCB0,\\.\CNCB1 //запускаем 2модема на виртуальных портах CNCB0 и CNCB1 (что соотв. com14 и com15 согласно настройкам com0com)
--route "modem:.*=sip:@192.168.11.5:5060" //все исходящие звонки направляем на 192.168.11.5 порт 5060 (напр.на Asterisk)
12.Запускаем модемы, для чего:
Жмем на файл modem.bat, модемы работают.
12А.Настраиваем SIP-сервер (Asterisk).
К сожалению, на настоящий момент T38modem не поддерживает авторизацию по паролю и регистрацию на SIP-сервере, поэтому единственным понятным способом посылать факсы на внешнего SIP-провайдера является использование его совместно с Asterisk.
Корректное использование с Asterisk в части исходящей связи стало возможным благодаря dimas с www.asteriskforum.ru
Описание настройки и правки Asterisk можно найти тут:
http://www.voipinfo.ru/forum/viewtopic.php?t=11767
14.Настраиваем факсовую программу.
1) Можем просто указывать COM14, COM15 если программа это позволяет (VentaFax).
2) Можем через панель управления создать "Стандартный модем 14400" и посадить его на COM14(COM15) и пользоваться всеми прелестями (и недостатками) TAPI. Для Microsoft Fax без этого не обойтись.
15.Принимаем-отправляем факсы.
----------------------------------------------------------------------------------------------------------
После многочисленных экспериментов, методом проб и ошибок,anest писал(а):а что именно вы компилите под винду? астериск?
Удалось собрать T38modem(SIP)+OPAL+PWLIB под OS Microsoft Windows,
а также сформулировать четкие положения что надо и что не надо делать. Данная инструкция по сборке работает на:
Microsoft Windows XP SP3
Microsoft Windows Server 2003 SP2
Для работы модема необходимо:
1. t38modem.exe 272кб
2. opal.dll 5.79мб
3. PTLib.dll 2.13мб
4. libexpat.dll 148кб
Программа без проблем переносится на другой PC указанных ОС. В этом случае необходима установка Microsoft.NET Framework 2.0 Service Pack 1 (дистрибутив 23,6мб)
T38modem в Windows работает точно также как и в Линукс.
Описание сборки под Линукс здесь:
http://www.voipinfo.ru/forum/viewtopic.php?t=11767
1.Установка Visual C++,SDK,NET Framework
Для успешной компиляции старая среда VC++6 не годится. Более того желательно, чтобы она вообще не была установлена на PC, иначе с ней придется бороться в процессе компиляции модема.SDK:новая,что for Windows Server 2008 не годится,там отсутствует ряд файлов и она слишком новая,старая XP SP2 SDK также нежелательна, в принципе с ней компилируется, но будет очень много предупреждений,оптимально Microsoft ® Windows Server® 2003 R2 Platform SDK,для работы модема также необходим NET Framework 2.0 SP1 (SP1-существенно).
1)Устанавливаем Microsoft Visual C++ 2005 Express Edition
http://msdn.microsoft.com/ru-ru/visualc/default.aspx
http://msdn.microsoft.com/ru-ru/vstudio ... n-us).aspx
2) http://www.microsoft.com/msdownload/pla ... sdkupdate/
Следуя этой инструкции устанавливаем Platform SDK.
http://msdn.microsoft.com/ru-ru/vstudio ... n-us).aspx
Вам нужна именно эта SDK:
Microsoft ® Windows Server® 2003 R2 Platform SDK Web Install
или
Windows® Server 2003 R2 Platform SDK Full Download
(Ссылки доступны на лицензионной ОС Windows)
После установки существенно:
Код: Выделить всё
Add the paths to the appropriate subsection: Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\LibОн устанавливается либо через Windows Update, либо непосредственно с сайта Microsoft (google легко найдет нужную ссылку).
2.Устанавливаем необходимые вспомогательные инструменты и пакеты.
1) flex и bison -необходим для компиляции ptlib.
Скачиваем архив http://www.opalvoip.org/bin/flexbison.zip , распаковываем и кладем папку Tools в C:\Tools .
2) expat -если вы не установите этот пакет, то при компиляции Opal выскочит "ошибка PXML".
По ссылке http://sourceforge.net/project/showfile ... e_id=11277 скачиваем файл expat_win32bin_1_95_8.exe , устанавливаем expat в папку C:\ Expat-1.95.8
Не следует скачивать версию expat2.0.1, т.к. она плохо схватывается конфигуратором ptlib.
3) cvsnt -эта программа необходима для поддержки команды cvs в Windows
Скачиваем WinCvs2_0_2-4.zip:
http://www.wincvs.org/download.html#WINCVS
http://prdownloads.sourceforge.net/cvsg ... p?download
Из полученного архива берем один файл: cvsnt_setup.exe и устанавливаем.Второй файл-это графическая оболочка, для работы "cvs" cvsnt достаточно.
3.Скачиваем дистрибутивы pwlib,opal,t38modem.
Код: Выделить всё
D:\>cd c:\ C:\>cvs -z9 -d :pserver:[email protected]:/cvsroot/openh323 co ptlib_win32 C:\>cvs -z9 -d :pserver:[email protected]:/cvsroot/openh323 co -D "5/21/2007 23:59:59" opal C:\>cvs -z9 -d :pserver:[email protected]:/cvsroot/openh323 co -D "6/25/2007 23:59:59" t38modem* Revision 1.15 2007/05/28 13:44:53 vfrolov
* Added OPAL support
Однако 17.07.2007-20.07.2007 были сделаны нек. изменения:
* Revision 1.16 2007/07/17 10:05:26 vfrolov
* Added Unix98 PTY support
* Added OPAL example
И с этими изменениями модем под Windows уже не компилируется, поэтому 28.05.07Projects and Solutions->VC++ Directories
Сверху в обязательном порядке должно присутствовать(нужно дописать) стедующее:
Код: Выделить всё
Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin C:\tools C:\pwlib\lib C:\opal\lib Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include C:\pwlib\include C:\opal\include Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib C:\pwlib\lib C:\opal\lib5.Проводим предварительный тест configure.exe, дабы застраховать себя от дальнейших ошибок.
Из командной строки:
Код: Выделить всё
C:\>cd pwlib C:\pwlib>configure.exe > test.txtКод: Выделить всё
PWLib Configure 1.12 - opened configure.ac Located DNS Resolver at c:\program files\microsoft platform sdk for windows server 2003 r2\ Located IPv6 Support at c:\program files\microsoft platform sdk for windows server 2003 r2\include\ Located QoS Support at c:\program files\microsoft platform sdk for windows server 2003 r2\include\ Located ODBC support at c:\program files\microsoft platform sdk for windows server 2003 r2\include\ Searching C:\ Located Windows Expat XML at c:\expat-1.95.8\ Searching D:\ ... Windows Expat XML enabled6.Компиляция в Microsoft Visual C++ 2005 Express Edition
1)PTLib Static
Код: Выделить всё
File->Open->Project/Solution->C:\pwlib\pwlib_2005.sln Solution Configurations: Release Win32 PTLib Static->Build... File->Close SolutionКод: Выделить всё
File->Open->Project/Solution->C:\pwlib\Tools\MergeSym\MergeSym_2005.vcproj Solution Configurations: Release Win32 Debug->Start Debugging... File->Close Solution3)PTLib DLL (ptlib.dll)
Код: Выделить всё
File->Open->Project/Solution->C:\pwlib\pwlib_2005.sln Solution Configurations: Release Win32 PTLib DLL->Build... File->Close SolutionВажно: необходимо использовать именно проект opal_samples_2005.sln (для проверки:там внутри есть OpenPhone).Если вы случайно сделаете все в проекте opal_2005.sln,то у вас внешне все включая модем скомпилируется "правильно",но opal.dll получится дефектной и больше по размеру, и модем при запуске будет выдавать "Catastrofic failure".
Код: Выделить всё
File->Open->Project/Solution->C:\opal\opal_samples_2005.sln Solution Configurations: Release Win32 OPAL Static->Build... OPAL_dll->Build... File->Close SolutionВажно:необходимо использовать проект из папки t38modem\opal
Код: Выделить всё
File->Open->Project/Solution->C:\t38modem\opal\t38modem_2005.vcproj Solution Configurations: Release Win32 Debug->Start Debugging... File->Close Solution7. Сборка приложения:
Если все прошло успешно, то имеем 4 файла:
Код: Выделить всё
C:\t38modem\opal\Release\t38modem.exe C:\opal\lib\opal.dll C:\pwlib\Lib\PTLib.dll C:\Expat-1.95.8\Libs\libexpat.dllСоздаем папку напр. C:\MyModem и копируем эти 4 файла туда.
8.Проверяем модем:
Запускаем файл t38modem.exe без параметров.
Если вы все сделали правильно, то увидите примерно следующее:
Код: Выделить всё
T38Modem Version 1.0.0 by OpenH323 Project on Windows XP (v5.1.2600-i586 (Model=15 Stepping=6)) 2008/09/15 13:55:07.484 T38Modem Version 1.0.0 by OpenH323 Project on Windows XP (v5.1.2600-i586 (Model=15 Stepping=6)) at 2008/9/15 13:55:07.484 Waiting for incoming H.323 calls from tcp$*:1720 Searching for gatekeeper... No gatekeeper found. Waiting for incoming SIP calls from tcp$*:5060,udp$*:5060Код: Выделить всё
T38Modem Version 1.0.0 ... Catastrophic failure, PProcess::Current() = NULL!! 9.Устанавливаем и настраиваем Null-modem emulator (com0com)
1)Скачиваем http://sourceforge.net/projects/com0com/
2)Устанавливаем (соглашаемся с автоматической установкой всех драйверов что предложит)
3)Настраиваем Пуск->Программы->com0com->Setup
У нас должны получиться 2 Virtual Port Pair (будем запускать 2 модема):
Код: Выделить всё
Virtual Port Pair 0 COM14 CNCB0 Virtual Port Pair 1 COM15 CNCB1COM14 и COM15 -назначаем свободные порты, они смотрят в сторону нашей факс-программы, имена должны быть нормальные, ибо VentaFax напр. просто не увидит кривое имя CNCA0.
10.Формируем справочные файлы (для удобства)
1)В папке где у нас находится t38modem.exe выполняем команду:
Код: Выделить всё
C:\MyModem>t38modem.exe -h > help.txt2)Открываем файл C:\t38modem\README в WORD и сохраняем в удобочитаемом формате ReadMe.doc в папке C:\MyModem.
11.Конфигурируем модем(ы), для чего:
В рабочей папке C:\MyModem создаем файл modem.bat и пишем внутрь него следующее:
Код: Выделить всё
t38modem.exe -tt --no-h323 -u T38modem --sip-old-asn --sip-listen udp$192.168.11.2:6060 --sip-redundancy 2 -p \\.\CNCB0,\\.\CNCB1 --route "modem:.*=sip:@192.168.11.5:5060" --route "sip:.*=modem:"-u T38modem //username
--sip-old-asn //как правило без этого параметра факсы если и ходят,то плохо
--sip-listen udp$192.168.11.2:6060 //сидим и принимаем звонки на порту udp6060 192.168.11.2-наш ip
-p \\.\CNCB0,\\.\CNCB1 //запускаем 2модема на виртуальных портах CNCB0 и CNCB1 (что соотв. com14 и com15 согласно настройкам com0com)
--route "modem:.*=sip:@192.168.11.5:5060" //все исходящие звонки направляем на 192.168.11.5 порт 5060 (напр.на Asterisk)
12.Запускаем модемы, для чего:
Жмем на файл modem.bat, модемы работают.
12А.Настраиваем SIP-сервер (Asterisk).
К сожалению, на настоящий момент T38modem не поддерживает авторизацию по паролю и регистрацию на SIP-сервере, поэтому единственным понятным способом посылать факсы на внешнего SIP-провайдера является использование его совместно с Asterisk.
Корректное использование с Asterisk в части исходящей связи стало возможным благодаря dimas с www.asteriskforum.ru
Описание настройки и правки Asterisk можно найти тут:
http://www.voipinfo.ru/forum/viewtopic.php?t=11767
14.Настраиваем факсовую программу.
1) Можем просто указывать COM14, COM15 если программа это позволяет (VentaFax).
2) Можем через панель управления создать "Стандартный модем 14400" и посадить его на COM14(COM15) и пользоваться всеми прелестями (и недостатками) TAPI. Для Microsoft Fax без этого не обойтись.
15.Принимаем-отправляем факсы.