Wie kann ich 3G nutzen trotz verbundenen WLANs?

  • 32 Antworten
  • Letztes Antwortdatum
A

AggyToggy

Neues Mitglied
0
Hallo liebe Leute!

Wenn mein Wlan bei eingeschalteten mobilen Daten aktiv ist und mein Nexus 4 einen Wlan-Zugangspunkt entdeckt schaltet das Handy auf WLAN und ich habe keine Datenverbindung, obwohl es sich um unbekanntes WLAN handelt. Das nervt mich schon seit einer Weile. Ich muss dann immer WLAN deaktivieren, um wieder ins Netz zu können. Ist das normal? Mache ich etwas falsch? Kann man das Handy so einstellen, dass es weiterhin Daten über mobile Internet bezieht, wenn der Zugang zum fremden WLAN nicht gegeben ist- es also ein fremdes wlan-netz ist?

Dankte im voraus!
 
Moin
Also normal verbindet sich das N4 nicht mit einem unbekannten Wlan. Bist du dir sicher das du nicht z.B mal bei MCD im Wlan warst und das damit noch gespeichert ist? Und nun wenn ein Telekom Hotspot da ist sich dein handy damit verbindet? Und damit das Mobile Internet austellt? Oder du ne App drauf hast die dich mit kostenlosen Hotspots verbinden soll?
MfG
 
  • Danke
Reaktionen: blue8
3G/UMTS/HSDPA wird nur deaktiviert wenn ein Wlan auch Verbunden ist. Nur rein wenn eines gefunden wird, wird das Nexus den GSM-Datendienst nicht deaktivieren.
 
Vielen Dank für die Antworten! Leider ist es bei mit so, dass bei eingeschaltetem 3G und aktiviertem WLAN bei erkanntem aber unbekannten WLAN die Meldung "Keine Datenverbindung" angezeigt wird.
 
Verbindet sich das Handy denn mit dem WLAN? Ich kenne das nur bei freiem WLAN, bei dem man Zugangsdaten eingeben muss oder sich einloggen muss.
Dann ist die Lösung das WLAN mit dem sich das Handy verbindet in den Einstellungen zu entfernen.
Gesendet von meinem Nexus 4
 
AggyToggy schrieb:
Vielen Dank für die Antworten! Leider ist es bei mit so, dass bei eingeschaltetem 3G und aktiviertem WLAN bei erkanntem aber unbekannten WLAN die Meldung "Keine Datenverbindung" angezeigt wird.

Das heißt du hätteste faktische NIE eine Datenverbindung, wenn du dein WLAN aktiviert hast?
 
Wenn du im unbekannten WLAN drin bist, dein HSDPA sich dadurch abschaltet (ist normales Verhalten) und du kein Internet hast, liegt es am unbekannten WLAN. Das hat wohl keinen Internetzugriff.
Ich verstehe sowieso nicht, was du mit diesem "unbekannten WLAN" treibst?
 
Hallo Leute,

ich hätte da eine wahrscheinlich etwas spezielle Frage. Und zwar habe ich in meinem Auto eine Freisprecheinrichtung, die via Bluetooth an das Handy gekoppelt wird. Jetzt habe ich außerdem einen ODB2-Adapter geschenkt bekommen, der über WLAN verbunden wird.

Das läuft auch alles ganz wunderbar: mit Llama habe ich das Handy so programmiert, dass es beim Verbinden mit der Freisprecheinrichtung automatisch auch WLAN aktiviert, dann den Adapter findet und Torque startet. Das einzige Problem: Ich hab jetzt keine Internetverbindung mehr, weil das Handy den OBD2-Adapter für einen richtigen Hotspot zu halten scheint.

An sich ist es ja sogar vernünftig, während der Fahrt nicht SMS oder Emails lesen zu können. Problematisch ist aber, dass ich jetzt weder aktuelle Verkehrsmeldungen für Navigon noch aktualisierte Standortmeldungen für die Blitzer-App reinbekomme.

Deshalb meine Frage: Gibt es eine Möglichkeit, dem Nexus zu sagen, dass es sich beim OBD2-Hotspot nicht um einen nutzbaren Internetzugang handelt und es parallel bitte 3G nutzen soll? Iphones scheinen das von allein zu merken.

Vielen Dank und besten Gruß

steelsieben
 
Interessante Frage.
Und Google weiß die Antwort.
http://forum.xda-developers.com/showpost.php?p=46274571&postcount=6

Es sieht komplizierter aus, als es ist!

Das Ergebnis meines Versuchs:
Code:
u0_a121@mako:/ $ su
root@mako:/ # ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=7.11 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=9.00 ms
^C
--- 192.168.2.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 7.111/8.057/9.004/0.950 ms
root@mako:/ # ip -d route
default via 10.75.59.109 dev rmnet_usb0
default via 192.168.2.1 dev wlan0  metric 369
10.75.59.108/30 dev rmnet_usb0  proto kernel  scope link  src 10.75.59.108
10.75.59.109 dev rmnet_usb0  scope link
173.194.70.138 via 10.75.59.109 dev rmnet_usb0
173.194.70.188 via 10.75.59.109 dev rmnet_usb0
192.168.2.0/24 dev wlan0  proto kernel  scope link  src 192.168.2.106  metric 369
root@mako:/ #

Wie zu sehen ist, hat mein Gerät jetzt 2 Default Routen.
Interessant ist aber nur die erste, da "1st come, 1st serve" gilt.
Somit läuft der Traffic grundsätzlich über 3G, bis auf alles, was an 192.168.2.x (Wlan) geht.

Ein kleines Script sollte für deine Zwecke reichen.
Eine App gibt es scheinbar nicht.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: steelsieben
Wow,

erstmal vielen Dank für diese unerwartete, positive Antwort. Ich hab sogar so halb verstanden, was dabei jetzt abgeht. Sehe ich das richtig, dass ich dem OBD-Adapter dazu eine statische IP geben muss, oder ist "192.168.2.x" universell für alle WLAN-Verbindungen gültig? Sorry für die plumpe Frage, aber ich bin da wirklich ziemlich grün hinter den Ohren.

Ich hab jetzt auch gelernt, dass man mit der App Tasker anscheinend automatisiert Skripte starten kann. Sehr cool!

Gruß
 
Zuletzt bearbeitet:
Hi,

selbst besitze ich ein solches Gerät nicht.
Ich bin davon ausgegangen, dass dein Gerät genauso funktioniert, wie ein Accesspoint/WLAN-Router.
Auf Grund deiner Information spricht für mich vieles dafür dass es so ist, bitte um Korrektur, wenn es nicht so ist.

Fragen, bzw. Annahmen:
Du verbindest dich per Wlan mit dem ODB2, genauso, wie du es mit deinem Wlan zu hause machst. (?)
Das ODB2 vergibt für dein N4 eine IP-Adresse. (?)
Torque verbindet sich mit einer bestimmten IP-Adresse (?) des ODB2.


Grundsätzlich stellt sich die Frage, ob Android die Verbindung von Wifi/Wlan und 3G gleichzeitig zulässt.
Die grafische Oberfläche lässt es jedenfalls nicht zu. Sobald man WLAN aktiviert, wird die 3G Verbindung ausgeschaltet.
Also muss man die grafische Oberfläche umgehen, indem man sie nicht benutzt, deshalb das Script von XDA.

Ich versuche mal zu erklären, was in dem Script von XDA passiert.
Voraussetzung ist, dass sowohl Wlan als auch 3G funktionieren (ist bei dir der Fall).
Code:
# enable dual-networking:
pkill dhcpcd
svc wifi disable
svc data enable
netcfg wlan0 up
cd /data/misc/wifi/.
wpa_supplicant -B -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf
dhcpcd wlan0

Erstmal wird dhcpcd gekillt, der ist für den Erhalt und die Benutzung einer IP-Adresse von einem AP zuständig.
Dann wird Wlan ausgeschaltet, das siehst du auch in der grafischen Oberfläche.
Und dann 3G eingeschaltet. Dadurch hast du Internet-Connectivity auf dem 3G-Interface.
Danach wird das Wlan-Interface wieder aktiviert. Das sieht man aber NICHT in der grafischen Oberfläche!!!
wpa_supplicant sorgt dann dafür, dass eine Wlan-Verbindung zum nächsten AP (hoffentlich ODB2, nicht dein DSL) hergestellt wird.
dhcpcd wird danach auf dem Wlan-Interface gestartet, um eine IP-adresse vom AP zugewiesen zu bekommen (192.168.2.x in meinem BEISPIEL).

Wenn jetzt die Default-Routen die richtige Reihenfolge haben (zuerst 3g, dann Wlan), ist alles gut.
Alternativ kann man aber auch die Default-Route für Wlan löschen, denn sie wird nicht gebraucht.
Die Default-Route wird immer gebraucht, wenn man sich mit einer Adresse verbinden will, die sich nicht in "direkter Nachbarschaft" befindet. Z. B. Google
Da Wlan-Router (und dein ODB2 mit Sicherheit auch) ein "privates" Netzwerk (Private IP-Adresse) benutzen, besteht keine Gefahr, dass sich die Adressen mit offiziellen Adressen auf dem 3G-Interface überlagern.

Um das Ganze zu automatisieren, musst du ein AKtivierungs- und ein Deaktivierungs-Script schreiben (ist prinizipiell schon alles auf XDA da) und mit root Berechtigung per llama (sorry, kenne nur Tasker) aktivieren bzw. auch wieder deaktivieren.
Dabei scheint das Deaktivieren schwieriger zu sein als das aktivieren.

Versuch' am besten erstmal mit root Rechten und der Terminal-Anwendung (https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=de) die einzelnen Schritte nachzuvollziehen und die Änderung deines Routings mit dem Befehl "ip -d route" zu beobachten.
 
  • Danke
Reaktionen: steelsieben
Hey du,

vielen Dank für die hilfreiche und ausführliche Antwort. Soweit ich das beurteilen kann, sind alle deine Annahmen bezüglich des Adapters zutreffend. Ich hab den Nachmittag damit verbracht, ein wenig mit dem Terminal Emulator herumzuspielen.

Das Hauptproblem dabei: wenn ich den Befehl "pkill dhcpcd" ausführen möchte, heißt es "tmp-mksh: pkill: not found" :confused2: Das passiert unabhängig davon, ob ich mich vorher zum Superuser mache oder nicht.

Ansonsten scheint es keine Probleme zu geben, aber eine Nachfrage hätte ich noch: Wenn ich jetzt das Skript, so wie du es in deinem Post zitiert hast, ausführe, ist ja die Mobilfunkverbindung die erste default-Verbindung und wir daher genutzt. Ist es nun also nicht mehr nötig, die IP-Routen manuell mit Hilfe der Befehlszeile "ip route add x.x.x.x via x.x.x.y" umzuleiten?

Besten Dank und Gruß
 
Hallo,

stimmt, pkill kommt von der App busy-box, die habe ich auf allen Geräten installiert...
Es gibt auch andere Möglichkeiten, den Prozess zu finden und zu killen, aber ohne busy-box ist das immer problematisch, da Android nicht viele Befehle für die Kommandozeile mitbringt.
Scheinbar geht man auch bei XDA davon aus, dass busy-box Standard ist.

Mit der IP hast du Recht.
Du brauchst das nicht, da sich der ODB2 im gleichen Subnetz befindet, wie dein N4.

Mich würde noch interessieren, wie Torque den ODB2 findet.
Entweder das Ding hat eine feste IP, oder es gibt einen "Broadcast", oder du musstest die IP irgendwann mal eingeben?
 
  • Danke
Reaktionen: steelsieben
Spitzen Antwort! Busybox hatte ich sogar schon, ich musste es nur noch installieren und plötzlich lief der Befehl. Ich habe nur noch ein Problem, und zwar liefert eine Ausführung des Skripts folgenden Fehler:

dhcpcd[2762]: version 5.5.6 starting
dhcpcd[2762]: wlan0 waiting for carrier
dhcpcd[2762]: timed out
dhcpcd[2762]: allowing 8 seconds for IPv4LL timeout
dhcpcd[2762]: timed out

Hast du eine Ahnung, woran es liegen könnte, dass sich das Handy offensichtlich nicht mit dem WLAN verbunden hat?

Deine Frage zur Art des Verbindungsaufbaus mit Torque ist natürlich berechtigt. Die App vergibt dazu eine feste, änderbare Adresse an den Adapter. :)
 
Dein Wlan kann scheinbar keine Verbindung zu einem/dem Accesspoint öffnen.
Ich kann das reproduzieren, wenn ich meine wpa_supplicant.conf zerschiesse :rolleyes:


Der Befehl wpa_supplicant sollte eigentlich ohne -B und mit -dd gesprächiger werden, aber das tut er bei mir nicht...
Die Lösung heisst "catlog"....

Ist/war dein ODB2 eingeschaltet?
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: steelsieben
Also ich hab es bisher immer mit meinem Heimnetzwerk probiert, bin jetzt aber extra nochmal raus in die Kälte und hab es am (unverschlüsselten) OBD2-Adapter getestet. Beide Geräte sind natürlich angeschaltet und über die grafische Oberfläche auch problemlos erreichbar.

Da kam leider aber auch nichts bei rum, auch nicht nachdem ich "-B" durch "-dd" ersetzt hab. Aber der Tipp mit der App Catlog war gut! Habe damit auslesen können: "unsupported driver n180211". Wenn man das googelt, stößt man auf den Blog-Eintrag "Searching for n180211? It’s actually nl80211." :crying: Oh mann. Shit happens.

Wenn ich jetzt den Befehl "ip -d route" benutze, bekomme ich einen zu deinem äquvalenten Output. Ich glaube, damit haben wir es geschafft. :drool:

Nachdem es einmal geklappt hat, bekomme ich jetzt aber immer Fehlermeldungen. Erst war es "Waiting for carrier...carrier acquired...carier lost" und nun wieder "waiting for carrier...timed out". :(

Catlog schmeißt folgendes aus:

12-30 00:58:05.419 I/wpa_supplicant(11119): Successfully initialized wpa_supplicant
12-30 00:58:05.419 I/wpa_supplicant(11119): rfkill: Cannot open RFKILL control device
12-30 00:58:05.739 I/wpa_supplicant(11119): rfkill: Cannot open RFKILL control device
12-30 00:58:05.920 W/wpa_supplicant(11119): wlan0: Failed to initiate AP scan
12-30 00:58:06.931 W/wpa_supplicant(11119): wlan0: Failed to initiate AP scan
12-30 00:58:07.932 W/wpa_supplicant(11119): wlan0: Failed to initiate AP scan
12-30 00:58:46.403 I/wpa_supplicant(11331): Successfully initialized wpa_supplicant
12-30 00:58:46.603 I/wpa_supplicant(11331): rfkill: Cannot open RFKILL control device
12-30 00:58:46.753 I/wpa_supplicant(11331): ctrl_iface exists and seems to be in use - cannot override it
12-30 00:58:46.753 I/wpa_supplicant(11331): Delete '/data/misc/wifi/sockets/wlan0' manually if it is not used anymore
12-30 00:58:46.753 E/wpa_supplicant(11331): Failed to initialize control interface '/data/misc/wifi/sockets'.
12-30 00:58:46.753 E/wpa_supplicant(11331): You may have another wpa_supplicant process already running or the file was
12-30 00:58:46.753 E/wpa_supplicant(11331): left by an unclean termination of wpa_supplicant in which case you will need
12-30 00:58:46.753 E/wpa_supplicant(11331): to manually remove this file before starting wpa_supplicant again.

Im "disable dual networking"-Skript wird ja wpa_supplicant extra noch gekilled. Wie könnte man das Problem umgehen?
 
Zuletzt bearbeitet:
Hallo steelsieben,

wahrscheinlich hast du Recht, und da überschneidet sich was.
Jetzt brauchst du ein Script, das die Verbindung sauber startet bzw. sauber beendet.
Dazu noch einen zuverlässigen Trigger (zB. der Bluetooth Status), der definiert, wann die Verbindung auf-/abgebaut werden soll.
Das Ganze so hinzukriegen, dass es in jeder Lage einwandfrei funktioniert, ist nicht ganz einfach, aber machbar.
Ich versuche später mal ein Start/Stop Script zu basteln.
 
So, habe jetzt mal was gebastelt...

Das legst du am besten in /data/local oder /data/local/bin als Datei "wltool" ab.
Dann musst du es noch ausführbar machen (als root):
"chmod 755 /data/local/wltool" bzw. "chmod 755 /data/local/bin/wltool"

Das Script versteht die Parameter
wifi = Wlan (+ 3g)
data = nur 3G
both = 3G + Wlan
off = alles aus
on = Wlan (+ 3g)
alles andere oder kein Paramter = derzeitiger Status

Der Status wird auch bei jeder Aktion angezeigt, ist aber leider nicht besonders zuverlässig, da es passieren kann, dass im Hintergrund noch Dinge passieren (wpa_supplicant/dhcpcd), während schon versucht wird, den Status zu ermitteln....
Im Zweifelsfall SLEEPTIME in Zeile 4 auf einen höheren Wert setzen (derzeit 5 Sekunden)

Damit sollte es klappen.

Aufruf z.B.:
/data/local/wltool both



Code:
#! /system/xbin/ash
# set -x

SLEEPTIME=5

if [ "$USER" != "root" ]
then
  echo "You must be root to start this script!"
  exit  1
fi

type busybox >/dev/null 2>&1
if [ $? -ne 0 ]
then
  echo "Please install busybox first, then come back!"
  exit 1
fi


dostatus() {
  WIFI=0
  DATA=0
  DUMMY=$(ip -d route)
  echo "$DUMMY" | grep "^default" | grep wlan0 >/dev/null 2>&1 && WIFI=1
  echo "$DUMMY" | grep "^default" | grep rmnet_usb0 >/dev/null 2>&1 && DATA=1
  [ $WIFI -eq 0 -a $DATA -eq 0 ] && echo OFF && return
  [ $WIFI -eq 1 -a $DATA -eq 1 ] && echo BOTH && return
  [ $WIFI -eq 1 -a $DATA -eq 0 ] && echo WIFI && return
  [ $WIFI -eq 0 -a $DATA -eq 1 ] && echo DATA && return
}


startboth() {
  svc wifi disable
  pkill dhcpcd
  pkill wpa_supplicant 
  rm -rf /data/misc/wifi/wlan0
  netcfg wlan0 down

  netcfg wlan0 up
  cd /data/misc/wifi/
  wpa_supplicant -B -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf
  dhcpcd wlan0 >/dev/null 2>&1
  svc data enable
  sleep $SLEEPTIME
  dostatus
}

startwifi() {
  svc data enable
  svc wifi prefer
  svc wifi enable
  sleep $SLEEPTIME
  dostatus
}

startdata() {
  svc wifi disable
  svc data enable
  sleep $SLEEPTIME                                                                  
  dostatus                                                                 
}

turnoff() {
  svc wifi disable
  svc data disable
  pkill dhcpcd
  pkill wpa_supplicant
  rm -rf /data/misc/wifi/wlan0
  netcfg wlan0 down
  netcfg rmnet_usb0 down
  sleep $SLEEPTIME                                                                  
  dostatus
}

case "$1" in
  wifi) startwifi
        break;;
  data) startdata
        break;;
  both) startboth
        break;;
  off) turnoff
       break;;
  on) startdata
      startwifi
      break;;
  *) dostatus
esac
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: steelsieben
Mensch,

da hast du dir ja echt Arbeit gemacht. Dankeschön! Ich hab gestern probiert, ein bisschen damit zu arbeiten. Zunächst hab ich mit root explorer die Datei in das Verzeichnis /data/local verschoben und daraufhin versucht, sie über den Terminal Emulator ausführbar zu machen und aufzurufen. Leider hieß es dabei immer "file not found" :confused2:

Daraufhin hab ich mir die betreffenden Zeilen einfach aus dem Skript herauskopiert und sie im SH Script Runner ausführen lassen. Die Statusabfrage brachte leider die Erkenntnis, dass sich nicht mit dem WLAN-Netzwerk verbunden wurde. Das bestätigte dann auch die Catlog-Meldung "no network configuration found".

Das klingt doch nach einem Problem mit dem wpa_supplicant?
 
File not found hört sich nach einem Fehler beim Aufruf an...
Wie hast du das Script erzeugt? Copy/Paste?

Mach mal im Terminalemulator
Code:
su
ls -la /data/local
/data/local/wltool
Dann poste einen Screenshot davon.

Wenn die Wlanverbindung ohne das Script funktioniert, sollte mit wpa_supplicant auch alles Ok sein.
 
  • Danke
Reaktionen: steelsieben

Ähnliche Themen

F
  • flipsns
Antworten
4
Aufrufe
1.768
daddle
D
D
Antworten
5
Aufrufe
2.115
qu4nd
qu4nd
LordAIK
Antworten
2
Aufrufe
3.977
AraldoL
A
Zurück
Oben Unten