Commit Graph

3359 Commits

Author SHA1 Message Date
Guido Günther
3c13d9aec8 gsm: add preliminary USSD support (bgo #590798)
We currently convert to and from the modem's set charset and always pass
'15' as the data coding scheme. Passing the correct data coding scheme
as third argument to CUSD only upsets the network. This contradicts 3GPP
TS 23.038. Other tools like gsm-ussd handle it the same way.

Network responses that require further actions are not yet implemented.

(some fixes and cleanups by Dan Williams)
2010-11-05 14:50:50 -05:00
Dan Williams
2a98b2ae2d core: add bin -> hex string converter 2010-11-05 14:44:20 -05:00
Dan Williams
6921a9f71d core: unconditionally enable the Location Services API
This required dbus-glib 0.86 or later, which was released 2010-03-24.
2010-11-05 14:03:44 -05:00
Dan Williams
a2d54b1437 trivial: avoid build warning by using g_message() correctly 2010-11-03 10:03:51 -05:00
Dan Williams
d63dcd682d sierra: check for PS attach before dialing
Some devices (8775 specifically) get angry if you don't check for
a PS attach before dialing.  The next time they try to connect,
they'll continuously report "searching" as the registration status
and return CME ERROR 30 (No Network Service) for lots of requests.
So initiate a PS attach (which should return OK if the modem is
already attached) before dialing, and if that fails cancel the
dial attempt.

See http://mail.gnome.org/archives/networkmanager-list/2010-October/msg00072.html

"I talked about this problem with a contact at SierraWireless. He said that
a firmware upgrade will not help in this case. But what can help is checking
for PS attach and dial only if PS attach status is attached. Dialing without
PS attach can bring modem into unwanted condition that sometimes restart is
needed to recover."
2010-10-30 12:31:08 -05:00
Dan Williams
7f7f03a662 release: update NEWS with changed stuff since 0.4 2010-10-27 10:02:23 -05:00
Dan Williams
610a907d5c gsm: retry SIM ID if we didn't get it before card was enabled 2010-10-25 21:18:10 -05:00
Dan Williams
6f809b589b gsm: request ICCID after checking the PIN status
Checking PIN status makes sure the SIM is initialized, and
that has to happen before we try to read the SIM for the
ICCID.  So move PIN checking before getting the ICCID, and
retry the ICCID at least once for odd cards like Gobi 1K
that seems to need one more try right after it's done
booting up.
2010-10-25 21:02:43 -05:00
Dan Williams
f93e24dda3 sierra: fix ICCID requests
Depending on when the core requested the ICCID, the port may or may
not be open.  Stuff that needs an open serial port needs to make sure
that the port gets opened itself.
2010-10-25 21:00:26 -05:00
Dan Williams
1684d8b173 gsm: add SimIdentifier property
An obfuscated SimIdentifier that may be available before the PIN has
been entered, for use in auto-unlocking a device.  If this value is
present, it should be used in preference to DeviceIdentifier as it
is SIM-specific like the PIN code.
2010-10-25 17:41:08 -05:00
Dan Williams
46106660fe core: print out modem hardware VID/PID and subsystem 2010-10-22 11:34:55 -05:00
Dan Williams
0ec4dbcc1a trivial: fix formatting 2010-10-22 11:25:03 -05:00
Dan Williams
91a58bbe3d core: detect PCMCIA manfid and cardid
These aren't added to the udev device database by anything yet
(though they should be) so grab them manually.
2010-10-22 11:20:16 -05:00
Dan Williams
7c410a8d08 core: strip "0x" off udev ID_VENDOR_ID and ID_MODEL_ID strings 2010-10-22 11:14:34 -05:00
Dan Williams
7ae8ffe21b core: use hardware IDs as part of DeviceIdentifier
Pass the device's hardware IDs through modem creation and use them
when calculating the device's identifier.  Add a bunch of testcases
for real hardware to ensure we don't break the device ID in the
future unless we really want to.
2010-10-22 11:06:48 -05:00
Dan Williams
328d2369a9 core: add DeviceIdentifier property
This is computed before any PIN is entered, and thus before we can
usually get IMEI or MEID/ESN out of the device in many cases. It's
therefore not the same as EquipmentIdentifier.

This is intended to be used by UI programs for matching devices with
PIN numbers for automatic unlocking.  While the PIN number is actually
*SIM* specific, no modems allow access to the IMSI before the PIN is
entered, and thus we cannot actually match the PIN with the SIM.  The
device ID is the next best thing we can use and should allow auto
unlocking in most cases.
2010-10-21 16:57:37 -05:00
Torgny Johansson
9fa20cd018 mbm: add HP branded f3607gw and f3307 devices 2010-10-14 17:15:14 -05:00
Dan Williams
4cdaba3161 cdma: clear error when getting state if no AT port is available
We don't care about the error if we have a QCDM port.
2010-10-14 14:00:42 -05:00
Dan Williams
dd8a061d28 serial: make QCDM frame parsing more robust
Ensure that valid HDLC frames that are not valid QCDM frames
are correctly rejected, and that their data is correctly
discarded.

The core bug was that Sierra CnS frames have leading and trailing
HDLC frame terminator bytes (0x7E), and the code was incorrectly
treating the leading terminator as the end of a frame, not the
beginning.  Thus it would consider the outstanding serial request
finished without actually parsing the response packet.

Now, we make sure we don't tell the serial receive code that
we have a full QCDM frame until we actually do have one, which is
at least 3 bytes + 0x7E.
2010-10-14 10:22:59 -05:00
Dan Williams
8a4f621245 core: add more QCDM frame marker testcases 2010-10-14 10:22:41 -05:00
Dan Williams
e16a58e54b core: add basic QCDM serial port unit tests
Test that a Version Info request/response works as expected, and
add a testcase for a bug where specific Sierra CnS responses to
the Version Info request do not properly return an error when
attempting to parse the response as a QCDM packet.  Fix for the
second thing forthcoming.
2010-10-14 00:10:46 -05:00
Dan Williams
1dae103484 build: create convenience serial library
For better unit testing.
2010-10-14 00:10:18 -05:00
Dan Williams
9956b06a44 core: add helper to create QCDM serial ports from a file descriptor
Aids in unit testing
2010-10-14 00:09:22 -05:00
Dan Williams
ad4e2fc656 serial: allow creating serial ports with a given file descriptor
To enable better unit testing of MMSerialPort and subclasses
behavior.
2010-10-14 00:08:14 -05:00
Dan Williams
add7fa705c build: enable tests for 'make distcheck'
No idea why this wasn't done before...
2010-10-14 00:07:25 -05:00
Dan Williams
79ae78a740 qcdm: add testcase to ensure that parsing Sierra CnS fails
Because CnS uses HDLC framing, but doesn't use CRC16, and thus
the decapsulation should fail because the CRC check fails.
2010-10-14 00:00:44 -05:00
Dan Williams
a9152f21ff huawei: fix potential double-free on error (rh #632516) 2010-10-06 23:09:06 -05:00
Dan Williams
acc4541ab3 zte: add more port tags 2010-10-06 22:55:12 -05:00
Dan Williams
8935812da4 serial: kill serial port closing wait
This is the real fix for 81d0fd148f.

Some devices don't interact well with the option driver or the usb-serial
layer; they don't respond to the USB data requests and thus data never
gets written to that port.  When close(2) is called, that data is still
pending and so the tty layer waits 30 seconds before returning from
the close.  This is the 'closing_wait' value, which unfortunately is
not able to be modified by ModemManager because most serial drivers
for 3G devices don't implement the .ioctl handler or its TCIOSSERIAL
option to change closing_wait.

This goes along with a kernel patch to various drivers to enable
the TIOCSSERIAL ioctl to modify closing_wait which will be posted
soon.
2010-09-28 10:20:11 -05:00
Dan Williams
81d0fd148f core: better debugging of serial port open/close
Some devices don't interact well with the option drivr or the usb-serial
layer; they don't respond to the USB data requests and thus data never
gets written to that port.  When close(2) is called, that data is still
pending and so the tty layer waits 30 seconds before returning from
the close.  This is the 'closing_wait' value, which unfortunately is
not able to be modified by ModemManager because most serial drivers
for 3G devices don't implement the .ioctl handler or its TCIOSSERIAL
option to change closing_wait.

Print out open/close timestamps to help debug this issue and get a
list of modems that have this problem.
2010-09-27 16:04:11 -05:00
Dan Williams
3c8c3f7425 test: add CGREG repsonse test for X220D
To test spaces between some members of the response.
2010-09-27 14:48:46 -05:00
Dan Williams
618dc06310 qcdm: remove shared-library-specific bits that aren't applicable
Since at this time libqcdm is statically linked into ModemManager.
2010-09-22 16:07:58 -05:00
Dan Williams
79f05cbcec x22x: add simple plugin for Alcatel X220D
And possibly the X225 as well.  Can't tell much about the modem and
what commands it supports other than AT+SYSSEL for mode selection.
The driver software and connection manager for Windows/Mac OS X are
written by JRD Communication in China, which is a subsidiary of
TCT, which makes Alcatel-branded phones and data sticks.  But it
doesn't appear to be the same firmware as other Alcatel/T&A modems
like X060S and such which are supported by the Longcheer plugin.
2010-09-22 16:04:25 -05:00
Dan Williams
49097b6de5 core: prefer CDMA capabilities over GSM for dual-mode devices (bgo #621815)
For devices like the UMW190 that appear to be dual-mode without needing a
firmware reload (unlike Gobis, which are dual-mode but require a reboot with
different firwmare) prefer CDMA capabilities since that's where these devices
will most likely be used more often.  In the end we'll need to change MM to
advertise a "capabilities" attribute on the modem class and modify devices
such that they can implement both GSM and CDMA semantics at the same time.
2010-09-21 14:56:47 -05:00
Dan Williams
674a9412fe gsm: allow use of GSM 03.38 character set (bgo #627935)
It's only really used for phonebook and SMS PDU mode in the specs,
which we don't do yet, so if this is the only charset the device
supports we'll try to use it.
2010-09-20 15:40:20 -05:00
Dan Williams
85f827ddff trivial: remove unused code 2010-09-04 00:15:02 -05:00
Dan Williams
34709e0c7b trivial: whitespace fixup 2010-09-04 00:07:09 -05:00
Dan Williams
ee4166f66f gsm: add GSM 03.38 pack/unpack functions and testcases 2010-09-04 00:06:36 -05:00
Dan Williams
9e94dd5b61 gsm: add GSM 03.38 encoding/decoding functions and testcases 2010-09-02 19:29:05 -05:00
Dan Williams
85ce544675 cdma: consolidate some code by ignoring +CMEE result
Most modems don't support it and we're ignoring the error message
anyway, so don't bother with a callback for its result.
2010-09-01 17:31:49 -05:00
Dan Williams
67d936e46c polkit: fix for polkit >= 0.97 (bgo #628105) 2010-09-01 17:20:57 -05:00
Dan Williams
f3024b46b4 qcdm: add event reporting on/off command
Doesn't parse any events yet since we don't know what any events
are.  We also need to fix up ModemManager to handle unsolicited
responses in the QcdmSerialPort class.
2010-09-01 10:51:22 -05:00
Dan Williams
48aabcb60b test: add scan helper/tester 2010-08-30 14:39:25 -05:00
Dan Williams
37e4a0b1a8 gsm: ensure unlock retries is updated on incorrect PIN entry
If the modem returns an error (like "+CME ERROR: incorrect password"
or even just ERROR) make sure we recheck PIN status and thus also
recheck the number of unlock retries instead of just returning the
error to the caller.
2010-08-26 12:35:23 -05:00
Dan Williams
7657f138b3 core: clean up unlock retries info message 2010-08-26 12:34:57 -05:00
Dan Williams
ee53c3c3c4 qcdm: add bits for getting/setting the log mask
No code to actually start logging yet, just sets the mask.
2010-08-25 19:57:58 -05:00
Dan Williams
319424ccb3 gsm: recognize Motorola EZX errors
Nobody seems to know what the number means, but at least recognize
them as errors.
2010-08-18 16:12:53 -05:00
Dan Williams
d65c026994 gsm: Motorola EZX models quote CPIN response 2010-08-18 15:37:45 -05:00
Dan Williams
48b8826cbd qcdm: add Status Snapshot enum 2010-08-16 12:20:49 -05:00
Dan Williams
5388cf396e core: work around dbus-glib property access bug (CVE-2010-1172) (rh #585394)
More info:
https://bugzilla.redhat.com/show_bug.cgi?id=585394
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-1172

dbus-glib was not properly enforcing the 'access' permissions on
object properties exported using its API.  There were 2 specific bugs:

1) dbus-glib did not enforce the introspection read/write property
permissions, so if the GObject property definition allowed write
access (which is sometimes desirable), D-Bus clients could modify
that value even if the introspection said it was read-only

2) dbus-glib was not filtering out GObject properties that were
not listed in the introspection XML.  Thus, if the GObject defined
more properties than were listed in the introspection XML (which is
also often useful, and MM uses this quite a bit) those properties
would also be exposed to D-Bus clients.

To fix this completely, you need to:

1) get dbus-glib master when the patch is commited, OR grab the
patch from https://bugzilla.redhat.com/show_bug.cgi?id=585394 and
build a new dbus-glib

2) rebuild ModemManager against the new dbus-glib
2010-08-11 15:59:35 -05:00