Ad-hoc wifi

  • 32 Antworten
  • Neuester Beitrag
Diskutiere Ad-hoc wifi im Root / Hacking / Modding für Samsung Galaxy im Bereich Samsung Galaxy (I7500) Forum.
L

leromarinvit

Fortgeschrittenes Mitglied
Hallo,

ich wollte mal ad-hoc WLAN-Netze angehen (für Tethering etc.); hab mir dazu die wireless_tools compiled, vor allem iwconfig ist nützlich. iwlist funktioniert leider nicht, ist aber verschmerzbar. Link: http://static.volatilevoid.net/wireless_tools.29-android.tar.gz

Mit
Code:
iwconfig eth0 mode ad-hoc
iwconfig eth0 essid whatever
ifconfig eth0 192.168.0.1
kann man prinzipiell mit einem ad-hoc-Netz verbinden. Hab als Gegenstelle den Laptop schon in der richtigen Konfiguration gehabt und ein ping laufen lassen, das hat auch ein paar mal funktioniert. Prinzipiell gehts also.

Das Problem ist allerdings, dass offenbar wpa_supplicant (oder irgendwas anderes) im Hintergrund ständig wieder auf managed mode zurückschaltet, sodass die Verbindung wenn überhaupt immer nur kurz zustande kommt. Wenn man wpa_supplicant abschießt, ist auch das Interface weg und im Menü steht WLAN als disabled.

Ich hab auch probiert, das ad-hoc-Netz in /data/misc/wifi/bcm_supp.conf einzutragen; es wird dann zwar in der Liste angezeigt, aber immer als außer Reichweite und ich kann nicht verbinden.

Hat irgendwer eine Idee, wie man dem Android-Framework die WLAN-Verwaltung wegnehmen kann? Bei den HTC-Geräten gibts ja tiwlan.ini, aber beim Galaxy nicht.
 
koy

koy

Fortgeschrittenes Mitglied
leromarinvit schrieb:
Hallo,

ich wollte mal ad-hoc WLAN-Netze angehen (für Tethering etc.); hab mir dazu die wireless_tools compiled, vor allem iwconfig ist nützlich. iwlist funktioniert leider nicht, ist aber verschmerzbar. Link: http://static.volatilevoid.net/wireless_tools.29-android.tar.gz

Mit
Code:
iwconfig eth0 mode ad-hoc
iwconfig eth0 essid whatever
ifconfig eth0 192.168.0.1
kann man prinzipiell mit einem ad-hoc-Netz verbinden. Hab als Gegenstelle den Laptop schon in der richtigen Konfiguration gehabt und ein ping laufen lassen, das hat auch ein paar mal funktioniert. Prinzipiell gehts also.

Das Problem ist allerdings, dass offenbar wpa_supplicant (oder irgendwas anderes) im Hintergrund ständig wieder auf managed mode zurückschaltet, sodass die Verbindung wenn überhaupt immer nur kurz zustande kommt. Wenn man wpa_supplicant abschießt, ist auch das Interface weg und im Menü steht WLAN als disabled.

Ich hab auch probiert, das ad-hoc-Netz in /data/misc/wifi/bcm_supp.conf einzutragen; es wird dann zwar in der Liste angezeigt, aber immer als außer Reichweite und ich kann nicht verbinden.

Hat irgendwer eine Idee, wie man dem Android-Framework die WLAN-Verwaltung wegnehmen kann? Bei den HTC-Geräten gibts ja tiwlan.ini, aber beim Galaxy nicht.

Ich rede hier bestimmt Unsinn, da ich mich nicht so viel mit WLAN unter Linux auskenne.

Aber steht nichts im init.rc, das durch eine Änderung dessen Zeile, dies bewältigen könnte?
 
L

leromarinvit

Fortgeschrittenes Mitglied
Tatsächlich!

Code:
on property:init.svc.wpa_supplicant=stopped
    stop dhcpcd

on property:init.svc.dhcpcd=stopped
        dhcpcd -k eth0
# end of wifi
Werd heute dann irgendwann probieren, das rauszunehmen.
 
L

leromarinvit

Fortgeschrittenes Mitglied
Leider doch nicht so einfach. Hab die paar Zeilen auskommentiert, aber es verhält sich immer noch gleich.

ifrename hab ich auch probiert: wenn man ein passendes /etc/iftab erstellt und eth0 umbenennt, pfuscht Android nicht mehr rein. Man kann also problemlos auf ad-hoc stellen und es bleibt auch so. Leider hab ich es aber damit dann nicht mehr geschafft tatsächlich eine Verbindung zu bekommen...

Edit: ratet mal, wie ich gerade im Internet bin :D:D:D

Hab eigentlich nichts anders gemacht als vorher, diesmal ging die Verbindung. Oder doch, aber der einzige Unterschied war, dass ich jetzt wieder den alten Kernel drauf hab, wo die Sachen in init.rc nicht auskommentiert sind.

Ist noch nicht ganz eine "One-Click-Lösung": man braucht einen Kernel mit Netfilter/iptables-Support (zb hier) und muss dann ein paar Module manuell laden:
Code:
# lsmod
ipt_MASQUERADE 2912 1 - Live 0xbf067000
iptable_nat 4936 1 - Live 0xbf064000
nf_nat 15894 2 ipt_MASQUERADE,iptable_nat, Live 0xbf05f000
nf_conntrack_ipv4 13900 3 iptable_nat,nf_nat, Live 0xbf05a000
nf_conntrack 54912 4 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4, Live 0xbf04b000
ipt_REJECT 3136 1 - Live 0xbf026000
xt_multiport 3360 0 - Live 0xbf024000
xt_owner 2944 1 - Live 0xbf022000
iptable_filter 3040 1 - Live 0xbf020000
ip_tables 10928 2 iptable_nat,iptable_filter, Live 0xbf01c000
x_tables 13896 6 ipt_MASQUERADE,iptable_nat,ipt_REJECT,xt_multiport,xt_owner,ip_tables, Live 0xbf017000

(Standard-Module:)
bcm4325 135600 0 - Live 0xbf028000
multipdp 13408 2 - Live 0xbf012000
dpram 67384 6 - Live 0xbf000000
und dann natürlich per ifconfig dem Galaxy eine IP geben, und entsprechend IP und Gateway auch am PC einstellen.

Code:
cat /etc/iftab
wlan mac xx:xx:xx:xx:xx:xx

ifconfig eth0 down
ifrename
iwconfig wlan mode ad-hoc
iwconfig wlan essid whatever
ifconfig wlan 192.168.0.1
echo 1 >/proc/sys/net/ipv4/ip_forward

Edit: natürlich das wichtigste vergessen...
iptables -t nat -A POSTROUTING -j MASQUERADE
Aber es ist mal ein Anfang, und es funktioniert!

PS: Das Galaxy ist bis jetzt das mit Abstand schnellste HSDPA-Gerät, das ich hab. Laut speedtest.net 4.18 mbps down - mindestens doppelt so schnell wie die diversen Huawei-Sticks. Und 1.21 mbps up - HSUPA funktioniert also auch gut.
 
Zuletzt bearbeitet:
R

r0w3zz

Neues Mitglied
Ich habe mal eine vielleicht ganz doofe Frage. :rolleyes:
Und zwar wie genau hast du die wireless-tools für dein Android-Phone compiliert und installiert.
Mit adb? Oder auf dem PC compiliert und dann aufs Handy?
Naja ich hoffe du kannst mir das vielleicht genauer beschreiben.

Vielen Dank schon mal und MFG
r0w3zz
 
L

leromarinvit

Fortgeschrittenes Mitglied
Auf meinem PC mit einem Cross-Compiler; aber nicht mit der Android-Toolchain, weil die libc zu verstümmelt ist für die meisten Programme. Hab einfach eine arm-eabi-glibc Toolchain genommen (die ich schon hatte) und statisch gelinkt. Source ist im Tarball dabei, die paar Makefile-Änderungen sind auch eingetragen (LDFLAGS=-static, libm abschalten).
 
S

sven-ola

Ambitioniertes Mitglied
@r0w3zz: er wird ein debian draufgemacht haben (z.b. so https://www.android-hilfe.de/forum/...ung-galaxy.40/debian-auf-dem-galaxy.4924.html).

Ich hab's noch nicht ganz hinbekommen (irgend was fehlt) aber das hier koennte helfen:

apt-get install wpasupplicant
wpa_cli -p /data/misc/wifi/
scan_results
>reply: networks in range
add_network
>reply e.g. "0"
set_network 0 ssid "olsr.freifunk.net"
set_network 0 bssid 02:ca:ff:ee:ba:be
set_network 0 key_mgmt NONE
>reply: OKOKOK
list_networks
>should list the network
enable_network 0
>reply: OK
select_network 0

Zum lesen: Red Hat Knowledgebase: What is the wpa_cli command and how do I use it?

// Sven-Ola
 
S

sven-ola

Ambitioniertes Mitglied
Got it. Wer lesen kann ist klar im Vorteil (cat /system/etc/wifi/wpa_supplicant.conf). Jedenfalls geht es auch ohne ein fettes Debian da drauf, denn der wpa_cli ist Teil der Android-Installation. Root-Shell aufrufen und dann so:

Wifi einschalten und adb shell aufrufen

su -c "/system/bin/wpa_cli -p /data/misc/wifi/"
(kommt die wpa_cli Kommandozeile)

scan_results
(Zeigt vorhandene Netze)

add_network
(Neues Netz hinzufugen, zeigt Nummer an, bei mir "2")

set_network 2 mode 1
set_network 2 ssid "olsr.freifunk.net"
set_network 2 bssid 02:ca:ff:ee:ba:be
set_network 2 frequency 2457
set_network 2 key_mgmt NONE
enable_network 2
(Das neue Netz konfigurieren)

ap_scan 2
(Das war das fehlende Teil: damit geht es dann gleich)

select_network 2
(Neues Netz auswählen, Antwort "Trying to assoc")

ap_scan 2
(Manchmal muss man das zweimal)

Und so sieht es dann bei mir aus:
Code:
$ su -c "/system/bin/wpa_cli -p /data/misc/wifi/"
wpa_cli v0.5.10                                  
Copyright (c) 2004-2008, Jouni Malinen <j@w1.fi> and contributors

This program is free software. You can distribute it and/or modify it
under the terms of the GNU General Public License version 2.         

Alternatively, this software may be distributed under the terms of the
BSD license. See README and COPYING for more details.                 


Selected interface 'eth0'

Interactive mode

> 
<2>CTRL-EVENT-SCAN-RESULTS  Ready
scan_results                     
bssid / frequency / signal level / flags / ssid
00:16:38:e6:38:31       2412    -49     [WPA2-PSK-TKIP+CCMP]    Sven-Ola
00:16:38:e6:38:31       2412    -50     [WPA2-PSK-TKIP+CCMP]    Sven-Ola
02:ca:ff:ee:ba:be       2457    -40     [IBSS]          olsr.freifunk.net
>                                                                        
<2>CTRL-EVENT-SCAN-RESULTS  Ready                                        
add_network                                                              
2                                                                        
>                                                                        
<2>CTRL-EVENT-SCAN-RESULTS  Ready                                        
set_network 2 mode 1                                                     
OK                                                                       
> set_network 2 ssid "olsr.freifunk.net"                                 
OK                                                                       
> set_network 2 bssid 02:ca:ff:ee:ba:be                                  
OK                                                                       
> set_network 2 frequency 2457                                           
OK                                                                       
> set_network 2 key_mgmt NONE                                            
OK                                                                       
> enable_network 2                                                       
OK                                                                       
> ap_scan 2                                                              
<2>CTRL-EVENT-SCAN-RESULTS  Ready                                        
OK                                                                       
> select_network 2                                                       
OK                                                                       
<2>CTRL-EVENT-STATE-CHANGE id=1 state=0                                  
>
<2>CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
<2>CTRL-EVENT-STATE-CHANGE id=-1 state=0
<2>CTRL-EVENT-STATE-CHANGE id=-1 state=2
<2>Trying to associate with SSID 'olsr.freifunk.net'
<2>CTRL-EVENT-STATE-CHANGE id=-1 state=3
<2>CTRL-EVENT-STATE-CHANGE id=2 state=4
<2>Associated with 02:ca:ff:ee:ba:be
<2>CTRL-EVENT-STATE-CHANGE id=2 state=7
<2>CTRL-EVENT-CONNECTED - Connection to 02:ca:ff:ee:ba:be completed (reauth) [id=2 id_str=]

<2>CTRL-EVENT-SCAN-RESULTS  Ready

<2>CTRL-EVENT-STATE-CHANGE id=2 state=8
<2>CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
<2>CTRL-EVENT-STATE-CHANGE id=-1 state=8

<2>CTRL-EVENT-STATE-CHANGE id=-1 state=2

<2>CTRL-EVENT-SCAN-RESULTS  Ready

<2>CTRL-EVENT-SCAN-RESULTS  Ready
Bzw auf der Debian-Seite:
Code:
root@galaxy:/# ifconfig eth0 104.198.65.66
root@galaxy:/# iwconfig
lo        no wireless extensions.

eth0      IEEE 802.11-DS  ESSID:"olsr.freifunk.net"  Nickname:""
          Mode:Ad-Hoc  Frequency:2.457 GHz  Cell: 02:CA:FF:EE:BA:BE
          Bit Rate=54 Mb/s   Tx-Power:32 dBm
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Managementmode:All packets received
          Link Quality=5/5  Signal level=-39 dBm  Noise level=-92 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

root@galaxy:/# ping 104.198.65.65
PING 104.198.65.65 (104.198.65.65) 56(84) bytes of data.
64 bytes from 104.198.65.65: icmp_seq=1 ttl=64 time=19.1 ms
^C
--- 104.198.65.65 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1ms
rtt min/avg/max/mdev = 19.190/19.190/19.190/0.000 ms
root@galaxy:/# wget -O /dev/null http://104.198.65.65/cgi-bin-dev-zero.bin
--2009-09-13 10:27:19--  http://104.198.65.65/cgi-bin-dev-zero.bin
Connecting to 104.198.65.65:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/octet-stream]
Saving to: `/dev/null'

    [                 <=>                   ] 13,269,256  1.21M/s              ^C
// Sven-Ola
 
S

skrj2e

Gast
@sven-ola
bei mir kommt nach "wpa_cli" immer so:
"Could not connect to wpa_supplicant - re-trying"
könnte es sein, dass wpa_supplicant nicht gestarted wird?
ich kann aber durch "ps" wpa_supplicant in der Liste ablesen.

noch eine Frage, braucht man noch einen Kernel mit Netfilter/iptables-Support wie leromarinvit gesagt hat, wenn man wpa_supplicant angepass hat?
 
S

sven-ola

Ambitioniertes Mitglied
Hey,

du hast bestimmt das "-p /data/misc/wifi" vergessen. Dann versucht es wpa_cli mit dem falschem Pfad fuer den Socket. Andernfalls unterscheidet sich dein Galaxy von meinem und es hilft evnt. ein "lsof -n 2>/dev/null | grep wpa_supp" oder so.

Der Kernel-Netfilter-Support hat nichts mit dem wpa_supplicant zu tun. Der interagiert nur mit den Linux-Wireless-Extensions. Ich wuerde daher erwarten, dass es egal ist ob der Kernel den Netfilter kennt.

// Sven-Ola
 
S

skrj2e

Gast
mit entweder "-p /data/misc/wifi" oder "-i eth0" geht's nicht. ich habe auch kein kommando "lsof" zur zeit. ich werde wohl später versuchen, nachdem ich debian auf mein galaxy habe.
 
S

sven-ola

Ambitioniertes Mitglied
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
 
H

harry_m

Neues Mitglied
Hallo Leute!

Also ... ich bin einer der Entwickler von "Wireless Tether for Root Users" (android-wifi-tether - Project Hosting on Google Code).

Ich würde gerne eine Galaxy-Version fabrizieren. Da ich aber selbst kein Galaxy zur Verfügung habe, wäre ich für Hilfe dankbar.

Das größte Problem scheint für zu sein, das Wifi-Interface in den AdHoc-Modus zu bringen. Kann mir jemand bestätigen, das es mit iwconfig funktioniert?

Also: iwconfig eth0 mode ad-hoc

Super wäre auch, wenn sich Leute bei mir melden, die bereit sind, Programme (schnell zusammengebastelte Test-Programme) zu testen. Dann bitte ein PM an mich.

Danke. ;)

Harry
 
L

leromarinvit

Fortgeschrittenes Mitglied
iwconfig funktioniert an sich, aber irgendwas schaltet dauernd wieder zurück - deswegen das ifrename vorher. Das ist natürlich nur ein quick&dirty hack, aber für eine saubere Lösung kenn ich mich leider zu wenig aus, was Android rundherum alles noch so macht. Bei den HTC-Geräten wird für adhoc AFAIK tiwlan.ini verändert, stimmt das?
 
H

harry_m

Neues Mitglied
leromarinvit schrieb:
iwconfig funktioniert an sich, aber irgendwas schaltet dauernd wieder zurück - deswegen das ifrename vorher. Das ist natürlich nur ein quick&dirty hack, aber für eine saubere Lösung kenn ich mich leider zu wenig aus, was Android rundherum alles noch so macht. Bei den HTC-Geräten wird für adhoc AFAIK tiwlan.ini verändert, stimmt das?
Also auf den HTC-Geräten mach ich das so ...
*) Wlan über die ganz normale API deaktivieren
*) Schauen, ob das Kernel-Modul entladen wurde
*) Kernel-Moduel wieder laden.
*) Eine angepasste tiwlan.ini mittels wlan_loader laden (da ist das "AdHoc" konfiguriert).
*) IP-Adresse drauf konfigurieren und das ganze restliche Zeug (dnsmasq, masquerading,...)
*) Beim Ausschalten die ganze Prozedur rückwärts.

Funktioniert eigentlich recht ok.

Also sowas hier sollte funktionieren?

Code:
ifrename
iwconfig wlan mode ad-hoc
iwconfig wlan essid whatever
Bekommt das "ifrename" nicht noch einen Parameter?

Hast keine Lust dann mal was zu testen? :D

Harry
 
L

leromarinvit

Fortgeschrittenes Mitglied
harry_m schrieb:
Also auf den HTC-Geräten mach ich das so ...
*) Wlan über die ganz normale API deaktivieren
*) Schauen, ob das Kernel-Modul entladen wurde
*) Kernel-Moduel wieder laden.
Hab gerade genau das probiert, aber eth0 wird damit leider nicht von alleine erzeugt. Irgendwas fehlt also noch.
harry_m schrieb:
Code:
ifrename
iwconfig wlan mode ad-hoc
iwconfig wlan essid whatever
Bekommt das "ifrename" nicht noch einen Parameter?
Nein, das liest /etc/iftab. Aber es wäre wohl kein allzu großer Aufwand, entweder ifrename entsprechend umzubauen oder den relevanten Teil einfach rauszukopieren und in ein eigenes Tool zu verpacken.

harry_m schrieb:
Hast keine Lust dann mal was zu testen? :D

Harry
Kein Problem!
 
H

harry_m

Neues Mitglied
leromarinvit schrieb:
Nein, das liest /etc/iftab. Aber es wäre wohl kein allzu großer Aufwand, entweder ifrename entsprechend umzubauen oder den relevanten Teil einfach rauszukopieren und in ein eigenes Tool zu verpacken.
Ok, dann hätt ich noch einige Fragen.

Ist /etc/iftab bereits auf dem Galaxy oben oder ist das von euch raufkopiert und geändert worden? Wie schaut der Inhalt von iftab aus (kannst du die vielleicht mal anhängen)? Wenn ich das jetzt richtig gesehen habe, dann kann man dem "ifrename" mit dem "-c" switch eine alternative iftab-Datei unterjubeln.

Und ja ... wenn du Wlan über "Settings" deaktivierst, dann wird das Kernel-Modul NICHT entladen? Wie bringst du das Interface wieder in einen "normalen" Modus (wieder mit iwconfig)?

Nochmals Danke.
Harry
 
L

leromarinvit

Fortgeschrittenes Mitglied
harry_m schrieb:
Ist /etc/iftab bereits auf dem Galaxy oben oder ist das von euch raufkopiert und geändert worden? Wie schaut der Inhalt von iftab aus (kannst du die vielleicht mal anhängen)? Wenn ich das jetzt richtig gesehen habe, dann kann man dem "ifrename" mit dem "-c" switch eine alternative iftab-Datei unterjubeln.
Nein, iftab ist ein selbst erstelltes File. Da steht nur eine einzige Zeile drin mit "<newname> <macaddr>". Habs mir aber nochmal angeschaut, das ist gar nicht notwendig. Das gleiche kann man mit "ifrename -i eth0 -n newname" erreichen. Vorher (kurz voerher! max. 1s oder so; irgendwas stellts sonst regelmäßig wieder auf "up") ifconfig eth0 down.

harry_m schrieb:
Und ja ... wenn du Wlan über "Settings" deaktivierst, dann wird das Kernel-Modul NICHT entladen? Wie bringst du das Interface wieder in einen "normalen" Modus (wieder mit iwconfig)?
Doch, es wird entladen. Ich meinte nur, dass eth0 nicht automatisch wieder entsteht, wenn ich es dann manuell lade. Die einfachste Möglichkeit, wieder in den normalen Modus zurückzuschalten, ist WLAN aus- und wieder einzuschalten. "iwconfig wlan mode managed" hat lustigerweise nicht funktioniert.
 
H

harry_m

Neues Mitglied
leromarinvit schrieb:
Doch, es wird entladen. Ich meinte nur, dass eth0 nicht automatisch wieder entsteht, wenn ich es dann manuell lade. Die einfachste Möglichkeit, wieder in den normalen Modus zurückzuschalten, ist WLAN aus- und wieder einzuschalten. "iwconfig wlan mode managed" hat lustigerweise nicht funktioniert.
Mmmmmh ... das ist natürlich ziemlich "ugly". Vorallem Wlan nicht regulär zu stoppen und stattdessen einfach das interface umzubenennen. Das Gerät registriert dann aber schon (obwohl nicht über Settings deaktiviert), dass Wlan nicht mehr verfügbar ist und jetzt die "Mobile-Datenverbindung" genutzt werden soll?

Und ... sieht man nicht vielleicht mit einem "adb logcat" was er genau macht, um das Wlan-Interface (nach dem Laden des wlan-Moduls - beim Aktivieren über Settings) wieder hoch zu bringen (damit das eth0 wieder sauber da ist)?

Egal ... ich werd mich morgen einmal hinsetzen und versuchen was zu basteln ...

Harry
 
H

harry_m

Neues Mitglied
Hallo!

Also ... so, ich habe eine erste Test-Version zusammengestellt (wird sicherlich nicht die letzte sein, bis das Zeug funktionieren wird).

Verfügbar ist Test1 hier:
http://android-wifi-tether.googlecode.com/files/signed_andTether_1_60-galaxy-test1.apk

Mit einer hoher Wahrscheinlichkeit wird diese Version nicht ordentlich funktionieren, denn ich verwende, wie schon bei den HTC-Geräten, die Methode (wie oben schon erwähnt):

1) Wifi-Interface deaktivieren
2) Kernel-Modul laden
usw. usf.

Und ja ... leromarinvit hat ja schon gesagt, dass diese Methode nicht funktionieren soll. Egal, vielleicht testet ihr trotzdem - wenn es nicht funktioniert, dann bleibt ja immernoch die "Interface umbennen"-Variante.

Wenn ihr testet ... bitte immer das Log ansehen (unter [menu] und "Show log") - erst dort sieht man die Fehler wirklich.

Und ... tethering kann auch ohne GUI gestartet werden, das sollte noch einige zusätzlich Meldungen ausspucken. Das geht mit:

/data/data/android.tether/bin/tether start
/data/data/android.tether/bin/tether stop

Ebenfalls wäre der Output von "adb logcat" hilfreich.

Und wenn ihr schon am Testen seid, dann könntet ihr auch nocht bluetooth-tethering ausprobieren (benötigt nicht ein Wifi in AdHoc)!

Es gibt dazu ein Video auf unserer Google-Code-Seite:
android-wifi-tether - Project Hosting on Google Code

Bin auf eure Fehlermeldungen gespannt :o

Harry

EDIT: Ahja ... das ganze Zeug erfordert natürlich einen Netfiler-enabeld Kernel!
 
Zuletzt bearbeitet: