Asterisk: T.38 UDPTL transport failure during fax transmission — решение сбоя факса
- В консоли фиксируется ошибка:
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 = yes2. Активация поддержки 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 = 83. Открытие портов UDPTL в фаерволе
iptables -A INPUT -p udp --dport 4000:4999 -j ACCEPT
# Или UFW:
ufw allow 4000:4999/udp4. Перезагрузка конфигураций
asterisk -rx "module reload res_pjsip_t38.so"
asterisk -rx "module reload res_fax.so"
asterisk -rx "udptl show config" Частые вопросы (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.