Skip to content

Feature request: option to limit offered codecs / disable text media to reduce SDP size #208

Description

@leobioazevedo-design

Environment

  • ha-sip version: 5.6
  • Home Assistant OS 18.1 (aarch64 / raspberrypi4-64)
  • HA Core 2026.7.2
  • SIP provider: Vono (Brazil), NextRouter C4 SoftSwitch v5.3.1

Problem
Outgoing calls fail silently with my provider because the INVITE
exceeds the Ethernet MTU and gets IP-fragmented. The provider's
softswitch drops the fragments, so no response is ever received.
REGISTER works fine (498 bytes) and gets a 200 OK; only INVITE fails.

Message sizes observed:

  • With ICE enabled: 2490 bytes (SDP 1884)
  • With --ice disabled --use-stun-for-media disabled: 1556 bytes (SDP 958)

Still above the ~1472-byte UDP payload limit. TCP fallback is not an
option: the provider refuses TCP connections on port 5060
("TCP connect() error: Connection refused"), and pjsip's automatic
UDP->TCP switch for large messages therefore fails.

A softphone (Zoiper) using the exact same credentials places calls
successfully, which confirms the account and routing are fine and
isolates the issue to SDP size.

What inflates the SDP

  1. Codecs the provider never uses: speex (3 variants), iLBC, GSM,
    G722, opus. Only PCMU/PCMA are needed.
  2. A second media line m=text ... RTP/AVP 100 98 (red/t140),
    which is useless for this use case and costs ~200 bytes.
  3. Four telephone-event rtpmap entries for sample rates that are
    not applicable.

Requested feature
Per-account options to control the SDP offer, for example:

options: '--codecs PCMU,PCMA --disable-text-media'

Limiting the codec list alone would bring the INVITE well under the
MTU and make ha-sip usable with providers that cannot accept TCP.

Workaround currently required
Running a local Asterisk instance as an intermediary purely to
re-generate a smaller SDP, which is a heavy dependency for what is
essentially a one-line codec configuration.

Thanks for the add-on — everything else works great.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions