Introduction: Install Modem USB Device in Raspberry Pi

About: Systems Administrator and Software Programmer.

Introduction

Recently, I was at a flea market and I spotted the Prolink 1456UC Fax/Data modem, (see picture) still unopened. I thought why not install it in Raspberry Pi, even though there was a high probablity that this modem was not supported by Linux. I went ahead and purchased it because it was very cheap.

There are 3 kinds of modems:

  1. Controllerless modems (or Winmodems)
  2. Softmodems
  3. Hardware modem a.k.a "Controller-based" modem

Linux is very fussy with modems. It likes Hardware modem very much. On the other hand, it is very difficult to find linux device driver for the softmodems and winmodems . To determine my modem's type, I needed to know what chipset is being used. Usually the brand of the modem (in my case Prolink) is NOT the maker of the modem chipset.

Prolink's website stated that the modem uses Conexant chipset. This is useful but insufficient because I needed to know the model of the Conexant chipset. This meant that I needed to open the modem and study the modem chip to know the model of the chip.

Opening up the modem revealed that the chipset was CX93010-11Z. Google research shows that the CX93010-11Z chipset is a Hardware modem. I got lucky!

After completing this instructable, I might want to turn the Raspberry Pi into a Fax Machine.

Scope

This instructable will show the following

  1. Install and configure the CX93010-based modem in Raspberry Pi
  2. Test the modem using a low level communication.software called Minicom

Specifications

My Raspberry Pi:

  • Raspberry Pi 2 model
  • Raspbian based on Debian Version 8.0 (a.k.a Jessie)

Step 1: Plug in Modem USB Device Into Raspberry Pi

Open terminal emulator

sudo tail -f /var/log/messages

Refer to screenshot. Linux kernel should print some messages.

Find the line that says:

cdc_acm 1-1.3.3:1.0: ttyACM0: USB ACM device

sudo dmesg

Refer to screenshot. Linux kernel should print some messages.

Find the line that says:

cdc_acm 1-1.3.3:1.0: ttyACM0: USB ACM device

My modem device filename is "ttyACM0". Yours may be "ttyACM1" or "ttyACM2" and so on.

The message :

"usbcore: registered new interface driver cdc_acm" is another indicator that Linux kernel has detected a Hardware modem.

Read more information about the interface drive cdc_acm.

lsmod | grep cdc
modinfo cdc_acm

Refer to screenshot

If you do not see the above messages, then it is likely that linux kernel failed to detect the Modem USB device. Try to get this step completed successfully before moving on to the next step.

Step 2: Install Minicom

Minicom is a serial communication program for modem

Open terminal

sudo apt-get update
sudo apt-get install minicom

Step 3: Configure Minicom

Open terminal

Enter configuration screen of minicom

sudo minicom -s

Use keyboard arrow and select "Serial Port setup" and Press Enter

Set the values as shown in the screenshot.

Press Enter to exit setup screen

Select "Save setup as dfl" and press Enter key.

You may need to "eXit and reset" by pressing "X" key.

Step 4: Test Modem by Communicating With It

Communicate with the Modem using a language called Hayes Command Set.

Open terminal

minicom

Type the following diagnostic commands.

ATI0 (Press Enter)
ATI1 (Press Enter)
ATI2 (Press Enter)
ATI3 (Press Enter)
ATI4 (Press Enter)
ATI5 (Press Enter)
ATI6 (Press Enter)
ATI7 (Press Enter)

Refer to screenshot.

The modem should respond with a message after each command.

Step 5: Test Modem by Calling Someone's Phone

If the diagnostic test in the previous step was successful, do advanced test by instructing the modem to call a phone number. It is a good idea to call your own phone number and not annoy your friends and family!

Hook the live telephone line from the telephone outlet to the modem's modem port.

Open terminal

Load minicom if you do not have a minicom session

minicom<br>

The modem is going to call the phone number 15551234. Type the following

ATDT15551234

The modem should be making a weird touch tone sound and your phone should ring about 5-10 seconds later.