Da fehlen dir garantiert die "
root" rechte. Tipp mal "id". Fuer alle interessierten: mein Ad-Hoc-Connect-Script funktioniert mittlerweise recht gut, ich paste es mal hier hin:
Code:
#!/system/bin/sh
# Fixed IP config, use ADR=dhcp otherwise
ADR=104.198.65.66
MSK=255.0.0.0
DNS=67.223.248.57
# Wifi config, BSSID seems to be required. Use "r" command to show scan_results
# Do "iwlist wlan0 freq" on PC for channel list, ch1=2412, ch11=2462, ch13=2472
ESSID="olsr.freifunk.net"
BSSID="02:ca:ff:ee:ba:be"
FREQU=2457
# Neighbour for ping test ("P" command)
NEIGH=104.198.65.65
DEV=eth0
# Note: the /system/bin/sh has no test command
# so we use "case;easc" instead of "if;then;fi"
timer () {
case "$time" in
0)return 1;;
esac
time=$((time-1))
}
pidof () {
for cmd in /proc/*/cmdline
do
case "$(cat $cmd)" in
$1*)
pid=${cmd#/proc/}
echo ${pid%%/*}
return
;;
esac
done
}
state () {
for i in $(wpa_cli -i $DEV -p /data/misc/wifi status)
do
case "$i" in
wpa_state=*)echo ${i#*=};;
esac
done
}
# returns network number, creates new entry if ssid unknown
getnetnum () {
ssid=$1
net=none
IFS="
"
for i in $(wpa_cli -i $DEV -p /data/misc/wifi list_network)
do
unset IFS
set $i
case "$2" in
$ssid)net=$1;;
esac
done
case "$net" in
none)
net=$(wpa_cli -i $DEV -p /data/misc/wifi add_network)
;;
esac
echo $net
}
# ssid bssid frequency
adhoc () {
net=$(getnetnum $1)
pid=$(getprop dhcp.$DEV.pid)
cmd=$(cat /proc/$pid/cmdline 2>&-)
# Note: saved /data/misc/wifi/bcm_supp.conf not sufficient for function
# We always need to (re-)set the parameters with the following commands.
wpa_cli -i $DEV -p /data/misc/wifi set_network $net mode 1 >&-
wpa_cli -i $DEV -p /data/misc/wifi set_network $net ssid \"$1\" >&-
wpa_cli -i $DEV -p /data/misc/wifi set_network $net bssid $2 >&-
wpa_cli -i $DEV -p /data/misc/wifi set_network $net frequency $3 >&-
wpa_cli -i $DEV -p /data/misc/wifi set_network $net key_mgmt NONE >&-
wpa_cli -i $DEV -p /data/misc/wifi enable_network $net >&-
wpa_cli -i $DEV -p /data/misc/wifi ap_scan 2 >&-
wpa_cli -i $DEV -p /data/misc/wifi select_network $net >&-
time=5
while timer
do
state=$(state)
case "$state" in
COMPLETED)time=0;;
DISCONNECTED|ASSOCIATING)sleep 1;;
*)
echo "Error: state is $state" 2>&-
exit 1
;;
esac
done
echo $state
case "$state" in
COMPLETED);;
*)exit 1;;
esac
case "$ADR" in
dhcp|DHCP);;
*)
# Using a fixed IP config
case "$cmd" in
/system/bin/dhcpcd-*)
# Active dhcpcd, wpa_supp starts new dhcpcd, wait for that
time=5
while timer
do
case "$(getprop dhcp.$DEV.pid)" in
$pid)sleep 1;;
*)time=0;;
esac
done
;;
esac
case "$(cat /proc/$(getprop dhcp.$DEV.pid)/cmdline 2>&-)" in
/system/bin/dhcpcd-*)
echo "Stopping dhcpcd ($(getprop dhcp.$DEV.pid))"
kill $(getprop dhcp.$DEV.pid)
;;
esac
# Fake a running dhcpcd
setprop dhcp.$DEV.pid $(pidof /system/bin/wpa_supplicant)
setprop init.svc.dhcpcd running
setprop dhcp.$DEV.ipaddress $ADR
setprop dhcp.$DEV.mask $MSK
setprop dhcp.$DEV.dns1 $DNS
ifconfig $DEV $(getprop dhcp.$DEV.ipaddress) netmask $(getprop dhcp.$DEV.mask)
setprop dhcp.$DEV.reason BOUND
setprop dhcp.$DEV.result ok
;;
esac
echo "Ok."
}
case "$1" in
l)
wpa_cli -i $DEV -p /data/misc/wifi list_network
;;
o)
shift
/data/local/bin/olsrd $*
;;
O)
kill $(pidof /data/local/bin/olsrd)
kill -9 $(pidof /data/local/bin/olsrd)
;;
p)
ping 151.1.1.1
;;
P)
ping $NEIGH
;;
s)
wpa_cli -i $DEV -p /data/misc/wifi status
;;
S)
wpa_cli -i $DEV -p /data/misc/wifi config_save
;;
[0-9])
wpa_cli -i $DEV -p /data/misc/wifi select_network $1
;;
w)
wpa_cli -i $DEV -p /data/misc/wifi
;;
h)
cat<<EOF
Script to connect to wireless lan in ad-hoc (IBSS) mode.
The following single char commands are available:
l lists configured network entries
o starts olsrd (ad-hoc routing daemon)
O stops olsrd (ad-hoc routing daemon)
p ping test to internet (ctrl-c to stop)
P ping test to neighbour (ctrl-c to stop)
s shows current wpa_supplicant status
S save config, adds adhoc entry to java wifi settings
[num] manually activate network by number
w interactively use wpa_cli command line
h show this help.
(empty) start ad-hoc wifi mode
You need to switch Wifi off/on to return to normal operation.
You need superuser rights ("root access") to execute. For this,
you may create a script in /system/bin to callup this script,
e.g. su -c "$0 \$*" (with quotes as shown!)
EOF
;;
*)
adhoc $ESSID $BSSID $FREQU
;;
esac
exit 0