SIP Software Modem
From Telecomix Crypto Munitions Bureau
The idea and basic specs are well defined. We miss talented driver and VoIP hackers to break through existing code.
We have no emergency situation requiering immediate or short term implementation, therefore we have some time to get it right. Bet we need help !
SIP Software modem would be a VoIP channel module to emulate a PSTN modem over SIP or IAX trunks, in order to provide Dial-Up Networking services with no hardware requirements.
It's basically a bridge from a G.711 channel to a virtual serial port that could be used by PPPd or mgetty to provide either PPP remote access for IP networking, or a BBS gateway for low bandwidth applications.
It has to support recent (read patented) modulation, wich could assume using a binary DSP library.
 Get involved
We need :
- DSP coders
- SIP telephony experts
- testers (soon)
Any contribution would be greatly appreciated !
 Existing softwares
- Many closed-source software modem code exists, most implementations are used for http://linmodems.technion.ac.il/
- IAXmodem 
Currently providing a spandsp frontend to enable FAX reception with mgetty + Hylafax via a virtual serial port. Linked against an obsolete version of spandsp
- spandsp 
it's a software DSP library used by IAXmodem. It supports V.21, V.27ter, V.29 and V.17 modems. Recent snapshots includes v.22 and functionning v.8 auto-negotiation.
AT command set implementation seems too partial to get anything stable in any other application than faxing.
- WarVOX: a suite of tools for exploring, classifying, and auditing telephone systems. Unlike normal wardialing tools, WarVOX works with the actual audio from each call and does not use a modem directly. 
- iWar: a wardialer that support the IAX2 (Intra-Asterisk eXchange) "Voice over IP" (VoIP) protocol. This allows you to scan without the need of additional hardware! . Links against spandsp, not yet tested.
 Standard dial-up servers
Having a software modem is a first step in a DUN server software stack.
Here are some links to howtos to create a running dialup service on a linux box :
- http://fr.tldp.org/HOWTO/lecture//PPP-HOWTO.html (french)
- http://stilius.net/callback_en.php (with callback)
- Lots of usefull softs and papers on modems : http://www.linmodems.org/
 Basic Modem Knowledge
Modem is about MOdulation and DEModulation of a digital bitstream to an analog signal.
PSTN modems sole purpose is to tranport up to 56kbps/s over a phone line, using only frequencies from the voice range (200Hz to 8kHz). Those frequencies can be transprted on a G.711 digital channel : phone lines are usually transported using this encoding over TDM data lines and fiber optics.
Older modem were only able to modulate a few hundreds bits per second, then advanced modulation techniques led to advanced stardard like V.32 (9600bps), v.34 (33,6kbps) or v.92 (56kbps downstream, 48kbps upstream).
Other cryptic standard names are to known : v.8 is auto-negotiation (to choose one modulation from the above). V.42 is error-correction, wich is an absolute necessity on IP transported trunks because those are prone to packet loss and jitter. V.44 is data compression, it's not mandatory but can help speed things a little. Every of these standards have derivatives (bis, ter, ...) wich are usually improved versions. The more highly numbered, the most recent it is, therefore the most heavilly cluttered with patents it may be.
 Known issues
- SIP channels must be G.711, it's the only way to reach 14,4kbps to 33,6kbps rates. Already achieved 48kbps with an hardware modem on a G.711 linked ATA.
- V.34 and higher modulation are covered by patents in most countries. Forget about implementing it from scratch, it couldn't be released as open-source in most countries anyway.
- Packt loss is a key element for connection stability. Listed SIP trunk provider must have a high quality network with less than 0,1 packet loss