Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
FAX_T38_NEGOTIATION_FAIL IP-Телефония и СКУД

Траблшутинг факсов T.38 в Asterisk: настройка UDPTL и обработка ошибок на SIP-транках

Обновлено: 24.08.2026  ·  Официальная база знаний
  • Срыв передачи факсимильных сообщений на 1–2 странице с кодом ошибки DIS/DTC not received или Training check failed.
  • В логах Asterisk ошибка T.38 negotiation failed / Rejected with 488 Not Acceptable Here.
  • Шум, пропадание несущей частоты факс-модема (V.17 / V.29 / V.27ter) при использовании голосового кодека G.711a.
  • Потеря пакетов в потоке UDPTL при прохождении через межсетевые экраны.

1. Настройка стека UDPTL в udptl.conf

Отредактируйте /etc/asterisk/udptl.conf:

[general]
udptlstart=4000
udptlend=4999
udptlchecksums=no

; Избыточность для компенсации потерь пакетов (Redundancy)
udptlfecentries=0
udptlfecspan=0
udptlredundancy=3

; Максимальный размер датаграммы UDPTL
maxdatagram=1400

2. Включение поддержки T.38 в pjsip.conf

Для провайдерского транка и факсимильных аппаратов (ATA-шлюзов Grandstream, Cisco SPA) добавьте директивы T.38:

[provider-endpoint]
type=endpoint
;
;
; Включение согласования T.38 Gateway
t38_udptl=yes
t38_udptl_ec=redundancy
t38_udptl_maxdatagram=1400
t38_udptl_nat=yes
t38_udptl_ipv6=no
fax_detect=yes
fax_detect_timeout=8

3. Диалплан приема входящего факса в PDF (res_fax)

[incoming-fax]
exten => receive,1,NoOp(Receiving Inbound FAX via T.38)
 same => n,Answer()
 same => n,Set(FAXFILE=/tmp/fax_${UNIQUEID}.tif)
 same => n,ReceiveFAX(${FAXFILE},d)
 same => n,NoOp(FAX Status: ${FAXSTATUS}, Pages: ${FAXPAGES})
 same => n,System(/usr/bin/tiff2pdf -o /var/spool/asterisk/fax/${UNIQUEID}.pdf ${FAXFILE})
 same => n,Hangup()

4. Трассировка UDPTL в CLI

asterisk -rx "udptl set debug on"
asterisk -rx "pjsip set logger on"
Практический опыт инженера: Отключите ECM (Error Correction Mode) на физических факсах при работе через G.711 Passthrough, но обязательно включайте ECM при работе по чистому протоколу T.38.

Частые вопросы (FAQ)

Что надежнее для факсов: T.38 или G.711 Passthrough?

T.38 специально разработан для передачи факсов поверх пакетных IP-сетей, так как преобразует аналоговый сигнал в цифровые команды и компенсирует потери пакетов (Redundancy). G.711 Passthrough крайне чувствителен к любому джиттеру (>5 мс) и потерям пакетов (>0.1%).

Почему провайдер отклоняет T.38 Re-INVITE с ошибкой 488?

Провайдер не поддерживает T.38 на данном транке. В этом случае необходимо отключить T.38 (t38_udptl=no) и настроить передачу факсов методом G.711 Alaw с отключенным эхоподавлением и джиттер-буфером фиксированного размера.

Какая максимальная скорость передачи рекомендуется для факсов в VoIP?

Ограничьте максимальную скорость передачи (Max Transmission Rate) на факс-аппаратах и ATA-шлюзах до 9600 или 14400 бит/с (отключив стандарт Super G3 / V.34), что кардинально повышает успешность сессий.

Зачем открывать отдельный диапазон UDP 4000-4999?

Пакеты протокола UDPTL не используют основной пул портов RTP (10000-20000), а транслируются через выделенный в udptl.conf диапазон портов, который должен быть открыт на межсетевом экране.