Hello Mstich12,
I do think those settings should work with Donut (we were inspired by a Donut
setup), but as I said, maybe they're insufficient. I never figured out from
your reply if you tested these properties and if it brought you any further?
What we did to setup PPP was to create a service "pppd_gprs" inside init.rc.
This service runs a script that:
1. Sets a custom property to let us know that PPP is starting
2. Runs pppd as:
/system/bin/pppd $* connect 'chat -v -s -f /system/etc/chatscript'
nodetach debug defaultroute ipcp-accept-remote ipcp-accept-local usepeerdns
3. Sets another customer property in which we set the exit code of ppp
Then this service is started from inside the RIL during handling of
REQUEST_SETUP_DATA_CALL, by setting the property "ctl.start" to "pppd_gprs".
This is the point that needs a security hack (at least in Éclair release), or
the service does not start at all. Let me know if you need this hack, and I can
send a patch...
Once the service is started and PPP is running (this is in fact not trivial to
figure out), we read the "net.gprs.local-ip" set by the ip-up script and passes
this back in the reply to REQUEST_SETUP_DATA_CALL.
Since PPP connectivity is handled by a script in its own service, you have the
freedom to choose exactly which tty it should connect to (in the setup above it
takes it from the service parameter stated in init.rc). That being said, you
may have to tweak a little to make sure that the needed AT commands to set up
everything is sent on the right channel. For example we setup the PDP context
using one channel (the AT+CGDCONT=1,"ip","internet" stuff) and PPP connection
via another one (the ATDT*99***1# and PPP stuff). Requirements may be different
for your modem...
Try running a "logcat -b radio" - this will give some useful log information
from Android's radio & connectivity layer...
Best regards,
---
Henrik Uhrenfeldt
Chief Software Engineer
Ixonos Denmark ApS
Niels Jernes Vej 10,
DK-9220 Aalborg Ø, Denmark
mobile +45 4030 2607
email: [email protected]
http://www.ixonos.com
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of ms12
Sent: 10. maj 2010 18:44
To: android-porting
Subject: [android-porting] Re: Data connection via cell modem (GPRS)
Thanks much for the pointers, we are certainly missing some of the
setprop's. I will try those. However, we are using Donut (1.6) and I
wonder if they will work there.
More detail:
I've not been able to see my way clear to setting up the data call via
the RIL. I think I could spawn ppp (via system(pppd ...) ??) and
connect it to the second CMUX channel when REQUEST_SETUP_DATA_CALL
happened, but I would still need to tell Android to use that channel,
not the original command connection, and I can't see how to do that.
So what I did was run pppd (with scripts and chat to dial the "ISP"
and using the alternate mux channel on /dev/pts/0) outside of the RIL
from the console. This works, the connection is established, and I
do a setprop net.dns1 manually. (I believe the scripts are doing a
"defaultroute" when pppd starts, the equivalent of route add default
gw xx.xx.xx.xx dev ppp0 I do not need to run route explicitly). At
this point I can ping www.google.com, but any attempt to start the web
browser from Android touchscreen just hangs or gives an error.
Thanks again for the help.
Mike
On May 10, 3:58 am, Uhrenfeldt Henrik <[email protected]>
wrote:
> Hi ms12,
>
> We created a setup where a 3G mobile broadband dongle works as telephony
> backend for Android Eclaire (without voice calls of course). It sounds
> similar to what you guys are doing.
>
> I believe that implementing an ip-up script in /system/etc/ppp will make
> things work:
>
> /system/etc/ppp/ip-up should contain something like this:
>
> /system/bin/setprop "net.interfaces.defaultroute" "gprs"
> /system/bin/setprop "net.gprs.dns1" "$DNS1"
> /system/bin/setprop "net.gprs.dns2" "$DNS2"
> /system/bin/setprop "net.gprs.local-ip" "$IPLOCAL"
> /system/bin/setprop "net.gprs.remote-ip" "$IPREMOTE"
> /system/bin/setprop "net.gprs.gw" "$IPREMOTE"
>
> This script will run every time PPP sets up a connection and provide Android
> with the correct gateway, dns, etc. To check that it actually ran, I added
> the following:
>
> /system/bin/log -t pppd "IP-UP TRACE for gprs"
> /system/bin/log -t pppd "DNS1 $DNS1"
> /system/bin/log -t pppd "DNS2 $DNS2"
> /system/bin/log -t pppd "local-ip $IPLOCAL"
> /system/bin/log -t pppd "remote-ip $IPREMOTE"
> /system/bin/log -t pppd "gw $IPREMOTE"
>
> ..which will throw useful information into logcat output.
>
> You can also make a /system/etc/ip-down script to change things back the way
> they were (if you have multiple ways of connecting to the internet).
>
> But how do you initiate the PPP connection? Via Android RIL or just via init?
> I am unsure of whether Android will understand that it has a GPRS packet data
> connection without proper handling in the RIL (I don't know if setting the
> above properties is sufficient)...
>
> You should be aware that in later Android releases you need some security
> hacks to allow the RIL to spawn the PPP process (which must run as root), and
> you need some tweaky plumbing to ensure proper interaction between RIL & PPP
> during handling of RIL_REQUEST_SETUP_DATA_CALL...
>
> Let me know how you get along with this.
>
> - Henrik
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Daniel Baeyens
> Sent: 10. maj 2010 10:23
> To: [email protected]
>
> Cc: android-porting
> Subject: Re: [android-porting] Data connection via cell modem (GPRS)
>
> Hi,
>
> On Mon, May 10, 2010 at 4:53 AM, ms12 <[email protected]> wrote:
> > We are trying to implement a demo of a mobile industrial sensor via
> > android. One of the goals of the demonstration is to send data to a
> > web site. The cell modem is working for SMS messages via the
> > reference RIL just fine. We would like to use GPRS to allow somewhat
> > more data. We currently have the gsm0710muxd working, with one
> > channel connected to the RIL, the other connected via chat/pppd such
> > that ping works from the Linux console. What we can't seem to figure
> > out is how to get Android to use the default route that is set up via
> > pppd. Can anybody give me some pointers on what needs to be done to
> > get Android to use the connection? Thanks much in advance.
>
> Which is the full command you are using for setting the route?
>
> Can you explain a little bit more your process?
>
> KR
> --
> Daniel Baeyens
> Warp Networks S.L. -http://www.warp.es
>
> --
> unsubscribe: [email protected]
> website:http://groups.google.com/group/android-porting
>
> --
> unsubscribe: [email protected]
> website:http://groups.google.com/group/android-porting
--
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting
--
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting