VintageNetQMI
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.7"}
]
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_asu | 0-31,99 | Reported Arbitrary Strength Unit (ASU) |
signal_4bars | 0-4 | The signal level in "bars" |
signal_dbm | -144 - -44 | The signal level in dBm. Interpretation depends on the connection technology. |
mcc | 0-999 | Mobile Country Code for the network |
mnc | 0-999 | Mobile Network Code for the network |
iccid | string | The Integrated Circuit Card Identifier (ICCID) |
esn | string | The Electronic Serial Number (ESN) |
imei | string | International Mobile Equipment Identity (IMEI) |
meid | string | The Mobile Equipment Identifier (MEID) |
imeisv_svn | string | IMEI software version number |
provider | string | The name of the service provider |
The following properties are TBD:
Property | Values | Description |
---|---|---|
network | string | The network operator's name |
lac | 0-65533 | The Location Area Code (lac) for the current cell |
cid | 0-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