Project

General

Profile

Software Modems » History » Version 6

laforge, 06/29/2022 08:14 AM

1 2 laforge
{{>toc}}
2
3 1 laforge
h1. Software Modems
4
5
(sometimes also called _WinModems_)
6
7
h2. What is a Software Modem
8
9
Traditional analog modems are based around hardware modulators/demodulators, typically some kind of DSP or VLSI chipset including some kind of internal processor / software.  They are basically an embedded system with two external interfaces:
10
* the analog phone line interface
11
* a RS-232 serial line towards a terminal or computer
12
13
As desktop computers and laptops became more powerful around the turn of the century, various manufacturers started to implement _software modems_.  Those modems only contained the analog line interface and an ADC/DAC.  All the actual signal processing (equalizer, modulation, demodulation, coding/decoding, etc.) happened in software running on the main processor of the desktop/laptop computer (typically an x86 CPU).
14
15
The related proprietary software for the main CPU was typically specific to a given vendor/chipset, and was offered in most cases only for Windows type operating systems, hence also the name _WinModem_.  There were some exceptions where binary-only software was also offered for Linux or other OSs.
16
17 2 laforge
h2. Models/Types  of Software Modems
18 1 laforge
19 2 laforge
20 1 laforge
h3. slmodemd
21 6 laforge
22
FIXME
23
24 2 laforge
25
h3. MC97 / AC97 Modems
26
27
At some point, the AC97 standard for mainboard-based _sound card_ functionality was extended so that the audio software stack could not only drive the analog audio codec for multimedia purposes, but also drive a specific "telephone line interface codec IC" with associated analog line interface.  This meant that the modem would basically show up as a second audio device on the PC.
28
29
The actual "telephone line interface codec IC" together with the analog interface circuitry was often not put on the mainboard of the PC or Laptop itself, but implemented via an add-on card.  See [[AMR_Modem_Riser]] for more information.
30
31
h2. Open Source Software for Software Modems
32
33
There were several different projects that implemented software modem functionality. The lack of a standard interface (software API or hardware interface) towards the analog line circuitry
34
35
h3. spandsp
36
37 3 laforge
"spandsp":https://github.com/freeswitch/spandsp (originally released on https://www.soft-switch.org/) is a library of DSP functions for telephony created by Steve Underwood.
38
39
Its primary use case was to send/receive Fax over analog phone lines in the software VoIP/PBX systems (iaxmodem, Asterisk, CallWeaver and FreeSwitch)
40
41 2 laforge
h3. linmodem
42
43 4 laforge
[[linmodem:]] is a softmodem implemented by "Fabrice Bellard":https://bellard.org/ originally released at https://bellard.org/linmodem/ - some Osmocom mebers have done some small improvements to make it build on mordern Linux distributions and have plans to further extend it, see the "issue tracker":https://osmocom.org/projects/linmodem/issues and "git repository":https://gitea.osmocom.org/retronetworking/linmodem
44 1 laforge
45 5 laforge
Supported Standards: V.8, V.21, V.23
46
Incomplete Standards: V.34, V.90
47
48
49 2 laforge
h3. ArduinoModem
50
51
This is not really a _contemporary_ software modem, but a retrocomputing project by @supersat
52
53 1 laforge
"ArduinoModem":https://github.com/supersat/ArduinoModem is a project implementing Bell 103 (300 bps) on an arduino microcontroller.  It allegedly is loosely based on https://web.archive.org/web/20120110020118/http://www.ti.com/lit/an/slaa037/slaa037.pdf and https://web.archive.org/web/20130512113608/http://www.ti.com/lit/an/slaa204/slaa204.pdf
54 5 laforge
55
Supported Standards: Bell 103
56
57
58
h3. btx_modem
59
60
"btx_modem":https://github.com/Casandro/btx_modem is a software implementation of the V.23 standard used in retrocomputing applications for the German [[retronetworking:BTX]] system.
61
62
Supported Standards: V.23
63
64
65
h3. fisher-modem
66
67
"fisher-modem":https://github.com/randyrossi/fisher-modem is a software modem implementation by Dr. Tony Fisher. 
68
69
Supported Standards: V.21, V.32, V.29
70
Incomplete Standards: V.32 originate, V.34 originate
71
72
73
h3. app_softmodem
74
75
"app_softmodem":https://github.com/proquar/asterisk-Softmodem is a software modem for use with Asterisk
76
77
Supported Standards: V.23, V.21 and Bell 103, but also V.22 and V.22bis
Add picture from clipboard (Maximum size: 48.8 MB)