The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка факс-севера Hylafax (modem fax hylafax ubuntu linux mgetty voice)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: modem, fax, hylafax, ubuntu, linux, mgetty, voice,  (найти похожие документы)
From: Беленьков Николай <n.belenkov@gmail.com.> Newsgroups: email Date: Mon, 23 May 2008 17:02:14 +0000 (UTC) Subject: Настройка факс-севера Hylafax Данный документ представляет собой комментарий к настройке факс-сервера Hylafax с функцией голосового оповещения а-ля "Примите факс пожалуйста". Я использовал систему Ubuntu Server i386 7.10. Рабочее железо: старенький Celeron 800 с 20 гигабайтным винтом и128 мегабайтами оперативной памяти. Модемов использовал несколько. Сначала был внутренний USR Courier voice 56k int. Но, как позже выяснилось, сей модем криво поддерживает войсовые функции. Поэтому, поискав информацию в Интернете, а в частности на сайте Hylafax'a www.hylafax.org, выбрал для покупки модем IDC-5614BXL/VR. Этот модем основан на чипе Rockwell, который войс-комманды поддерживает хорошо. Ставим систему, после чего делаем: apt-get install libtiff4 libtiff4-dev apt-get install gs-gpl gsfonts apt-get install hylafax-server После того как система настроит нужные пакеты, можно приступать непосредственно к настройке сервера. Позже я столкнулся с граблями, с которыми мучался весьма долго. Версия сервера из рипозиториев, к сожалению, не имеет корректной поддержки голоса. Поэтому, после переписки с разработчиками, я поставил версию Hylafax+, взятую с неофициального сайта девелоперов http://hylafax.sourceforge.net/download.php . Версия Hylafax+, по сравнению с обычной, имеет несколько преимуществ, главное из которых поддержка голоса. Скачиваем архив, распаковываем в папку, делаем make, затем make install (естественно предварительно удалив предыдущий сервер hyalfax, поставленный из рипозиториев). Итак, мы имеем систему с модемом и установленным Hylafax'ом. Запускаем команду faxsetup, следуем всем инструкциям и вопросам, будет ругаться на отсутствие программ egetty, но это не страшно. После окончания faxsetup, будет автоматически вызван faxaddmodem, чтобы добавить модем в факс-сервер. Делаем все настройки по умолчанию, только ставим класс утройства 1.0 (позже будет описано почему). Рассмотрим поближе структуру фак-сервера по каталогам и файлам. /etc/hylafax - файлы конфигурации, которые определяю правила набора /var/spool/hylafax - корневой каталок факс-сервера, в котором лежат основные компоненты программы. Опираясь на этот каталог, рассмотрим "внутренности". etc/ - один из самых главных каталогов для нас, в нем находятся файлы конфигурации модема и юзеров. log/ - здесь у нас логи, пишущиеся при каждом обращении факс-сервера к модему sendq/ - очередь, тут лежат файлы, отвечающие за очередь docq/ - очередь, тут лежат непосредственно документы на отправку. Вот вроде бы и всё. Самое необходимое рассмотрено. Взглянем внутрь конфига /var/spool/hylafax/etc/config.ttyS0 # $Id: conexant-1.0,v 1.5 2008/01/14 06:00:39 faxguy Exp $ # # Configuration for a Rockwell/Conexant K56 Class 1.0 modem using # the RCV56DPF and similar chipsets. These chipsets are generally # flash- upgradable and appear on ISA as well as PCI. They # support "Class 1.0" which means that they have "adaptive receive" # (AT+FAR=1), but not V.34. # # Comtrol RocketModem II/III/IV # MultiTech MT5600ZDX # Zoltrix FMVSP56i3 # # CountryCode: 7 AreaCode: 812 FAXNumber: +7.812.309.0607 LongDistancePrefix: 8 InternationalPrefix: 10 DialStringRules: etc/dialrules ServerTracing: 1 SessionTracing: 0xFFF RecvFileMode: 0644 LogFileMode: 0644 DeviceMode: 0644 RingsBeforeAnswer: 1 SpeakerVolume: off GettyArgs: "-h %l dx_%s" LocalIdentifier: Concord TagLineFont: etc/lutRS18.pcf TagLineFormat: "From %%l|%c|Page %%P of %%T" PercentGoodLines: 75 MaxConsecutiveBadLines: 25 MaxRecvPages: 25 # # # Modem-related stuff: should reflect modem command interface # and hardware connection/cabling (e.g. flow control). # ModemType: Class1.0 # use this to supply a hint ModemRate: 115200 # rate for DCE-DTE communication ModemFlowControl: rtscts # default ModemDialCmd: "ATS7=50\nAT&K3#CLS=8\nAT#VRA=1\nAT#VSR=11025#VBS=8\nATDT%s\n<waitfor:VCON> AT#VLS=4\nAT#VTX\n<waitfor:CONNECT><play:1><waitfor:VCON>AT+FCLASS=1\nATD" # # With the RocketModem IV (and possibly III) you may need to use a much # higher ModemRate than 19200 because, apparently, it suffers from potential # buffer underrun problems. Fortunately, it doesn't have buffer overflow # issues, and so using 115200 should work (both rtscts and xonxoff test good). # ModemNoFlowCmd: AT&K0 # setup no flow control ModemHardFlowCmd: AT&K3 # setup hardware flow control ModemSoftFlowCmd: AT&K4 # setup software flow control ModemSetupDTRCmd: AT&D2 # setup so DTR drop resets modem ModemSetupDCDCmd: AT&C1 # setup so DCD reflects carrier (or not) # Class1AdaptRecvCmd: AT+FAR=1 # reports carrier detection mismatches Тут самые главные для нас параметры, это MaxConsecutiveBadLines, PercentGoodLines, ModemRate и ModemDialCmd. Параметра ModemDialCmd в базовом, созданном faxaddmodem'ом, конфиге может не быть, поэтому добавляем самостоятельно. Параметр ModemRate выставлен в 115200, это необходимо для проигрывания голоса модемом в диал линию. Параметры MaxConsecutiveBadLines и PercentGoodLines сделаны такими, чтобы у нас небыло непрошедших факсов, это необходимо при посылке факсов через межгород и на не очень хороших линиях. Параметр ModemDialCmd имеет следущее значение (две строки объединить в одну) "ATS7=50\nAT&K3#CLS=8\nAT#VRA=1\nAT#VSR=11025#VBS=8\nATDT%s\n<waitfor:VCON> AT#VLS=4\nAT#VTX\n<waitfor:CONNECT><play:1><waitfor:VCON>AT+FCLASS=1\nATD". Детально обратим внимание на каждую команду модему. Для более лучшего восприятия советую погуглить и поискать стандартные АТ команды модема, это поможет понять разницу между классами устройств (1, 1.0, 2, 2.0, 8). Итак, команды: AT&K3#CLS=8 - Перевод модема в режим работы класса 8 AT#VRA=1 - это таймер, отвечающий за непоявления зуммера в линии (ниже я детально опишу зачем это надо) AT#VSR=11025 - Выставляем для модема частоту дискретизации войсовых данных ATDT%s - набор номера :) <waitfor:VCON>AT#VLS=4 - ожидать ответ модема VCON и передать модему команду вывода звука в диал линию AT#VTX - переход в режим передачи голоса <waitfor:CONNECT><play:1><waitfor:VCON>AT+FCLASS=1 - ожидаем ответ модема CONNECT, проигрываем файл play1.raw, находящийся в каталоге /var/spool/hylafax/etc (как написано в man hyalfax-config '<play:C>, whereis C is part of file name playC.raw', ну или как-то так, точно и дословно не помню :) ), снова ожидаем ответ модема VCON, и после проигранного звука переводим модем в режим класса 1. Вот тут то я и столкнулся с проблемами, с которыми просидел весьма долго, и не мог понять в чем у меня дело. После переписки с разработчиками, они выслали мне патч. Как оказалось в исходном коде была допущена ошибка - серверная часть hylafax'а не распознавала ответ модема VCON, после чего в логах отражалось, что у нас модем не ответил по тайм-ауту. Применив патч, всё стало работать. Через день разработчики выпустили новый билд ;) ATD - После перевода модема в режим класса 1, перевод модема в режим передачи данных. Теперь немного по-подробней о параметре AT#VRA=1. Это таймер, который модем запускает, когда он не "слышит" гудка в линии. Таким образом можно считать, что на другом конце сняли трубку. Вот что по-поводу этой команды написано в мануале к чипам Rockwell: #VRA Ring back goes away timer (originate) : Options : #VRA?, #VRA=?, 0 to 255 Default : #VRA=70 This command is used when originating a voice call (#CLS=8) to set the value of the "Ring back Goes Away" timer. The "Ring back Goes Away" timer is the period of time measured from the time the ring back cadence stops (in units of 100 ms) until the next ring back is detected. If ring back is not detected within the relevant period, the modem assumes that the remote has picked up the line and switches to on-line voice command mode. Each time a ring back cycle is detected, the "Ring back Goes Away" timer is reset. #VRA? Returns the current setting of the #VRA command as an ASCII decimal value in result code format. #VRA=? Returns the message '0-255'. #VRA=0 Switches off the "Ring back Goes Away" timer. After one ring back, the dialling modem sends VCON and enters on-line voice command mode immediately. #VRA=n Where n has the range 0 to 255. Defines the period without ring back (after at least one ring back has been detected) in 100 ms units. Есть также еще полезный параметр AT#VRN, с которым тоже можно поиграться, но я не увидел в нем практического смысла. Вот что написано про него в мануале: #VRN Ring back never came timer (originate) : Options : #VRN?, #VRN=?, 0 to 255 Default : #VRN=100 This command can be used if originating a voice call (#CLS=8) to set the "Ring back Never Came" timer value, an amount of time (in units of 100 ms) measured from completion of dialling. If ring back is not detected within this period, the modem assumes the remote has picked up the line and switches to on-line voice command mode. #VRN? Returns the current setting of the #VRN command as an ASCII decimal value in result code format. #VRN=? Returns the message '0-255'. #VRN=0 turns off the 'ring back never came timer'. After dialling, the modem sends VCON and enters on-line voice command mode immediately. #VRN=n where n has the range 0 to 255 (100 ms units), and defines the period without ring back after dialling. Теперь, рассмотрев конфиг, необходимо добавить пользователя. Добавление происходит путем запуска команды faxadduser. Команда проста, поэтому я не буду описывать каждый параметр :) После добавления юзера, можно использовать клиентскую часть софта. Различные клиенты можно выбрать тут - http://www.hylafax.org/content/Client_Software . Лично я для установки на Windows систему выбрал Winprint Hyalfax, т.к. это предельно простой софт, и отсылка факса осуществляется путем печати на виртуальный принтер. Как можно настроить клиент, можно почитать на его сайте. Теперь о звуке. Вам необходим пакет mgetty-pvftools для конвертации звукового файла в формате wav в формат raw. Берем файл в формате wav, конвертируем его в формат pvf командой wavtopvf. Настройки зависят от вашего модема, поэтому необходимо разобраться какие частоты и битность поддерживает ваш модем. Готовый файл конвертируем в raw формат командой pvftormd. Полезно будет посмотреть pvftormd -L :) Готовый файл кладем в директории. /var/spool/hylafax/etc/ . Итак, теперь мы имеем готовый к использованию факс-сервер, и можем посылать факсы хоть прямо из Ворда или 1С :) P.S. если вас не устраивает громкость файла, то можно установить пакет sox, который позволяет также конвертировать из mp3 в wav и многое многое другое, в том числе увеличение громкости. Автор: Николай Беленьков: n.belenkov@concords.ru При перепечатке, ссылка на автора - обязательна.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, Тарас (??), 11:57, 18/06/2008 [ответить]  
  • +/
    Если не трудно, вышлите мне этот патч.
    Я установил hylafax+ 5.2.5 (hylafax-5.2.5-1.fc8.i386.rpm)
    у меня после посылки голосового файла в логах тоже таймаут
     
  • 1.2, Тарас (??), 11:59, 18/06/2008 [ответить]  
  • +/
    Taras.Kostyuk @ landkom.com
     
  • 1.3, Юрий (??), 14:19, 02/12/2008 [ответить]  
  • +/
    добавлю про usr модем

    войсовые функции он поддерживает нормально
    в чем кривость к сожалению автор не пояснил
    добавлю от себя глюк который сильно осложняет
    подобную конфигурацию
    в usr модемах есть проблема с началом передачи факса - если передающий модем не услышал пилот тон
    принимающего модема - он ни в какую не начинает передачу факса - эта проблема описана например на сайте venta-fax и в нашем случае пока мы проговариваем примите факс - если мы натыкаемся на факс автомат - проскакивает пилот тон факса
    решение этой проблемы два звонка с заменой конфигурации - одна с голосом другая без

    если же автор не смог заставить говорить модем - то проблема скорее всего в формате файла голосового
    так например если файл записан по vm record из пакета vgetty (GSM кодек) то в нем еще присутствует заголовок 32 байта - которые в модем посылать не надо. если его удалить то модем нормально говорит - по описанной автором конфигурации и прекрасно посылает факсы - если на той стороне стартует человек.

     
  • 1.4, Anhel (??), 12:13, 18/05/2010 [ответить]  
  • +/
    Чтобы факсы отпралялись на почту, нужно добавить файл /var/spool/hylafax/etc/FaxDispatch с содержимым:

    FILETYPE=tif;
    SENDTO=fax@my-domain-name.com;


    а как сделать, чтобы можно было не только принимать факсы на e-mail, но и отправлять факсы с e-mail?

     
     
  • 2.5, anybody (?), 09:03, 06/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное ни как иначе писать скрипт, который будет проверять почту и отправлять факсы...
     

  • 1.6, anybody (?), 09:15, 06/05/2011 [ответить]  
  • +/
    А мне бы хотелось не "файл" отправлять в качестве звука, а чтобы можно было в клиенте windows-машины по микрофону интерактивно разговаривать с человеком на том конце линии, и уже после того как убеждаемся в приеме, нажимать на кнопочку "старт" для отправки факса. Кроме VentaFax'a, я пока не нашел другово решения, но VentaFax меня не устраивает так как серверная часть работает только на windows-сервере... Если кто знает решение как передавать голос по сети до линукс-сервера, напишите пожайлуста?
     
     
  • 2.7, Юрий (??), 16:48, 07/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А мне бы хотелось не "файл" отправлять в качестве звука, а чтобы
    > можно было в клиенте windows-машины по микрофону интерактивно разговаривать с человеком
    > на том конце линии, и уже после того как убеждаемся в
    > приеме, нажимать на кнопочку "старт" для отправки факса. Кроме VentaFax'a, я
    > пока не нашел другово решения, но VentaFax меня не устраивает так
    > как серверная часть работает только на windows-сервере... Если кто знает решение
    > как передавать голос по сети до линукс-сервера, напишите пожайлуста?

    надо включить asterisk

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру