Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

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 диапазон портов, который должен быть открыт на межсетевом экране.

Полезные материалы
Рекомендуем