Linux ACP Modem (Mwave) mini-HOWTO

Mike Sullivan

Paul Schroeder

Joy Yokley - Edited document and coverted to DocBook v4.1 (SGML).


Revision History
Revision .112002-07-18Revised by: PBS
Revision .102001-07-18Revised by: PBS
Revision .092001-05-21Revised by: PBS
Revision .082001-05-09Revised by: JEY
Revision .072001-04-30Revised by: JEY

Table of Contents
1. General Information and Hardware Requirements
1.1. Introduction
1.2. Credits
1.3. Where Can I Get the Latest Version of this Driver?
1.4. Are There Any Other Resources?
1.5. Copyright Notice and Disclaimer
1.6. Which Systems are Supported
1.7. Features of the Modem
2. Compilation, Installation, and Startup
2.1. Prerequisites
2.2. Building and Installing Source
2.3. Setting Things Up
2.4. Runtime
3. Resolving Installation and Configuration Problems
3.1. DSP Does Not Start
3.2. Resource Conflicts
3.3. Not Connecting at Specified Starting Speed
3.4. Dialer Application Cannot Detect Serial Port
3.5. PPP Errors Using 2.4.0 Version of the Kernel
4. Debugging Tips
4.1. Error Logs
4.2. Tracing
5. Test Claims
6. List of Supported Countries
7. Trademarks

1. General Information and Hardware Requirements

1.1. Introduction

The ACP Modem for Linux is a software based modem. Support software for the ACP modem is composed of a loadable kernel module and a user level application. Together these components support direct connection to public switched telephone networks (PSTNs) and support selected countries world wide. Refer to Section 6 of this document for the supported country list.

The modem also supports the standard communications port interface (ttySx) and is compatible with the Hayes AT Command Set.

ACP Modem software is continually under development. If you encounter bugs or usability issues, please contact us and we'll work to correct them.

1.7. Features of the Modem

The ACP Modem provides the following features:

Your modem contains 56K technology. To take advantage of this technology, you must first make sure that your Internet Service Provider (ISP) supports a 56K modem protocol. Significantly higher modem connection speeds, up to 56kbps, require all-digital transmission connections from your ISP to the line card in the central office from which your phone line is connected. The actual connection rate may be limited by the quality of your telephone lines. Telephone line quality may vary from location to location. Current regulations limit maximum trasfer rates to 53K. While your modem contains 56K technology, typical maximum connection rates in the receive direction may be significantly less than 56K. Currently, 56K capability is for the receive direction only. The transmit direction uses V.34 technology.

2. Compilation, Installation, and Startup

2.3. Setting Things Up

In the [WORLDTRADE] section of your mwavem.conf file, set the Country= parameter to your country access code.


The mwavem.conf file is installed in the /usr/local/etc directory unless you specified otherwise during the build process

Country information (including access codes) are listed in the mwavem.conf file. For example, for France the following section is present:

[Telephony\Country List\33]






To set France to be your configured country in the [WORLDTRADE] section of mwavem.conf,
set Country=33

2.4. Runtime

An initialization script has been provided which may be used to to start, stop, or check the status of the ACP Modem driver and application. It has been successfully run on the Debian, Slackware, SuSE, and Red Hat distributions and should run on any of their derivitives. If you are using the runtime script, it will load the mwave device driver module, configure the serial port, and start the mwave manager for you. All of the options which can be passed to the device driver module, along with some options for the script itself, can be configured by uncommenting and editing the appropriate variables at the beginning of the script.

The mwaved startup script can be found in the src/mwavem directory of the source distribution. If you are running the Red Hat distribution, you can copy the script to your /etc/rc.d/init.d directory and issue the ntsysv command in order to enable it at boot time. If not using Red Hat, see the documentation for your distribution for information on how to set this up to run at boot time.

It is recommended that you use the provided mwaved script. If you are not using the script, however, the following sections will describe how to manually start the device driver and application.

2.4.1. Loading the ACP device driver

To load the mwave device driver use
insmod mwave
modprobe mwave

The following arguments may be supplied with the insmod command:


The following arguments are not persistent from boot to boot (i.e. We are not saving them in the BIOS).

The following code is an example of how to run DSP using ttyS1 resources:

insmod mwave mwave_3780i_irq=10 mwave_3780i_io=0x0130 mwave_uart_irq=3 mwave_uart_io=0x2f8


The mwave is unable to check for resource conflicts. It is your responsibility to ensure that none of the resources specified conflict with other (commonly PCMCIA) devices.

You can use the tpctl package on Linux or the Thinkpad™ configuration utility on Windows NT or DOS to manage the configuration of Thinkpad™ related resources.

2.4.2. Running ACP Modem Application

  1. Once the ACP device driver is loaded successfully, use the mwavem command to execute the application.


    The location of the mwavem.conf file can be specified as an argument to the mwavem application. If not specified the default location is assumed to be /usr/local/etc/mwavem.conf unless otherwise changed during the build process.

  2. Setup the serial driver to recognize the UART provided by the ACP driver.

    setserial /dev/ttyS0 autoconfig


    Substitute /dev/ttyS0 to match the serial port you have configured the DSP to use.


    You may wish to create a symbolic link from your modem device to your serial device for convenience. Example: ln -s /dev/ttyS0 /dev/modem

The ACP Modem is now available for use by your favorite dialing application.

3. Resolving Installation and Configuration Problems

The following sections list solutions to possible problems you may experience.

3.1. DSP Does Not Start

In order to recognize memory above 64 Meg, it may be necessary to append the "mem=" option to the kernel command line. If you are using LILO for your boot loader, you would do this in the lilo.conf file. For example, if you had a machine with 128 Meg you would type:



Your statement must reflect 576K less than you actually have. Specifying the full amount of memory will prevent the DSP from starting. In the above example, the formula used to arrive at the proper number was 1024 * nMB - 576 = nK.

If you forget to run the Thinkpad™ utility to enable the ACP Modem and you didn't specify any command line arguments when inserting the mwave module (or it didn't work), you will receive a message in the syslog, similar to the one below:

ACP Modem, UART settings IRQ 0x3	IO 0x2f8

tp3780::EnableDSP, pSettings->bDSPEnabled 0 failed

Mwave Modem, ERROR cannot Enable DSP error fffffffb

Mwave Modem, ERROR cannot perform Mwave Initialization retval fffffffb

If you receive a message like the one above, check the command line arguments you provided to insmod.

3.2. Resource Conflicts

The ACP Modem requires the use of system resources for both the DSP and the UART provided by the ACP chip. For Linux systems, you will specify parameters to use for the duration of the boot with the insmod mwave command line parameters listed in Section 2.4.1.

Typically the configured resources are:

For the DSP:  IRQ 10, I/O address 0x130-0x13f

For the UART: IRQ 3,  I/O address 0x2f8 (if using ttyS1)

				  IRQ 4,  I/O address 0x3f8 (if using ttyS0)

For dual boot systems we recommeded that you use the Thinkpad™ Configuration Utility on Windows NT or DOS to configure these system resources.

Windows NT Thinkpad Configuration Utility Notes: (Under the Internal Modem --> Advanced selection)

  1. Set IRQ sharing to disabled

  2. Set 1st IRQ to your DSP IRQ (10 is recommened)

  3. Set 2nd IRQ to your UART IRQ (i.e. ttyS1 is equivalent to COM2)

  4. Set the DSP I/O address (0x130 is recommended)

  5. Set the internal modem I/O address to the UART I/O address (i.e. 0x2f8 for COM2)

  6. The DMA address is unused and can be set to anything.


You may also specify parameters to use for the duration of the boot by using the insmod mwave line parameters listed in section Section 2.4.1.

4. Debugging Tips

5. Test Claims

This driver has been tested using the ThinkPad™ 600E. The same chipset is integrated on the 600 and 770 models and should work.

6. List of Supported Countries

The following countries are supported by the ACP Modem driver

7. Trademarks

Hayes is a trademark of Hayes Microcomputer Products, Inc.

MNP (Microcom Network Protocol) is a trademark of Microcom, Inc.

IBM is a trademark of International Business Machines, Inc.