Codec mismatch is one of the most frustrating problems in VoIP operations. You configure everything correctly — SIP trunks, routing, billing — yet calls still fail with “488 Not Acceptable Here” or connect with no audio. The root cause is often a VOS3000 G729 negotiation mode misconfiguration between G729 and G729a variants. While these codecs are technically compatible, many SIP devices and carriers treat them as different codecs during SDP negotiation, causing calls to fail even though both sides support G729 compression. According to the VOS3000 V2.1.9.07 Manual (Section 2.5.1.1, Routing Gateway Additional Settings), VOS3000 provides four G729 negotiation modes — Auto, G729, G729a, and G729&G729a — that give you precise control over how VOS3000 handles G729 variant negotiation during call setup.
This guide explains every aspect of the VOS3000 G729 negotiation mode setting, from understanding why G729 codec mismatch happens to configuring the correct mode for each carrier and endpoint. Whether you are troubleshooting “488 Not Acceptable Here” errors or setting up a new routing gateway for a carrier that only supports G729a, this article provides the complete solution. For expert assistance with your codec configuration, contact us on WhatsApp at +8801911119966.
Before configuring G729 negotiation mode in VOS3000, you must understand why G729 codec mismatch occurs in the first place. The problem is not that the codecs are truly incompatible — it is that different SIP devices advertise different G729 variant names in their SDP offers, and some devices refuse to negotiate unless the variant name matches exactly.
The ITU-T G.729 standard has evolved through multiple annexes, each adding features or modifying the algorithm. The four main variants relevant to VOS3000 are:
The critical point is that G729 and G729a use the same bit format — a G729 encoder can decode G729a bitstreams and vice versa. They are interoperable at the audio level. The problem arises purely at the SIP SDP negotiation level, where some devices strictly match the codec name in the a=rtpmap attribute.
| 🎚️ Variant | 📋 Annex | 🔊 Bitrate | 💻 Complexity | 📡 VAD/CNG | 🔗 Interoperable With |
|---|---|---|---|---|---|
| G729 | Baseline | 8 kbps | High | ❌ No | G729a, G729b, G729ab |
| G729a | Annex A | 8 kbps | Low | ❌ No | G729, G729b, G729ab |
| G729b | Annex B | 8 kbps (avg ~4 kbps) | High | ✅ Yes | G729, G729a, G729ab |
| G729ab | Annex A+B | 8 kbps (avg ~4 kbps) | Low | ✅ Yes | G729, G729a, G729b |
The G729 codec mismatch problem occurs during the SIP SDP offer/answer negotiation. Here is the typical scenario:
a=rtpmap:18 G729/8000a=rtpmap:18 G729a/8000 in the SDP offerThis is particularly common when interconnecting with carriers that use SIP gateways from different vendors. Some vendors use “G729” as the SDP codec name, others use “G729A” (capital A), and still others use “G729a” (lowercase a). While RFC 3551 states that G729 and G729a should be treated as compatible, many SIP implementations do not follow this guidance. The VOS3000 G729 negotiation mode setting solves this problem by controlling exactly how VOS3000 advertises G729 variants in SDP.
For a broader understanding of how codec negotiation fits into the overall SIP call flow, see our guide on VOS3000 SIP call flow.
According to the VOS3000 V2.1.9.07 Manual (Section 2.5.1.1, Page 32 for Mapping Gateway and Page 47 for Routing Gateway), the G729 negotiation mode setting is located in the Additional Settings > Codec > SIP section of each gateway. This setting controls how VOS3000 handles the G729/G729a variant in SDP negotiation.
To access the G729 negotiation mode setting:
The same setting is available on mapping gateways at Business Management > Mapping Gateway > Additional Settings > Codec > SIP. You can configure G729 negotiation mode independently on each gateway, which allows you to handle different G729 variant requirements on the customer side versus the vendor side.
VOS3000 provides four G729 negotiation modes, each with a distinct behavior for SDP codec advertisement:
| ⚙️ Mode | 📝 SDP Behavior | 🎯 Best Use Case | ⚠️ Consideration |
|---|---|---|---|
| 🔄 Auto | VOS3000 automatically matches the remote endpoint’s G729 variant. If the remote offers G729, VOS responds with G729. If the remote offers G729a, VOS responds with G729a | General purpose — recommended default | Works in most cases; may fail with gateways that advertise one variant but accept only another |
| 🔷 G729 | VOS3000 always advertises G729 (without annex) in SDP regardless of what the remote endpoint offers | Carriers or gateways that only accept G729 specifically | May fail with endpoints that only accept G729a |
| 🔶 G729a | VOS3000 always advertises G729a (with annex A) in SDP regardless of what the remote endpoint offers | Carriers or gateways that only accept G729a; lower CPU usage for transcoding | May fail with endpoints that only accept G729 |
| 🔀 G729&G729a | VOS3000 advertises both G729 and G729a in the SDP offer, allowing the remote endpoint to choose its preferred variant | Maximum compatibility — both variants available for negotiation | Slightly larger SDP payload; some older devices may not handle dual codec offers |
Understanding how each G729 negotiation mode changes the SDP content in SIP INVITE messages is critical for diagnosing codec mismatch problems. When VOS3000 sends a SIP INVITE to a routing gateway, the SDP body contains the codec list that VOS3000 offers to the far end. The G729 negotiation mode directly controls what appears in this codec list for the G729 family.
| ⚙️ Mode | 📤 SDP Offer (INVITE from VOS) | 📥 Expected SDP Answer | ✅ Negotiation Result |
|---|---|---|---|
| Auto | Matches remote: a=rtpmap:18 G729/8000 OR a=rtpmap:18 G729a/8000 | Same variant as offered | ✅ Adapts to remote endpoint |
| G729 | Always: a=rtpmap:18 G729/8000 | Must include G729 | ✅ If remote accepts G729 |
| G729a | Always: a=rtpmap:18 G729a/8000 | Must include G729a | ✅ If remote accepts G729a |
| G729&G729a | Both: a=rtpmap:18 G729/8000 AND a=rtpmap:18 G729a/8000 | Either G729 or G729a | ✅ Maximum compatibility |
Choosing the right VOS3000 G729 negotiation mode depends on the specific carriers and endpoints you are interconnecting. The wrong choice leads to failed calls, while the right choice ensures reliable codec negotiation every time.
The Auto G729 negotiation mode is the recommended default for most VOS3000 deployments because it dynamically adapts to the remote endpoint’s SDP offer. Auto mode works best when:
You should switch from Auto to a specific G729 negotiation mode when you encounter any of these situations:
| 💥 Scenario | 📤 VOS3000 Offers | 📥 Carrier Expects | ❌ Result | ✅ Fix (Mode) |
|---|---|---|---|---|
| Carrier only accepts G729a | G729 | G729a | 488 Not Acceptable Here | G729a or G729&G729a |
| Carrier only accepts G729 | G729a | G729 | 488 Not Acceptable Here | G729 or G729&G729a |
| Carrier accepts both variants | G729 | G729 or G729a | ✅ Call succeeds | Auto (or any mode) |
| Auto mode mismatches | Varies by SDP | Specific variant only | Intermittent failures | G729&G729a (offer both) |
| Customer offers G729a, vendor needs G729 | G729a (from customer) | G729 (from vendor) | No common codec in SDP | G729 on routing GW + G729a on mapping GW |
For deeper insight into how VOS3000 handles codec conversion between mismatched endpoints, see our guide on VOS3000 transcoding and codec converter configuration.
The SIP response code “488 Not Acceptable Here” is the most common symptom of G729 codec mismatch in VOS3000. When a SIP device receives an INVITE with a codec it cannot accept, it responds with 488 to indicate that the offered media parameters are not acceptable. In the context of G729 negotiation, this typically means the far-end device received a G729 variant that does not match its supported variant list.
Not all 488 errors are caused by G729 mismatch — they can also result from other media incompatibilities. To confirm that a 488 error is specifically a G729 variant mismatch:
Once you confirm that a 488 error is caused by G729 variant mismatch, the fix is straightforward:
If you are unsure which variant the carrier requires, start with G729&G729a mode, which offers both variants and allows the carrier to select the one it supports. This is the most compatible option and resolves 488 errors in the majority of cases.
| ⚠️ Error Symptom | 🔍 Likely Cause | 🛠️ Diagnostic Step | ✅ Solution |
|---|---|---|---|
| 488 Not Acceptable Here | G729 variant mismatch in SDP | SIP trace: check offered vs expected codec name | Change G729 negotiation mode to match carrier |
| No audio on G729 calls | Codec negotiated but RTP not flowing | Wireshark: verify RTP stream and codec payload | Check media proxy and RTP port settings |
| One-way audio on G729 | Asymmetric codec or NAT issue | Compare SDP offer vs answer for each direction | Match G729 mode on both gateways; check NAT |
| Call connects but poor quality | Transcoding between G729 and G729a with quality loss | Check if transcoding is active unnecessarily | Use G729&G729a mode to avoid unnecessary transcode |
| Intermittent 488 errors | Auto mode inconsistent match | Check if carrier behavior varies by endpoint | Switch from Auto to G729&G729a for consistency |
| 488 with multiple codecs offered | Carrier rejects entire SDP due to G729 variant | Test with only PCMA to isolate G729 issue | Set correct G729 mode; verify carrier codec list |
The VOS3000 G729 negotiation mode does not operate in isolation — it interacts with the codec selection and transcoding settings on the same gateway. Understanding these interactions is essential for building a configuration that works correctly end-to-end.
When the routing gateway’s codec mode is set to “Softswitch specified” with G729 as the specified codec, the G729 negotiation mode controls how VOS3000 advertises that G729 in the SDP. For example, if you set “Softswitch specified codec G729” and the G729 negotiation mode to “G729a”, VOS3000 will advertise G729a in the SDP to the vendor, even though the underlying codec type is G729. This combination is useful when you need to force G729 on the vendor side but the vendor’s gateway only accepts G729a in SDP.
When the codec mode is set to “Auto negotiation,” VOS3000 relies on standard SDP offer/answer to select the codec. In this mode, the G729 negotiation mode fine-tunes how VOS3000 handles the G729 variant within the broader auto negotiation process. If VOS3000 and the remote endpoint both support G729 and PCMA, the Auto negotiation mode selects the best common codec, and the G729 negotiation mode ensures the G729 variant matches.
For detailed transcoding setup instructions, refer to our VOS3000 transcoding DTMF and G729 setup guide.
| 🔧 Codec Mode | ⚙️ G729 Negotiation Mode | 📝 SDP Behavior | 🔄 Transcoding Impact |
|---|---|---|---|
| Auto negotiation | Auto | Matches remote G729 variant dynamically | No transcoding if variants match |
| Auto negotiation | G729a | Forces G729a offer even if remote offers G729 | No transcoding (variants are compatible) |
| Softswitch specified (G729) | Auto | Uses G729 but adapts SDP variant to remote | Transcodes if other side uses different codec family |
| Softswitch specified (G729) | G729a | Advertises G729a in SDP; codec engine uses G729a | Transcodes if other side uses PCMA/G711 |
| Softswitch specified (PCMA) | Any | G729 negotiation mode irrelevant (PCMA in use) | G729 mode has no effect on this side |
| Auto negotiation | G729&G729a | Offers both G729 and G729a in SDP | No transcoding between G729/G729a (compatible) |
The G729 negotiation mode is configured independently on mapping gateways (customer side) and routing gateways (vendor side). This independence allows you to handle different G729 variant requirements on each side of the call. For example, a customer’s SIP phone may advertise G729a while the vendor only accepts G729. By setting the mapping gateway’s G729 negotiation mode to G729a (matching the customer) and the routing gateway’s mode to G729 (matching the vendor), VOS3000 bridges the variant difference seamlessly.
When media proxy is enabled and both gateways use different G729 negotiation modes, VOS3000 handles the variant translation internally without requiring transcoding because G729 and G729a are bitstream-compatible. This means there is no additional CPU overhead for translating between G729 and G729a — the only overhead comes from media proxy processing the RTP stream.
For more information about how SIP signaling works during call setup, see our VOS3000 SIP call guide.
Problem: You are connecting to a termination carrier whose SIP gateway only accepts G729a in SDP. When VOS3000 sends an INVITE with G729, the carrier responds with 488 Not Acceptable Here. Your customers use various SIP phones that advertise both G729 and G729a.
Solution:
With this configuration, VOS3000 will advertise G729a in all SDP offers to this carrier, ensuring the carrier accepts the codec. On the mapping gateway side, leave the G729 negotiation mode on Auto so VOS3000 can negotiate with each customer’s device in its preferred variant.
Problem: Your VOS3000 platform serves multiple retail customers using different SIP devices. Some devices advertise G729, others advertise G729a, and your termination vendors also vary in their G729 variant support. You are experiencing intermittent 488 errors on G729 calls.
Solution:
This approach uses G729&G729a as the default for maximum compatibility and applies specific mode overrides only where needed.
After configuring the VOS3000 G729 negotiation mode, you must test the configuration to verify that SDP negotiation works correctly. The most effective testing method is to capture a SIP trace and analyze the SDP content in the INVITE and response messages.
m=audio line and the a=rtpmap lines that follow it. Verify the G729 variant name matches what you configuredWireshark is the most powerful tool for analyzing G729 codec negotiation in VOS3000 SIP traces. Here is how to read the SDP codec negotiation in a Wireshark capture:
sip to isolate SIP messagesm=audio line which lists the RTP port and payload typesa=rtpmap attribute maps a payload type number to a codec name. Look for the G729-related rtpmap entriesHere is an example of SDP analysis showing successful G729a negotiation:
--- INVITE SDP (Offer from VOS3000) ---
m=audio 10000 RTP/AVP 0 8 18 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729a/8000
a=rtpmap:101 telephone-event/8000
--- 200 OK SDP (Answer from Carrier) ---
m=audio 20000 RTP/AVP 18 101
a=rtpmap:18 G729a/8000
a=rtpmap:101 telephone-event/8000
In this example, VOS3000 offered G729a (payload type 18) and the carrier selected G729a in its answer — successful negotiation. If the carrier had responded with 488, it would indicate that G729a was not accepted, and you would need to try a different G729 negotiation mode.
| ✅ Step | 📋 Action | 📝 Details | 🎯 Expected Result |
|---|---|---|---|
| 1 | Identify carrier G729 variant requirement | Check carrier documentation or capture SIP trace from carrier | Know whether carrier needs G729, G729a, or both |
| 2 | Set G729 negotiation mode on routing gateway | Additional Settings > Codec > SIP > G729 negotiation mode | Mode matches carrier’s expected variant |
| 3 | Set G729 negotiation mode on mapping gateway | Same path on mapping gateway side | Mode matches customer device capabilities |
| 4 | Place test call | Call through the configured routing gateway | Call connects without 488 error |
| 5 | Capture SIP trace | Use tcpdump or VOS3000 SIP trace | INVITE and 200 OK show correct G729 variant |
| 6 | Verify two-way audio | Both parties can hear each other clearly | ✅ Clear audio in both directions |
| 7 | Analyze SDP in Wireshark | Compare rtpmap attributes in offer and answer | G729 variant matches in both SDP bodies |
| 8 | Verify RTP flow | Wireshark RTP stream analysis | Bidirectional RTP with G729 payload type |
For comprehensive codec setup including transcoding between G729 and other codecs, see our VOS3000 codec G729 transcoding guide.
Follow these best practices to avoid G729 codec mismatch problems and ensure reliable call setup across all your VOS3000 routing and mapping gateways:
G729 negotiation mode is a setting in VOS3000 that controls how the softswitch handles the G729 codec variant during SDP negotiation. It is located in the Additional Settings > Codec > SIP section of both mapping gateways and routing gateways. The setting offers four modes — Auto, G729, G729a, and G729&G729a — each controlling how VOS3000 advertises G729 variants in SIP INVITE SDP bodies. According to the VOS3000 V2.1.9.07 Manual Section 2.5.1.1, this setting resolves G729 variant mismatch problems between different SIP devices and carriers.
G729 is the baseline ITU-T G.729 codec providing 8 kbps voice compression. G729a (Annex A) is a reduced-complexity version that uses a simplified algorithm with lower CPU requirements and nearly identical voice quality. Critically, G729 and G729a are bitstream-compatible — a G729 encoder can decode G729a bitstreams and vice versa. The difference only matters at the SDP negotiation level, where some SIP devices strictly match the codec name string and reject offers that use a different variant name. This is exactly the problem that the VOS3000 G729 negotiation mode solves.
To fix G729 codec mismatch in VOS3000, open the routing gateway’s Additional Settings > Codec > SIP section and change the G729 negotiation mode. If the carrier only accepts G729a, set the mode to G729a. If the carrier only accepts G729, set the mode to G729. If you are unsure which variant the carrier requires, set the mode to G729&G729a to offer both variants. Always verify the fix by capturing a SIP trace and checking the SDP content in the INVITE and response messages.
For most VOS3000 deployments, start with the Auto G729 negotiation mode as the default. Auto mode dynamically matches the remote endpoint’s G729 variant, which works correctly with the majority of carriers and SIP devices. If you encounter 488 Not Acceptable Here errors on G729 calls, switch to G729&G729a mode which offers both variants for maximum compatibility. If a specific carrier documents that it requires only G729 or only G729a, set that routing gateway to the specific variant the carrier requires. For personalized guidance on your deployment, contact us on WhatsApp at +8801911119966.
The SIP 488 Not Acceptable Here response on G729 calls is most commonly caused by a G729 variant mismatch in the SDP negotiation. When VOS3000 offers G729 in the SDP but the carrier’s gateway only accepts G729a (or vice versa), the carrier rejects the offer with 488. The fix is to configure the correct G729 negotiation mode on the routing gateway so that VOS3000 advertises the variant the carrier expects. Capture a SIP trace to confirm the exact variant mismatch, then set the G729 negotiation mode accordingly.
In Auto G729 negotiation mode, VOS3000 automatically matches the G729 variant offered by the remote endpoint. When VOS3000 receives an INVITE with G729 in the SDP, it responds with G729. When it receives an INVITE with G729a, it responds with G729a. When VOS3000 sends an outgoing INVITE, it uses the variant that the remote endpoint previously advertised, or defaults to G729 if there is no prior SDP exchange. Auto mode eliminates the need for manual per-carrier G729 variant configuration in most cases, but it may fail with gateways that have inconsistent variant behavior.
Yes, the VOS3000 G729 negotiation mode works seamlessly with transcoding. When you configure a routing gateway with “Softswitch specified codec G729” and “Allow codec conversion” enabled, the G729 negotiation mode controls how VOS3000 advertises the G729 variant in the SDP to the vendor. The transcoding engine handles the actual codec conversion between G729 and other codecs (like PCMA or PCMU), while the G729 negotiation mode ensures the SDP variant matches the vendor’s requirement. Since G729 and G729a are bitstream-compatible, translating between these variants does not require additional transcoding overhead. For help configuring G729 negotiation with transcoding, reach out on WhatsApp at +8801911119966.
G729 codec mismatch can be a hidden source of call failures that is difficult to diagnose without the right tools and experience. The VOS3000 G729 negotiation mode provides a powerful and flexible solution, but configuring it correctly requires understanding both your carrier’s requirements and how VOS3000 handles SDP negotiation. If you are experiencing 488 errors, no audio, or intermittent G729 call failures, our VOS3000 specialists can diagnose and resolve the issue quickly.
📱 Contact us on WhatsApp: +8801911119966
Our team provides complete VOS3000 codec configuration services, from G729 negotiation mode setup to full transcoding deployment. We can analyze your SIP traces, identify the exact cause of codec mismatch, and configure your routing and mapping gateways for reliable G729 negotiation. Do not let codec mismatch cost you revenue — reach out today for expert support.
For the official VOS3000 software and documentation, visit VOS3000 Downloads. For professional VOS3000 deployment and configuration assistance, contact us on WhatsApp at +8801911119966.
For professional VOS3000 installations and deployment, VOS3000 Server Rental Solution:
📱 WhatsApp: +8801911119966
🌐 Website: www.vos3000.com
🌐 Blog: multahost.com/blog
📥 Downloads: VOS3000 Downloads
VOS3000 call failed announcement plays IVR voice prompts when calls fail. Configure the IVR module to announce busy, unreachable, and… Read More
VOS3000 domain management with dynamic DNS enables SIP signaling using domain names instead of IP addresses. Configure DNS resolution for… Read More
VOS3000 SIP authentication 401 Unauthorized vs 407 Proxy Authentication Required. Configure digest authentication challenge mode SS_AUTHCHALLENGEMODE in system parameters. Read More
This website uses cookies.