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

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

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

PJSIP_T38_UDPTL_FAILURE IP-Телефония и СКУД

Asterisk: T.38 UDPTL transport failure during fax transmission — решение сбоя факса

Обновлено: 24.08.2026 · Официальная документация ↗
  • В консоли фиксируется ошибка: ERROR[...]: res_pjsip_t38.c: T.38 UDPTL transport failure during fax transmission.
  • Факсимильные сообщения обрываются на этапе рукопожатия (DIS/DCS) или после передачи первой страницы.
  • Asterisk не может переключить аудиосессию G.711 (alaw/ulaw) на протокол T.38 при получении T.38 re-INVITE.
  • В дампе трафика пакеты UDPTL не поступают на указанные UDP порты сервера.

1. Настройка диапазона портов UDPTL в udptl.conf

Отредактируйте конфигурационный файл /etc/asterisk/udptl.conf:

[general]
udptlstart = 4000
udptlend = 4999
udptlfecentries = 3
udptlfecspan = 3
udptlmaxdatagram = 400
udptlredundancy = 3
use_even_ports = yes

2. Активация поддержки T.38 в свойствах эндпоинта PJSIP

В файле /etc/asterisk/pjsip.conf для транка или шлюза добавьте:

[fax_gateway]
type = endpoint
t38_udptl = yes
t38_udptl_ec = redundancy ; Или fec (Forward Error Correction)
t38_udptl_maxdatagram = 400
t38_udptl_nat = yes
t38_udptl_ipv6 = no
fax_detect = yes
fax_detect_timeout = 8

3. Открытие портов UDPTL в фаерволе

iptables -A INPUT -p udp --dport 4000:4999 -j ACCEPT
# Или UFW:
ufw allow 4000:4999/udp

4. Перезагрузка конфигураций

asterisk -rx "module reload res_pjsip_t38.so"
asterisk -rx "module reload res_fax.so"
asterisk -rx "udptl show config"
💡 Практика специалистов: Для стабильной передачи факсов через T.38 значение параметра t38_udptl_maxdatagram не должно превышать 400 байт, так как многие VoIP-шлюзы (Cisco, Grandstream HT812) сбрасывают дайджесты большего размера из-за фрагментации UDP.

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

В чем разница между режимами коррекции ошибок Redundancy и FEC?

Redundancy отправляет копии предыдущих пакетов вместе с текущим (простой и надежный метод для VoIP), а FEC (Forward Error Correction) вычисляет коды Рида-Соломона для восстановления утерянных пакетов.

Почему факс срывается при переходе с G.711 на T.38?

Это происходит, если провайдер отправляет re-INVITE с предложением T.38, но на стороне Asterisk закрыты порты udptl (4000-4999) или параметр t38_udptl выключен.

Как принудительно отключить T.38 и передавать факс по G.711 Passthrough?

Установите t38_udptl = no в pjsip.conf и используйте кодек alaw/ulaw без компрессии (G.729 должен быть полностью запрещен).

Как просмотреть текущие сессии факса в Asterisk CLI?

Используйте команды: fax show stats, fax show sessions и udptl show config.

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