Gepatchter wpa_supplicant für IBSS/Ad-Hoc-Netze

Dieses Thema im Forum "Android OS Entwicklung / Customize" wurde erstellt von andi89, 09.03.2011.

  1. andi89, 09.03.2011 #1
    andi89

    andi89 Threadstarter Gast

    Hallo zusammen,
    Ich hoffe mal dass ich hier richtig bin.. Ansonsten eben bitte verschieben.
    Es ist ja bekannt, das Android nicht so gerne über IBSS/Ad-Hoc Wlans kommuniziert, und es gibt ja auch einschlägige patches um diese zu maskieren. Zunächst hab ich also die vorkompilierten version von hier probiert: xda-developers - View Single Post - [FIXED] Adhoc working without any file editing !!!
    Leider ohne Erfolg, wegen Architekturproblemen (wie ich vermute). Lässt sich gar nicht erst auf dem Samsung Galaxy Ace ausführen.
    Nun gut, selbst ist der Mann. Ich hab also den source-patch selbst in die Android-sourcen eingespielt und kompiliert. Die daraus entstandene Binary hat auch funktioniert, allerdings immernoch keine Ad-hoc netzwerke angezeigt. Nach viel rumgefrickel im Code, hab ich schließlich festgestellt, dass bereits wesentlich weiter "unten" schon keine IBSS netze mehr erscheinen. Bereits in wpa_supplicant_get_scan_results() ist nichts mehr von Ad-hoc zu sehen. Leider bin ich kein wpa_supplicant dev, weshalb mir der nötige Überblick über das Gesamtwerk fehlt.

    Gibt es jemanden hier der Erfahrung mit dem wpa_supplicant hat und mir ggf. weiter helfen kann, bzw. mir sagen wo die IBSS netze hin verschwinden?

    (Ursprünglich wollte ich ja im xda-developer board fragen. Aber die wollen wohl keine Posts von neuen usern im developer-forum. Muss vorher 10 posts irgendwo anders tätigen, und da tu ich mir etwas schwer, da ich erst gestern mein erstes Android-telefon bekommen hab).

    Danke.

    EDIT: Irgendwie scheint das was mit dem treiber zutun zu haben. Der original wpa_supplicant hat als treiber
    ar6000 = Linux wireless extensions (generic)
    wext = Linux wireless extensions (generic)
    Meiner hat nur wext. Die frage ist nur, wo ich die ar6000 sourcen her bekomme.. Aus dem android git schonmal nicht.
     
    Zuletzt von einem Moderator bearbeitet: 09.03.2011
  2. ziq, 11.03.2011 #2
    ziq

    ziq Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    1
    Registriert seit:
    03.02.2011
    Phone:
    ZTE Blade
    Bei deinem Problem kann ich dir nicht direkt weiterhelfen, eine Loesung wuerde mich aber auch interessieren.

    In punkto Android bin ich noch recht neu dabei. Den wpa_supplicant benutze ich aber seit Jahren fuer meine sonstigen Rechner (Laptops und Desktops in einer Vielzahl unterschiedlich gesicherter Netzwerke von offen ueber WEP und WPA/WPA2 in den PSK-Versionen bis hin zu 802.1x).

    Auf meinem Telefon (ZTE Blade) ist auf jeden Fall ein ar6000 geladen:
    Code:
    sh-3.2# lsmod                                   
    ar6000 227060 0 - Live 0x7f000000
    Laut Startupscript wird jedoch allem Anschein nach der wext-Treiber geladen:
    Code:
    sh-3.2# cat /system/wifi/wpa_supplicant.sh 
    #!/system/bin/sh
    /system/bin/wpa_supplicant -d -Dwext -i`getprop wifi.interface wlan0` -c/data/misc/wifi/wpa_supplicant.conf
    Bist du da mittlerweile schon tiefer in die Materie eingetaucht und hast evtl eine manuell angepasste wpa_supplicant.conf zum Laufen gebracht?

    Belasse ich meine wpa_supplicant.conf bei der Standardkonfiguration, dann laeuft diese wie erwartet. Kommentiere ich jedoch die SSID aus und die BSSID ein, verbindet sich das Telefon nicht mehr mit dem AP.
    Code:
    # (...)
    network={
            #bssid="01:23:45:67:89:ab" # wg Datenschutz geaendert ;)
            ssid="FRITZ!Box Fon WLAN 7112"
            psk="spam-and-eggs" # dito bssid
            key_mgmt=WPA-PSK
            priority=6
    }
    # (...)
    Logfiles habe ich auf dem Telefon noch nicht gefunden, allerdings habe ich bislang auch nur oberflaechlich nachgesehen (/var/log/ existiert nicht)
     
  3. andi89, 12.03.2011 #3
    andi89

    andi89 Threadstarter Gast

    Na da scheints dir ha ähnlich zu gehen wie mir.
    Nur dass ich auch mit dem wpa_supplicant nicht sooo viel Erfahrung hab (aber hey, immerhin schon cross-compiliert ;) )
    Leider weiß nicht nicht von wo der auf meinem Galaxy Ace gestartet wird. o.g. datei gibt es bei mir nicht.
    Mit den wpa_supplicant.conf-hacks hab ich schon wirklich viel experimentiert. Leider gänzlich ohne Erfolg.
    Bzgl. der Logfiles: Wo sie liegen - keine Ahnung.
    Allerdings mit "logcat" bin ich recht weit gekommen, da logt auch der supplicant hin (leider kein Debug-log, das lässt sich aber vermutlich über die kommandozeile regeln?).

    Was ich außerdem sehr interessant finde, ist dass eine bei mir installierte Wifi-analyzer-app in der lage ist die Ad-hoc netze zu sehen. Das funktioniert auch mit dem original wpa_supplicant.
    Mit meinem gepatchted, sehe ich jedoch tatsächlich das maskierte netzwerk. Also so wie es eigentlich in den normalen wifi-einstellungen zu sehen sein sollte...

    Du sagtest du kennst dich relativ gut mit dem wpa_supplicant aus.
    Kannst du mir denn erklären was genau diese Driver-sektion in der hilfs-ausgabe aussagen will? Ich kenne Treiber hauptsächlich als kernel-module. Aber was hat der wpa_supplicant damit zutun außer systemfunktionen aufzurufen? Und warum steht das mit WEXT an einer stelle? Ich dachte immer WEXT sei die kernel-api und der kernel verwaltet die Treiber welche damit angesteuert werden. Irgendwie hab ich diese Infrastruktur wohl noch nicht ganz durchschaut..

    Danke.

    EDIT: Hab grad eine andere App installiert, mit der man auch zu WLans verbinden kann (ansich recht nutzlos, kann man ja auch mit systemtools). Auch dort kann ich das maskierte Ad-hoc netzwerk sehen. Beim verbinden gibts jedoch nen timeout (manchmal kommt auch nur "Disconnected!" oder es passiert garnichts. Der Laptop ist nur 20cm weg. Das signal ist also stark genug).
    Welche version hat dein wpa_supplicant eigentlich? auch 0.6.10?

    EDIT2: Ich hab mir mal die log-ausgabe bei so nem Connect mit der alternativen app angeschaut. Vielleicht kannst du ja was damit anfangen (wenn das irgendwann mal läuft, lass ich dir den gepatchten supplicant natürlich gerne zukommen).
    Code:
    I/wpa_supplicant( 1360): Trying to associate with 36:71:ca:cb:22:8b (SSID='socken' freq=2412 MHz)
    I/wpa_supplicant( 1360): CTRL-EVENT-STATE-CHANGE id=-1 state=3 BSSID=36:71:ca:cb:22:8b
    V/WifiMonitor(  172): Event [Trying to associate with 36:71:ca:cb:22:8b (SSID='socken' freq=2412 MHz)]
    V/WifiMonitor(  172): Event [CTRL-EVENT-STATE-CHANGE id=-1 state=3 BSSID=36:71:ca:cb:22:8b]
    I/wpa_supplicant( 1360): CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
    I/wpa_supplicant( 1360): CTRL-EVENT-STATE-CHANGE id=2 state=0 BSSID=36:71:ca:cb:22:8b
    V/WifiStateTracker(  172): Changing supplicant state: SCANNING ==> ASSOCIATING
    D/NetworkStateTracker(  172): setDetailed state, old =SCANNING and new state=CONNECTING
    V/WifiMonitor(  172): Event [CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys]
    V/WifiStateTracker(  172): New network state is DISCONNECTED
    V/WifiMonitor(  172): Event [CTRL-EVENT-STATE-CHANGE id=2 state=0 BSSID=36:71:ca:cb:22:8b]
    V/WifiStateTracker(  172): Changing supplicant state: ASSOCIATING ==> DISCONNECTED
    D/ConnectivityService(  172): ConnectivityChange for WIFI: CONNECTING/CONNECTING
    I/wpa_supplicant( 1360): CTRL-EVENT-STATE-CHANGE id=2 state=4 BSSID=00:00:00:00:00:00
    I/wpa_supplicant( 1360): Associated with 36:71:ca:cb:22:8b
    I/wpa_supplicant( 1360): CTRL-EVENT-STATE-CHANGE id=2 state=7 BSSID=00:00:00:00:00:00
    I/wpa_supplicant( 1360): CTRL-EVENT-CONNECTED - Connection to 36:71:ca:cb:22:8b completed (reauth) [id=2 id_str=]
    V/WifiMonitor(  172): Event [CTRL-EVENT-STATE-CHANGE id=2 state=4 BSSID=00:00:00:00:00:00]
    V/WifiStateTracker(  172): Changing supplicant state: DISCONNECTED ==> ASSOCIATED
    V/WifiMonitor(  172): Event [Associated with 36:71:ca:cb:22:8b]
    V/WifiMonitor(  172): Event [CTRL-EVENT-STATE-CHANGE id=2 state=7 BSSID=00:00:00:00:00:00]
    V/WifiStateTracker(  172): Changing supplicant state: ASSOCIATED ==> COMPLETED
    V/WifiMonitor(  172): Event [CTRL-EVENT-CONNECTED - Connection to 36:71:ca:cb:22:8b completed (reauth) [id=2 id_str=]]
    V/WifiStateTracker(  172): New network state is CONNECTED
    D/WifiStateTracker(  172): Reset connections and stopping DHCP
    D/NetworkStateTracker(  172): setDetailed state, old =CONNECTING and new state=DISCONNECTED
    I/SSIDSelector(  921): NetworkStateReceiver: onReceiver()
    V/WifiStateTracker(  172): mWakeLock.acquired
    D/WifiStateTracker(  172): DhcpHandler: DHCP request started
    D/NetworkStateTracker(  172): setDetailed state, old =CONNECTING and new state=OBTAINING_IPADDR
    D/UNA     (  318): [WiFiStateReceiver]WiFi State Changed
    D/UNA     (  318): [Network State] : CONNECTING
    D/UNA     (  318): [WiFiStateReceiver] WiFi not connected
    D/UNA     (  318): [WiFiStateReceiver] stopService
    D/ConnectivityService(  172): Dropping ConnectivityChange for WIFI: CONNECTING/OBTAINING_IPADDR
    D/ConnectivityService(  172): Dropping ConnectivityChange for WIFI: CONNECTING/OBTAINING_IPADDR
    D/UNA     (  318): [WiFiStateReceiver]WiFi State Changed
    D/UNA     (  318): [Network State] : CONNECTING
    D/UNA     (  318): [WiFiStateReceiver] WiFi not connected
    D/UNA     (  318): [WiFiStateReceiver] stopService
    I/SSIDSelector(  921): NetworkStateReceiver: onReceiver()
    I/dhcpcd  ( 1839): dhcp main : argc = 3
    I/dhcpcd  ( 1839): dhcp main : argv[0] = /system/bin/dhcpcd
    I/dhcpcd  ( 1839): dhcp main : argv[1] = wlan0
    I/dhcpcd  ( 1839): dhcp main : argv[2] = -ABK
    I/dhcpcd  ( 1839): dhcpcd 4.0.15 starting
    I/dhcpcd  ( 1839): executing `/system/etc/dhcpcd/dhcpcd-run-hooks', reason PREINIT
    I/dhcpcd  ( 1839): executed run_script
    I/dhcpcd  ( 1839): if(wlan0)bssid info get Success. (MAC : 36:71:CA:CB:22:8B)
    W/dhcpcd  ( 1839): host does not support a monotonic clock - timing can skew
    I/dhcpcd  ( 1839): broadcasting for a lease
    
    Ausschlaggebend ist wohl vor allem das hier:
    Code:
    D/NetworkStateTracker(  172): setDetailed state, old =SCANNING and new state=CONNECTING
    D/ConnectivityService(  172): ConnectivityChange for WIFI: CONNECTING/CONNECTING
    V/WifiMonitor(  172): Event [CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys]
    V/WifiStateTracker(  172): New network state is DISCONNECTED
    V/WifiMonitor(  172): Event [CTRL-EVENT-STATE-CHANGE id=4 state=0 BSSID=9a:ee:be:6f:12:ed]
    V/WifiStateTracker(  172): Changing supplicant state: ASSOCIATING ==> DISCONNECTED
    
    Sieht irgendwie so aus, wie wenn der WifiMonitor während dem Verbinden feststellt, dass er das Netz gar nicht hat und deshalb an alle Instanzen den neuen Status "Disconnect" verteilt und diese dann auch gleich handeln...


    EDIT3: Gerade gesehen das Samsung den Sourcecode zum Galaxy Ace freigegeben hat. Mal gespannt was da so raus kommt (leider ist mein internet gerade unsäglich langsam, weshalb das noch etwas dauert... Ein hoch auf open-source.)
     
    Zuletzt von einem Moderator bearbeitet: 12.03.2011
  4. WAWA, 20.09.2011 #4
    WAWA

    WAWA Gewerbliches Mitglied

    Beiträge:
    2,814
    Erhaltene Danke:
    538
    Registriert seit:
    09.11.2010
    Phone:
    Huawei Ascend Mate
    Projekt begraben?
     

Diese Seite empfehlen