Skip to main content

Control an attached GSM modem: send/receive SMS messages, handle calls, etc

Project description

GSM modem module for Python forked in 2025

python-gsmmodem is a module that allows easy control of a GSM modem attached to the system. It also includes a couple of useful commandline utilities for interacting with a GSM modem.

Its features include:

  • simple methods for sending SMS messages, checking signal level, etc

  • easy-to-use API for starting and responding to USSD sessions and making voice calls

  • handling incoming phone calls and received SMS messages via callback methods

  • support for SMS PDU and text mode

  • support for tracking SMS status reports

  • wraps AT command errors into Python exceptions by default

  • modular design; you easily issue your own AT commands to the modem (with error checking), or read/write directly from/to the modem if you prefer

  • comprehensive test suite

Bundled utilities:

  • GSMTerm: an easy-to-use serial terminal for communicating with an attached GSM modem. It features command completion, built-in help for many AT commands, history, context-aware prompt, etc.

  • sendsms.py: a simple command line script to send SMS messages

  • identify-modem.py: simple utility to identify attached modem. Can also be used to provide debug information used for development of python-gsmmodem.

How is this different than https://github.com/babca/python-gsmmodem?

It seems the python-gsmmodem-new repository is not maintained anymore. This fork is a copy of the last commit from the original repository, with some modifications. Specifically, I started this to handle SIM800 modem, which require xonxoff flow control to work properly.

How to use this package

Go to examples/ directory in this repo.

Requirements

  • Python 3.3 or later

  • pySerial

How to install this package

There are multiple ways to install python-gsmmodem-2025 package:

Automatic installation of the latest “stable” release from PyPI

pip install python-gsmmodem-2025

pip will automatically download and install all dependencies, as required. You can also utilise easy_install in the same manner as using pip above.

If you are utilising python-gsmmodem-2025 as part of another project, add it to your install_requires section of your setup.py file and upon your project’s installation, it will be pulled in automatically.

Manual installation of the latest “stable” release from PyPI

Download a python-gsmmodem-2025 archive from PyPI, extract it and install the package with command:

python setup.py install

Note that python-gsmmodem-2025 package relies on pySerial for serial communications: https://github.com/pyserial/pyserial

Installation of the latest commit from GitHub

Clone from GitHub:

git clone https://github.com/babca/python-gsmmodem.git
cd python-gsmmodem/
python setup.py install

Note that python-gsmmodem-2025 package relies on pySerial for serial communications: https://github.com/pyserial/pyserial

Testing the package

Build Status Coverage Status

To run all unit tests, do:

python setup.py test

Unit test code coverage information may be generated by using coverage. You can execute it directly from setup.py by doing:

python setup.py coverage

This will run all unit tests and report on code coverage statistics.

Building documentation

This package contains Sphinx-based documentation. To manually build or test the documentation locally, do the following:

git clone https://github.com/babca/python-gsmmodem.git
cd python-gsmmodem
pip install .[doc]
cd doc
make html

For true isolation, you may wish to run the above commands within a virtualenv, which will help you manage this development installation.

License information

Copyright (C) 2013 Francois Aucamp See AUTHORS for all authors and contact information.

License: GNU Lesser General Public License, version 3 or later; see COPYING

included in this archive for details.

FAQ

List all modem ports

You can simply list all ttyUSB devices before and after pluging the modem in.

ls /dev/ttyUSB*

Device or resource busy error

Check running processes. The device could be occupied by another program or another instance of gsmmodem which is still running in the background. Run sudo lsof | grep tty, try to locate the problematic process and sudo kill <PID>.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_gsmmodem_2025-0.1.3.tar.gz (119.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_gsmmodem_2025-0.1.3-py3-none-any.whl (70.5 kB view details)

Uploaded Python 3

File details

Details for the file python_gsmmodem_2025-0.1.3.tar.gz.

File metadata

  • Download URL: python_gsmmodem_2025-0.1.3.tar.gz
  • Upload date:
  • Size: 119.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for python_gsmmodem_2025-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a32d50bdb6831eccb63516917b75f535a4162f28ae9b36df6e9d7a261a72ef19
MD5 6971b1954dd374e48b3b8719f3610297
BLAKE2b-256 16b11355e1790d77cbaf32dd3e4e9644c363bc0b4355af796e37e182992f9815

See more details on using hashes here.

File details

Details for the file python_gsmmodem_2025-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for python_gsmmodem_2025-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 58d692ef32e9e6ee4c4ca6d4ab6bef29576038e5504f7a7036b8af315fd7a37e
MD5 1f7a01abb4bd5ccec0ce7dbe0f4f6690
BLAKE2b-256 3c21468c34aff621fcabdc7012da920c7362760f9c25b89f23e521dd62667019

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page