Commit Graph

3500 Commits

Author SHA1 Message Date
Aleksander Morgado
2bd4c63716 hso: remove duplicated code 2013-01-14 20:09:47 +01:00
Aleksander Morgado
9a07688524 huawei: check with next port if the first one is not AT 2013-01-11 16:13:55 +01:00
Aleksander Morgado
8403a48b31 plugin-manager: new debug logs to help track probing issues 2013-01-11 12:20:57 +01:00
Aleksander Morgado
0f9873c23a sierra: load power state with !pcstate? in cdma-only modems 2013-01-11 11:21:08 +01:00
Aleksander Morgado
695680b2ff cli: show current power state in the modem status information 2013-01-11 10:05:46 +01:00
Aleksander Morgado
669f0928f3 cli: new '--set-power-state-on' and '--set-power-state-low' commands 2013-01-11 10:05:46 +01:00
Aleksander Morgado
091c47d695 libmm-glib,modem: new methods to handle the power state 2013-01-11 10:05:46 +01:00
Aleksander Morgado
eec5d00a97 core,plugins: remove initial power down sequence
We no longer power down the modem during initialization, so remove that
implementation.
2013-01-11 10:05:46 +01:00
Aleksander Morgado
7c87555bf8 mbm: force initial power-up during first enabling
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-11 10:05:46 +01:00
Aleksander Morgado
5d02361501 iridium: ignore initial power state loading
No need to initially power-up the modem.
2013-01-11 10:05:45 +01:00
Aleksander Morgado
923d4dd8bd motorola: ignore initial power state loading
No need to initially power-up the modem.
2013-01-11 10:05:45 +01:00
Aleksander Morgado
f79f3b8770 nokia: ignore initial power state loading
No need to initially power-up the modem.
2013-01-11 10:05:45 +01:00
Aleksander Morgado
9f5cfefb00 sierra: in 3GPP, no need to check if already powered up before powering up
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-11 10:05:45 +01:00
Aleksander Morgado
e3db373be4 wavecom: no need to check if already powered up before powering up
This logic is now implemented by the parent broadband modem object.
2013-01-11 10:05:45 +01:00
Aleksander Morgado
952d96234b broadband-modem: implement custom power state loading 2013-01-11 10:05:45 +01:00
Aleksander Morgado
696b879b6d broadband-modem-qmi: implement custom power state loading 2013-01-11 10:05:45 +01:00
Aleksander Morgado
e55b543d38 iface-modem: implement power mode loading and setting 2013-01-11 10:05:45 +01:00
Aleksander Morgado
49aecb57dc api,modem: new 'SetPowerState()' method and 'PowerState' property
Going into/outof low-power state is now a user-requested action.
2013-01-11 10:05:45 +01:00
Dan Williams
f50aa47fb2 sim-qmi: fix trivial GError literal issues/format string warnings 2013-01-10 10:09:35 -06:00
Aleksander Morgado
763e207e9c blacklist: ignore all devices from VID 0x0617
No modems from the Swiss Federal Institute of Technology.

https://bugzilla.gnome.org/show_bug.cgi?id=691384
2013-01-09 10:05:15 +01:00
Aleksander Morgado
dc7aa25f0a sim-qmi: translate common SIM-related QMI errors into ME errors
Upper layers expect Mobile Equipment errors, so try to translate known QMI
protocol errors.
2013-01-08 18:40:48 +01:00
Aleksander Morgado
1372933345 iface-modem,sim: improve lock info update logic
The logic to handle the lock information (current lock and unlock retry count)
wasn't handling all possible cases properly, e.g.:

 * When PIN is incorrectly entered too many times, a SIM-PUK error may happen.
   In this case we need to directly assume SIM-PUK is the current lock (some
   modems, like Option HSO ones, would incorrectly reply SIM-PIN if CPIN? asked
   just after the SIM-PUK error).

 * After every operation acting in SIM locks, we need to update the current
   unlock retry count.

This change tries to cover those cases, by:

 * The logic to check current lock is extended to also load the unlock retry
   count when needed.

 * Whenever a SIM-PUK error happens in the SIM operations, we directly assume
   that SIM-PUK is required, without re-asking CPIN?.

 * The overall logic of lock checking is now handled by a state machine, which
   is much easier to understand.
2013-01-08 18:40:47 +01:00
Aleksander Morgado
959bb9d2ff broadband-modem: launch the Firmware interface even on fatal errors
Even when there is a fatal error during initialization (e.g. missing PIN in a
3GPP modem), we should allow operations on the Firmware interface.
2013-01-07 22:25:46 +01:00
Ben Chan
e939221975 iface-modem, novatel-lte: disable network scan in LTE mode 2013-01-04 12:10:51 +01:00
Ben Chan
bc399d9cf8 iface-modem-3gpp,iface-modem-cdma: check for deallocated RegistrationCheckContext
This patch fixes a crash in periodic_registration_checks_ready() due to
access of an already deallocated RegistrationCheckContext.

Thread 0 *CRASHED* ( SIGSEGV @ 0x00000000 )

0x7fc344d355cd   [ModemManager]             - mm-iface-modem-cdma.c:1112   periodic_registration_checks_ready
0x7fc3449ea266   [libgio-2.0.so.0.3200.4]   - gsimpleasyncresult.c:767     g_simple_async_result_complete
0x7fc3449ea368   [libgio-2.0.so.0.3200.4]   - gsimpleasyncresult.c:779     complete_in_idle_cb
0x7fc344851dc4   [libglib-2.0.so.0.3200.4]  - gmain.c:2539                 g_main_context_dispatch
0x7fc344852147   [libglib-2.0.so.0.3200.4]  - gmain.c:3146                 g_main_context_iterate
0x7fc3448525a1   [libglib-2.0.so.0.3200.4]  - gmain.c:3340                 g_main_loop_run
0x7fc344d0f154   [ModemManager]             - main.c:158                   main
0x7fc34426a474   [libc-2.15.so]             - libc-start.c:234             __libc_start_main
0x7fc344d0eb68   [ModemManager]             + 0x0001bb68
2013-01-03 22:28:34 +01:00
Aleksander Morgado
d40ef83898 sierra: implement modem reset 2012-12-28 11:47:32 +01:00
Aleksander Morgado
eae28e9be4 sierra: wait up to 10s for the power up command reply
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-28 10:34:43 +01:00
Aleksander Morgado
35775e3634 sierra: ignore all +PACSP messages
Not only +PACSP0, but also +PACSP1.
2012-12-28 08:49:35 +01:00
Aleksander Morgado
b5257491b0 sierra: fix 3GPP dialling sequence
There was a missing step++ when falling down to the next step in the switch(),
which was preventing a proper connection.
2012-12-28 08:13:40 +01:00
Aleksander Morgado
95598e2e37 sierra: pass data port to parent's 3GPP dialling sequence 2012-12-28 08:01:05 +01:00
Aleksander Morgado
1b0ab2ea60 broadband-bearer: dial port may be different to the primary port 2012-12-28 08:00:04 +01:00
Aleksander Morgado
731812fe34 plugin: avoid QMI-managed net ports when compiling without QMI support 2012-12-27 13:51:28 +01:00
Aleksander Morgado
80b68ac0ae plugin-manager: initially never start with the Generic plugin suggested
The generic plugin should be a fallback, so when starting to probe the port,
never start with the Generic plugin first.
2012-12-27 12:44:50 +01:00
Aleksander Morgado
ef31ff7535 broadband-bearer: PDP context deactivation may take longer
Update the default timeout from 3s to 10s.
2012-12-27 08:58:39 +01:00
Aleksander Morgado
c8fcf7a91d plugin: re-run subsystems filter before grabbing the ports
Every port probing will have the Generic plugin as fallback, and due to some
other issues in other plugins (see ee099fcd), we need to allow overwriting the
suggested plugin from the Generic to a more specific one.

One of the drawbacks of this is that we're actually allowing the Generic plugin
to probe and accept the port, which means that the generic plugin may accept a
specific port type (e.g. QMI) while the specific plugin wouldn't. So, we will
now also run the subsystems filter before grabbing the specific port, in order
to really filter out those cases. We still keep the subsystems filter in
pre-probing, so that we build a better initial plugin list to probe.
2012-12-27 08:53:45 +01:00
Aleksander Morgado
7da2a65b43 plugins: fix generic GObject related macros 2012-12-27 08:48:11 +01:00
Aleksander Morgado
f923e95861 base-modem: don't set the modem valid if we didn't export the Modem interface
If an error occurs early during the initialization (e.g. during port setup), we
would be aborting without even having exported the modem interface. So detect
that case and skip setting the modem as valid.
2012-12-27 08:48:11 +01:00
Aleksander Morgado
4ffa871228 zte: ignore net ports in non-Icera based modems
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-27 08:48:10 +01:00
Aleksander Morgado
ded8bfe965 hso: new helper code to debug GPS related issues
Disabled in normal compilation, can be enabled to debug issues.
2012-12-24 19:06:26 +01:00
Aleksander Morgado
4d4ea9c369 iface-modem-location: fix periodic reporting of the GPS location info
The Location property was never being updated properly.
2012-12-24 18:57:39 +01:00
Aleksander Morgado
850a7737b8 broadband-modem: fix reloading of operator code when enabling 3GPP location
When the 3GPP location is enabled, we need to reload the operator code
information, but only if the modem is registered in a 3GPP network.

Now, instead of looking at the global modem state value, look at the specific
3GPP registration state. This will avoid issues like:
 * updating 3GPP operator info and the modem registered in a CDMA network.
 * not updating the 3GPP operator info when the modem is registered in a 3GPP
   network but not yet fully enabled (i.e. 'enabling').
2012-12-24 15:54:37 +01:00
Anton Blanchard
0380045aac ModemManager: Blacklist Dangerous Prototypes Bus Pirate v4
The Bus Pirate v4 presents itself as a CDC ACM device which
ModemManager attempts to configure. This results in a range
of confusing issues because it injects a bunch of AT commands
over whatever is going on at the time.

Firmware updates were failing at random points and avrdude
failed to work at all. Blacklisting it fixed my issues.
2012-12-23 16:55:27 +01:00
Dan Williams
c08b03f6fd sierra: fix APP1 PPP functionality
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-17 14:23:00 -06:00
Aleksander Morgado
dc9bbefbc0 icera,hso: don't wait to get connected if the primary port is removed
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-12 12:56:47 +01:00
Aleksander Morgado
f20922ba9d bearer: check if signal handler is connected before trying to disconnect it
Avoids warnings like:
GLib-GObject-WARNING **: gsignal.c:2576: instance `0x78624028' has no handler with id `148'
2012-12-12 12:55:33 +01:00
Aleksander Morgado
c43c8958d0 sms-part: plug memleak 2012-12-12 12:21:17 +01:00
Dan Williams
9d5e2c608d sierra: implement the Time interface for 3GPP and CDMA devices 2012-12-11 12:48:38 -06:00
Dan Williams
5427f0d356 sierra: restore longer CFUN=1 timeout for older devices
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-10 16:33:05 -06:00
Dan Williams
26c19ff474 release: bump version to 0.7.990 2012-12-07 15:43:26 -06:00
Dan Williams
46d2d40e9d release: update NEWS 2012-12-07 15:38:57 -06:00