163 lines
7.0 KiB
Plaintext
163 lines
7.0 KiB
Plaintext
|
|
The 'ublox' plugin is originally targeted for the u-blox TOBY-L2 series,
|
|
although it may be used with other kind of devices likely without many issues.
|
|
|
|
=====================================
|
|
USB profiles and networking modes
|
|
=====================================
|
|
|
|
The TOBY-L2 devices may work in multiple different USB profiles:
|
|
|
|
* AT+UUSBCONF=0: fairly back-compatible profile, where only cdc-acm TTYs are
|
|
exposed. ModemManager will default to PPP for the connection setup when in
|
|
this profile.
|
|
|
|
* AT+UUSBCONF=2: ECM profile, where multiple cdc-acm TTYs are exposed along
|
|
with a ECM network interface.
|
|
|
|
* AT+UUSBCONF=3: RNDIS profile, where one cdc-acm TTY and a RNDIS network
|
|
interface are exposed. This is the default factory-programmed value.
|
|
|
|
When a profile with a network interface (ECM or RNDIS) is in use, the device may
|
|
work in multiple networking modes:
|
|
|
|
* AT+UBMCONF=1: Router mode, with a built-in DHCP server running behind the
|
|
network interface. The network interface will be assigned an IP address from
|
|
a subnet managed by the device itself. This is the default factory-programmed
|
|
value. E.g.:
|
|
|
|
$ ip addr
|
|
9: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
|
|
link/ether 02:07:01:15:00:0b brd ff:ff:ff:ff:ff:ff
|
|
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic usb0
|
|
valid_lft 43009sec preferred_lft 43009sec
|
|
|
|
$ ip route
|
|
default via 192.168.1.1 dev usb0 proto static metric 700
|
|
192.168.1.0/24 dev usb0 proto kernel scope link src 192.168.1.100 metric 700
|
|
|
|
* AT+UBMCONF=2: Bridge mode, where static IP addressing and routing must be
|
|
performed once connected. The network interface will be assigned the same IP
|
|
address provided by the network operator. The plugin uses 'AT+UIPADDR=N' the
|
|
default gateway IP settings and 'AT++CGCONTRDP=N' to retrieve the interface
|
|
IP settings and DNS setup.
|
|
|
|
$ ip addr
|
|
11: usb0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
|
|
link/ether 02:07:01:15:00:0b brd ff:ff:ff:ff:ff:ff
|
|
inet 47.59.109.26/32 brd 47.59.109.26 scope global usb0
|
|
valid_lft forever preferred_lft forever
|
|
|
|
$ ip route
|
|
default via 47.59.109.229 dev usb0 proto static metric 700
|
|
47.59.109.26 dev usb0 proto kernel scope link src 47.59.109.26 metric 700
|
|
47.59.109.229 dev usb0 proto static scope link metric 700
|
|
|
|
The 'ublox' plugin in ModemManager works with any of the previous combinations
|
|
seamlessly. It is assumed that the device doesn't change either USB profile or
|
|
networking mode once it has been detected and processed by ModemManager.
|
|
|
|
NOTE: If manually selecting different USB profiles or networking modes, remember
|
|
to reset the module before assuming the new settings have been applied. E.g.,
|
|
using plain mmcli commands:
|
|
$ sudo mmcli -m 0 --command="AT+UUSBCONF=3"
|
|
$ sudo mmcli -m 0 --reset
|
|
|
|
=================================
|
|
Connection setup
|
|
=================================
|
|
|
|
The plugin allows to connect to specific APNs in the usual way (i.e. by creating
|
|
a PDP context for the specific APN), and then activating the PDP context with
|
|
'AT+CGACT=[CID]'.
|
|
|
|
Authentication settings of the APN (user, password, authentication type) are
|
|
also supported via the 'AT+UAUTHREQ' command.
|
|
|
|
The plugin doesn't currently support reporting as auto-connected the default LTE
|
|
bearer.
|
|
|
|
========================================
|
|
Connection monitoring and statistics
|
|
========================================
|
|
|
|
The status of the connection of the specific PDP context is monitored
|
|
periodically using 'AT+CGACT?', in order to detect network-originated
|
|
disconnections. This implementation is given in the Generic broadband bearer
|
|
implementation, and is not ublox-specific.
|
|
|
|
If the device supports it, connection TX/RX statistics will also be periodically
|
|
loaded using the AT+UGCNTRD command. Note, though, that the TOBY-L2 doesn't seem
|
|
to support this information via control commands.
|
|
|
|
===========================================
|
|
Supported and current mode combinations
|
|
===========================================
|
|
|
|
The full list of supported mode combinations is loaded using 'AT+URAT=?', and
|
|
then filtered by device product name to remove technologies not supported in
|
|
several devices. E.g. the standard TOBY-L2 list of supported mode combinations
|
|
will include all 2G, 3G and 4G, but if the device is a L201, 2G support will be
|
|
removed from the list.
|
|
|
|
The current mode combination in use is loaded using 'AT+URAT?', and the setting
|
|
may be changed using the 'AT+URAT=X' request.
|
|
|
|
In order to be able to update this setting, the device will be put in low-power
|
|
mode ('AT+CFUN=4'), then the setting update will be run, and finally the device
|
|
will recover the previous functionality mode it was in (e.g. 'AT+CFUN=1' if it
|
|
was in full functionality mode).
|
|
|
|
===============================
|
|
Supported and current bands
|
|
===============================
|
|
|
|
The full list of supported bands is hardcoded based on the supported modes of the
|
|
device. There is no runtime loading of which are the supported bands because the
|
|
'AT+UBANDSEL=?' command gives different results depending on the current access
|
|
technology (i.e. there is no single full list of supported bands reported).
|
|
|
|
The current list of bands is loaded via the 'AT+UBANDSEL?' command, and the
|
|
setting may be changed using the 'AT+UBANDSEL=X' request.
|
|
|
|
In order to be able to update this setting, the device will be put in low-power
|
|
mode ('AT+CFUN=4'), then the setting update will be run, and finally the device
|
|
will recover the previous functionality mode it was in (e.g. 'AT+CFUN=1' if it
|
|
was in full functionality mode).
|
|
|
|
======================
|
|
Functionality mode
|
|
======================
|
|
|
|
The plugin implements a custom 'AT+CFUN?' response parser because it provides
|
|
multiple modes that may be treated as 'low-power' by ModemManager (e.g. mode
|
|
'0' is minimum functionality, mode '4' is airplane mode and mode '19' is
|
|
minimum functionality with SIM deactivated).
|
|
|
|
The plugin implements power-on ('AT+CFUN=1'), power-down ('AT+CFUN=4'), reset
|
|
('AT+CFUN=16') and power-off ('AT+CPWROFF'). As usual, a reset will trigger a
|
|
power cycle of the device, and the power-off will render the modem unusable
|
|
until it's power cycled externally.
|
|
|
|
====================================
|
|
Network registration and quality
|
|
====================================
|
|
|
|
The LTE specific 'AT+CEREG' registration checks will be enabled by default if
|
|
the module supports LTE. Additionally, a custom 'CREG/CGREG/CEREG' state number
|
|
parser is provided to support u-blox specific reported states (e.g. state '6'
|
|
to indicate 'sms only registration' on the '+CREG' indications for the CS
|
|
network when on LTE).
|
|
|
|
The plugin implements the extended Signal interface, providing RSSI, RSCP, Ec/Io
|
|
and RSRQ measurements obtained with the 'AT+CESQ' command.
|
|
|
|
==================
|
|
PIN management
|
|
==================
|
|
|
|
A custom method to load the PIN/PUK remaining attempts is implemented based on
|
|
the 'AT+UPINCNT' command.
|
|
|
|
Have fun!
|