VintageNetQMI

Hex versionAPI docsCircleCICoverage Status

This library provides a VintageNet technology for cellular modems that support the Qualcomm MSM Interface. This includes most USB cellular modems. See VintageNetMobile if you have a modem that only supports an AT command interface.

To use this library, first add it to your project’s dependency list:

def deps do
  [
    {:vintage_net_qmi, "~> 0.2.5"}
  ]
end

You will then need to configure VintageNet. The easiest way to configure a modem at runtime is by calling VintageNetQMI.quick_configure("the_apn"). For example:

iex> VintageNetQMI.quick_configure("the_apn")
:ok
# wait...
iex> VintageNet.info
Interface wwan0
  Type: VintageNetQMI
  Power: On (watchdog timeout in 51628 ms)
  Present: true
  State: :configured (0:41:09)
  Connection: :internet (0:40:28)
  Addresses: 100.79.205.206/30, fe80::723c:bdc9:10e4:d092/64
  Configuration:
    %{
      type: VintageNetQMI,
      vintage_net_qmi: %{service_providers: [%{apn: "the_apn"}]}
    }

You can’t always call quick_configure/1 convenience function so here’s the regular configuration. If you are moving code from vintage_net_mobile, you’ll notice that this format is very similar except that Mobile is now QMI.

VintageNet.configure("wwan0", %{
      type: VintageNetQMI,
      vintage_net_qmi: %{
        service_providers: [%{apn: "the_apn"}]
      }
    })

The :service_providers key should be set to information provided by each of your service providers. It is common that this is a list of one item. Currently only one service provider is supported, so replace "fill_in" with the APN that they gave you.

VintageNet Properties

In addition to the common vintage_net properties for all interface types, this technology the following:

Property Values Description
signal_asu0-31,99 Reported Arbitrary Strength Unit (ASU)
signal_4bars0-4 The signal level in “bars”
signal_dbm-144 - -44 The signal level in dBm. Interpretation depends on the connection technology.
mcc0-999 Mobile Country Code for the network
mnc0-999 Mobile Network Code for the network
iccid string The Integrated Circuit Card Identifier (ICCID)

The following properties are TBD:

Property Values Description
network string The network operator’s name
lac0-65533 The Location Area Code (lac) for the current cell
cid0-268435455 The Cell ID (cid) for the current cell
access_technology string The technology currently in use to connect to the network
band string The frequency band in use
channel integer An integer that indicates the channel that’s in use
imsi string The International Mobile Subscriber Identity (IMSI)

System requirements

These requirements are believed to be the minimum needed to be added to the official Nerves systems.

Linux kernel

Enable QMI and drivers for your modem:

CONFIG_USB_NET_CDC_NCM=m
CONFIG_USB_NET_HUAWEI_CDC_NCM=m
CONFIG_USB_NET_QMI_WWAN=m
CONFIG_USB_SERIAL_OPTION=m