Skip to main content

A Python implementation of Viasat's NIMO modem interface project.

Project description

pynimomodem

A Python implementation of the Viasat NIMO modem interface for satellite IoT.

NIMO stands for Non-IP Modem Orbcomm waveform and represents a family of low cost satellite data modems that use network protocols developed by ORBCOMM including IsatData Pro and its successor, OGx.

These ORBCOMM protocols can operate over the Viasat L-band global network in cooperation with a varietry of authorized Viasat IoT service partners, and are intended for event-based remote data collection and device control.

Example NIMO modems available:

Additional Information

[!NOTE] Obsoletes/replaces the Inmarsat idpmodem project, when combined with the pynimcodec library.

Installation

Example using pip, on a Linux-based platform including PySerial dependency:

pip install 'pynimomodem'

Background

Overview

IsatData Pro (IDP)is a store-and-forward satellite messaging technology with flexible message sizes:

  • up to 6400 bytes Mobile-Originated (aka MO, From-Terminal, Return)
  • up to 10000 bytes Mobile-Terminated (aka MT, To-Terminal, Forward)

Messages are sent to or collected from a Mobile using its globally unique 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.

Data sources and controls in the field are interfaced to a 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 embedded microservice with defined binary formatting. The MIN concept also supports the optional Message Definition File feature allowing an XML file to be applied which presents a JSON-tagged message structure on the network API.

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 be cleared from the modem transmit queue by querying state(s) either periodically or when prompted by the modem's event notification pin if configured.
  4. MT messages that arrive are stored in the receive queue and the Edge device queries for New MT messages periodically or when prompted by the modem's event notification pin if configured.
  5. Network acquisition status can also be queried using AT commands.
  6. 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 Bulletin Board frequency where it may need to download a new network configuration before re-attempting. Bulletin board downloads typically take less than 15 minutes but can take longer in low signal or high interference locations. A modem should not be powered off during Bulletin Board download.
  7. 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.

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

pynimomodem-0.4.11.tar.gz (37.5 kB view details)

Uploaded Source

Built Distribution

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

pynimomodem-0.4.11-py3-none-any.whl (38.3 kB view details)

Uploaded Python 3

File details

Details for the file pynimomodem-0.4.11.tar.gz.

File metadata

  • Download URL: pynimomodem-0.4.11.tar.gz
  • Upload date:
  • Size: 37.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.17 Darwin/21.6.0

File hashes

Hashes for pynimomodem-0.4.11.tar.gz
Algorithm Hash digest
SHA256 7258b3f869b4d3b6648bf34612b874347b82d6bf6c613a7946d472fe0ea667d8
MD5 c5185b946a51503d056b35e22ffc71da
BLAKE2b-256 d36451d3c1e2cea6036e0a453f5a6352e54f2ac6b9448ed505a0ab2dab3b1cea

See more details on using hashes here.

File details

Details for the file pynimomodem-0.4.11-py3-none-any.whl.

File metadata

  • Download URL: pynimomodem-0.4.11-py3-none-any.whl
  • Upload date:
  • Size: 38.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.17 Darwin/21.6.0

File hashes

Hashes for pynimomodem-0.4.11-py3-none-any.whl
Algorithm Hash digest
SHA256 f913224388f29238805ca879017455c7c1e3e1a2cd31ace8345c3df933e939bf
MD5 5811f4e711774083c30a0039af85dbee
BLAKE2b-256 2509da4cc59c8c4d7d1a99a8149b2a78e5be2e0e29a8929de4d5e4c53b25ddad

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