1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Ad-hoc wifi

Dieses Thema im Forum "Root / Hacking / Modding für Samsung Galaxy" wurde erstellt von leromarinvit, 10.09.2009.

  1. leromarinvit, 10.09.2009 #1
    leromarinvit

    leromarinvit Threadstarter Erfahrener Benutzer

    Beiträge:
    202
    Erhaltene Danke:
    13
    Registriert seit:
    08.07.2009
    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.
     
    Lubomir bedankt sich.
  2. koy, 10.09.2009 #2
    koy

    koy Erfahrener Benutzer

    Beiträge:
    205
    Erhaltene Danke:
    20
    Registriert seit:
    16.07.2009

    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?
     
  3. leromarinvit, 10.09.2009 #3
    leromarinvit

    leromarinvit Threadstarter Erfahrener Benutzer

    Beiträge:
    202
    Erhaltene Danke:
    13
    Registriert seit:
    08.07.2009
    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.
     
  4. leromarinvit, 11.09.2009 #4
    leromarinvit

    leromarinvit Threadstarter Erfahrener Benutzer

    Beiträge:
    202
    Erhaltene Danke:
    13
    Registriert seit:
    08.07.2009
    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: 11.09.2009
    Hanneskitz bedankt sich.
  5. r0w3zz, 12.09.2009 #5
    r0w3zz

    r0w3zz Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    12.09.2009
    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
     
  6. leromarinvit, 12.09.2009 #6
    leromarinvit

    leromarinvit Threadstarter Erfahrener Benutzer

    Beiträge:
    202
    Erhaltene Danke:
    13
    Registriert seit:
    08.07.2009
    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).
     
  7. sven-ola, 12.09.2009 #7
    sven-ola

    sven-ola Android-Hilfe.de Mitglied

    Beiträge:
    78
    Erhaltene Danke:
    22
    Registriert seit:
    31.07.2009
    @r0w3zz: er wird ein debian draufgemacht haben (z.b. so http://www.android-hilfe.de/root-hacking-modding-fuer-samsung-galaxy/4924-debian-auf-dem-galaxy.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
     
  8. sven-ola, 13.09.2009 #8
    sven-ola

    sven-ola Android-Hilfe.de Mitglied

    Beiträge:
    78
    Erhaltene Danke:
    22
    Registriert seit:
    31.07.2009
    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
     
    mutt bedankt sich.
  9. skrj2e, 13.09.2009 #9
    skrj2e

    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?
     
  10. sven-ola, 15.09.2009 #10
    sven-ola

    sven-ola Android-Hilfe.de Mitglied

    Beiträge:
    78
    Erhaltene Danke:
    22
    Registriert seit:
    31.07.2009
    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
     
  11. skrj2e, 15.09.2009 #11
    skrj2e

    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.
     
  12. sven-ola, 18.09.2009 #12
    sven-ola

    sven-ola Android-Hilfe.de Mitglied

    Beiträge:
    78
    Erhaltene Danke:
    22
    Registriert seit:
    31.07.2009
    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
    
     
    fakeraol bedankt sich.
  13. harry_m, 21.09.2009 #13
    harry_m

    harry_m Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    13
    Registriert seit:
    21.09.2009
    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
     
    Lubomir bedankt sich.
  14. leromarinvit, 21.09.2009 #14
    leromarinvit

    leromarinvit Threadstarter Erfahrener Benutzer

    Beiträge:
    202
    Erhaltene Danke:
    13
    Registriert seit:
    08.07.2009
    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?
     
  15. harry_m, 21.09.2009 #15
    harry_m

    harry_m Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    13
    Registriert seit:
    21.09.2009
    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
     
  16. leromarinvit, 21.09.2009 #16
    leromarinvit

    leromarinvit Threadstarter Erfahrener Benutzer

    Beiträge:
    202
    Erhaltene Danke:
    13
    Registriert seit:
    08.07.2009
    Hab gerade genau das probiert, aber eth0 wird damit leider nicht von alleine erzeugt. Irgendwas fehlt also noch.
    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.

    Kein Problem!
     
  17. harry_m, 21.09.2009 #17
    harry_m

    harry_m Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    13
    Registriert seit:
    21.09.2009
    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
     
  18. leromarinvit, 21.09.2009 #18
    leromarinvit

    leromarinvit Threadstarter Erfahrener Benutzer

    Beiträge:
    202
    Erhaltene Danke:
    13
    Registriert seit:
    08.07.2009
    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.

    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.
     
  19. harry_m, 21.09.2009 #19
    harry_m

    harry_m Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    13
    Registriert seit:
    21.09.2009
    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
     
    Hanneskitz bedankt sich.
  20. harry_m, 23.09.2009 #20
    harry_m

    harry_m Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    13
    Registriert seit:
    21.09.2009
    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: 23.09.2009

Diese Seite empfehlen