<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi Markus,<br>
    <br>
    Thanks for having replied in such a comprehensible way, this is very
    clear to me now.<br>
    <br>
    Best regards<br>
    Florent<br>
    <br>
    <div class="moz-cite-prefix">Le 13/05/2014 15:28, Markus Lindenberg
      a &eacute;crit&nbsp;:<br>
    </div>
    <blockquote
cite="mid:CAExAoeCca=fCgq-ZJAwivAOv0GVSKZzTxm4Qbpqn3Odj75jVog@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hi Florent,&nbsp;
        <div><br>
        </div>
        <div>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.&nbsp;</div>
        <div><br>
        </div>
        <div>The most important components are:</div>
        <div><br>
        </div>
        <div>faxq - qeuue manager daemon for outgoing faxes</div>
        <div>hfaxd - network protocol server daemon (receives jobs and
          hands them to faxq)</div>
        <div>
          <br>
        </div>
        <div>faxgetty - modem daemon (one faxgetty waits for incoming
          faxes on one particular modem)</div>
        <div>faxsend - open a modem device and send outgoing faxes
          through that modem</div>
        <div><br>
        </div>
        <div>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).&nbsp;</div>
        <div><br>
        </div>
        <div>FreeSWITCH with its spandsp module can already provide a
          number of virtual modems that HylaFAX can use, see&nbsp;<a
            moz-do-not-send="true"
            href="http://wiki.freeswitch.org/wiki/HylaFax">http://wiki.freeswitch.org/wiki/HylaFax</a>.
          Connecting HylaFax and FreeSWITCH using tty devices has some
          drawbacks as i mentioned.&nbsp;</div>
        <div><br>
        </div>
        <div>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.).&nbsp;</div>
        <div><br>
        </div>
        <div>What I did here was reimplement those two commands:</div>
        <div><br>
        </div>
        <div>gofaxd - replacement for one or more faxgetty processes</div>
        <div>gofaxsend - replacement for faxsend</div>
        <div><br>
        </div>
        <div>
          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:</div>
        <div><br>
        </div>
        <div>- No Fax modem emulation and tty device necessary (thus the
          stack becomes simpler)</div>
        <div>- Native T.38 without t38_gateway (more robust and less CPU
          usage)</div>
        <div>- We can use and log all sorts of events and verbose
          debugging (SIP headers, bad rows etc.) to HylaFax.&nbsp;</div>
        <div>- Number of parallel incoming faxes not limited by number
          of virtual modems.&nbsp;</div>
        <div><br>
        </div>
        <div>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.&nbsp;</div>
        <div><br>
        </div>
        <div>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.&nbsp;</div>
        <div><br>
        </div>
        <div>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.&nbsp;</div>
        <div>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.</div>
        <div><br>
        </div>
        <div>Best regards,&nbsp;</div>
        <div><br>
        </div>
        <div>Markus</div>
        <div>
          <div class="gmail_extra"><br>
            <br>
            <div class="gmail_quote">On Fri, May 9, 2014 at 5:31 PM,
              Florent Krieg <span dir="ltr">&lt;<a
                  moz-do-not-send="true" href="mailto:fkrieg@sewan.eu"
                  target="_blank">fkrieg@sewan.eu</a>&gt;</span> wrote:<br>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                <div text="#000000" bgcolor="#FFFFFF"> Hi Markus,<br>
                  <br>
                  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. <br>
                  I'd be grateful if you could tell me briefly what are
                  their roles (how they interact together).<br>
                  <br>
                  Thanks in advance!<br>
                  <br>
                  Best regards,<br>
                  Florent<br>
                  <br>
                  <div>Le 09/05/2014 13:47, Markus Lindenberg a &eacute;crit&nbsp;:<br>
                  </div>
                  <blockquote type="cite">
                    <div>
                      <div class="h5">
                        <div dir="ltr">Hi,&nbsp;
                          <div><br>
                          </div>
                          <div>
                            <div>We just open sourced GOfax.IP, a
                              project i've been working on for the
                              better part of the last two months.&nbsp;</div>
                            <div>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.</div>
                            <div><br>
                            </div>
                            <div>We replaced the faxgetty and faxsend
                              processes with versions that use
                              FreeSWITCH to handle incoming and outgoing
                              calls.&nbsp;</div>
                            <div><br>
                            </div>
                            <div><a moz-do-not-send="true"
                                href="https://github.com/gonicus/gofaxip"
                                target="_blank">https://github.com/gonicus/gofaxip</a><br>
                            </div>
                            <div><br>
                            </div>
                            <div>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.&nbsp;</div>
                            <div><br>
                            </div>
                            <div>I'd love to hear thoughts/suggestions
                              and am happy to accept bug reports and
                              contributions.</div>
                            <div><br>
                            </div>
                            <div>Regards,&nbsp;</div>
                          </div>
                          <div><br>
                          </div>
                          <div>Markus</div>
                        </div>
                        <br>
                        <fieldset></fieldset>
                        <br>
                      </div>
                    </div>
                    <pre>_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
<a moz-do-not-send="true" href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a>
<a moz-do-not-send="true" href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a>

FreeSWITCH-powered IP PBX: The CudaTel Communication Server
<a moz-do-not-send="true" href="http://www.cudatel.com" target="_blank">http://www.cudatel.com</a>

Official FreeSWITCH Sites
<a moz-do-not-send="true" href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a>
<a moz-do-not-send="true" href="http://wiki.freeswitch.org" target="_blank">http://wiki.freeswitch.org</a>
<a moz-do-not-send="true" href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a>

FreeSWITCH-users mailing list
<a moz-do-not-send="true" href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a>
<a moz-do-not-send="true" href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a>
UNSUBSCRIBE:<a moz-do-not-send="true" href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a>
<a moz-do-not-send="true" href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a>
</pre>
                    <br>
                    <span class=""><font color="#888888">
                        <pre cols="72">-- 
Florent Krieg
Sewan Communications - Ing&eacute;nieur R&amp;D</pre>
                      </font></span></blockquote>
                </div>
                <br>
_________________________________________________________________________<br>
                Professional FreeSWITCH Consulting Services:<br>
                <a moz-do-not-send="true"
                  href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
                <a moz-do-not-send="true"
                  href="http://www.freeswitchsolutions.com"
                  target="_blank">http://www.freeswitchsolutions.com</a><br>
                <br>
                FreeSWITCH-powered IP PBX: The CudaTel Communication
                Server<br>
                <a moz-do-not-send="true" href="http://www.cudatel.com"
                  target="_blank">http://www.cudatel.com</a><br>
                <br>
                Official FreeSWITCH Sites<br>
                <a moz-do-not-send="true"
                  href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
                <a moz-do-not-send="true"
                  href="http://wiki.freeswitch.org" target="_blank">http://wiki.freeswitch.org</a><br>
                <a moz-do-not-send="true" href="http://www.cluecon.com"
                  target="_blank">http://www.cluecon.com</a><br>
                <br>
                FreeSWITCH-users mailing list<br>
                <a moz-do-not-send="true"
                  href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
                <a moz-do-not-send="true"
                  href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users"
                  target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
                UNSUBSCRIBE:<a moz-do-not-send="true"
                  href="http://lists.freeswitch.org/mailman/options/freeswitch-users"
                  target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
                <a moz-do-not-send="true"
                  href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
                <br>
              </blockquote>
            </div>
            <br>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
<a class="moz-txt-link-abbreviated" href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a>
<a class="moz-txt-link-freetext" href="http://www.freeswitchsolutions.com">http://www.freeswitchsolutions.com</a>

FreeSWITCH-powered IP PBX: The CudaTel Communication Server
<a class="moz-txt-link-freetext" href="http://www.cudatel.com">http://www.cudatel.com</a>

Official FreeSWITCH Sites
<a class="moz-txt-link-freetext" href="http://www.freeswitch.org">http://www.freeswitch.org</a>
<a class="moz-txt-link-freetext" href="http://wiki.freeswitch.org">http://wiki.freeswitch.org</a>
<a class="moz-txt-link-freetext" href="http://www.cluecon.com">http://www.cluecon.com</a>

FreeSWITCH-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a>
UNSUBSCRIBE:<a class="moz-txt-link-freetext" href="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</a>
<a class="moz-txt-link-freetext" href="http://www.freeswitch.org">http://www.freeswitch.org</a>
</pre>
      <br>
      <pre class="moz-signature" cols="72">-- 
Florent Krieg
Sewan Communications - Ing&eacute;nieur R&amp;D</pre>
    </blockquote>
  </body>
</html>