HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [hylafax-users] Digital vs Analog



here is my semi-informed summary on how this works (I DO, however, know that it works, because we ARE using it in a production environment)

t38modem (written by Vyacheslav Frolov) is a little 'virtual' modem application, which provides an interface between anything than can use a standard modem, and a voip gateway.

In other words, t38modem answers AT commands, and as far as HylaFAX is concerned - is just another type of modem. However, as HylaFAX talks to the t38modem, all gets converted to t38 and h323 and passed on to a voip gateway (cisco, in our case).

I found t38modem on http://www.openh323.org/, but must warn you that the latest version available is NOT available there - the website seems to not have been updated for a while. Get the latest straight from CVS on sourceforge by:

cvs -d:pserver:anonymous@xxxxxxxxxxxxxxxxxxx:/cvsroot/openh323 login
press 'Enter' when asked for password
cvs -z3 -d:pserver:anonymous@xxxxxxxxxxxxxxxxxxx:/cvsroot/openh323 co t38modem


More info can be found on the t38modem mailing list, which is hosted at http://www.openh323.org/ and IS current.

t38modem requires pwlib and openh323, available at http://www.voxgratia.org/.

jordan

ps> Below is a cut-and-paste of the README file from the t38modem source.

[SYD root@hfax01 t38modem-0.8.1]# cat README
/*
 * $Id: README,v 1.11 2005/03/04 16:41:01 vfrolov Exp $
 *
 * T38FAX Pseudo Modem
 *
 * Original author: Vyacheslav Frolov
 *
 */

1. Introduction
---------------

What is t38modem?

From your fax application view point it's a fax modem pool.
From IP network view point it's a H.323 endpoint with T.38 fax support.
From your view point it's a gateway between a fax application and IP network.


2. Building
-----------

2.1. Compiling for Unix
-----------------------

$ make opt

2.2. Compiling for Windows
--------------------------

Start MSVC (v5 or v6) with t38modem.dsp file.
Set Active Configuration to "t38modem - Win32 Release".
Build t38modem.exe.

3. Examples
-----------

3.1. Starting
-------------

$ ./obj_linux_x86_r/t38modem -n -o trace.log -p ttyx0,ttyx1 --route 0@xxxxxxxxx --route all@xxxxxxxxxxxx

Creates two modems /dev/ttyx0 and /dev/ttyx1

FreeBSD Users: You need to use  -p ttypa,ttypb instead of -p ttyx0,ttyx1.
               Remember to replace ttyx0 with ttypa and ttyx1 with ttypb
               when following the rest of these instructions.
               This will create two modems /dev/ttypa and /dev/ttypb.

Windows Users: You need two COM ports connected via Null-modem cable to create o ne modem.
If your COM1 connected to COM2 and COM3 connected to COM4 you nee d to use
-p \\.\COM2,\\.\COM4 instead of -p ttyx0,ttyx1.
This will create two modems COM1 and COM3.
Q. How to use t38modem without additional COM port hardware on Wi ndows?
A. Replace a pair of physical COM ports with a pair of virtual CO M ports.
See http://com0com.sourceforge.net/ project for details.
Q. What model of modem to select in Add Hardware Wizard?
A. Select "Standard 1440 bps Modem".


Cisco Users: You additionaly need to use --old-asn and --h245tunneldisable opt ions.

If dialed number begins with '0' then it will be routed to local host ('0' will be discarded).
If not then it will be routed to 172.16.33.21.


3.2. Testing (you need two consoles)
------------------------------------
(FreeBSD users - remeber to use /dev/ttypa and /dev/ttypb with 'cu -l')
(Windows users - use COM1 and COM3 with HyperTerminal)

$ cu -l /dev/ttyx0          $ cu -l /dev/ttyx1
Connected.                  Connected.
<-- at                      <-- at
--> OK                      --> OK
                            (wait at least 10 secs)
<-- atdt012345

                            -->
                            --> RING
                            -->
                            --> RING
                            <-- ati9
                            --> NDID = 12345
                            --> OK
                            -->
                            --> RING
                            -->
                            --> RING
                            <-- ata
--> CONNECT                 --> CONNECT
<-- x
--> OK
<-- ath
--> OK
                            -->
                            --> ERROR
<-- at
--> OK
                            <-- at
                            --> OK
...                         ...


3.3. Example of Cisco config (loopback) ---------------------------------------

10.0.2.12 --> Cisco port 2:D --E1-cable--> Cisco port 3:D --> 10.0.2.12

dial-peer voice 3340 voip
 incoming called-number 3334....
 codec g711alaw
 fax rate 14400
 fax protocol t38 ls-redundancy 0 hs-redundancy 0

dial-peer voice 3341 pots
 destination-pattern 3334....
 port 2:D
 forward-digits 7

dial-peer voice 3342 pots
 incoming called-number 334....
 direct-inward-dial
 port 3:D
exit

dial-peer voice 3343 voip
 destination-pattern 334....
 session target ipv4:10.0.2.12
 codec g711alaw
 fax rate 14400
 fax protocol t38 ls-redundancy 0 hs-redundancy 0
exit

3.4. Example of HylaFAX modem config files
------------------------------------------

Copy HylaFAX/etc/config.ttyx to HylaFAX's etc directory

Create simbolic links:

config.ttyx0 -> config.ttyx
config.ttyx1 -> config.ttyx

Start HylaFAX with new modems:

$ .../faxgetty -D ttyx0
$ .../faxgetty -D ttyx1

(FreeBSD users - don't forget we are using ttypa and ttypb)

4. AT commands specific to t38modem
-----------------------------------

4.1. AT#CID command
-------------------

4.1.1 calling/called number reporting
-------------------------------------

#CID=0  - disables calling/called number reporting (default).
#CID=10 - Enables calling/called number reporting after the first RING.

Example:

--> RING
--> NMBR = <calling number>
--> NDID = <called number>
--> RING
--> RING

4.2. ATI command
----------------

4.2.1 calling/called number reporting
-------------------------------------

I8      - reports calling number for last incoming call.
I9      - reports called number for last incoming call.

Example:

<-- ATI8I9
--> NMBR = <calling number>
--> NDID = <called number>
--> OK

4.3. ATD command
----------------

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:

<-- ATDF<user's number>

    enables T.38 mode request after dialing but user can override it by
    inserting V into <user's number>.

<-- ATD<user's number>V

    disables T.38 mode request after dialing and user can't override it
    by inserting F into <user's number>.

4.3.2 calling/called number modifiers
-------------------------------------

L - reset and begin of calling number.
D - continue of called number.

If calling number is empty after processing ATD command then t38modem's
local party number used.

Examples:

<-- ATD<user's number>

    calling number is t38modem's local party number but user can override
    it by inserting L<user's calling number> into <user's number>

<-- ATD<user's number>L

    calling number is t38modem's local party number and user can't override
    it by inserting L<user's calling number> into <user's number>

<-- ATDL<calling number>D<user's number>

    calling number is <calling number> but user can override
    it by inserting L<user's calling number> into <user's number>

<-- ATD<user's number>L<calling number>

    calling number is <calling number> and user can't override
    it by inserting L<user's calling number> into <user's number>

4.4. AT#DFRMC command
---------------------

4.4.1 Set delay for CONNECT result code for AT+FRM command
----------------------------------------------------------

#DFRMC=0        - disable delay (default).
#DFRMC=25       - set delay to 250 ms.


-----------------------------


/*
 * $Log: README,v $
 * Revision 1.11  2005/03/04 16:41:01  vfrolov
 * Implemented AT#DFRMC command
 *
 * Revision 1.10  2005/02/10 15:07:15  vfrolov
 * Added more comments for Windows users
 *
 * Revision 1.9  2005/02/07 10:07:38  vfrolov
 * Fixed com0com link
 * Moved Log to the bottom
 *
 * Revision 1.8  2005/02/03 13:20:01  vfrolov
 * Added comments for Windows users
 *
 * Revision 1.7  2002/12/19 10:41:03  vfrolov
 * Added "Introduction" and "AT commands" sections and made some fixes
 *
 * Revision 1.6  2002/11/18 22:57:53  craigs
 * Added patches from Vyacheslav Frolov for CORRIGENDUM
 *
 * Revision 1.5  2002/03/22 09:40:57  vfrolov
 * Removed obsoleted option -f
 *
 * Revision 1.4  2002/01/09 16:14:58  rogerh
 * FreeBSD uses /dev/ttypa and /dev/ttypb
 *
 * Revision 1.3  2002/01/09 16:01:03  rogerh
 * Executable is called t38modem
 *
 * Revision 1.2  2002/01/01 23:11:49  craigs
 * New version from Vyacheslav Frolov
 * Removed references to unneeded OpenH323 patches
 * Removed reference to -k and -m options in usage
 * Change to use -route option
 *
 */

Kite Lau wrote:
2005-10-29 12:21 +1000,Jordan Kojouharov:
to a single server with HylaFAX and 32 virtual t38modems interfacing directly to a Cisco VOIP gateway.


Interesting story. Can you explain a little bit. for example, how to
connect to a cisco VOIP gateway. Any document or example will be
helpful.

Regards,

Kite


____________________ HylaFAX(tm) Users Mailing List _______________________ To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*




Project hosted by iFAX Solutions