|[Home] [Credit Search] [Category Browser] [Staff Roll Call]||The LINUX.COM Article Archive|
|Originally Published: Wednesday, 22 September 1999||Author: Maurice Entwistle|
|Published to: featured_articles/Featured Articles||Page: 1/1 - [Std View]|
Winmodems Part 7 - The Low-down Nitty-Gritty on Modems
I have had numerous requests to get down to the nitty-gritty of the guts of a modem -- to explain in detail what the difference is between a fully self-contained modem (which Linux requires at this point) and Winmodems (soft-modems), which so far do not work with GNU/Linux. Well, here you have it, a detailed explanation of the three major parts of a modem, and what parts have been stripped to create the ubiquitous, "Winmodem."...
I have had numerous requests to get down to the nitty-gritty of the guts of a modem -- to explain in detail what the difference is between a fully self-contained modem (which Linux requires at this point) and Winmodems (soft-modems), which so far do not work with GNU/Linux. Well, here you have it, a detailed explanation of the three major parts of a modem, and what parts have been stripped to create the ubiquitous, "Winmodem."
Armed with the following information, you should be able to ask the questions necessary to obtain a modem that will run under GNU/Linux on your home PC. By the way, most current PCs have an extra slot so that an additional modem can be installed. (Just in case you're not sure of what you are doing, and want to be sure you can still get on the net with MS Windows.) However, a "hardware" modem will run on both MS Windows and GNU/Linux. Here are the details:
A complete hardware-based modem contains three basic components: a Direct Access Arrangement (DAA) section, a Digital Signal Processor (DSP) chip, anda "controller" chip. This is our familiar external modem with an RS-232 port on it. The DAA interfaces to the telephone line, providing isolation, on/off hook control, termination, and signal transfer to the DSP chip. The DAA contains a "codec" chip with an analog to digital converter (ADC) and digital to analog converter (DAC) to interface between the analog signals on the telephone line and the digital signals in the DSP. The main modem algorithm is implemented in a special-purpose fixed-point DSP. Dialing, AT commands processing, and I/O are accomplished in the "Controller" chip. The hardware-based modem is fully self-contained, costing upwards of $50.
The first step to reduce the cost of the modem was to move the "controller" function to the PC's CPU in software. The driver is on the PC's hard disk rather than in an EEPROM in the modem. This step saved quite a lot of money, but required proprietary software drivers written for the Windows operating systems to work. A slow Pentium has enough CPU cycles to implement a controller with negligible overhead. The intensive DSP part of the processing was still done on the modem in a separate DSP chip. Hardware manufacturers will never go back and write Linux drivers for these old modems. There is no incentive. The best hope is for them to open up the programming specs or Windows driver source files so that the free software community can port them.
PC processors are now very fast, and the entire modem algorithm can be implemented in total on the CPU with approximately 5% CPU utilization on a 400MHz processor. All controller and DSP run on the host CPU. This is what is referred to as a "soft-modem." The only hardware required is the DAA. The ADC and DAC samples are communicated directly to the CPU, typically 16 bits each way with a sample rate of 7200 to 10286 Hz. There are DAA chips available which interface directly with the Intel core logic through an AC97 interface. A complete DAA board for a soft-modem costs less than $5.
There is currently a great shift underway in the modem market. With the trend toward very cheap computers, "soft-modems" are taking off in a BIG way. Well over 75% of the modems sold next year will be "soft modems." The soft-modem companies are competing in the low price PC segment, which will begin migrating away from Microsoft and toward Linux. They will never share their source code because this is how they make their money. They will port their drivers (closed-source) to Linux.
The Linux community needs to realize that having a quality "soft-modem" is key to the widespread acceptance of Linux in "cheap" PCs, and thus on the desktops of the World. Technically, there is no reason why a "soft-modem" is inferior to a complete hardware-based modem, so long as the same quality DSP algorithms are used and the PC's CPU can continuously process the data. The CPU overhead is small compared with the total power of today's CPUs. Writing an open-source soft-modem for Linux is probably one of the most interesting free software projects around. This work would involve some real scientific work in digital signal processing algorithms, standards, and efficient low-latency coding. The programmers involved need to be aware of intellectual property issues.
Here are some interesting links to modem/soft-modem related information:
My question: Where are the modem manufacturers? Do they read the news? I would think that they are aware of the boom in Linux boxes. It seems to me that the first modem manufacturer to come out with a GNU/Linux soft-modem would make a killing. In these modern times, the first out with a new product has a good chance of dominating that market for a good number of years. So, where are the modem manufacturers announcing Linux porting? Are their profits so high and their margins so great that GNU/Linux isn't worth the trouble? That seems unlikely to me. Let's hear from a modem manufacturer! At least get yourself some good press by releasing the code so our wonderful volunteers can port your modems for you.
Maurice Entwistle (email@example.com) has been learning and writing about GNU/Linux for more than a year. He hopes his writing encourages more people to try GNU/Linux. As Martin Luther King stated, "Freedom always has a price." He makes his living writing web text and would encourage anyone needing marketing copy, copy writing or editing to drop him a line.