Skip to main content

Library for interfacing to Narrowband Non-Terrestrial Network modems using AT commands.

Project description

NB-NTN Modem Interface

A generic model for interfacing to a NB-IoT modem compatible with 3GPP R17 Non-Terrestrial Network.

Provides an base class NbntnBaseModem that abstracts specific AT commands to common methods used for communicating using NB-IoT over satellite. The class is intended to be subclassed and extended for specific modem variants from various manufacturers.

Modem Subclassing

Since modem implementations differ across make/model, this library is intended to be used to create NbntnBaseModem subclasses with specific AT commands and responses. An example DefaultModem is included which covers the most basic operations that should be supported by any 3GPP NTN compliant modem.

Initialization Sequence

The ntninit submodule describes the format and an example template for the AT command sequence required by a particular modem variant.

The ntn_init list of init objects may be customized and included at the top of a specific modem subclass.

Importing a Modem Subclass

A common approach to importing a modem subclass is as follows:

import importlib
from pkgutil import iter_modules

from pynbntnmodem import NbntnBaseModem, DefaultModem


for mod in iter_modules(modems.__path__):
    submodule = importlib.import_module(f'{path_to_module_file}')
    for attr_name in dir(submodule):
        attr = getattr(submodule, attr_name)
        if (isinstance(attr, type) and
            issubclass(attr, NbntnBaseModem) and
            attr is not DefaultModem):
            
            modem = attr()

Common Workflow

  • connect() using either .env variables, default or programmatic values for SERIAL_PORT/port and SERIAL_BAUDRATE/baudrate.

  • initialize_ntn() to run the modem-specific configuration sequence

  • Run a loop that continually runs check_urc(), queues and then processes each get_urc_type()

URC injection

Some modems do not emit any URC on important events such as the completion of a MO message sending. In such cases the inject_urc() method is provided to simulate a modem-generated URC.

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

pynbntnmodem-0.6.3.tar.gz (28.6 kB view details)

Uploaded Source

Built Distribution

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

pynbntnmodem-0.6.3-py3-none-any.whl (34.3 kB view details)

Uploaded Python 3

File details

Details for the file pynbntnmodem-0.6.3.tar.gz.

File metadata

  • Download URL: pynbntnmodem-0.6.3.tar.gz
  • Upload date:
  • Size: 28.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.10.14 Darwin/24.6.0

File hashes

Hashes for pynbntnmodem-0.6.3.tar.gz
Algorithm Hash digest
SHA256 2ee0e1f497f1ed6c3f13ea97b6a70456064bd6ac31aa17c9c93ec470f7d7a35f
MD5 8369260565cde6590b8b917891b93b7d
BLAKE2b-256 2a977b403c568ade5cbff3447a1a44a4f7882d57b2eaea86aca597b25c347a53

See more details on using hashes here.

File details

Details for the file pynbntnmodem-0.6.3-py3-none-any.whl.

File metadata

  • Download URL: pynbntnmodem-0.6.3-py3-none-any.whl
  • Upload date:
  • Size: 34.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.10.14 Darwin/24.6.0

File hashes

Hashes for pynbntnmodem-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d8d54cfec3f0f40f9e1ae271fd4b8600e045a1ba6ef9b25c9c2519777c5ccdd5
MD5 095e2cf6b16172a3f583db8bdb03f879
BLAKE2b-256 5a5b1069d9f5577a441e04b1df6dbf7ab81da98ea8a68b9270d0b5a02ff88dba

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