Giter Club home page Giter Club logo

linmodem's Introduction

Linux Software Modem

This is a generic Linux Modem. This modem is totally software, it means that all the DSP stuff is done by the main CPU, as in some so called "winmodems". See the main project page at http://www.enst.fr/~bellard/linmodem.html.

Linmodem is also a research project. It contains all the necessary stuff to test new digital communication algorithms. The line simulator and the X11 interface can be used to simulate a complete communication chain.

Linmodem is the first modem to integrate a graphical user interface which show the data transmitted graphically (QAM constellation, real time FFT of the received signal, etc...) and which will allow you to monitor the line quality.


What's done:

  • V34 modulator (sampling rate of 8000 Hz)
  • V34 demodulator (sampling rate of 8000 Hz), but no echo cancellor.
  • Algebraic part of V90.
  • DTMF dialing/receive.
  • V8 protocol.
  • V21 modulation & demodulation
  • V23 modulation & demodulation
  • sample code to test the protocol.
  • sample code to test V21, V22, V23, V34 and V90 independently from the modem.
  • a basic phone line simulator (with echos & typical line amplitude/phase distortion).
  • an X11 interface (see README.x11)
  • soundcard interface.
  • AT command parser & sample tty simulator.
  • asynchronous protocol.

See the homepage of the project at http://www.enst.fr/~bellard/linmodem.html to know what are the tasks you could do.

Read the file README.arch to know the details of the implementation. Next versions will contain the first draft on the algorithms which are implemented.


Testing:

Yes, you can already hear the modem !

compile everything, then type:

lm -sv

You will see a lot of debug stuff. Then you can press Control C to stop the call. If you play the files 'ans.sw' and 'cal.sw' on your soundcard (16 bit, signed 8kHz), you will hear the DTMF pulses, the V8 negociation, and a sample V21 connection. The X11 interface allows you to see the signals exchanged.


Data pump testing:

With the option '-m modulation_name', you can test the V21, V22, V23, V34 and V90 data pumps. You can understand what's going on in this test only if you have a basic knowledge of the modulations.

The X11 interface can be used to monitor all the main data pump parameters, except for V90 which is not yet completely integrated in the tests (see README.x11).


Real modems:

Linmodem won't contain any hardware modem to support modems directly, but it will use kernel drivers which give a unified API to every driver (see README.arch to have an idea of the API)

Some test code is included in lmreal.c to work with the LTModem stuff available at http://www.close.u-net.com/ltmodem.html. However, it was not tested so don't expect it to work in this version.


Soundcard testing:

If you have two PCs connected by soundcards (connect line in -> line out), you may try the soundcard support of linmodem (not tested now, but should work):

'lm -tv' launches linmodem on your soundcard (device '/dev/dsp'). Then you can type 'ATDTxxx' to compose a number and launch a connection. On the other PC, type 'ATA' to receive the connection. It should work in V23 (or V21 if you change the defaults modulations in lm.c).

With 'lm -t', linmodem simulates a serial line on '/dev/ttyz0'. You can use minicom or any other terminal emulator to send AT commands.

Enjoy :-)

Fabrice Bellard - [email protected] - http://www.enst.fr/~bellard


linmodem's People

Contributors

geofft avatar nuncio-bitis avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.