1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
--------------------------------------------------------------------------------
* Contacts
ModemManager should implement the Contacts interface if modems allow to query
and manipulate the contacts information stored in SIM or device.
--------------------------------------------------------------------------------
* Probing time mitigation
Probing time may end up being quite long if we're checking support of a modem
which exposes multiple ports. It is specially bad if the modem exports a port
which is neither AT nor QCDM, as we use all our probing attempts before we can
export the modem in DBus (we do wait to get all ports probed before running the
initialization sequence, as we want to use the primary port for that always).
Therefore, looking for ways to mitigate probing time in the specific bad cases
is a good way of minimizing this problem. Some ideas:
** If one AT probing suceeds, don't allow timeouts in remaining ports when
probing for AT.
--------------------------------------------------------------------------------
* AT+CMUX & Serial multiplexing
Some modes allow to use virtual channels set up over one single serial
interface, as defined at 3G TS 27.010. This allows devices with one single port
to get a virtual secondary port for AT commands while in connected mode, for
example to update the signal quality value or check registration status.
--------------------------------------------------------------------------------
* Additional minor enhancements, fixes and general brainstorm
** Per-device log function? Something like mm_modem_log() and
mm_modem_port_log(), so that we include automatically the modem number
(and port name) in each log line.
** Do we really need function name, filename and line in the debug log?
** In the default MMBroadbandModem, check how we can know if we're sitting in
a rev0, revA or revB CDMA network. We need to expose the exact access
technology in the interface.
** Fix object names to show proper inheritance? For example:
- MMPort, MMPortSerial, MMPortSerialAt, MMPortSerialQcdm
- MMModem (instead of MMBaseModem), MMModemBroadband, MMModemPots
- MMBearer, MMBearerBroadband, MMBearerPots
** Test cases for CIEV responses.
** When a 3GPP modem is disabled, we run AT+CREG=0. That will just disable the
automatic registration checks and unsolicited messages, the modem will
still be registered in the network. AT+COPS=2 is the one doing manual
unregistration from the network, and we should probably include such step
in the 3GPP disabling sequence.
** serial-parsers: convert the v1 parser to a GObject.
** MMBroadbandBearer: include additional step for authentication, with
retries.
** MMBroadbandBearer: include additional step for waiting to get connected via
unsolicited messages.
** Huawei plugin: Seems to me that whenever we update the allowed modes OR the
bands, we're actually also changing the other one. This is because we're
using hardcoded values in ^SYSCFG write operations; we should instead read
current mode or band when updating the other.
** Huawei plugin: The K4505, at least, doesn't like the default command to
setup messaging related unsolicited messages:
> AT+CNMI=2,1,2,1,0
+CMS ERROR: 303
** ZTE plugin: The MF637, at least, doesn't like the default command to setup
messaging related unsolicited messages:
> AT+CNMI=2,1,2,1,0
+CMS ERROR: 303
** Pantech plugin: The UMW190 needs some time to settle down after sending the
PIN, or it will end up stuck if we ask too many PIN-related stuff one after
the other.
** HSO plugin: shouldn't we have the same logic for unsolicited messages
handling in both connect and disconnect contexts? See Icera plugin for ref.
** Icera plugin: retry authentication step in 3gpp dialling to 3 times with 1s
delay.
** QMI: Gobi 2k devices don't like the SYNC command, which is supposed to
release all previously allocated clients. It gets worse, as if clients are
not cleanly released by ModemManager (e.g. a segfault), the device reaches
a point where it doesn't allow allocating more:
couldn't create client for the 'nas' service:
QMI protocol error (5): 'client-ids-exhausted'
This may force us to have something like a state file in /tmp with the IDs
currently allocated, so that ModemManager can re-use them if needed.
** QMI: in NAS >= 1.8 we don't have the operator name given in the
registration status queries, we'll need to get it with "NAS Get PLMN Name".
** QMI: mark the modem as invalid if we lose the QMI and/or WWAN ports. For
example, we should handle 'sudo rmmod qmi_wwan && sudo modprobe qmi_wwan'
|