Skip to main content

pynanomodem

A Python library/package for interfacing to modems using Viasat's IoT Nano satellite IoT service.

IoT Nano is a Non-IP messaging service offering very low power consumption, low cost modules and devices for small amounts of data. IoT Nano is intended for event-based remote data collection and device remote control, combining two network protocols sharing the same global coverage:

  • IDP (aka IsatData Pro) is a mature global service offering message size up to about 5 kilobytes, relatively low latency of less than 20 seconds for small messages and low throughput about 0.1 kbps.
  • OGx offers various improvements to IDP such as lower power consuming configurations, larger messages and faster throughput for larger messages.

These network protocols are optimized for geostationary satellite use, developed by ORBCOMM in partnership with Viasat. The service(s) operate over the Viasat global L-band global network and can be procured through a varietry of authorized Viasat IoT service partners.

Example modems available:

[!NOTE] Obsoletes/replaces the Inmarsat idpmodem and pynimomodem projects.

Installation and Use

Installing using pip:

pip install 'pynanomodem'

The library provides an abstract base class to encapsulate manufacturer-specific AT commands as a common set of methods such as:

  • mo_message_send
  • mt_message_recv
  • get_location
  • set_wakeup_interval
  • get_network_state

Viasat and/or manufacturers provide model-specific subclasses through access to GitHub repositories based on mutual non-disclosure agreement.

Background

System Overview

IoT Nano is a store-and-forward satellite messaging technology with flexible message sizes offering 2-way remote communications.

Messages are sent to or collected from a Device using its globally unique Device ID (aka Mobile ID), transacted through a Mailbox that provides authentication, encryption and data segregation for cloud-based or enterprise client applications via a REST Messaging API.

Messages can be Mobile-Originated (MO) sent by the remote device, or Mobile-Terminated (MT) sent to the device.

Sensors and controls in the field are typically interfaced to a microcontroller unit (MCU) connected to a satellite modem using a serial interface with AT commands to send and receive messages, check network status, and optionally use the built-in Global Navigation Satellite System (GNSS) receiver to determine location-based information.

The first byte of the message is referred to as the Service Identification Number (SIN) where values below 16 are reserved for system use. SIN is intended to capture the concept of embedded microservices used by an application.

The second byte of the message can optionally be defined as the Message Identifier Number (MIN) intended to support remote operations within each SIN embedded microservice with predefined binary formatting. The MIN concept also supports an optional codec feature allowing an XML file to be applied to a Mailbox to decode binary data into a JSON-tagged message structure for easier integration to cloud applications.

Modem Concept of Operation

  1. Upon power-up or reset, the modem first acquires its location using Global Navigation Satellite Systems (GNSS).
  2. After getting its location, the modem tunes to the correct frequency, then registers on the network. Once registered it can communicate on the network.
  3. MO messages are submitted by a microcontroller or IoT Edge device, which then must monitor progress until the message is complete (either delivered or timed out/failed due to blockage). Completed messages must then be cleared from the modem transmit queue.
  4. MT messages that arrive are stored in the modem's receive queue and the MCU queries for new MT messages periodically or when prompted by the modem's event notification mechanisms, if configured.
  5. Network acquisition status and signal strength can also be queried using AT commands.
  6. Power saving features can be configured locally using AT commands or remotely using the Messaging API. The primary mechanism for power savings is a configurable wakeup interval that gets negotiated with the network so that the network can store MT messages until the next modem wakeup.
  7. If the modem cannot find the target frequency it begins to search for other frequencies from a configuration map in its non-volatile memory. It will cycle through beam acquisition attempts for a period of time before falling back to a globally-accessible frequency where it may need to download a new network configuration before re-attempting.
  8. Prolonged obstruction of satellite signal will put the modem into blockage state from which it will automatically try to recover based on an algorithm influenced by its power mode setting.

More Information

To find out more details about system integration and the detailed operation of the IoT Nano service, please contact your local Viasat representative or authorized distributor to sign a mutual non-disclosure agreement and request access to the IoT Nano Developer Kit repository.

Metadata

Release files for pynanomodem 0.2.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pynanomodem 0.2.10
File Size Uploaded
pynanomodem-0.2.10.tar.gz 24.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pynanomodem 0.2.10
File Interpreter ABI Platform
pynanomodem-0.2.10-py3-none-any.whl Python 3 none any Details

Total release size: 50.1 kB

Release files / pynanomodem-0.2.10.tar.gz

Download URL pynanomodem-0.2.10.tar.gz
Size 24.6 kB
Tags Source
SHA-256 checksum
How to use checksums
80c21967ed23bfbeb934269230350e26501fd80395434cb91ce059b040d0e375
BLAKE2b-256 checksum
How to use checksums
ad37abbfbeb6a581ba1b533783a5dfbaab3911e83b34fbdc9d2dc73fcc55b578
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.10.14 Darwin/24.6.0

Release files / pynanomodem-0.2.10-py3-none-any.whl

Download URL pynanomodem-0.2.10-py3-none-any.whl
Size 25.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eefbc4578210d4a1612a0363f331a22ef99d70869f5d382b79b1edc371d1f66a
BLAKE2b-256 checksum
How to use checksums
d1907f39c83f2871830b5a9513a2c41bd3ce2c601727f41a74c2ab8a0ab0fedf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.10.14 Darwin/24.6.0

Release history Release notifications | RSS feed

This release

0.2.10 This release

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page