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: 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: 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!