Motorola H.24 does not send its IP address during IPCP negotiation
by Joo
Hi,
I am using Motorola H.24 modem module with the external TCP/IP stack. It seems
like the H.24 modem module never send the network side (remote side) IP address
during the PPP negotiation. The following trace (from bottom to top) is capture
that turn on the IPCP negotiation:
119 : ipcp: down
119 : Could not determine remote IP address
119 : ipcp: up
119 : fsmOut:8-FF03802102050004
119 : ipcp: returning Configure-ACK
119 : input: 01050004
119 : fsmOut: FF0380210304000A030600000000
119 : ipcp: returning Configure-NAK
119 : input: 01040004
119 : fsmOut: FF0380210303000A030600000000
119 : ipcp: returning Configure-NAK
119 : input: 01030004
119 : input: 0203001603060AD3830D81060A0002FE83060A020224
119 : fsmOut: FF0380210302000A030600000000
119 : ipcp: returning Configure-NAK
119 : input: 01020004
119 : fsmOut: FF0380210103001603060AD3830D81060A0002FE83060A020224
119 : local IP address 10.211.131.13
119 : input: 0302001603060AD3830D81060A0002FE83060A020224
119 : fsmOut: FF0380210301000A030600000000
119 : ipcp: returning Configure-NAK
119 : input: 01010004
119 : fsmOut: FF03802101020016030600000000810600000000830600000000
119 : input: 0401000A0206002D0F01
119 : fsmOut:FF0380210300000A030600000000
119 : ipcp: returning Configure-NAK
119 : input: 01000004
116 : fsmOut: FF0380210101001C0306000000000206002D0F01810600000000830600000000
116 : Connect: ppp0 <--> /dev/ser0
116 : synxModuleConnectPSD: Success..
113 : synxModuleConnectPSD..
109 : synxModuleInit: success..
106 : synxModuleInit: ATE1..
101 : synxModuleInit: ATZ..
101 : synxModuleInit..
98 : synxModuleOn: Success..
97 : synxModuleOn..
96 : thttpd/2.20c 21nov01 starting on port 80
96 : Using interface ppp0
9 years, 11 months
oFono upstream test results_20120615
by Nicolas Paccou
Hello all,
Please find the test report of oFono v1.6 commit da80dd7.
During this testing, we ran 464 functional positive cases. 350 cases passed
and 114 are blocked due to missing software/missing hardware/Feature not
supported. The pass rate is 75%.
We found, reopened and verified no issue.
If you have any comment about this report, contact me please.
Test Objective
The aim of this test cycle was to validate the state of oFono upstream by
testing all its features over all material we had (according to what feature
was supported and by priority order: 3G dongle and phonesim). oFono has been
installed and tested on Ubuntu 11.10 device.
Test Environment
oFono: v1.6 (updated to commit da80dd7)
usb_modeswitch: v1.2.3
modeswitch data: 20120120
Hardware: Laptop
Ubuntu: v11.10
Modem: Huawei E173u-2 - Operator & SIM Card: Orange SIM Card (data only) -
Phone number +33677646185 and other specific SIM Cards
Phonesim: v1.17 (updated to commit 6de7869)
Issue Summary
New bug:
None
Known bug:
None
Closed bug:
None
Test Result
SUMMARY
Total Test Case 464
Passed 350
Failed 0
Blocked 114
TCs completed 100,0%
Run rate 75%
Pass rate total 75%
Blocked rate total 24%
Pass rate of executed 100%
FEATURES TOTAL PASS FAIL BLOCKED PASS %
MODEM USED
Modem 16 16 0 0
100% 3G Dongle
SIM 20 20 0 0
100% 3G Dongle
Phonebook 1 1 0 0
100% 3G Dongle
Network 18 18 0 0
100% 3G Dongle
Radio 22 17 0 5
77% 3G Dongle
Connectivity 28 28 0 0
100% 3G Dongle
Voice Calls 51 37 0 17
73% mainly on 3G Dongle (using appropriate SIM Card)
Messaging 26 22 0 2
92% 3G Dongle (using appropriate SIM Card)
Smart Messaging 15 15 0 0
100% Phonesim
Message Waiting 8 8 0 0
100% Phonesim
Cell Broadcast 16 13 0 3
81% Phonesim
Call Settings 13 9 0 4
69% 3G Dongle
Supplementary Services 60 53 0 7 88%
mainly on Phonesim
Call Meter 15 9 0 6
60% mainly on Phonesim
Call Barring 48 31 0 17
65% 3G Dongle (using appropriate SIM Cards)
Call Forwarding 5 5 0 0
100% Phonesim
SimToolKit 104 48 0 56
46% Phonesim
Please find details in the attached file
Notes
25% of cases are blocked due to:
- Missing software (e.g.: Missing feature in Phonesim or missing a
visual application for some blocked feature as Setup Idle ModeText, Select
Item, Send SMS, etc.)
- Missing hardware (e.g.: Missing other SIM (having appropriate service
activated) or modem to be able to test certain feature or case (e.g.:
network simulator or smartphone device to test PIN/PIN2 cases, Call Barring
etc.)
- Feature not supported by oFono
Best regards,
Nicolas
9 years, 11 months
CDMA SMS Handling
by Rajesh.Nagaiah@elektrobit.com
Hi,
There was a discussion about the CDMA SMS handling and CDMA PDUs in the
IRC channel couple of days before. I would like to highlight the
differences between CDMA and GSM PDU and how we should proceed with this
from my understanding. Let me know your opinion.
Even though oFono supports +CMT and +CMTI, if we feed the incoming CDMA
PDUs to the SMS core it wont get decoded correctly, as there is
substantial differences between the GSM and CDMA SMS PDUs as described
in 3GPP2 specification C.S0015-B Short Message Service (SMS) for
Wideband Spread Spectrum Systems
For eg, the incoming PDU example that was mentioned in the IRC
discussion
+CMT: , 40,
00000210020207028CE95DCC65800601FC08150003168D30010610241830608003061010
04044847
40 - Length of the PDU in bytes
00 - Message Type ( 00 - SMS Point-to-Point)
00 - TeleService Identifier Tag (SMS Parameter Indentifier)
02 - TeleService Identifier Length (SMS Parameter Length)
10 - TeleService Identifier Value - First 8 bits
02 - TeleService Identifier Value - Second 8 bits
TeleService Identifier - 0x1002 - CDMA Messaging Teleservice
(CMT-95)
02 - Originating Address Tag
07 - Originating Address Length
02 - Originating Address 1st 8 Bits
8C - Originating Address 2nd 8 Bits
E9 - Originating Address 3rd 8 Bits
5D - Originating Address 4th 8 Bits
CC - Originating Address 5th 8 Bits
65 - Originating Address 6th 8 Bits
80 - Originating Address 7th 8 Bits
Digit Mode - 1 Bit
Number Mode - 1 Bit
Number Type - 0 or 3 bits
Number Plan - 0 or 4 bits
Number Fields - 8 Bits
Number Field occurrence of CHARi
CHARi - 4 or 8 bits ( 4 - in case of DTMF encoding, 8 - incase
of ASCII encoding)
Reserved - 0-7 bits
Lets take the 1st and 2nd 8 bits
02 - 0000 0010 ( Digit Mode bit - 0, Number Mode bit - 0)
8C - 1000 1100
As Digit mode bit is set to 0, Number Plan and Number Type is void
(0 bits) in this case.
So the remaining 6 bits of 1st 8bits and the first 2 bits of 2nd
8bit is Number fields
Number fields - 00 0010 10 - 0000 1010 - 0x0A (10 digits)
As Digit mode bit is set to 0, each address digit here is
represented as 4bit DTMF digit
0x8C 0xE9 0x5D 0xCC 0x65 0X80
1000 1100 1110 1001 0101 1101 1100 1100 0110 0101 1000 0000
10 0011 0011 1010 0101 0111 0111 0011 0001 1001 0110 0000 00
3 3 0 5 7 7 3 1 9 6 Last 6 bits
are reserved bits
Originating Address - 3305773196
06 - Bearer Reply Option Tag
01 - Bearer Reply Option Length
FC - First 6 bits Reply Sequence number and last 2 bits reserved set to
0
1111 1100 - 111111 REPLY_SEQ
00 Reserved
08 - Bearer Data Tag
15 - Bearer Data Length
00 - Message Indentifier Tag ( Bearer Data Sub parameter )
03 - Message Indentifier Length
16 - Message Type 4 bits Message Id 4 Bits
8D - Message Id 8 Bits
30 - Message Id 4 Bits, UDH Header indicator 1 Bit, Reserved 3 Bits
How Message Identifier value 16 8D 30 was formed ?
Message type ( 4 bits ) - 1( 0001 - Deliver)
Message Identifier ( 16 bits ) - 26835( 0x68D3)
Header Indicator (1 bit) - 0 (UDH not present in User Data
Subparameter)
Reserved ( 3bits) - 0 (000)
01 - User Data Tag ( Bearer Data Sub parameter )
06 - User Data Length
10 - Message Encoding 5 bits ( 0001 0000 ( 00010 = 2 -> 7-bit ASCII )) &
Number Fields 3 bits ( 000)
24 - Number Fields 5 Bits + User char field 1's 3 bits ( 0010 0100 )
18 - User char field 1's remaining 5 bits + User char field 2's 3 bits
(0001 1000)
30 - User char field 2's remaining 5 bits + User char field 3's 3 bits
(0011 0000)
60 - User char field 3's remaining 5 bits + User char field 4's 3 bits
(0110 0000)
80 - User char field 4's remaining 5 bits + Reserved 3 Bits (1000 0000)
Number Fields: 000 00100 - 04 (4 Character fields)
User Char [1] - 100 00011 - 0x83
User Char [2] - 000 00110 - 0x06
User Char [3] - 000 01100 - 0x0C
User Char [4] - 000 10000 - 0x10
Hex 0x83 0x06 0x0C 0x10
Octets 1000 0011 0000 0110 0000 1100 0001 0000
Septets 1000 001 10000 01 100000 1 1000001
Character A(0x41) A(0x41) A(0x41) A(0x41)
Message content: AAAA
Message Encoding - 2 (00010 - 5 bits)
Number Fields - 4 (0000 0100 - 8 bits)
User characters - 0x83 0x06 0x0C 0x10 ( 8 bits each)
00010 0000 0100 1000 0011 0000 0110 0000 1100 0001 0000
0001 0000 - 0x10
0010 0100 - 0x24
0001 1000 - 0x18
0011 0000 - 0x30
0110 0000 - 0x60
1000 0000 - 0x80 (Last 3 bits set to 0's(reserved bit) to complete
the octets)
03 - Message Center Time Stamp Tag ( Bearer Data Sub parameter )
06 - Message Center Time Stamp Length
all date and time fields contain two 4-bit BCD numbers giving the
decimal value of the field.
10 - Year (2010)
10 - Month (10 - October)
04 - Day
04 - Hour
48 - Minutes
47 - Seconds
Time Stamp 04:48:47 04/10/2010
Decoded Information:
Message Type: Deliver (Incoming Message)
Teleservice: CMT-95
Message Identifier: 26835
Originating Address: 3305773196
Message content: AAAA
Message Center Time Stamp: 04:48:47 04/10/2010
As from the above decoding example we can see there is substantial
differences between the GSM and CDMA SMS specifications and so the SMS
atom needs many additions and needs to be heavily modified to support
also CDMA SMS handling. Currently the oFono sms file unit handles the
common and the GSM technology aspects of the SMS stack along with the
smsutils. The SMS atom has the GSM specific members, segmentation and
queuing logic. The smsutils mainly takes care of encoding/decoding of
the PDUs, which is GSM specific. As the segmentation and queuing logic
and the interface is common for both GSM and CDMA, we could reuse this
common code and add the CDMA handling into it and create a new
cdmasmsutils unit to support the CDMA SMS specifics, much like the
smsutils does already for GSM.
BR,
Rajesh
9 years, 11 months
Re: Implement signal strength polling in plugin/driver
by Audric Schiltknecht
Denis,
>> I found by looking in include/netreg.h that it should be up to the
>> plugin to
>> implement CSQ polling, however I can't find how it is supposed to be
>> done.
>> Indeed, the plugin has no access to the netreg atom nor structure,
>> so
>> how is it
>> supposed to update one of these properties ?
>
> Drivers do not modify DBus properties directly. Instead you should
> be signaling the change to the core the regular way, via
> ofono_netreg_strength_notify.
>
> If you want to implement periodic signal strength reporting, then use
> g_idle_add_seconds to periodically send the +CSQ query. Please note
> that doing it this way you'd have to keep track of other states. For
> example, you might want to stop polling when the registration is
> lost,
> etc.
Oh, I see. Indeed, I noticed that signal strength reporting
is stopped when modem is not registered. I'll keep that in mind.
Thank you for the lead on this matter.
>
> Ideally you should be asking your vendor why the signal strength
> isn't reported properly.
Sure, it would be great to not have to do all these hacks to get it
working right !
Regards,
Audric
9 years, 11 months
[PATCH] TODO: Remove infeasible SIM task
by Guillaume Zajac
---
TODO | 17 -----------------
1 files changed, 0 insertions(+), 17 deletions(-)
diff --git a/TODO b/TODO
index 1fef651..3ddf363 100644
--- a/TODO
+++ b/TODO
@@ -66,23 +66,6 @@ SIM / SIM File system
Priority: Low
Complexity: C2
-- Add support for SIM 'ready' notifications from the driver to the core. Most
- modem manufacturers initialize the SIM (e.g. cache SIM file system, STK
- initialization, etc) internally before allowing the telephony stack to
- access these portions. When the PIN is locked, this can lead to oFono being
- too fast for the modem and asking it for things before the firmware is ready.
-
- The proposal is to introduce a new sim function:
- void ofono_sim_ready_notify(struct ofono_sim *sim);
-
- When oFono determines the SIM PIN is READY, it checks whether
- ofono_sim_ready_notify has been called. If it hasn't, then it stalls the
- initialization procedure (and calling post_sim) until
- ofono_sim_ready_notify is called.
-
- Priority: High
- Complexity: C2
-
- Support SIM authentication: SIM and AKA suites.
Priority: Medium
--
1.7.5.4
9 years, 11 months
Implement signal strength polling in plugin/driver
by Audric Schiltknecht
Hi guys,
It seems my first post was lost, so here is a new try.
I am currently developing an ofono-based GSM control interface, using a
Sagem
Hilo modem (I wrote the appropriate plugin) with the atmodem driver.
I am having trouble with signal strength reporting. The terminal does
not report
signal strength by event. Hence, it is not possible to get the value
from Ofono,
since Ofono expects it to be updated on a +CIEV event. I implemented a
new DBus method in the NetworkRegistration interface to force AT+CSQ
command and
update the property value, but this is clearly not a valid solution.
I found by looking in include/netreg.h that it should be up to the
plugin to
implement CSQ polling, however I can't find how it is supposed to be
done.
Indeed, the plugin has no access to the netreg atom nor structure, so
how is it
supposed to update one of these properties ?
Thank you for your help.
Regards,
Audric Schiltknecht
9 years, 11 months
[PATCH 0/3] mmsd: (resending) new tasks definition
by Ronald Tessier
These patches concern mmsd and update TODO and documentation to describe new
functionalities to add to mmsd.
Ronald Tessier (3):
TODO: Add new tasks
doc: Describe delivered group in storage doc
doc: Add new D-Bus methods to service interface
TODO | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++
doc/service-api.txt | 20 +++++++++++++++
doc/storage.txt | 30 ++++++++++++++++++++++
3 files changed, 117 insertions(+), 0 deletions(-)
--
1.7.4.1
9 years, 11 months
[PATCHv5 0/5] Call forwarding state handling change
by Oleg Zhurakivskyy
Hello,
Please find the changes in order to correct call forwarding states.
Changes from v4:
- Check the CFU in order to find whether querying is needed.
- End querying once CFU is active.
- Cache TYPE_ALL queries on supplementary services path.
Regards,
Oleg
Oleg Zhurakivskyy (5):
call-forwarding: Streamline number assignment
call-forwarding: Don't query cfs if CFU is active
call-forwarding: End querying once CFU is active
call-forwarding: Cache ss TYPE_ALL queries
TODO: Remove completed call forwarding state task
TODO | 17 -----------------
src/call-forwarding.c | 14 ++++++++------
2 files changed, 8 insertions(+), 23 deletions(-)
--
1.7.5.4
9 years, 11 months
[PATCH v0 0/4] Add Serial and Type property to dundee
by Daniel Wagner
From: Daniel Wagner <daniel.wagner(a)bmw-carit.de>
Hi,
The first patch is fixes an obvious typo in the introspection.
The next three patches punch a whole through the DUN device
abstraction. If a Bluetooth device supports PAN and DUN at the same
time, there is no real good reason to offer both services to
user. ConnMan needs to figure out if a device supports both profile
(and then picking PAN). For this we need to provide an device
identifier. This API estension is modeled after the modem API, where
we have to do the same thing for HFP.
cheers,
daniel
Daniel Wagner (4):
dundee: Fix signal name
dundee: Add Serial and Type documantation
dundee: Add Serial property
dundee: Add Type property
doc/dundee-api.txt | 12 ++++++++++++
dundee/bluetooth.c | 11 +++++++++++
dundee/device.c | 27 +++++++++++++++++++++++++++
dundee/dundee.h | 9 +++++++++
dundee/manager.c | 2 +-
5 files changed, 60 insertions(+), 1 deletion(-)
--
1.7.10.130.g36e6c
9 years, 11 months
[PATCH] atmodem: check the Packet Domain service state before attaching
by Philippe Nunes
---
drivers/atmodem/gprs.c | 66 +++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 62 insertions(+), 4 deletions(-)
diff --git a/drivers/atmodem/gprs.c b/drivers/atmodem/gprs.c
index 65a8b7b..3be0a9d 100644
--- a/drivers/atmodem/gprs.c
+++ b/drivers/atmodem/gprs.c
@@ -44,6 +44,7 @@
static const char *cgreg_prefix[] = { "+CGREG:", NULL };
static const char *cgdcont_prefix[] = { "+CGDCONT:", NULL };
+static const char *cgatt_prefix[] = { "+CGATT:", NULL };
static const char *none_prefix[] = { NULL };
struct gprs_data {
@@ -62,17 +63,74 @@ static void at_cgatt_cb(gboolean ok, GAtResult *result, gpointer user_data)
cb(&error, cbd->data);
}
+static void at_cgatt_query_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct cb_data *cbd = user_data;
+ ofono_gprs_cb_t cb = cbd->cb;
+ struct gprs_data *gd = cbd->user;
+ struct ofono_error error;
+ GAtResultIter iter;
+ int state;
+
+ decode_at_error(&error, g_at_result_final_response(result));
+
+ if (!ok) {
+ cb(&error, cbd->data);
+ g_free(cbd);
+ return;
+ }
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+CGATT:")) {
+ CALLBACK_WITH_FAILURE(cb, cbd->data);
+ g_free(cbd);
+ return;
+ }
+
+ g_at_result_iter_next_number(&iter, &state);
+
+ switch (state) {
+ case 0:
+ if (g_at_chat_send(gd->chat, "AT+CGATT=1", none_prefix,
+ at_cgatt_cb, cbd, g_free) > 0)
+ return;
+
+ CALLBACK_WITH_FAILURE(cb, cbd->data);
+ break;
+ case 1:
+ CALLBACK_WITH_SUCCESS(cb, cbd->data);
+ break;
+ }
+
+ g_free(cbd);
+}
+
static void at_gprs_set_attached(struct ofono_gprs *gprs, int attached,
ofono_gprs_cb_t cb, void *data)
{
struct gprs_data *gd = ofono_gprs_get_data(gprs);
struct cb_data *cbd = cb_data_new(cb, data);
- char buf[64];
- snprintf(buf, sizeof(buf), "AT+CGATT=%i", attached ? 1 : 0);
+ cbd->user = gd;
- if (g_at_chat_send(gd->chat, buf, none_prefix,
- at_cgatt_cb, cbd, g_free) > 0)
+ /*
+ * Before attaching, check the current state.
+ * If we are already attached to the packet domain service, it means
+ * that the attachment is done automatically at power on.
+ * If we send again the command +CGATT, this command should be ignored
+ * by the modem but some of them are initiating a complete new
+ * attachment procedure resulting in a preliminary IMSI/P-TMSI detach.
+ * To prevent such bad behavior, the command +CGATT is not sent if the
+ * modem is already in the requested state.
+ */
+ if (attached == TRUE) {
+ if (g_at_chat_send(gd->chat, "AT+CGATT?", cgatt_prefix,
+ at_cgatt_query_cb, cbd, NULL) > 0)
+ return;
+ } else if (g_at_chat_send(gd->chat, "AT+CGATT=0", none_prefix,
+ at_cgatt_cb, cbd, g_free) > 0)
return;
g_free(cbd);
--
1.7.9.5
9 years, 11 months