V23 Softmodem quality

Hello!

I am new with Asterisk and my project is to setup a V23 (only 1200 bauds) server with Asterisk using a softmodem.

Already installed Asterisk 21 with soft_modem module.

All configured : when calling, Asterisk answer and I can connect with my (old) V23 modem.

My problem is the quality transmission of data : sometimes, the data transmission quality is relatively good, but most of time pretty poor. I know it could be an issue with VoIP.

Of course, the configration of data bits, stop bit, parity is correct.
I am using G711 alaw codec (allowing only this codec).

The config of extension is:

exten => s,1,Set(VOLUME(TX)=7)
exten => s,n,Set(VOLUME(RX)=25)
exten => s,n,Answer()
exten => s,n,Softmodem(“127.0.0.1”, 8183, r(-28)t(-40)v(V23)ld(7)s(1)e)
exten => s,n,Hangup()

I made a lot of tests changing the volume parameters and found that these ones are the better (or the less bad).

Do you know if there are other parameters I could change to improve the quality of trnasmission ?

Thanks!

Yes, agreed, you might want to re-evaluate the approach.

That seems like a lot of gain.

Things that might help:

  • Adding Asterisk JITTERBUFFER function immediately after the Answer().
  • Introducing a slight delay after Answer() with Wait(1).
  • Using ulaw or alaw codecs.
  • Enabling QoS on the RTP.
  • Debugging your SIP dialogs to see if the carrier is trying to switch to T.38
  • Adjusting DTMF settings to try in-band, RFC2833, or INFO.
  • Switching to analog lines.

Please let us know what works for you, if anything.

Would ‘answer(1)’ to the same in this case?

Basically Answer(1000) yes, because milliseconds, but Wait(1) in seconds seems cleaner IMHO, at least from a debugging/watching-on-the-CLI perspective.

Kind of like ‘noop()’ vs ‘verbose()?’

Use the one that was created for the task at hand.

Don’t forget Log()! The struggle is real!

Thanks for your help.

Unfortunately, it did not change anything. (didn’t try QoS as my router doesn’t really offer this posibility).
The main problem is from server (Asterisk) to client (1200 bauds). So Jitterbuffer didn’t help.

Anyway, my project was (is) using an old French terminal named Minitel, V23.
This terminal can enable something called PCE that allows to make data transfert by blocks (from server to client), and repeat them in case of transmission issue.

Of course it needed some dev from my part with old tech docs (from the 80’s!) to implement this protocol, but at the end it works and correct at least 99% of the transmission issues.

Thanks again for your help.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.