View Single Post
Posts: 2,152 | Thanked: 1,490 times | Joined on Jan 2006 @ Czech Republic
#5
for os2007 there is a workaround for non-working DUMMY connection type mentioned in blog of some clever guy, just setup 'dummy' ad-hoc wi-fi connection with manual ip address configuration and everything zeroed (to not to search for dhcp server and also to not to assign any IP address). This is done by clicking 'Advanced' button in connection setup and unchecking 'Auto-retrieve IP address' check box in 'IP Addresses' tab.

Connect it and then in the pan setup script shutdown wi-fi to save power (ad-hoc is power killer, wlan power saving mode is completely disabled in ad-hoc mode).

Here is my pan setup script modified for bringing such ad-hoc dummy connection down (see dummy_wlan_down function)

Code:
#!/bin/sh
# use gainroot to become root and relaunch itself
if [ `id -u` != 0 ] ; then
#if not already root, call itself as root
        exec sudo gainroot <<EOF
exec $0 $*
EOF
        exit $?
fi
# real script follows
BTADDR='00:16:41:B7:B9:07'
BTNAME="FRANTA"
IP=192.168.2.2
GW=192.168.2.1
NS=10.6.101.1
IFACE=bnep0
PAN_ROLE=GN # remote PAN role, one of PANU, NAP, GN

#thanks to inz on #maemo IRC channel for this
infoprint(){
dbus-send >/dev/null 2>&1 --system --print-reply --dest=com.nokia.statusbar /com/nokia/statusbar com.nokia.statusbar.system_note_infoprint "string:$*" &
}

dummy_wlan_down(){
if ifconfig wlan0 | grep -q "UP BROADCAST RUNNING" ; then
# OK wlan is up, do we have IP set up? if not (=our dummy ad-hoc) bring wlan0 down
ifconfig wlan0 | grep -q "inet addr" || ifconfig wlan0 down
fi
}

bnep_start(){
dummy_wlan_down
#insmod just to be sure
insmod /mnt/initfs/lib/modules/current/bnep.ko
#start PAN Bluetooth connection
pand --connect $BTADDR -d $PAN_ROLE
# wait for the interface created by pand
s=60
echo -n "Waiting $s secs for $IFACE"
while [ $s -gt 0 ] ; do
        ifconfig $IFACE >/dev/null 2>&1 && break
        s=$((s-1))
        [ -t 1 ] && echo -n "."
        sleep 1
done
echo
if ifconfig $IFACE >/dev/null 2>&1 ; then
# bring it up
echo "OK, bringing $IFACE up"
ifconfig $IFACE $IP up
route add default gw $GW
echo "nameserver $NS" >/tmp/resolv.conf.lo
    [ -t 1 ] || infoprint "Connected to $BTNAME"
else
    echo "Error: $IFACE not available."
    [ -t 1 ] || infoprint "Connection failed"
fi
}

bnep_stop(){
echo "OK, bringing $IFACE down"
echo -n '' >/tmp/resolv.conf.lo
pand -K
sleep 1
rmmod bnep
[ -t 1 ] || infoprint "Disconnected"
}

COMMAND=$1
if [ "$COMMAND" = "" ] ; then
    if ifconfig $IFACE >/dev/null 2>&1 ; then
        COMMAND=stop
    else
        COMMAND=start
    fi
fi

case $COMMAND in
    start)      bnep_start ;;
    stop)       bnep_stop ;;
esac
it is still two step process
1. connect to dummy ad-hoc connection
2. execute bnep setup script (from menu shortcut or osso-xterm)

1. disconnect dummy ad-hoc connection
2. execute bnep setup script

example menu shortcut setup script :
Code:
#!/bin/sh
if [ `id -u` != 0 ] ; then
#if not already root, call itself as root
        exec sudo gainroot <<EOF
exec $0 $*
EOF
        exit $?
fi
#real script follows

cd `dirname $0`
SHORTCUT=franta-bnep.desktop
SHORTCUT_NAME="PAN connection to FRANTA"
SHORTCUT_SCRIPT=`pwd`/franta-bnep

cat >$SHORTCUT <<EOF
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=$SHORTCUT_NAME
X-Osso-Type=application/x-executable
Exec=$SHORTCUT_SCRIPT
EOF
mv $SHORTCUT /usr/share/applications/hildon/

Last edited by fanoush; 2007-06-14 at 07:22.
 

The Following User Says Thank You to fanoush For This Useful Post: