Re: Modem Initialization



On Mon, 2011-04-18 at 11:18 +0200, Vincenzo Romano wrote:
> 2011/4/18 Vincenzo Romano <vincenzo romano notorand it>:
> > 2011/4/18 Vincenzo Romano <vincenzo romano notorand it>:
> >> 2011/4/15 Dan Williams <dcbw redhat com>:
> >>> On Fri, 2011-04-15 at 12:37 +0200, Vincenzo Romano wrote:
> >>>> 2011/4/14 Dan Williams <dcbw redhat com>:
> >>>> > On Thu, 2011-04-14 at 16:20 +0200, Vincenzo Romano wrote:
> >>>> >> 2011/4/14 Aleksander Morgado <aleksander lanedo com>:
> >>>> >> >
> >>>> >> >> >> > Where on earth happens the modem initialization in NetWorkmanager?
> >>>> >> >> >> > My interest is for GSM/3G modems as well as for POTS/ISDN modems.
> >>>> >> >> >> > I've tried to browse the source code but it's quite difficult.
> >>>> >> >> >> >
> >>>> >> >> >>
> >>>> >> >> >> What I've found so far is that the initialization is done in the modemmanager.
> >>>> >> >> >> It looks like it's hardcoded, which looks quite weird to me.
> >>>> >> >> >> I do need to make some extra optional initialization: is there any
> >>>> >> >> >> hook for such a
> >>>> >> >> >> need?
> >>>> >> >> >
> >>>> >> >> > ModemManager has some generic setup steps, plus 'plugins' for each
> >>>> >> >> > modem/vendor known to make things differently. If your modem needs
> >>>> >> >> > specific AT commands during initialization, you'll probably need to
> >>>> >> >> > develop a new plugin for it.
> >>>> >> >> >
> >>>> >> >> > Cheers,
> >>>> >> >>
> >>>> >> >> Among other things, I'd need to harvest the localization information (AT+CREG)
> >>>> >> >> from GSM/3G modems. 99.999% of such modems implement it but I don't see
> >>>> >> >> how to do it.
> >>>> >> >>
> >>>> >> >> Any idea?
> >>>> >> >
> >>>> >> > I believe the generic plugin already harvests location area code and
> >>>> >> > cell ID whenever available in the AT+CREG? reply. Although I never tried
> >>>> >> > it myself, you can possibly use the GetLocation() method in the
> >>>> >> > org.freedesktop.ModemManager.Modem.Location interface (once enabled with
> >>>> >> > the Enable() method).
> >>>> >> >
> >>>> >> > Cheers!
> >>>> >>
> >>>> >> That sounds great. But also needs that I have to write my own D-Bus
> >>>> >> code in order
> >>>> >> to enable and retrieve the localization data (lac/ci).
> >>>> >
> >>>> > Ok, what exactly are you trying to do here?  If you can explain that,
> >>>> > then maybe we can say what the best course of action here is.  What
> >>>> > specific initialization commands do you need to send?
> >>>> >
> >>>> > Yes, MM exposes location information via the D-Bus interface, because
> >>>> > that's how *all* of MM's interaction with the system works, via D-Bus.
> >>>> >
> >>>> >> And, finally, for the other things I need to do there's no way at all.
> >>>> >
> >>>> > Such as?  What kinds of things do you need to do?
> >>>> >
> >>>> > Dan
> >>>> >
> >>>> >> I've given a look at the modemmanager code and there seems to be no
> >>>> >> hook available
> >>>> >> to send AT commands before the connection or after it ended.
> >>>>
> >>>> For mobile boradband I need to get some network related infos,
> >>>> localization (LAC+CI) among them.
> >>>> What I understand is that I need to write a D-BUS client to ask
> >>>> the modem manager to gather the infos on my behalf.
> >>>
> >>> That's correct.  There's a python example of this in ModemManager's
> >>> test/location.py script that enables location services on the modem and
> >>> reports the LAC/CI for you.  That should give you an idea of the D-Bus
> >>> interfaces required to get the LAC/CI out.  Note that the SIM PIN must
> >>> have been entered, and the modem enabled, before location services can
> >>> work, because no modem will register with the network until it's (a) PIN
> >>> unlocked and (b) powered up.  Regardless of whether MM is used or not.
> >>>
> >>>> But for POTS and ISDN modem I just need to make some specific
> >>>> initialization which apperas to be not possible at all.
> >>>
> >>> ModemManager does not (yet) handle POTS modems and will ignore them.
> >>> Nor does MM handle ISDN since ISDN doesn't really look like a modem and
> >>> doesn't get configured like one either.  ISDN would probably be handled
> >>> by NetworkManager instead.
> >>>
> >>
> >> Hi.
> >> Neither in ModemManager-0.4 nor in NetworkManager-0.8.3.999 there's
> >> any location.py.
> >> Could you please tell me where can I read such a piece software?
> >> That looks promising, though.
> >
> > Found!
> > It's not in the official distribution :-(
> > It's here: http://cgit.freedesktop.org/ModemManager/ModemManager/tree/test
> 
> The only thing I've got so far is:
> 
> ~ ./location.py
> Traceback (most recent call last):
>   File "./location.py", line 32, in <module>
>     proxy = bus.get_object(MM_DBUS_SERVICE, sys.argv[1])
> IndexError: list index out of range
> 
> 
> I'm not a Python programmer but it looks like there's a missing
> argument (the 1st one?) in the command line.
> Could you please direct me to where I can get more details about this program?
> I need also to understand whether this service can be requested with
> the modem being online or needs to
> be required *before* going online.

You need to do the following first:

list-modems.py  (get the object path of your modem)
enable.py <object path>
location.py <object path>

and that should work.  You need to pass the object path since if you
have two modems, the test tool has no idea which one you want to use.

Dan



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]