Project

General

Profile

Software Modems » History » Version 11

manawyrm, 09/23/2023 02:54 PM

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 7 laforge
h3. PCTel HSP
20 1 laforge
21 7 laforge
One of the early providres of softmodem chispsets; acquired by Conexant in 2003.
22 1 laforge
23 7 laforge
h3. Lucent K56flex
24
25
The "Lucent K56flex":http://web.archive.org/web/20000301221617/http://www.lucent.com/micro/K56flex/doc.html was a series of chipsets (Apollo, Mars, Venus) and associated line interface circuits supporting V.34 and/or V.90 standards
26
27
* "Venus datasheet":http://web.archive.org/web/20000830071329if_/http://www.lucent.com:80/micro/K56flex/PN99174.pdf with block diagrams for ISA/PCI/PCMCIA/USB attached versions
28
29
See also modemsite.com for "Apollo/Mars":http://modemsite.com/56k/ltwin.asp, "Venus":http://modemsite.com/56k/venus.asp, "Scorpio":http://modemsite.com/56k/lucentamr.asp and "Wildwire":http://modemsite.com/56k/wild.asp chipsets.
30
31 9 manawyrm
h3. Lucent AMR / Agere Systems
32 7 laforge
33 9 manawyrm
*Lucent Technologies* provided another softmodem implementation for Linux in the early 2000s, it was also distributed as binary object files for x86 CPUs.
34
https://web.archive.org/web/20070718125119fw_/http://www.sfu.ca/~cth/ltmodem/#sources
35
36 10 manawyrm
h3. LSI/Agere Systems
37 11 manawyrm
38 10 manawyrm
The LSI softmodem seems to be different from the Lucent implementation again. Both were apparently sold to Agere at some point. Also distributed as x86/i386 binary object files.
39
https://github.com/george-hopkins/agrsm/tree/master
40
41 7 laforge
h3. Rockwell/Conexant
42
43
*Rockwell International* (a major manufacturer of low-cost chipsets for _hardware modems_ since the early 1990s) spun-off their semiconductor division into *Rockwell Semiconductor Systems, Inc* in 1996, which subsequently became *Conexant Systems, Inc*
44
45
The *HCF* family of chipsets did still include a DSP, for firmware updates see http://modemsite.com/56k/hcf7.asp
46
47
The *HSF* family was a full-soft-modem, see http://modemsite.com/56k/soft56.asp for details.
48
49
They built a number of soft-modem chipsets, such as
50
* "CX11252":https://web.archive.org/web/20050407083606/http://www.conexant.com/products/entry.jsp?id=163 (HSFi PCI)
51
* "CX11256":https://web.archive.org/web/20050407083606/http://www.conexant.com/products/entry.jsp?id=162 (SmartHSFs PCI)
52
* "CX06836":https://web.archive.org/web/20050407083606/http://www.conexant.com/products/entry.jsp?id=161 (HSF USB)
53
* "CX11254-31":https://web.archive.org/web/20050407083606/http://www.conexant.com/products/entry.jsp?id=160 (SMartMC 3S AC-Link)
54
* "CX11254-51Z":https://web.archive.org/web/20050407083606/http://www.conexant.com/products/entry.jsp?id=925 (SmartMC3Z HDA)
55
* "CX20468":https://web.archive.org/web/20050407083606/http://www.conexant.com/products/entry.jsp?id=159 (SmartAMC)
56
* "CX20493":https://web.archive.org/web/20050407083606/http://www.conexant.com/products/entry.jsp?id=857 (SmartDAA line side)
57
58
59
h3. Cirrus Logic / Ambient Technology / Intel
60
61
Cirrus Logic developed hardware and software modem chipsets.  The modem division was later spun-off as Ambient Technologies and finally acquired by Intel.
62
63
The softmodem chipsets include the The MD563x (PCI), 537EP (PCI) and 537EA (AC97).
64
65
More information can be found at http://modemsite.com/56k/intel.asp
66
67
68
h3. Motorola HSP
69
70 6 laforge
FIXME
71
72 1 laforge
73 7 laforge
h3. Smartlink
74
75
There were three common variants/configurations of Smartlink softmodems:
76
77
* AMR/CNR/ACR/MDC/MiniPCI:  HAMR5600 or SL2000 + Si3012 or Si3014
78
* PCI: PCI chip + HAMR5600 or SL2000 + Si3012 or Si3014
79
* USB: ST7554 (controller) and STLC7550 (Modem AFE)
80
81
See http://modemsite.com/56k/smartlink.asp for more information
82
83
h4. slmodemd
84
85 1 laforge
smartlink is one of the few vendors who provided Linux drivers for their modems, *slmodemd*.  The actual modem code was a binary-only library pre-compiled for 32-bit x86 CPUs, which got linked into an (open source) daemon.
86 9 manawyrm
There is an experimental (but well working) yate module which links against slmodem and makes it usable for answering modem calls dynamically called "shadysoftmodem":https://github.com/Shadytel/shadysoftmodem .
87 7 laforge
88
h3. IBM MWave
89
90
FIXME
91
92
h3. 3Com / USRobotics
93
94
FIXME
95
96
97 2 laforge
h3. MC97 / AC97 Modems
98
99
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.
100
101 1 laforge
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.
102 7 laforge
103 1 laforge
h2. Open Source Software for Software Modems
104 2 laforge
105 8 laforge
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 meant that the projects are usually only usable with very specific harware and not interchangeable.
106 2 laforge
107
h3. spandsp
108
109 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.
110
111
Its primary use case was to send/receive Fax over analog phone lines in the software VoIP/PBX systems (iaxmodem, Asterisk, CallWeaver and FreeSwitch)
112
113 2 laforge
h3. linmodem
114
115 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
116 1 laforge
117 5 laforge
Supported Standards: V.8, V.21, V.23
118
Incomplete Standards: V.34, V.90
119
120
121 2 laforge
h3. ArduinoModem
122
123
This is not really a _contemporary_ software modem, but a retrocomputing project by @supersat
124
125 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
126 5 laforge
127
Supported Standards: Bell 103
128
129
130
h3. btx_modem
131
132
"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.
133
134
Supported Standards: V.23
135
136
137
h3. fisher-modem
138
139
"fisher-modem":https://github.com/randyrossi/fisher-modem is a software modem implementation by Dr. Tony Fisher. 
140
141
Supported Standards: V.21, V.32, V.29
142
Incomplete Standards: V.32 originate, V.34 originate
143
144
145
h3. app_softmodem
146
147
"app_softmodem":https://github.com/proquar/asterisk-Softmodem is a software modem for use with Asterisk
148
149
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)