
D-Modem¶
An open V.92 softmodem: connect to dial-up modems over a SIP call, with no modem hardware.
D-Modem's data pumps, error correction and AT command set are open
source. dmodemd puts the modem on a SIP line and gives the computer a
serial port (a pty, a COM port or a socket) to dial from. It can also
drive real phone-line hardware: an old laptop's softmodem, Smart Link and
Agere USB modems, and the pico-serial
sticks. On a PBX it answers calls through Asterisk, FreeSWITCH or FreePBX.
- V.92, V.90 and V.91 (up to 62667 bit/s between digital modems), V.34 and every older standard down to Bell 103
- Class 1, 2 and 2.0 fax with a built-in fax machine and T.38
- V.42 error correction with V.44, V.42bis and MNP 5 compression; V.80 for H.324
- Text telephones (V.18), alarm reports, fixed-line SMS, card-terminal fast connect, leased lines and ISDN data calls
- Voice and data together (V.70 DSVD, V.61) and V.150.1 modem relay
- Linux, Windows, macOS and Haiku; the D-Modem app for Android and iOS is built on it
Quick start¶
On Linux, with CMake, git and a C++17 compiler:
cmake -B build && cmake --build build
export SIP_LOGIN=username:password@sip.example.com
./build/dmodemd/dmodemd
then open /dev/ttyDM0 in a terminal program at 115200 bit/s, type
ATX3 (there is no dial tone on SIP) and dial with ATDT.
Documentation¶
The documentation is also a website, d-modem.github.io/D-Modem, with reference pages made from the code.
- Building: Linux, Windows, macOS, Haiku, the tests
- Using dmodemd: the SIP account, dialing, answering, fax, voice, SRTP, hardware
- What the modem does: every standard, in one place
- The PBX modules: Asterisk, dmodem-ari, FreePBX, FreeSWITCH and modemmenu
- docs/: how each part works, with a technical details page beside each
- The AT command reference (PDF)
- Source layout, How it works, Known issues
D-Modem began at Aon's Cyber Labs in 2021 (acknowledgements).
The D-Modem suite¶
| Repository | What it is |
|---|---|
| D-Modem | The open V.92 softmodem: dmodemd, libdmodem and the Asterisk, FreeSWITCH and ARI modules |
| app | The D-Modem app for Android and iOS: a dial-up modem on a SIP call |
| hardware | pico-serial: RP2040 serial adapters and phone-line USB sticks |
| menu | modemmenu: the login and menu dial-up callers reach |
| bbs | A bulletin board for telnet, SSH, TN3270 and modem callers |
| go3270 | A Go library for 3270 terminal servers, used by bbs |
| brand | Logos, colours, type and the naming guide |
License¶
D-Modem is copyright the D-Modem Authors, under the GNU Affero General Public License version 3 only (COPYING), or under a commercial licence from the D-Modem Authors. See LICENSING.md for the parts under other licences: the Asterisk module (GPL-2.0) and the interop test binaries in dsp/test/, which belong to their owners and are not subject to this repository's terms (dsp/test/NOTICE.md). Contributions come with a contributor agreement (CONTRIBUTING.md).