[android-porting] RE: Data connection via cell modem (GPRS)

857 views
Skip to first unread message

Uhrenfeldt Henrik

unread,
May 17, 2010, 3:27:04 AM5/17/10
to M&M stich, Robert Greenwalt, android...@googlegroups.com
Hi Stich,

Please keep the list on copy - then everybody will learn from this :-)

Anyway, I think your problem is in the line:

LOGD(" --- PPPD started successfully; IP local : %s Retry count : %d",response[3],retry);

In fact response[] is only three elements big, and you refer to index 3 instead of 2. I bet the code successfully exits the loop and attempts to execute the debug print, hits a NULL pointer and the low-level part of RIL crashes. This is confirmed by the debug lines

E/RILJ ( 929): Hit EOS reading message length
I/RILJ ( 929): Disconnected from 'rild' socket

I have crashed the low-level RIL many times, and every time I get this message :-)

I bet that if you change response[3] to response[2] it will be working. That being said this will work only once, since next time you attempt connection, local-ip will be set already. I introduced yet another property which I set to a kind of state information (ie. down/initializing/up). Again this synchronization through properties really is the worst part of this setup, and I have been able to stabilize it 100%...

- Henrik

-----Original Message-----
From: M&M stich [mailto:msti...@gmail.com]
Sent: 14. maj 2010 21:44
To: Robert Greenwalt; Uhrenfeldt Henrik
Subject: Data connection via cell modem (GPRS)

Made some progress. When SETUP_DATA_CALL is called, my ril starts the pppd via ctl.start, and that seems to work. The deamon does seem to start and the associated properties seem to be set. (Doing a "start service" from the console works) I've put log messages at each step, when it starts, when it waits for the local-ip property to be set (which is set in ip-up), when that completes, and when it does the RilRequestComplete call.

It never gets to the end. RIL.java seems to think it has a response before the request completes, then errors out because it reached "EOS" Here is a snippet of the radio logcat. Messages that have "---" are ones I put in the reference-ril in the SETUP_DATA_CALL. There should be the 4 mentioned above. It never finishes the wait for the local-ip property.

I can't figure out why RIL.java thinks it should go read a response before there has been a reply to the request.
Thanks.
Mike
------------------------------------------------------------------
D/GSM ( 929): [GsmSimCard] Broadcasting intent SIM_STATE_CHANGED_ACTION LOADED reason null
D/GSM ( 929): Get PreferredAPN
D/GSM ( 929): [GsmDataConnectionTracker] ***trySetupData due to simLoaded
D/GSM ( 929): [DSAC DEB] trySetupData with mIsPsRestricted=false
D/GSM ( 929): [GsmDataConnectionTracker] Create from allApns : [ATT, 1, 310410, wap.cingular, wireless.cingular.com, http://mmsc.cingular.com, null, null, 80, *]
D/GSM ( 929): [GsmDataConnectionTracker] Setup watingApns : [ATT, 1, 310410, wap.cingular, wireless.cingular.com, http://mmsc.cingular.com, null, null, 80, *]
D/GSM ( 929): [PdpConnection] DataConnection.getState()
D/GSM ( 929): [PdpConnection] Connecting to carrier: 'ATT' APN: 'wap.cingular' proxy: ' wireless.cingular.com' port: '80
D/RILJ ( 929): [0060]> SETUP_DATA_CALL wap.cingular
D/RIL ( 811): onRequest: SETUP_DATA_CALL
D/RIL ( 811): requesting data connection to APN 'wap.cingular'
D/RIL ( 811): ---- Starting service pppd_gprs -----
D/RIL ( 811): ---- starting wait for property ----- prop set return code is 0
D/GSM ( 929): [GsmDataConnectionTracker] setState: INITING
E/RILJ ( 929): Hit EOS reading message length
I/RILJ ( 929): Disconnected from 'rild' socket

Here is the code:
err = property_set("ctl.start","pppd_gprs"); // Tell init to start the pppd_gprs service
LOGD(" ---- Starting service pppd_gprs ----- ");
if(err<0)
{
LOGD("#### error in starting service pppd_gprs; err : %d",err);
goto error;
}
retry = 100;
LOGD(" ---- starting wait for property ----- prop set return code is %d",err);
while((property_get("net.gprs.local-ip",response[2], "") <= 0) && --retry)
{
usleep(5*1000); // sleep 5ms
}

LOGD(" --- PPPD started successfully; IP local : %s Retry count : %d",response[3],retry);
......
LOGD(" --- Returning from setup data call, response length is %d",sizeof(response));
RIL_onRequestComplete(t, RIL_E_SUCCESS, response, sizeof(response));



--
unsubscribe: android-porti...@googlegroups.com
website: http://groups.google.com/group/android-porting

M&M stich

unread,
May 17, 2010, 8:57:03 AM5/17/10
to Uhrenfeldt Henrik, android-porting
Yes, I noticed that shortly after I sent the message.  Fixing it did not change anything. 

It appears that readRilMessage in RIL.java is executing before the response is sent.  I don't understand why this should happen. 

I was going to clear the net.gprs.local-ip property in the ip-down script so that it would work multiple times.  Then it could be reset in the ip-up script like it currently is.  Would that not work similarly to another property?

Thanks much for the help.
Mike

Uhrenfeldt Henrik

unread,
May 17, 2010, 9:06:58 AM5/17/10
to M&M stich, android-porting
Hi Mike,

I still think the RIL crashes if you get the two lines:

E/RILJ ( 929): Hit EOS reading message length
I/RILJ ( 929): Disconnected from 'rild' socket

The log message is confusing because the java process somehow finishes its ongoing function call through JNI when the lowlevel RIL crashes. If changing the invalid index did not do the trick, then we have to look for something else. Try modifying your debug line not to reference any variables at all - we need to make sure that RIL does not crash..

Regarding the setting of local-ip in ip-down, I thought about the very same thing, but you end up in trouble waiting for local-ip being set if fx. ppp fails to initialize (this happens in my setup from time to time). In that case you need to wait for both ppp exit code AND local-ip. Thus I ended up making one single property which was being set from both ppp-init script (after PPP exit) as well as ip-up and ip-down.

M&M stich

unread,
May 17, 2010, 4:50:27 PM5/17/10
to Uhrenfeldt Henrik, android-porting
Hi Henrik,
Removing all variables from the LOGD calls did not change anything.

After multiple experiments with the placement of LOGD's, I believe it is crashing whenever property_get is executed.  Can never get by that:

        len = property_get("net.gprs.local-ip",response[2], NULL);

I printed out response[0], [1], and [2], before this call and they look correct..
Mike

Uhrenfeldt Henrik

unread,
May 18, 2010, 3:19:29 AM5/18/10
to M&M stich, android-porting
Hi Mike,

I suspect I have had the same problems. I can see that I use a two-step solution to ensure that the string containing the IP is sufficiently big and does not get overwritten when the function exits (as would normally be the case with variables local to a function).

static char address_ip[PROPERTY_VALUE_MAX];

err = property_get("net.gprs.local-ip", address_ip ,"");
response[2] = address_ip;

I suppose that property_get writes more into the response[2] char* than initially allocated, OR response[2]'s area on the stack is used for something else immediately after the function exits...

M&M stich

unread,
May 19, 2010, 2:16:24 PM5/19/10
to Uhrenfeldt Henrik, android-porting
Hi Henrik,
Thanks much for your help.  Got the data call up and running, seems stable. Seems like you just can't put the response[2] pointer into the property_get call for some reason. Thought I had it initialized large enough also.  Oh well.

Now the web browser seems to hang, log msgs indicate it gets no response when searching for a web site.  Looking into apn settings, and if we have the ip address correct.  You did say the local-ip should be passed back in the response to setup_data_call, correct?  Not the remote-ip?  Actually neither seems to work at this point.

Mike

M&M stich

unread,
May 19, 2010, 3:40:47 PM5/19/10
to Uhrenfeldt Henrik, android-porting
Hi Henrik
First response element is "1", the context ID (CID) of the modem.
Second is "gprs", since we found places in the RIL.java where is uses this for the center element of the properties, i.e. net.gprs.dns1 and others.
Third is the local-ip

Ping does work, including with DNS, i.e. ping www.google.com

Logcat from the radio looks normal, no errors.  As you say, I think the issue is in Android somewhere, not the radio layers.   I think we may be telling it something wrong. E.g. the apn-conf.xml file says 0.0.0.0 for the IP, with make sense since it doesn't know what the IP will be (DHCP, right?) but I see that in the radio log as part of a response right after setting up the data call.  That is not part of the response, and later in the log the other IP's show up properly.  Or there is some other setting not quite right.

The main logcat shows some errors with sites not found, trying to track those down now, but they are from deep within Android.

Mike

On Wed, May 19, 2010 at 1:46 PM, Uhrenfeldt Henrik <henrik.u...@ixonos.com> wrote:
Hi Mike!

Yes, it is local-ip that needs to be passed back. What is in the other elements of response[]?

Output from logcat -b radio would be useful here - it tells something about what Android thinks is its connection.

Also, if you have an ip and can ping stuff from the shell, your apn is correct and the issue is Android only. Maybe test this?

- Henrik

--- Oprindelig besked ---
Fra: "M&M stich" <msti...@gmail.com>
Emne: Re: Data connection via cell modem (GPRS)
Dato: 19. maj 2010
Klokkeslæt: 20:1635

Uhrenfeldt Henrik

unread,
May 19, 2010, 2:46:53 PM5/19/10
to M&M stich, android-porting

Uhrenfeldt Henrik

unread,
May 20, 2010, 7:17:41 AM5/20/10
to M&M stich, android-porting
Hi Mike,

Maybe you're experiencing a race condition. If your RIL call completes the instant local-ip is set, upper layers in Android may conclude that net.grps.dns1, etc. is not set (because the shell script was suspended by the lowlevel RIL process). Try making sure that the local-ip property is set as the very last thing.

Or just to check for race conditions, add a half second delay or so before completing SETUP_DATA_CALL.

M&M stich

unread,
May 20, 2010, 11:07:37 AM5/20/10
to Uhrenfeldt Henrik, android-porting
Hi Henrik,
ip-up sets a custom property last (only does some logging after that) that triggers the ril to send a response.  The ril waits 2 sec for the property, then times out and returns an error.  Android then tries again shortly thereafter, and the ril does not have to wait at all, everything is setup.

Now,when I try and start the browser, it somehow causes a timeout on the signal strength request and cause the radio to crash.  This is a new behavior.  Here is the end of the radio log, showing the data call being set up as described.  PDPconnection seems to have the dns correctly.  Also shows the at channel timeout somehow caused by the browser trying to start.  It does restart successfully eventually.
Thanks   Mike
---------------------------------------------------
:::::
D/GSM     (  955): SIMRecords: record load complete
D/GSM     (  955): [GsmSimCard] Broadcasting intent SIM_STATE_CHANGED_ACTION LOADED reason null
D/GSM     (  955): Get PreferredAPN
D/GSM     (  955): [GsmDataConnectionTracker] ***trySetupData due to simLoaded
D/GSM     (  955): [DSAC DEB] trySetupData with mIsPsRestricted=false
I/GSM     (  955): Preferred APN:310410:310410:ATT, 1, 310410, wap.cingular, null, null, null, null, null, *
I/GSM     (  955): Waiting APN set to preferred APN
D/GSM     (  955): [GsmDataConnectionTracker] Create from allApns : [ATT, 1, 310410, wap.cingular, null, null, null, null, null, *]
D/GSM     (  955): [GsmDataConnectionTracker] Setup watingApns : [ATT, 1, 310410, wap.cingular, null, null, null, null, null, *]
D/GSM     (  955): [PdpConnection] DataConnection.getState()
D/GSM     (  955): [PdpConnection] Connecting to carrier: 'ATT' APN: 'wap.cingular' proxy: 'null' port: 'null
D/RILJ    (  955): [0057]> SETUP_DATA_CALL wap.cingular
D/RIL     (  863): onRequest: SETUP_DATA_CALL
D/RIL     (  863): requesting data connection to APN 'wap.cingular'
D/RIL     (  863):  ---- Initial running status :  len : 2  Status: no
D/RIL     (  863):  ---- Starting service pppd_gprs -----
D/RIL     (  863): --- Initial Response is : 1 ; gprs ; 000.000.000.000
D/RIL     (  863):  ---- starting wait for property -----, len : 2  Status: no
D/GSM     (  955): [GsmDataConnectionTracker] setState: INITING
D/RIL     (  863):  ---- PPPD failed to start:  status = no , length = 2 , retry = 0
D/RILJ    (  955): [0057]< SETUP_DATA_CALL error: com.android.internal.telephony.CommandException: GENERIC_FAILURE
D/GSM     (  955): [PdpConnection] DataConnection.handleMessage()
E/GSM     (  955): PDP Context Init failed com.android.internal.telephony.CommandException: GENERIC_FAILURE
D/RILJ    (  955): [0058]> LAST_DATA_CALL_FAIL_CAUSE
D/RIL     (  863): onRequest: LAST_DATA_CALL_FAIL_CAUSE
D/RILJ    (  955): [0058]< LAST_DATA_CALL_FAIL_CAUSE error: com.android.internal.telephony.CommandException: REQUEST_NOT_SUPPORTED
D/GSM     (  955): [PdpConnection] DataConnection.handleMessage()
D/GSM     (  955): [PdpConnection] Notify PDP fail at 1274367573216 due to Unknown Data Error
D/GSM     (  955): [GsmDataConnectionTracker] PDP setup failed Unknown Data Error
D/GSM     (  955): [GsmDataConnectionTracker] setState: FAILED
D/GSM     (  955): PDP activate failed. Scheduling next attempt for 5s
D/GSM     (  955): NOT Posting GPRS Unavailable notification -- likely transient error
D/GSM     (  955): GPRS reconnect alarm. Previous state was FAILED
D/GSM     (  955): [GsmDataConnectionTracker] Clean up connection due to simLoaded
D/GSM     (  955): [GsmDataConnectionTracker] setState: DISCONNECTING
D/GSM     (  955): [PdpConnection] DataConnection.clearSettings()
D/GSM     (  955): [DataConnection] Stop poll NetStat
D/GSM     (  955): [GsmDataConnectionTracker] setState: IDLE
D/GSM     (  955): [GsmDataConnectionTracker] ***trySetupData due to (unspecified)
D/GSM     (  955): [DSAC DEB] trySetupData with mIsPsRestricted=false
I/GSM     (  955): Preferred APN:310410:310410:ATT, 1, 310410, wap.cingular, null, null, null, null, null, *
I/GSM     (  955): Waiting APN set to preferred APN
D/GSM     (  955): [GsmDataConnectionTracker] Create from allApns : [ATT, 1, 310410, wap.cingular, null, null, null, null, null, *]
D/GSM     (  955): [GsmDataConnectionTracker] Setup watingApns : [ATT, 1, 310410, wap.cingular, null, null, null, null, null, *]
D/GSM     (  955): [PdpConnection] DataConnection.getState()
D/GSM     (  955): [PdpConnection] Connecting to carrier: 'ATT' APN: 'wap.cingular' proxy: 'null' port: 'null
D/RILJ    (  955): [0059]> SETUP_DATA_CALL wap.cingular
D/RIL     (  863): onRequest: SETUP_DATA_CALL
D/RIL     (  863): requesting data connection to APN 'wap.cingular'
D/RIL     (  863):  ---- Initial running status :  len : 3  Status: yes
D/RIL     (  863):  ---- Starting service pppd_gprs -----
D/RIL     (  863): --- Initial Response is : 1 ; gprs ; 000.000.000.000
D/RIL     (  863):  ---- starting wait for property -----, len : 3  Status: yes
D/RIL     (  863):  --- PPPD started successfully; status : yes  Lengthe: 3,  Retry count : 200
D/RIL     (  863):  ---- Local IP read as :   10.129.140.89  length : 13 -----
D/RIL     (  863):  -----  response[2] ip addr : 10.129.140.89
D/RIL     (  863):  --- Returning from setup data call  ---
D/RILJ    (  955): [0059]< SETUP_DATA_CALL {1, gprs, 10.129.140.89}
D/GSM     (  955): [GsmDataConnectionTracker] setState: INITING
D/GSM     (  955): [PdpConnection] DataConnection.handleMessage()
D/GSM     (  955): [PdpConnection] interface=gprs ipAddress=10.129.140.89 gateway=192.168.202.0 DNS1= DNS2=172.16.7.167
D/GSM     (  955): [PdpConnection] Notify PDP success at 1274367578330
D/GSM     (  955): [PdpConnection] PDP setup on cid = 1
D/GSM     (  955): [GsmDataConnectionTracker] setState: CONNECTED
D/GSM     (  955): [DataConnection] Start poll NetStat
D/RILJ    (  955): [0060]> SIGNAL_STRENGTH
D/RIL     (  863): onRequest: SIGNAL_STRENGTH
D/AT      (  863): AT> AT+CSQ
D/AT      (  863): AT< +CSQ: 22,0
D/AT      (  863): AT< OK
D/RILJ    (  955): [0060]< SIGNAL_STRENGTH {22, 0, 0, 0, 0, 0, 0}
D/RILJ    (  955): [0061]> SIGNAL_STRENGTH
D/RIL     (  863): onRequest: SIGNAL_STRENGTH
D/AT      (  863): AT> AT+CSQ
D/AT      (  863): AT< +CSQ: 22,0
D/AT      (  863): AT< OK
D/RILJ    (  955): [0061]< SIGNAL_STRENGTH {22, 0, 0, 0, 0, 0, 0}
D/RILJ    (  955): [0062]> SIGNAL_STRENGTH
D/RIL     (  863): onRequest: SIGNAL_STRENGTH
D/AT      (  863): AT> AT+CSQ
D/RILJ    (  955): WAKE_LOCK_TIMEOUT  mReqPending=0 mRequestList=1
D/RILJ    (  955): 0: [62] SIGNAL_STRENGTH
I/RIL     (  863): AT channel timeout; closing
E/RIL     (  863): requestSignalStrength must never return an error when radio is on
E/RILC    (  863): RIL_onRequestComplete: invalid RIL_Token
I/RIL     (  863): Re-opening after close
D/AT      (  863): AT> ATE0Q0V1
D/RILB    (  955): Notifying: radio not available
D/RILB    (  955): Notifying: radio off or not available
D/RILJ    (  955): [UNSL]< UNSOL_RESPONSE_RADIO_STATE_CHANGED RADIO_UNAVAILABLE
D/RILJ    (  955): [0062]< SIGNAL_STRENGTH error: com.android.internal.telephony.CommandException: GENERIC_FAILURE
D/RILB    (  955): Notifying: radio available
D/RILJ    (  955): [0063]> SCREEN_STATE: true
D/RILJ    (  955): [0064]> RADIO_POWER
D/RILJ    (  955): [UNSL]< UNSOL_RESPONSE_RADIO_STATE_CHANGED RADIO_OFF
E/GSM     (  955): Wrong network type: 0
E/GSM     (  955): Wrong network type: 0
D/GSM     (  955): Poll ServiceState done:  oldSS=[0 home AT&T AT&T 310410  Unknown CSS not supported -1 -1RoamInd: -1DefRoamInd: -1] newSS=[3 home null null null  Unknown CSS not supported -1 -1RoamInd: -1DefRoamInd: -1] oldGprs=0 newGprs=0 oldType=unknown newType=unknown
D/RILJ    (  955): [0065]> GET_CURRENT_CALLS
D/GSM     (  955): [GsmDataConnectionTracker] Radio is off and clean up all connection
D/GSM     (  955): [GsmDataConnectionTracker] Clean up connection due to radioTurnedOff
D/GSM     (  955): [GsmDataConnectionTracker] setState: DISCONNECTING
D/GSM     (  955): [PdpConnection] DataConnection.clearSettings()
D/GSM     (  955): [DataConnection] Stop poll NetStat
D/GSM     (  955): [GsmDataConnectionTracker] setState: IDLE
D/GSM     (  955): [GsmSimCard] Broadcasting intent SIM_STATE_CHANGED_ACTION NOT_READY reason null
D/RILJ    (  955): [0066]> RADIO_POWER
E/GSM     (  955): Wrong network type: 0
E/GSM     (  955): Wrong network type: 0
D/GSM     (  955): Poll ServiceState done:  oldSS=[3 home null null null  Unknown CSS not supported -1 -1RoamInd: -1DefRoamInd: -1] newSS=[3 home null null null  Unknown CSS not supported -1 -1RoamInd: -1DefRoamInd: -1] oldGprs=0 newGprs=0 oldType=unknown newType=unknown
D/RILJ    (  955): [0067]> BASEBAND_VERSION
D/RILJ    (  955): [0068]> GET_IMEI
D/RILJ    (  955): [0069]> GET_IMEISV
D/AT      (  863): AT> ATE0Q0V1
D/AT      (  863): AT> ATE0Q0V1
::::

--------------------------------------

Uhrenfeldt Henrik

unread,
May 20, 2010, 11:29:48 AM5/20/10
to M&M stich, android-porting
Hi Mike!

I bet 2 seconds is not near enough.. I have a timeout of 15 seconds to wait for the PPP to get up properly - in average it takes around 7-8 seconds. Then probably what goes wrong next is the fact that the needed properties were set in the last run, so your SETUP_DATA_CALL finishes quickly, but meanwhile you may have confused the modem with another AT+CGDCONT..

You have to get the first attempt to work and be sure that there are no race conditions with setting/reading properties. For example - if you set your custom property to something like "initing" in the beginning of the pppd service and wait for it to become "up", the next time you run SETUP_DATA_CALL, it will be "up" until the service is really running and setting it to "initing" - unless you do some kludgy waiting in SETUP_DATA_CALL before initially checking state of your property. This had me tweaking for some time.

To get all this running properly, I also had to implement DEACTIVATE_DATA_CALL in which I send an "AT+CGACT=0,1" and then I wait for pppd service to exit (yet another property to check for). In our setup, Android always sets up the connection twice (due to some weirdness with a list of APNs changing in higher layers), so we need to have a reliable shutdown as well - sigh..

Regarding your timeout on the AT channel there is not much to say else than it seems the modem is somehow in a state where it won't answer. This is of course critical for the RIL and it has no choice other than attempting to restart. Hopefully it is caused by PDP context confusion or some other invalid chain of commands caused by the data setup stuff.

- Henrik
---
Henrik Uhrenfeldt
Chief Software Engineer
Ixonos Denmark ApS
Niels Jernes Vej 10,
DK-9220 Aalborg Ø, Denmark
mobile +45 4030 2607
email: henrik.u...@ixonos.com
http://www.ixonos.com

M&M stich

unread,
May 20, 2010, 4:25:33 PM5/20/10
to Uhrenfeldt Henrik, android-porting
Hi Henrik!
@#$%^^!!  This is driving me nuts. 

Ok, I lengthened the timeout, takes around 14 Sec for me.  I also see the DEACTIVATE due to APN changed.  But the deactivate does not work. 

Looks like ip-down does not get called. If I manually do a stop on the service, it does not get called. If I kill pid from the console, then it does get called.  I'm relying on it to set the same property I use to check startup to "no" instead of "yes".  I suppose I could use the init.svc.pppd_gprs property instead, but I thought ip-down should get called.   By the way, the shell that ran ip-up does not go away after it runs.  When I stop pppd_gprs, I get an "untracked pid exited" from it.

BUT,  the chat disconnect script is not running correctly either, it seems. It needs to do the '+++' to break out of data mode.  The modem requires 1 sec before and 1 sec after of quiet time for this to work.  I set verbose on the chat command, but it did not show me anything.  I may need to figure out how to trace it.
Thanks
Mike

Uhrenfeldt Henrik

unread,
May 21, 2010, 3:52:56 AM5/21/10
to M&M stich, android-porting
Hi Mike,

Hehe... I had the same feeling.

My DEACTIVATE does not work 100% smooth, but it works. I basically set AT+CGACT=0,1 and wait for PPPD to die from natural causes. As far as I remember, it does in fact call ip-down. I do not attempt to stop the service manually (via init.svc.pppd_gprs), neither do I care about the untracked pid (which I think I get as well).

Regarding breaking out of data mode, my modem automatically terminates the PPP connection when it receives the AT+CGACT=0,1, so I am not doing anything like the '+++'...

One thing though - I cannot seem to get the exit code from pppd properly, but at some point I gave up and decided I could live without it. Since I was able to setup the data connection several times in a row, I concluded it was good enough :-)

Kjaergaard

unread,
May 21, 2010, 8:45:53 AM5/21/10
to android-porting
I am following this thread with great interest as I recently have
tried to setup a 3G connection though a Huawei USB modem. I succeded
in doing this from both an Android-x86 and a Beagleboard. However this
was using a manual startup of the PPP daemon, where I have modified
the chat script to use the APN name of my 3G provider.

Will the result of the implementation work reflected in this thread be
released for the Android community either as an extension to the
generic RIL or as an alternative RIL implementation ?

- Jens Kristian

On 21 Maj, 09:52, Uhrenfeldt Henrik <henrik.uhrenfe...@ixonos.com>
wrote:
> Hi Mike,
>
> Hehe... I had the same feeling.
>
> My DEACTIVATE does not work 100% smooth, but it works. I basically set AT+CGACT=0,1 and wait for PPPD to die from natural causes. As far as I remember, it does in fact call ip-down. I do not attempt to stop the service manually (via init.svc.pppd_gprs), neither do I care about the untracked pid (which I think I get as well).
>
> Regarding breaking out of data mode, my modem automatically terminates the PPP connection when it receives the AT+CGACT=0,1, so I am not doing anything like the '+++'...
>
> One thing though - I cannot seem to get the exit code from pppd properly, but at some point I gave up and decided I could live without it. Since I was able to setup the data connection several times in a row, I concluded it was good enough :-)
>
> - Henrik
>
>
>
> -----Original Message-----
> From: M&M stich [mailto:mstic...@gmail.com]
> Sent: 20. maj 2010 22:26
> To: Uhrenfeldt Henrik
>
> Cc: android-porting
> Subject: Re: Data connection via cell modem (GPRS)
>
> Hi Henrik!
> @#$%^^!!  This is driving me nuts.
>
> Ok, I lengthened the timeout, takes around 14 Sec for me.  I also see the DEACTIVATE due to APN changed.  But the deactivate does not work.
>
> Looks like ip-down does not get called. If I manually do a stop on the service, it does not get called. If I kill pid from the console, then it does get called.  I'm relying on it to set the same property I use to check startup to "no" instead of "yes".  I suppose I could use the init.svc.pppd_gprs property instead, but I thought ip-down should get called.   By the way, the shell that ran ip-up does not go away after it runs.  When I stop pppd_gprs, I get an "untracked pid exited" from it.
>
> BUT,  the chat disconnect script is not running correctly either, it seems. It needs to do the '+++' to break out of data mode.  The modem requires 1 sec before and 1 sec after of quiet time for this to work.  I set verbose on the chat command, but it did not show me anything.  I may need to figure out how to trace it.
> Thanks
> Mike
>
> On Thu, May 20, 2010 at 10:29 AM, Uhrenfeldt Henrik <henrik.uhrenfe...@ixonos.com> wrote:
>
>         Hi Mike!
>
>         I bet 2 seconds is not near enough.. I have a timeout of 15 seconds to wait for the PPP to get up properly - in average it takes around 7-8 seconds. Then probably what goes wrong next is the fact that the needed properties were set in the last run, so your SETUP_DATA_CALL finishes quickly, but meanwhile you may have confused the modem with another AT+CGDCONT..
>
>         You have to get the first attempt to work and be sure that there are no race conditions with setting/reading properties. For example - if you set your custom property to something like "initing" in the beginning of the pppd service and wait for it to become "up", the next time you run SETUP_DATA_CALL, it will be "up" until the service is really running and setting it to "initing" - unless you do some kludgy waiting in SETUP_DATA_CALL before initially checking state of your property. This had me tweaking for some time.
>
>         To get all this running properly, I also had to implement DEACTIVATE_DATA_CALL in which I send an "AT+CGACT=0,1" and then I wait for pppd service to exit (yet another property to check for). In our setup, Android always sets up the connection twice (due to some weirdness with a list of APNs changing in higher layers), so we need to have a reliable shutdown as well - sigh..
>
>         Regarding your timeout on the AT channel there is not much to say else than it seems the modem is somehow in a state where it won't answer. This is of course critical for the RIL and it has no choice other than attempting to restart. Hopefully it is caused by PDP context confusion or some other invalid chain of commands caused by the data setup stuff.
>
>         - Henrik
>         ---
>         Henrik Uhrenfeldt
>         Chief Software Engineer
>         Ixonos Denmark ApS
>         Niels Jernes Vej 10,
>         DK-9220 Aalborg Ø, Denmark
>         mobile +45 4030 2607
>         email: henrik.uhrenfe...@ixonos.com
> ...
>
> læs mere »- Skjul tekst i anførselstegn -
>
> - Vis tekst i anførselstegn -

M&M stich

unread,
May 21, 2010, 5:14:11 PM5/21/10
to Uhrenfeldt Henrik, android-porting
Henrik,
I did not have the mmsc set in our apn, and Android was complaining about that.  So I set that to what I hope is the correct value.

At the same time the other guy working on the project was looking at the "apn changed" - reconnect issue.  We set
type="*" in the APN.  Android no longer resets the connection due to "apn changed" when it connects the first time.   I believe it was the type field that fixed it.
Mike

ms12

unread,
May 25, 2010, 11:40:08 AM5/25/10
to android-porting, Uhrenfeldt Henrik, Robert Greenwalt
Hi Henrik,
Well, I'm getting pretty close. The ppp connections starts and stops
gracefully. The radio log looks pretty clean, but I just cannot get
the browser to start. It often pops up a window saying unable to find
web page, or "Data connectivity problem". Here is the end of the log
when I tried starting the browser. Any suggestions on where to
look?
Thanks Mike

D/dalvikvm( 977): GC freed 3969 objects / 288312 bytes in 45ms
D/KeyguardViewMediator( 846): wakeWhenReadyLocked(82)
D/KeyguardViewMediator( 846): handleWakeWhenReady(82)
D/KeyguardViewMediator( 846): pokeWakelock(5000)
E/power ( 846): Failed setting last user activity: g_error=0
D/KeyguardViewMediator( 846): pokeWakelock(5000)
I/ActivityManager( 846): Start proc com.android.inputmethod.latin for
service com.android.inputmethod.latin/.LatinIME: pid=1712 uid=10001
gids={3003, 1015}
I/ARMAssembler( 846): generated
scanline__00000077:03545404_00000A04_00000000 [ 29 ipp] (51 ins) at
[0x213368:0x213434] in 244140 ns
D/dalvikvm( 1712): Trying to load lib /system/lib/libjni_latinime.so
0x49ba6db8
D/dalvikvm( 1712): Added shared lib /system/lib/libjni_latinime.so
0x49ba6db8
I/WindowManager( 846): Checking dispatch to: Window{49cb3a58 Keyguard
paused=false}
I/WindowManager( 846): Not visible!
I/WindowManager( 846): Checking dispatch to: Window{49cb1370
StatusBar paused=false}
I/WindowManager( 846): Checking dispatch to: Window{49d48a50
StatusBarExpanded paused=false}
I/WindowManager( 846): Not visible!
I/WindowManager( 846): Checking dispatch to: Window{49d13618
TrackingView paused=false}
I/WindowManager( 846): Not visible!
I/WindowManager( 846): Checking dispatch to: Window{49bb7b28
com.android.launcher/com.android.launcher.Launcher paused=false}
D/AlarmManagerService( 846): Kernel timezone updated to 300 minutes
west of GMT
D/SystemClock( 896): Setting time of day to sec=1274801005
I/ActivityManager( 846): Stopping service:
com.android.calendar/.AlertService
D/dalvikvm( 1001): GC freed 2137 objects / 141664 bytes in 129ms
D/AlarmManagerService( 846): Kernel timezone updated to 300 minutes
west of GMT
D/SystemClock( 896): Setting time of day to sec=1274801005
I/WindowManager( 846): Checking dispatch to: Window{49cb3a58 Keyguard
paused=false}
I/WindowManager( 846): Not visible!
I/WindowManager( 846): Checking dispatch to: Window{49cb1370
StatusBar paused=false}
I/WindowManager( 846): Checking dispatch to: Window{49d48a50
StatusBarExpanded paused=false}
I/WindowManager( 846): Not visible!
I/WindowManager( 846): Checking dispatch to: Window{49d13618
TrackingView paused=false}
I/WindowManager( 846): Not visible!
I/WindowManager( 846): Checking dispatch to: Window{49bb7b28
com.android.launcher/com.android.launcher.Launcher paused=false}
I/ActivityManager( 846): Stopping service:
com.android.calendar/.AlertService
I/ActivityManager( 846): Starting activity: Intent
{ act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] flg=0x10200000
cmp=com.android.browser/.BrowserActivity }
I/ActivityManager( 846): Start proc com.android.browser for activity
com.android.browser/.BrowserActivity: pid=1733 uid=10010 gids={3003}
D/installd( 779): DexInv: --- BEGIN '/system/app/Browser.apk' ---
D/dalvikvm( 1747): DexOpt: load 98ms, verify 462ms, opt 7ms
D/installd( 779): DexInv: --- END '/system/app/Browser.apk' (success)
---
I/ActivityThread( 1733): Publishing provider browser:
com.android.browser.BrowserProvider
E/ActivityThread( 1733): Failed to find provider info for
com.google.settings
D/ ( 1733): unable to unlink '/data/data/com.android.browser/
shared_prefs/com.android.browser_preferences.xml.bak': No such file or
directory (errno=2)
W/ActivityManager( 846): Unable to start service Intent
{ cmp=com.google.android.googleapps/.GoogleLoginService }: not found
I/ARMAssembler( 846): generated
scanline__00000077:03515104_00000000_00000000 [ 27 ipp] (41 ins) at
[0x287a10:0x287ab4] in 213623 ns
I/ARMAssembler( 846): generated
scanline__00000077:03515104_00001001_00000000 [ 64 ipp] (84 ins) at
[0x287b18:0x287c68] in 244140 ns
D/dalvikvm( 1733): GC freed 3113 objects / 274848 bytes in 101ms
D/dalvikvm( 846): GC freed 15034 objects / 713720 bytes in 72ms
D/dalvikvm( 910): GC freed 1650 objects / 85608 bytes in 47ms
D/dalvikvm( 846): GC freed 18004 objects / 854480 bytes in 65ms
D/dalvikvm( 846): GC freed 16651 objects / 789576 bytes in 64ms
E/power ( 846): Failed setting last user activity: g_error=0
W/ActivityManager( 846): Unable to start service Intent
{ act=android.accounts.IAccountsService
cmp=com.google.android.googleapps/.GoogleLoginService }: not found
E/LockPatternKeyguardView( 846): Failed to bind to GLS while checking
for account
D/dalvikvm( 846): GC freed 634 objects / 26968 bytes in 51ms
D/KeyguardViewMediator( 846): wakeWhenReadyLocked(82)
D/KeyguardViewMediator( 846): handleWakeWhenReady(82)
D/KeyguardViewMediator( 846): pokeWakelock(5000)
E/power ( 846): Failed setting last user activity: g_error=0
I/ActivityManager( 846): Displayed activity
com.android.browser/.BrowserActivity: 63377 ms (total 63377 ms)
W/KeyCharacterMap( 846): No keyboard for id 0
W/KeyCharacterMap( 846): Using default keymap: /system/usr/keychars/
qwerty.kcm.bin
D/KeyguardViewMediator( 846): pokeWakelock(5000)
W/InputManagerService( 846): Window already focused, ignoring focus
gain of: com.android.internal.view.IInputMethodClient$Stub
$Proxy@49bd37c8
D/dalvikvm( 846): GC freed 15385 objects / 731184 bytes in 63ms
D/dalvikvm( 846): GC freed 23556 objects / 1114880 bytes in 71ms
E/power ( 846): Failed setting last user activity: g_error=0
W/ActivityManager( 846): Unable to start service Intent
{ act=android.accounts.IAccountsService
cmp=com.google.android.googleapps/.GoogleLoginService }: not found
E/LockPatternKeyguardView( 846): Failed to bind to GLS while checking
for account
D/dalvikvm( 846): GC freed 4595 objects / 428736 bytes in 67ms
E/browser ( 1733): onReceivedError -7 http://www.google.com/m?client=ms-android-google
The server failed to communicate. Try again later.
E/OpenSSLSocketImpl( 1733): Unknown error 5 during connect
E/Gears-J ( 1733): Connection IO exception
E/Gears-J ( 1733): java.io.IOException: SSL handshake failure: I/O
error during system call, Unknown error: 0
E/Gears-J ( 1733): at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native
Method)
E/Gears-J ( 1733): at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:
305)
E/Gears-J ( 1733): at
org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:
92)
E/Gears-J ( 1733): at
org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:
321)
E/Gears-J ( 1733): at
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:
129)
E/Gears-J ( 1733): at
org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:
164)
E/Gears-J ( 1733): at
org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:
119)
E/Gears-J ( 1733): at
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:
348)
E/Gears-J ( 1733): at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:
555)
E/Gears-J ( 1733): at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:
487)
E/Gears-J ( 1733): at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:
465)
E/Gears-J ( 1733): at
android.webkit.gears.ApacheHttpRequestAndroid
$Connection.run(ApacheHttpRequestAndroid.java:180)
E/Gears-J ( 1733): at java.lang.Thread.run(Thread.java:1060)
D/KeyguardViewMediator( 846): wakeWhenReadyLocked(82)
D/KeyguardViewMediator( 846): handleWakeWhenReady(82)
D/KeyguardViewMediator( 846): pokeWakelock(5000)
E/power ( 846): Failed setting last user activity: g_error=0
W/KeyCharacterMap( 846): No keyboard for id 0
W/KeyCharacterMap( 846): Using default keymap: /system/usr/keychars/
qwerty.kcm.bin
D/KeyguardViewMediator( 846): pokeWakelock(5000)
E/ActivityThread( 896): Failed to find provider info for
android.server.checkin
W/Checkin ( 896): Can't update stat PHONE_RADIO_RESETS:
java.lang.IllegalArgumentException: Unknown URL content://android.server.checkin/stats
I/ActivityManager( 846): Stopping service:
com.android.mms/.transaction.SmsReceiverService
I/ActivityManager( 846): Stopping service:
com.android.mms/.transaction.SmsReceiverService
D/dalvikvm( 846): GC freed 21575 objects / 1007240 bytes in 71ms


On May 21, 2:52 am, Uhrenfeldt Henrik <henrik.uhrenfe...@ixonos.com>
wrote:
> Hi Mike,
>
> Hehe... I had the same feeling.
>
> My DEACTIVATE does not work 100% smooth, but it works. I basically set AT+CGACT=0,1 and wait for PPPD to die from natural causes. As far as I remember, it does in fact call ip-down. I do not attempt to stop the service manually (via init.svc.pppd_gprs), neither do I care about the untracked pid (which I think I get as well).
>
> Regarding breaking out ofdatamode, my modem automatically terminates the PPPconnectionwhen it receives the AT+CGACT=0,1, so I am not doing anything like the '+++'...
>
> One thing though - I cannot seem to get the exit code from pppd properly, but at some point I gave up and decided I could live without it. Since I was able to setup thedataconnectionseveral times in a row, I concluded it was good enough :-)
>
> - Henrik
>
> -----Original Message-----
> From: M&M stich [mailto:mstic...@gmail.com]
> Sent: 20. maj 2010 22:26
> To: Uhrenfeldt Henrik
>
> Cc: android-porting
> Subject: Re:Dataconnectionvia cell modem (GPRS)
>
> Hi Henrik!
> @#$%^^!!  This is driving me nuts.
>
> Ok, I lengthened the timeout, takes around 14 Sec for me.  I also see the DEACTIVATE due to APN changed.  But the deactivate does not work.
>
> Looks like ip-down does not get called. If I manually do a stop on the service, it does not get called. If I kill pid from the console, then it does get called.  I'm relying on it to set the same property I use to check startup to "no" instead of "yes".  I suppose I could use the init.svc.pppd_gprs property instead, but I thought ip-down should get called.   By the way, the shell that ran ip-up does not go away after it runs.  When I stop pppd_gprs, I get an "untracked pid exited" from it.
>
> BUT,  the chat disconnect script is not running correctly either, it seems. It needs to do the '+++' to break out ofdatamode.  The modem requires 1 sec before and 1 sec after of quiet time for this to work.  I set verbose on the chat command, but it did not show me anything.  I may need to figure out how to trace it.
> Thanks
> Mike
>
> On Thu, May 20, 2010 at 10:29 AM, Uhrenfeldt Henrik <henrik.uhrenfe...@ixonos.com> wrote:
>
>         Hi Mike!
>
>         I bet 2 seconds is not near enough.. I have a timeout of 15 seconds to wait for the PPP to get up properly - in average it takes around 7-8 seconds. Then probably what goes wrong next is the fact that the needed properties were set in the last run, so your SETUP_DATA_CALL finishes quickly, but meanwhile you may have confused the modem with another AT+CGDCONT..
>
>         You have to get the first attempt to work and be sure that there are no race conditions with setting/reading properties. For example - if you set your custom property to something like "initing" in the beginning of the pppd service and wait for it to become "up", the next time you run SETUP_DATA_CALL, it will be "up" until the service is really running and setting it to "initing" - unless you do some kludgy waiting in SETUP_DATA_CALL before initially checking state of your property. This had me tweaking for some time.
>
>         To get all this running properly, I also had to implement DEACTIVATE_DATA_CALL in which I send an "AT+CGACT=0,1" and then I wait for pppd service to exit (yet another property to check for). In our setup, Android always sets up theconnectiontwice (due to some weirdness with a list of APNs changing in higher layers), so we need to have a reliable shutdown as well - sigh..
>
>         Regarding your timeout on the AT channel there is not much to say else than it seems the modem is somehow in a state where it won't answer. This is of course critical for the RIL and it has no choice other than attempting to restart. Hopefully it is caused by PDP context confusion or some other invalid chain of commands caused by thedatasetup stuff.
>
>         - Henrik
>         ---
>         Henrik Uhrenfeldt
>         Chief Software Engineer
>         Ixonos Denmark ApS
>         Niels Jernes Vej 10,
>         DK-9220 Aalborg Ø, Denmark
>         mobile +45 4030 2607
>         email: henrik.uhrenfe...@ixonos.com
>        http://www.ixonos.com
>
>         -----Original Message-----
>         From: M&M stich [mailto:mstic...@gmail.com]
>
>         Sent: 20. maj 2010 17:08
>         To: Uhrenfeldt Henrik
>         Cc: android-porting
>         Subject: Re:Dataconnectionvia cell modem (GPRS)
>
>         Hi Henrik,
>         ip-up sets a custom property last (only does some logging after that) that triggers the ril to send a response.  The ril waits 2 sec for the property, then times out and returns an error.  Android then tries again shortly thereafter, and the ril does not have to wait at all, everything is setup.
>
>         Now,when I try and start the browser, it somehow causes a timeout on the signal strength request and cause the radio to crash.  This is a new behavior.  Here is the end of the radio log, showing thedatacall being set up as described.  PDPconnection seems to have the dns correctly.  Also shows the at channel timeout somehow caused by the browser trying to start.  It does restart successfully eventually.
>         Thanks   Mike
>         ---------------------------------------------------
>         :::::
>         D/GSM     (  955): SIMRecords: record load complete
>         D/GSM     (  955): [GsmSimCard] Broadcasting intent SIM_STATE_CHANGED_ACTION LOADED reason null
>         D/GSM     (  955): Get PreferredAPN
>         D/GSM     (  955): [GsmDataConnectionTracker] ***trySetupData due to simLoaded
>         D/GSM     (  955): [DSAC DEB] trySetupData with mIsPsRestricted=false
>         I/GSM     (  955): Preferred APN:310410:310410:ATT, 1, 310410, wap.cingular, null, null, null, null, null, *
>         I/GSM     (  955): Waiting APN set to preferred APN
>         D/GSM     (  955): [GsmDataConnectionTracker] Create from allApns : [ATT, 1, 310410, wap.cingular, null, null, null, null, null, *]
>         D/GSM     (  955): [GsmDataConnectionTracker] Setup watingApns : [ATT, 1, 310410, wap.cingular, null, null, null, null, null, *]
>         D/GSM     (  955): [PdpConnection] DataConnection.getState()
>         D/GSM     (  955): [PdpConnection] Connecting to carrier: 'ATT' APN: 'wap.cingular' proxy: 'null' port: 'null
>         D/RILJ    (  955): [0057]> SETUP_DATA_CALL wap.cingular
>         D/RIL     (  863): onRequest: SETUP_DATA_CALL
>         D/RIL     (  863): requestingdataconnectionto APN 'wap.cingular'
>         D/RIL     (  863):  ---- Initial running status :  len : 2  Status: no
>         D/RIL     (  863):  ---- Starting service pppd_gprs -----
>         D/RIL     (  863): --- Initial Response is : 1 ; gprs ; 000.000.000.000
>         D/RIL     (  863):  ---- starting wait for property -----, len : 2  Status: no
>         D/GSM     (  955): [GsmDataConnectionTracker] setState: INITING
>         D/RIL     (  863):  ---- PPPD failed to start:  status = no , length = 2 , retry = 0
>         D/RILJ    (  955): [0057]< SETUP_DATA_CALL error: com.android.internal.telephony.CommandException: GENERIC_FAILURE
>         D/GSM     (  955): [PdpConnection] DataConnection.handleMessage()
>         E/GSM     (  955): PDP Context Init failed com.android.internal.telephony.CommandException: GENERIC_FAILURE
>         D/RILJ    (  955): [0058]> LAST_DATA_CALL_FAIL_CAUSE
>         D/RIL     (  863): onRequest: LAST_DATA_CALL_FAIL_CAUSE
>         D/RILJ    (  955): [0058]< LAST_DATA_CALL_FAIL_CAUSE error: com.android.internal.telephony.CommandException: REQUEST_NOT_SUPPORTED
>         D/GSM     (  955): [PdpConnection] DataConnection.handleMessage()
>         D/GSM     (  955): [PdpConnection] Notify PDP fail at 1274367573216 due to UnknownDataError
>         D/GSM     (  955): [GsmDataConnectionTracker] PDP setup failed UnknownDataError
>         D/GSM     (  955): [GsmDataConnectionTracker] setState: FAILED
>         D/GSM     (  955): PDP activate failed. Scheduling next attempt for 5s
>         D/GSM     (  955): NOT Posting GPRS Unavailable notification -- likely transient error
>         D/GSM     (  955): GPRS reconnect alarm. Previous state was FAILED
>         D/GSM     (  955): [GsmDataConnectionTracker] Clean upconnectiondue to simLoaded
>         D/GSM     (  955): [GsmDataConnectionTracker] setState: DISCONNECTING
>         D/GSM     (  955): [PdpConnection] DataConnection.clearSettings()
>         D/GSM     (  955): [DataConnection] Stop poll NetStat
>         D/GSM     (  955): [GsmDataConnectionTracker] setState: IDLE
>         D/GSM     (  955): [GsmDataConnectionTracker] ***trySetupData due to (unspecified)
>         D/GSM     (  955): [DSAC DEB] trySetupData with mIsPsRestricted=false
>         I/GSM     (  955): Preferred APN:310410:310410:ATT, 1, 310410, wap.cingular, null, null, null, null, null, *
>         I/GSM     (  955): Waiting APN set to preferred APN
>         D/GSM     (  955): [GsmDataConnectionTracker] Create from allApns : [ATT, 1, 310410, wap.cingular, null, null, null, null, null, *]
>         D/GSM     (  955): [GsmDataConnectionTracker] Setup watingApns : [ATT, 1, 310410, wap.cingular, null, null, null, null, null, *]
>         D/GSM     (  955): [PdpConnection] DataConnection.getState()
>         D/GSM     (  955): [PdpConnection] Connecting to carrier: 'ATT' APN: 'wap.cingular' proxy: 'null' port: 'null
>         D/RILJ    (  955): [0059]> SETUP_DATA_CALL wap.cingular
>         D/RIL     (  863): onRequest: SETUP_DATA_CALL
>         D/RIL     (  863): requestingdataconnectionto APN 'wap.cingular'
>         D/RIL     (  863):  ---- Initial running status :  len : 3  Status: yes
>         D/RIL     (  863):  ---- Starting service pppd_gprs -----
>         D/RIL     (  863): --- Initial Response is : 1 ; gprs ; 000.000.000.000
>         D/RIL     (  863):  ---- starting wait for property -----, len : 3  Status: yes
>         D/RIL     (  863):  --- PPPD started successfully; status : yes  Lengthe: 3,  Retry count : 200
>         D/RIL     (  863):  ---- Local IP read as :   10.129.140.89  length : 13 -----
>         D/RIL
>
> ...
>
> read more »

Uhrenfeldt Henrik

unread,
May 28, 2010, 5:20:57 AM5/28/10
to ms12, android-porting, Robert Greenwalt
Hi Mike,

Am I right in assuming that you cannot use the browser no matter how you supply internet connectivity for Android? Even if it is USB Ethernet, manual PPP, etc.?

Normally Android wants to do a Google login (probably to integrate nicely with all the Google services), but in the source build, vital Google closed-source components are missing for this to happen - and as you can see in the log, it is not possible to complete the Google login:

{ cmp=com.google.android.googleapps/.GoogleLoginService }: not found

I think this is the reason browser dies on you... It may be a long shot, but I have the following property set in my init.rc:

setprop ro.config.nocheckin yes

If I remember correctly, the property above disables the login behavior.

---
Henrik Uhrenfeldt
Chief Software Engineer
Ixonos Denmark ApS
Niels Jernes Vej 10,
DK-9220 Aalborg Ø, Denmark
mobile +45 4030 2607

email: henrik.u...@ixonos.com

Mikkel Christensen

unread,
May 28, 2010, 5:41:13 AM5/28/10
to android-porting
Hi,

This could also be a DNS problem. If the DNS is not configured in the
Android property system the browser wont work.
Please run "getprop" in the console and post the result here. You
should see some DNS servers configured.

Best regards,
Mikkel


On May 28, 11:20 am, Uhrenfeldt Henrik <henrik.uhrenfe...@ixonos.com>
wrote:
> Hi Mike,
>
> Am I right in assuming that you cannot use the browser no matter how you supply internet connectivity for Android? Even if it is USB Ethernet, manual PPP, etc.?
>
> Normally Android wants to do a Google login (probably to integrate nicely with all the Google services), but in the source build, vital Google closed-source components are missing for this to happen - and as you can see in the log, it is not possible to complete the Google login:
>
> { cmp=com.google.android.googleapps/.GoogleLoginService }: not found
>
> I think this is the reason browser dies on you... It may be a long shot, but I have the following property set in my init.rc:
>
>     setprop ro.config.nocheckin yes
>
> If I remember correctly, the property above disables the login behavior.
>
> ---
> Henrik Uhrenfeldt
> Chief Software Engineer
> Ixonos Denmark ApS
> Niels Jernes Vej 10,
> DK-9220 Aalborg Ø, Denmark
> mobile +45 4030 2607
> email: henrik.uhrenfe...@ixonos.comhttp://www.ixonos.com
> E/browser ( 1733): onReceivedError -7http://www.google.com/m?client=ms-android-google
> ...
>
> read more »

M&M stich

unread,
May 28, 2010, 4:28:01 PM5/28/10
to Uhrenfeldt Henrik, android-porting
Hi Henrik,
I tried the nocheckin property, I think it eliminated the messages about failing to login, but did not fix the fundamental problem.  Not trying to do a Google login is good (thanks for the pointer), but not sufficient.  I suspect I do not have the Google login service, nor a provider for the "android.server.checkin" which it also keeps wanting to do, but can't. 
E.g. E/ActivityThread(  896): Failed to find provider info for android.server.checkin

I have no way to check internet connectivity independent of the cell modem.  It is not wired to anything.  I suppose I could purchase a USB Ethernet device, but I don't currently have one. 

Mike

Uhrenfeldt Henrik

unread,
May 31, 2010, 7:30:38 AM5/31/10
to M&M stich, android-porting
Hi Mike,

I'm beginning to run out of ideas here. It may be a long shot, but try wiping your cache & data partition if you do not do so on a regular basis; there may be stale data here causing the browser activity to fail..

I really think you have to verify that you can actually transfer data over the connection you have... Maybe ping is not sufficient; try to ssh to some external host, port wget to the platform for testing, etc.

Did you double check the DNS addresses as suggested by Mikkel?

---
Henrik Uhrenfeldt
Chief Software Engineer
Ixonos Denmark ApS
Niels Jernes Vej 10,
DK-9220 Aalborg Ø, Denmark
mobile +45 4030 2607
email: henrik.u...@ixonos.com
http://www.ixonos.com


-----Original Message-----
From: M&M stich [mailto:msti...@gmail.com]

M&M stich

unread,
Jun 2, 2010, 8:40:32 AM6/2/10
to Uhrenfeldt Henrik, android-porting, Robert Greenwalt
Well it is working now, many thanks to all who answered questions.

(Sigh ...)  When you have a modem that has a maximum frame size of 127, don't set the mux'ing software with -f 128
Mike

ran

unread,
Jun 2, 2010, 11:24:02 AM6/2/10
to android-porting
Hello
Will the result of the implementation work reflected in this thread be
released for the Android community either as an extension to the
generic RIL or as an alternative RIL implementation ?
Please, any howto!!!

On 2 июн, 16:40, "M&M stich" <mstic...@gmail.com> wrote:
> Well it is working now, many thanks to all who answered questions.
>
> (Sigh ...)  When you have a modem that has a maximum frame size of 127,
> don't set the mux'ing software with -f 128
> Mike
>
> On Mon, May 31, 2010 at 6:30 AM, Uhrenfeldt Henrik <
>
> henrik.uhrenfe...@ixonos.com> wrote:
> > Hi Mike,
>
> > I'm beginning to run out of ideas here. It may be a long shot, but try
> > wiping your cache & data partition if you do not do so on a regular basis;
> > there may be stale data here causing the browser activity to fail..
>
> > I really think you have to verify that you can actually transfer data over
> > the connection you have... Maybe ping is not sufficient; try to ssh to some
> > external host, port wget to the platform for testing, etc.
>
> > Did you double check the DNS addresses as suggested by Mikkel?
>
> > ---
> > Henrik Uhrenfeldt
> > Chief Software Engineer
> > Ixonos Denmark ApS
> > Niels Jernes Vej 10,
> > DK-9220 Aalborg Ø, Denmark
> > mobile +45 4030 2607
> >        email: henrik.uhrenfe...@ixonos.com
> >        http://www.ixonos.com
>
> >        -----Original Message-----
>
> ...
>
> продолжение »

Huseyin Bashan

unread,
Jun 3, 2010, 4:11:30 AM6/3/10
to android-porting

Hello,

Does anyone know  any information about minumum and optimum Android 2.2 (froyo) hardware requirements?

Example:

We know Qualcomm Snapdragon ( nexus one SoC) can support Froyo with flash 10.1

What about other SoC?

example;
OMAP
Braodcom
Marwell
Wondermadia..
etc..

Second question is

if Soc and HW  spec supports Froyo with adobe flash 10.1. What kind of changes and additions are required on the BSP and SoC platform source ( SW ) of the SoC? 

Huseyin Bashan
thank you very much



Huseyin Bashan

unread,
Jun 3, 2010, 6:16:16 AM6/3/10
to android...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages