[PLUG] [Dev] Adding BSNL EVDO detection to NetworkManager
Chetan S
cshring at gmail.com
Tue Dec 9 15:27:13 IST 2008
Hi All,
I know this belongs to Network Manager, however I thought I'll
generate some buzz here before I put it in there.
Issue :
------------
BSNL EVDO modem was not detected by NetworkManager on Ubuntu Intrepid
( 8.10 ) though its automatically recognized by hal.
Here's what I did.
1. hal-device | less
Searched for Qual [ From what's been posted on net, its a Qualcomm device ].
Three entries listed - http://pastebin.com/f718a05cb
2. There's nothing of great use to me other than the following lines -
a. Its a CDMA device ( i should've searched for CDMA !! )
b. the driver is moto-modem
Funnily the /dev/ttyUSB0 is missing in the three listings.
3. I searched for CDMA this time...
tada !
Here's what listed - http://pastebin.com/f70d1f630
4. Well what to do now ? I went ahead and sourced the code from
http://svn.gnome.org/svn/NetworkManager/trunk
Loaded into cscope and searched for the string cdma and here's what --
f nm-hal-manager.c 320 type_cdma = TRUE;
opening it up found it was a function that identifies a cdma device by
various means, mainly by listing the capabilities variable from hal
object.
Here in BSNL EVDO / moto-modem case its sad since the hal listing show
that, capabilities don't list cdma , as its capability at all !!!
[snippet]
capabilities = libhal_device_get_property_strlist (priv->hal_ctx, udi,
"modem.command_sets", NULL);
/* 'capabilites' may be NULL */
for (iter = capabilities; iter && *iter; iter++) {
if (!strcmp (*iter, "GSM-07.07")) {
type_gsm = TRUE;
break;
}
if (!strcmp (*iter, "IS-707-A")) {
type_cdma = TRUE;
break;
}
}
g_strfreev (capabilities);
/* Compatiblity with the pre-specification bits */
if (!type_gsm && !type_cdma) {
capabilities = libhal_device_get_property_strlist
(priv->hal_ctx, udi, "info.capabilities", NULL);
for (iter = capabilities; *iter; iter++) {
if (!strcmp (*iter, "gsm")) {
type_gsm = TRUE;
break;
}
if (!strcmp (*iter, "cdma")) {
type_cdma = TRUE;
break;
}
}
g_strfreev (capabilities);
}
[/snippet ]
Now my surmise - adding a check condition for bsnl evdo modem based on
the hal listing will do the trick. NM's ppp infrastructure will then
use the pppd to bring it up.
The question - which string from the hal listing will make most sense ?
If anyone familiar with D-Bus , Hal programming, NetworkManager can
they step in and explain if the line of reasoning is fine.
Others are free to pitch in too !!
regards,
C
P.S : Sorry for the badly formatted post
More information about the Plug-mail
mailing list