[Freeswitch-users] New approach for integrating FreeSWITCH and HylaFax

Florent Krieg fkrieg at sewan.eu
Tue May 13 18:32:10 MSD 2014


Hi Markus,

Thanks for having replied in such a comprehensible way, this is very 
clear to me now.

Best regards
Florent

Le 13/05/2014 15:28, Markus Lindenberg a écrit :
> Hi Florent,
>
> as you might know HylaFAX is a fax server suite for Unix. It is over 
> 20 years old but still actively developed, and it is *very* stable and 
> widely used. Hylafax consists of a few daemons and tools that 
> interact. It provides a FTP-based network protocol to submit faxes 
> from desktop clients or other systems, a scheduler that schedules 
> sending of queued faxes and dealing with failed transmissions and 
> backends to interact with fax modems.
>
> The most important components are:
>
> faxq - qeuue manager daemon for outgoing faxes
> hfaxd - network protocol server daemon (receives jobs and hands them 
> to faxq)
>
> faxgetty - modem daemon (one faxgetty waits for incoming faxes on one 
> particular modem)
> faxsend - open a modem device and send outgoing faxes through that modem
>
> As 20 years ago fax always meant using fax modems, HylaFax is natively 
> made to (only) work with fax modems through it's faxgetty and faxsend 
> processes. To use those, you *have* to have one or more fax modems 
> that are connected/exposed through a serial interface (/dev/tty* on 
> Linux).
>
> FreeSWITCH with its spandsp module can already provide a number of 
> virtual modems that HylaFAX can use, see 
> http://wiki.freeswitch.org/wiki/HylaFax. Connecting HylaFax and 
> FreeSWITCH using tty devices has some drawbacks as i mentioned.
>
> The interface of faxgetty and faxsend is pretty easy to implement, 
> faxsend is called by faxq, it will take a .tiff fax file and send it 
> using a fax modem. faxgetty will receive a fax and place a .tiff file 
> in HylaFax' spool directory. After receiving, it will call a shell 
> script that can dispatch the fax (send it by mail, print it etc.).
>
> What I did here was reimplement those two commands:
>
> gofaxd - replacement for one or more faxgetty processes
> gofaxsend - replacement for faxsend
>
> The two replacement commands will talk to FreeSWITCH through the event 
> socket and send/receive faxes using mod_spandsp's rxfax/txfax 
> applications. This has a few advantages over using tty devices to 
> connect to FreeSWITCH:
>
> - No Fax modem emulation and tty device necessary (thus the stack 
> becomes simpler)
> - Native T.38 without t38_gateway (more robust and less CPU usage)
> - We can use and log all sorts of events and verbose debugging (SIP 
> headers, bad rows etc.) to HylaFax.
> - Number of parallel incoming faxes not limited by number of virtual 
> modems.
>
> The concept was used before in the open source capi4hylafax suite that 
> implemented c2faxsend and c2faxrcvd as replacement for faxsend and 
> faxgetty. capi4hylafax could talk to ISDN CAPI 2.0 devices instead of 
> tty fax modems.
>
> Compared to t38modem or iaxmodem, which (as far as i know) are not 
> maintained anymore, the beauty in this system is that - apart from 
> some decent FreeSWITCH and HylaFax knowledge needed to implement it - 
> all the hard stuff (signal processing) is done in FreeSWITCH and 
> mod_spandsp with both are actively maintained and improved. GOfax.IP 
> is only shifting metadata like logs and queue files around and helping 
> HylaFax and FreeSWITCH talk to each other. That's not much more than 
> basic text processing, so it's easy to maintain and easy to improve 
> without deeper knowledge of Fax protocols, spandsp etc.
>
> The remaining question is if it is a good idea to use HylaFax for new 
> projects at all. If I have to implement a new receive only fax system, 
> I'd probably just use rxfax in the dialplan and a Lua script to 
> process the fax and be done with it. I've done that before and it's 
> easy to implement and works really well.
> The reason why we've built GOfax.IP is that we have a larger amount of 
> existing HylaFax setups that have been running for years (or even 
> decades) with existing incoming/outgoing document handling based on 
> HylaFax. Customers trust HylaFax and hesitate to completely redesign 
> their fax processing when wanting to move from legacy analog modems or 
> ISDN to Fax over IP. So it's more agreeable to all parties involved to 
> switch the PSTN connectivity in HylaFax than deploy a completely 
> different solution.
>
> Best regards,
>
> Markus
>
>
> On Fri, May 9, 2014 at 5:31 PM, Florent Krieg <fkrieg at sewan.eu 
> <mailto:fkrieg at sewan.eu>> wrote:
>
>     Hi Markus,
>
>     I don't know very well HylaFAX. How is your soft related to it?
>     You tell us about 'backend' but that doesn't really help a novice
>     like me.
>     I'd be grateful if you could tell me briefly what are their roles
>     (how they interact together).
>
>     Thanks in advance!
>
>     Best regards,
>     Florent
>
>     Le 09/05/2014 13:47, Markus Lindenberg a écrit :
>>     Hi,
>>
>>     We just open sourced GOfax.IP, a project i've been working on for
>>     the better part of the last two months.
>>     It's a new (and I think best yet) way to bring "native" Fax over
>>     IP using T.38 or G711 to HylaFAX Fax servers by directly
>>     connecting HylaFAX to FreeSWITCH's mod_spandsp without any modem
>>     emulation layer.
>>
>>     We replaced the faxgetty and faxsend processes with versions that
>>     use FreeSWITCH to handle incoming and outgoing calls.
>>
>>     https://github.com/gonicus/gofaxip
>>
>>     We wanted to have a solution that brings all the power of
>>     rxfax/tfax to HylaFax. FreeSWITCH's modem emulation has to be
>>     chained to t38_gateway to use T.38, and in my tests that didn't
>>     work as well as using txfax/rxfax, so I looked at how
>>     capi4hylafax hooks into HylaFax and implemented that approach for
>>     FreeSWITCH.
>>
>>     I'd love to hear thoughts/suggestions and am happy to accept bug
>>     reports and contributions.
>>
>>     Regards,
>>
>>     Markus
>>
>>
>>     _________________________________________________________________________
>>     Professional FreeSWITCH Consulting Services:
>>     consulting at freeswitch.org  <mailto:consulting at freeswitch.org>
>>     http://www.freeswitchsolutions.com
>>
>>     
>>     
>>
>>     Official FreeSWITCH Sites
>>     http://www.freeswitch.org
>>     http://wiki.freeswitch.org
>>     http://www.cluecon.com
>>
>>     FreeSWITCH-users mailing list
>>     FreeSWITCH-users at lists.freeswitch.org  <mailto:FreeSWITCH-users at lists.freeswitch.org>
>>     http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>     UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>     http://www.freeswitch.org
>>
>>     -- 
>>     Florent Krieg
>>     Sewan Communications - Ingénieur R&D
>
>     _________________________________________________________________________
>     Professional FreeSWITCH Consulting Services:
>     consulting at freeswitch.org <mailto:consulting at freeswitch.org>
>     http://www.freeswitchsolutions.com
>
>     
>     
>
>     Official FreeSWITCH Sites
>     http://www.freeswitch.org
>     http://wiki.freeswitch.org
>     http://www.cluecon.com
>
>     FreeSWITCH-users mailing list
>     FreeSWITCH-users at lists.freeswitch.org
>     <mailto:FreeSWITCH-users at lists.freeswitch.org>
>     http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>     UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>     http://www.freeswitch.org
>
>
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> 
> 
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
> -- 
> Florent Krieg
> Sewan Communications - Ingénieur R&D
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20140513/cdee2b29/attachment.html 


Join us at ClueCon 2013 Aug 6-8, 2013
More information about the FreeSWITCH-users mailing list