aboutsummaryrefslogtreecommitdiff
path: root/plugins
AgeCommit message (Collapse)Author
2013-01-16huawei: use NDISDUP only if net port from cdc_ncm or cdc_etherAleksander Morgado
2013-01-16huawei: refactor the connection and disconnection sequences in the bearerAleksander Morgado
We will now use a step-based state machine to handle the connection and disconnection sequences. All the previous behaviour is kept, except for these new things: * Instead of just subclassing the 'dialling' step in the 3GPP connection sequence, completely subclass the whole 3GPP connection sequence. We do this because we don't need to preconfigure PDP contexts with AT+CGDCONT before issuing ^NDISDUP. * Don't allow IP types other than IPv4. These modems work only with IPv4 bearers. * Remove cancellation signal handler; not needed as we can check the status of the cancellation in every 1s timeout. * Removed the event source id handling for timeouts; timeouts are never cancelled here.
2013-01-16huawei: explicitly check for the ^NDISDUP command supportAleksander Morgado
Don't assume that all modems exporting a 'net' port will support ^NDISDUP.
2013-01-16huawei: handle modems exposing 'net' ports with AT^NDISDUPFranko Fang
Modems with ECM (e.g. usb0) ports should use AT^NDISDUP in the control port to request the connection and afterwards just fire up the DHCP client in the net port. This patch is originally developed by: Franko Fang <fangxiaozhi@huawei.com> And afterwareds reviewed and updated by: Aleksander Morgado <aleksander@gnu.org>
2013-01-14broadband-modem-sierra: implement access technology reporting for CDMA devicesDan Williams
Use AT!STATUS to grab current access technology.
2013-01-14broadband-modem-sierra: make CDMA AT!STATUS parsing code genericDan Williams
We'll use it for access technology reporting too.
2013-01-14broadband-modem-sierra: don't check +CAD and +CSS for CDMA devicesDan Williams
We have !STATUS for that, which is much more detailed. Use it.
2013-01-14broadband-modem-sierra: load own numbers via ~NAMVAL?0 for CDMADan Williams
Sierra CDMA devices don't always have QCDM ports, or if they do, they aren't always usable. Try Sierra-proprietary commands for loading the modem's MDN and fall back to QCDM if that fails.
2013-01-14broadband-modem-novatel: fix signal strength processing for older devicesDan Williams
mm_get_int_from_str() does not allow anything in the string after the number, eg "-91 asdfasdf" returns an error. So we have to chop off anything after the number we're interested in.
2013-01-14hso: remove duplicated codeAleksander Morgado
2013-01-11huawei: check with next port if the first one is not ATAleksander Morgado
2013-01-11sierra: load power state with !pcstate? in cdma-only modemsAleksander Morgado
2013-01-11core,plugins: remove initial power down sequenceAleksander Morgado
We no longer power down the modem during initialization, so remove that implementation.
2013-01-11mbm: force initial power-up during first enablingAleksander Morgado
When both load_power_state() and modem_power_down() are not implemented, the logic will launch the power-up command during (only the first) enabling of the modem. In this kind of modems, CFUN is directly related to allowed/preferred modes, so during the initial power-up we'll just assume we want ANY mode.
2013-01-11iridium: ignore initial power state loadingAleksander Morgado
No need to initially power-up the modem.
2013-01-11motorola: ignore initial power state loadingAleksander Morgado
No need to initially power-up the modem.
2013-01-11nokia: ignore initial power state loadingAleksander Morgado
No need to initially power-up the modem.
2013-01-11sierra: in 3GPP, no need to check if already powered up before powering upAleksander Morgado
This logic is now implemented by the parent broadband modem object. Also, implement a custom initial power state loading, so that CDMA-only modems get marked as 'offline', in order to launch !pcstate=1 to power them up during the first enabling. The custom initial power state loading will run the parent's implementation in non-CDMA-only modems.
2013-01-11wavecom: no need to check if already powered up before powering upAleksander Morgado
This logic is now implemented by the parent broadband modem object.
2013-01-04iface-modem, novatel-lte: disable network scan in LTE modeBen Chan
2012-12-28sierra: implement modem resetAleksander Morgado
2012-12-28sierra: wait up to 10s for the power up command replyAleksander Morgado
Specially the first time that CFUN=1,0 is issued after the initial power up, we really need to wait more than 3s for the AT command reply. Otherwise, the modem won't like it and it will reset itself :-/
2012-12-28sierra: ignore all +PACSP messagesAleksander Morgado
Not only +PACSP0, but also +PACSP1.
2012-12-28sierra: fix 3GPP dialling sequenceAleksander Morgado
There was a missing step++ when falling down to the next step in the switch(), which was preventing a proper connection.
2012-12-28sierra: pass data port to parent's 3GPP dialling sequenceAleksander Morgado
2012-12-27plugins: fix generic GObject related macrosAleksander Morgado
2012-12-27zte: ignore net ports in non-Icera based modemsAleksander Morgado
Plain non-Icera ZTE modems will use ATD calls and PPP to establish the connection, so ignore 'net' ports that may be found in the way (e.g. when the modem is a QMI modem and we're not using QMI support).
2012-12-24hso: new helper code to debug GPS related issuesAleksander Morgado
Disabled in normal compilation, can be enabled to debug issues.
2012-12-17sierra: fix APP1 PPP functionalityDan Williams
Unfortunately, Sierra secondary APP ports reply to +GCAP with only "OK", and not their APP port number or model number. So instead of using +GCAP, we have to use ATI to get secondary port information. This allows us to detect which port is the APP1 port that we can potentially use for PPP, leaving the primary port available for control and status. Also, some modems have up to 3 or 4 APP secondary ports, which we need to ensure aren't used as primary. The previous check for +GCAP handled that, but let's make it more explicit. AT+GCAP reply: OK ATI reply: Sierra Wireless, Inc. C885 APP1 OK See also: 3f3987e09ee762e48c1d53cb42a1288ce9f332cb (MM_06)
2012-12-12icera,hso: don't wait to get connected if the primary port is removedAleksander Morgado
If the primary port is gone (e.g. when going to sleep) and we are just in the middle of a connection attempt, we won't be able to receive any unsolicited message regarding the status of the attempt. So, if we detect that the port is forced to get closed, we'll just treat it as a connection failure. http://code.google.com/p/chromium-os/issues/detail?id=35391
2012-12-11sierra: implement the Time interface for 3GPP and CDMA devicesDan Williams
2012-12-10sierra: restore longer CFUN=1 timeout for older devicesDan Williams
Turns out older devices (like the C885/AT&T Mercury) crash often when we don't wait for them to settle from CFUN=1. 5 seconds is too short, but the crashes go away when we wait for 10 seconds. Newer modems like the USB306 don't have this problem, so we just check to see if the modem is a DirectIP device (using sierra_net) and only use the shorter timeout for those newer devices. This is a separate problem from some older modems returning ERROR to valid commands that are sent too soon after CFUN=1, which was observed on really old devices like the PCMCIA 860.
2012-12-05icera: implement Time interface support checkDan Williams
2012-12-05huawei: implement Time interface for CDMA modemsDan Williams
2012-12-05icera: report 4-digit year as required by ISO-8601Dan Williams
Assume 2000 + year.
2012-12-05huawei: handle CDMA allowed modesDan Williams
2012-12-05huawei: fix crash disabling CDMA unsolicited response handlersDan Williams
Parent MMBroadbandModem may not implement these functions so we shouldn't call them unless it does.
2012-12-05huawei: implement Huawei-specific CDMA signal quality checksDan Williams
Many Huawei CDMA modems implement vendor commands for 1x and EVDO signal quality, so use them since they are more accurate than the generic signal checking. (port of a similar patch for MM_06 by heiher <admin@heiher.info>)
2012-12-05huawei: consolidate MODE parsingDan Williams
Both CDMA and 3GPP modems emit this, but using slightly different formats.
2012-12-05huawei: consolidate SYSINFO parsingDan Williams
Both CDMA and 3GPP modems use SYSINFO, so consolidate the parsing of its response.
2012-11-29sierra: USB 306 modems support PPP on the APPx portsDan Williams
2012-11-27huawei: don't assume g_regex_match_full() sets error when not matchingAleksander Morgado
2012-11-27broadband-modem-huawei: don't call non-existent MMBroadbandModem CDMA functionsDan Williams
2012-11-27hso: DIAG ports aren't always DIAGDan Williams
The 'hso' driver tags Icera-based modems' proprietary protocol port as a DIAG port, but since they aren't Qualcomm-based, it's not a DIAG port. Just turn off AT probing and let QCDM probing fail the port instead of assuming it's a DIAG port.
2012-11-27icera,hso: don't disconnect() cancellable in the cancellation callbackAleksander Morgado
The logic gets completely stuck when this happens: Stack trace below: #0 0x77661424 in __kernel_vsyscall () #1 0x77337c3c in pthread_cond_wait () #2 0x773cebaa in g_cond_wait () from /usr/lib/libglib-2.0.so.0 #3 0x774c03cc in g_cancellable_disconnect () from /usr/lib/libgio-2.0.so.0 #4 0x76955d36 in connect_cancelled_cb (cancellable=0x78e055a0, self=0x78e0b590) #5 0x77460982 in g_cclosure_marshal_VOID__VOIDv () from /usr/lib/libgobject-2.0.so.0 #6 0x7745ed8a in ?? () from /usr/lib/libgobject-2.0.so.0 #7 0x77478435 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 #8 0x77478eb3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0 #9 0x774c01eb in g_cancellable_cancel () from /usr/lib/libgio-2.0.so.0 #10 0x776a0eab in mm_bearer_disconnect (self=0x78e0b590, callback=0x776c5980 <disconnect_ready>, #11 0x776c57de in disconnect_next_bearer (ctx=0x78e12870) at mm-iface-modem-simple.c:898 #12 0x776c58d2 in disconnect_auth_ready (self=0x78df3048, res=0x78e06210, ctx=0x78e12870) #13 0x774fed25 in g_simple_async_result_complete () from /usr/lib/libgio-2.0.so.0 #14 0x776a8c4e in authorize_ready (authp=0x78db68d0, res=0x76801638, simple=0x78e06210) #15 0x774fed25 in g_simple_async_result_complete () from /usr/lib/libgio-2.0.so.0 #16 0x774fee3e in ?? () from /usr/lib/libgio-2.0.so.0 #17 0x7738a7a2 in ?? () from /usr/lib/libglib-2.0.so.0 #18 0x7738ce83 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #19 0x7738d248 in ?? () from /usr/lib/libglib-2.0.so.0 #20 0x7738d6eb in g_main_loop_run () from /usr/lib/libglib-2.0.so.0 #21 0x77696a7d in main (argc=2, argv=0x7fbb1f04) at main.c:158 http://code.google.com/p/chromium-os/issues/detail?id=36448
2012-11-12huawei: better detection of data port on some modemsAleksander Morgado
Some devices (e173) appear to lie about NDIS support; GETPORTMODE reports NDIS is enabled, but that port is actually the MDM port and responds to AT commands. So, if we get a port reported as NDIS and none reported as MDM, use the one reported as NDIS for PPP. https://bugs.launchpad.net/ubuntu/+source/modemmanager/+bug/1057186
2012-11-09option,hso: early check of port type hints to avoid probingsAleksander Morgado
Instead of getting the port type hints while grabbing each probed port, we now run a custom init operation in the probing which already gives us the port type, and therefore allows us to completely skip port probings. Also now added hints for 'Diag' (QCDM) ports and AT/'Modem' ports (I guess it's the one for PPP if we don't have a net port, which is unlikely anyway in HSO). This makes the probing of an Option/HSO modem almost instant.
2012-11-05sierra: fix CFUN power up delay handlingDan Williams
All Sierra devices appear to require short delay after powering up, otherwise subsequent commands may return errors. Older devices need longer so ensure new devices are penalized just for being new. This is the port to git master of the following commit, for which we don't need to do #2: commit 814febe1fd9baacdb33c79f11c140187df36c4f1 Author: Dan Williams <dcbw@redhat.com> Date: Tue Oct 30 16:16:25 2012 -0500 sierra: fix CFUN power up delay handling 1) all Sierra devices appear to require short delay after powering up, otherwise subsequent commands may return errors. Older devices need longer so ensure new devices are penalized just for being new. 2) When the modem is already in full functionality status and no power up command was sent, there's no need to delay, which was happening regardless of what state the modem was already in. Detect whether the power up was actually executed (response and error will be NULL) and only delay if it was executed.
2012-11-05novatel-lte: use $NWMDN to read own number when +CNUM failsBen Chan
+CNUM may return ERROR when the modem fails to read the own numbers from the SIM card or when the SIM card hasn't been activated. Use $NWMDN to read the MDN as a fallback, which distinguishes these two cases.
2012-11-02core,plugins: don't assume 'CS' supported when '2G' supportedAleksander Morgado
We will not report 'CS' as a supported mode every time '2G' is supported. This actually was forcing all plugins to handle a 'CS' fallback when they didn't have CS-specific mode setup. So, to simplify things, we will only report 'CS' as supported for those plugins which actually allow to select 'CS' mode (e.g. the 'wavecom' plugin).