Giter VIP home page Giter VIP logo

qmi-dialer's Introduction

qmi-dialer

qmi-dialer is a (hopfully) easy-to-follow example of how to use QMI to establish a modem connection. It also outputs some information, some is acquired through indications and other using active polling. I have tried to avoid using deprecated system calls, but the modems I have tested with did not properly support verifying (unlocking) PIN through the UIM-service. Therefore, DMS is used.

This application is not meant to support all QMI devices, for developing something like that you should look into libqmi. Instead, it is meant to serve as an introduction to QMI. The core of the application is an event loop and each QMI service has a state machine. When certain criteria is met (modem has service and pin is unlocked), a connection attempt is made. A simple timeout ensures that connections are retried in case they fail (assuming conditions are still met).

Once a connection is established, QMI's AUTOCONNECT feature is used to ensure automatic re-establishment of connections. However, AUTOCONNECT has some weird behavior I don't quite understand. It seems to fail if the modem loses packet service. However, without disabling autoconnect, a connect (START_NETWORK_INTERFACE) call will still return NoEffect. Anyhow, the application disables autoconnect and falls back to "normal" connection establishment if packet service is lost.

The application has been tested with and works fine with ZTE MF821D, Alcatel OneTouch and Sierra Wireless MC7750. It has only been developed for UMTS (WCDMA) and LTE networks.

Command line arguments

qmid supports the following command line arguments

  • --device / -d : Path to QMI device (typically /dev/cdc-wdmX)
  • --apn / -a : APN to connect to
  • --pin / -p : PIN code (optional)
  • --local / -l : Lock to UMTS (3G).
  • -v : Verbosity level (three levels)

qmi-dialer's People

Contributors

kristrev avatar vstarodubtsev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.