Device::Modem::FAQ - Frequently Asked Questions list about the "Device::Modem" perl extension
Whatis"Device::Modem"?
"Device::Modem" is a perl extension written in pure perl that allows on to communicate with modems, or
generically with "AT command set compliant" devices connected to your computer via a serialport.
Whoistheauthorofthiswork?
Cosimo Streppone (cosimo@cpan.org), an Italian guy, who works and enjoys writing perl programs and
objects. If you want to know more, go to http://www.streppone.it/cosimo/work/perl/BTW,whatisPerl?
If you are asking that, probably you are in the wrong place.
Perl is a wonderful programming language, that cuts development times, helps developer keep mental
health, good life-style, doesn't pollute developer's mind, allows one complete freedom of style, and
(from perl manual), givesyouenoughropetohangyourself.
Some starting points:
• <http://www.perl.com> - Reference site for Perl programmers
• <http://www.perl.org> - Perl Mongers home
• <http://cpan.perl.org> - Comprehensive Perl Archive Network
• <http://www.perlmonks.org> - Higher Perl souls
• <http://use.perl.org> - Large Perl community
Whatisan"ATcommandset"?
It is a set of standard commands, also called "Hayes", in which (almost) all commands begin with "AT"
prefix and they allow one to control a modem, router, whatever device. Also cellular phones work with a
subset of standard "AT" commands.
Whatisamodem?
What the heck are you doing here? http://www.google.com/search?q=Tech+glossary+modem
Whataretherequisitesof"Device::Modem"?
You must have:
• A working computer with a standard RS-232 serial port
• An AT-compliant device (a modem will do perfectly here :-)
• A working Perl installation
• "Device::SerialPort" module installed if you are on some unix platform. "Win32::SerialPort" module
installed if you are on Win32 platform.
Isitmulti-platform?
"Device::Modem" works close to the serial port communication layer, which varies on many platforms. It
relies on "Device::SerialPort" and "Win32::SerialPort" modules for all low-level communication layer.
It tries to build a platform independent layer above these two low-level modules, so developers don't
need to distinguish among different platforms.
It's been reported to work on "Win32", "Linux", "Mac OS X", "FreeBSD", "NetBSD", "OpenBSD", "ARM-Linux"
and "Solaris".
CanIuseitformycommercialapplication?
Yes, it is allowed by its license, that is the same as Perl language. If you are using it in a
commercial package, or plan to do so, please inform the author (Cosimo Streppone, cosimo@cpan.org
<mailto:cosimo@cpan.org>). Thank you.
Whythe[insert_you_preferred_feature_here]doesnotwork?
This is an open-source software developed in my little home spare time and for my personal interest and
amusement. This module has a test suite, but it is not very extensive, so it is possible that some
feature X does not work, or it is not implemented yet or I cannot test it.
If you are in this situation, please contact me <mailto:cosimo@cpan.org> and provide the following
information:
• Your operating system version and architecture. Complete output of "perl -V" command is good for
this.
• Your perl version. Again "perl -V".
• Your "Device::Modem", "Device::SerialPort" and (if you are using it) "Device::Gsm" version. In case
of doubt, send the output of:
perl -MDevice::Modem -le 'print Device::Modem->VERSION'
Thank you.
DoXModemtransferswork?
This is definitely reported to be working by several users, who also contributed patches and tested the
feature.
Otherwise, just look at Aaron Mitti's Device::SerialPort::Xmodem CPAN module.
XModemsucks.WhataboutZModem?
It might seem that XModem and ZModem should be well over dead at this point. But, looks like several
old/new devices still support them.
So, ZModem support has been contributed by a user, and will be added to the main release Soon(tm).
WhyIkeepgetting"can'topendevice:/dev/xxxxxat.../Modem.pmline468"errors?
First of all, be sure to use Device::Modemversion1.52+.
Probably you don't have the correct permissions to access your modem device (usually /dev/modem, or
/dev/ttyS0 on unix and COM1/COM2/... on windows). Or you are trying to use the examples that come with
Device::Modem distribution with an older version (Device::Modem <= 1.33).
In this case, you should upgrade to Device::Modem 1.52+.
WhyIgettheerror"Can'tcallmethod"purge_all"onanundefinedvalueat.../Modem.pmline545"?
Again, upgradetoDevice::Modemversion1.52+.
If you get this error, it means that the communication port could not be opened. Most probably you don't
have permissions to access your serial port, or you have used a wrong device name (check your device
entry in "/dev" folder).
Since version 1.52, "Device::Modem::connect()" will try to automatically reconnect if your port
connection shuts down, or the "Device::SerialPort", or "Win32::SerialPort" underlying object is deleted
or invalidated.
You should really upgrade to Device::Modem 1.52+.
CanImakevoicecallswiththismodem?No. What you can do, is voice call dialing. After the dialing though, you have to speak. Your computer
can not do that, unless you have a PBX board, at least not with Device::Modem.
Thismoduleisprettyslow.WhatcanIdo?
Make sure you are using that latest version. From version 1.30, the main "send-command" / "wait-answer"
cycle has been sensibly improved for speed, though you now have to specify a timeout if you want the
module to wait an answer if modem is not ready.
Probably this is the better compromise...
CanImakea[insert_your_preferred_number_here]eurodonationtoyouforthisfantasticmodule?
Oh, yes! Please feel free to contact cosimo@cpan.org to decide details about this... :-)
Ithinkyouarea?#!x$*z!#(!*andyoursoftwaresucks
Uh.
Please contact me, so I can improve my software design, ideas and coding, but only if you explain the
reasons of your criticism. Thank you.
perl v5.30.3 2020-06-20 Device::Modem::FAQ(3pm)