
SIP Core / sip-call-card: немає відтворення аудіо на iPad (Android працює)
Привіт усім,
Я дебажу проблему з TECH7Fox SIP Core + sip-call-card, де дзвінки підключаються нормально на iPad, але я не чую жодного аудіо на iPad (вхідне аудіо мовчить). Це працює ідеально на Android та настільних браузерах.
Це використовується для домофону (Mobotix T26) через Asterisk (додатки HA OS), але проблема НЕ є специфічною для Mobotix: я також не отримую аудіо, коли телефоную на iPad з Linux SIP-клієнта.
Середовище
Home Assistant Core: 2026.1
SIP Core: 5.0.2 (через HACS / Tech7Fox)
Додаток Asterisk: Tech7Fox Asterisk add-on (HA OS)
iPad: iPad 10-го покоління, iPadOS 17.5.1
Тестовані клієнти на iPad:
Safari
Chrome (iOS)
Додаток Home Assistant Companion
→ Жоден не має аудіо
Android телефон працює (аудіо в обох напрямках)
Симптоми
iPad дзвонить і відповідає на дзвінок (сесія WebRTC встановлюється)
Напрямок мікрофона (iPad → двері / Asterisk) працює
Але напрямок динаміка (двері / Asterisk → iPad) мовчить
Asterisk показує, що RTP тече в обох напрямках
Запис MixMonitor захоплює аудіо правильно → аудіо існує на стороні Asterisk
Інформація про кодеки Asterisk
З CLI core show channel … я бачу погоджені кодеки, такі як:
NativeFormats: (ulaw)
WriteFormat: ulaw
ReadFormat: ulaw
WriteTranscode: No
ReadTranscode: No
NativeFormats: (opus)
WriteFormat: slin48
ReadFormat: slin48
WriteTranscode: Yes (slin@48000)->(opus@48000)
ReadTranscode: Yes (opus@48000)->(slin@48000)
Отже, переговори кодеків виглядають нормально.
Дебаг RTP Asterisk показує, що RTP тече
Типові рядки дебагу RTP під час дзвінка:
Отримано RTP пакет від 192.168.0.180:58518 (тип 00, seq …, len 000170)
Відправлено RTP пакет на 192.168.0.60:7078 (тип 00, seq …, len 000160)
… (і навпаки) …
Відправлено RTP пакет на 192.168.0.180:58518 (через ICE) (тип 00, seq …, len 000170)
Отримано RTP пакет від 192.168.0.180:58518 (тип 00, seq …, len 000170)
також повідомлено:
Суворе навчання RTP після завершення ICE
Суворе навчання RTP завершено – блокування на адресі джерела …
Отже, ICE + RTP виглядають активними.
Примітка щодо IPv6
iPad завжди пропонує кандидати ICE IPv6 (неможливо відключити IPv6 на iPad/роутері).
Я бачу кандидати IPv4 та IPv6 у SDP; Asterisk успішно блокується на адресах джерел.
Поточна конфігурація кінцевої точки Asterisk PJSIP (Mobotix)
витяг з pjsip.conf:
[8001]
type=endpoint
context=from-door
disallow=all
allow=ulaw
allow=alaw
direct_media=no
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
aors=8001
auth=8001
[8001]
type=aor
max_contacts=1
remove_existing=yes
[8001]
type=auth
auth_type=userpass
username=8001
password=xxx
rtp.conf
[general]
rtpstart=10000
rtpend=20000
icesupport=yes
stunaddr=stun.l.google.com:19302
rtp_ipv6=no
План набору
Я спробував багато варіантів плану набору. Основний поточний тест:
[from-door]
exten => 8001,1,NoOp(Дзвінок з дверей -> iPad)
same => n,Dial(PJSIP/104,30)
same => n,Hangup()
Я також спробував ідеї раннього відповіді/відтворення прогріву, але iPad все ще мовчить.
sip-call-card YAML
type: custom:sip-call-card
extensions:
“100”:
name: morly
“101”:
name: marina
“102”:
name: tablet
override_icon: mdi:doorbell
video: true
ice_gathering_timeout: 5000
buttons: []
ВАЖЛИВО: помилки консолі Safari (навіть до дзвінків)
У консолі Safari на iPad я постійно отримую:
Необроблене відхилення обіцянки: TypeError: undefined не є об’єктом
(оцінка ‘this.config?.buttons.map’)
Це повторюється дуже часто в консолі.
Спостереження за налагодженням DOM
Використовуючи інструменти розробника Safari, я перевірив компонент:
document.querySelectorAll(“sip-call-card”).length повертає 0 (але це може бути тому, що HA використовує shadow DOM)
Я можу знайти елемент sip-call-dialog, і він має конфігурацію (включаючи масив кнопок)
Приклад:
const d = document.querySelector(“sip-call-dialog”);
d?.config?.buttons
Доказ MixMonitor, що аудіо існує
Я записав дзвінок на стороні сервера:
Використаний план набору:
[from-door]
exten => 8001,1,NoOp(Дзвінок з дверей -> iPad (тест запису))
same => n,Set(__RECFILE=/share/door-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}.wav)
same => n,MixMonitor(${RECFILE},a)
same => n,Dial(PJSIP/104,30)
same => n,Hangup()
Результат: WAV містить правильне аудіо (сторона дверей), але iPad все ще мовчить.
Що я шукаю / запитання
Чи є це відомою проблемою WebRTC / автозапуску / аудіо-виходу для iPadOS 17 з sip-call-card / sip-core?
Чи є помилка buttons.map у консолі відомим багом? (конфігурація кнопок, здається, є обов’язковою для уникнення помилок під час виконання?)
Чи створює/додає картка свій елемент
Чи є рекомендована конфігурація, щоб примусити аудіо вихід на iPad (маршрут динаміка)?
Дякую!
Вкладення, які я можу надати
SIP / RTP логи з Asterisk (pjsip set logger on, rtp set debug on)
Скріншоти консолі Safari на iPad
повну конфігурацію YAML та SIP Core
1 пост – 1 учасник
Читати повну тему
HI-FI Новини
через Home Assistant Community – Останні теми
January 10, 2026 at 11:07AM

Залишити відповідь
Щоб відправити коментар вам необхідно авторизуватись.