Introduction: Install Modem USB Device in Raspberry Pi
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:
- Controllerless modems (or Winmodems)
- Softmodems
- 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
- Install and configure the CX93010-based modem in Raspberry Pi
- 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.