2 votes

Appareils Samsung : double réseau

J'ai la configuration suivante : un appareil Wi-Fi qui n'est PAS connecté à Internet, comme un drone ou un appareil IoT. Les données de l'appareil doivent être téléchargées sur internet.

Bien qu'il soit possible de se connecter aux deux réseaux dans une application à l'aide de la fonction ConnectivityManager il n'est pas possible d'utiliser l'internet mobile en dehors de l'application. Les appareils sont équipés d'Android 6.0 ou d'une version supérieure, ce qui signifie qu'ils devraient être pris en charge par le système Android. Mais il me semble que Samsung n'a pas implémenté ce support.

Comment puis-je utiliser l'internet mobile, par exemple pour recevoir des courriels ou des notifications push, alors que je suis connecté à un réseau Wi-Fi qui n'a pas d'internet.

Merci.

3voto

xavier_fakerat Points 9582

Des questions similaires ont été posées ici :

Cependant, en raison de la description de la prime, je vais essayer d'agréger ces faits et de m'étendre un peu puisque les réponses n'ont pas été marquées comme acceptées.

En bref, il est possible d'avoir un double réseau, mais les solutions de contournement diffèrent légèrement.


  1. De cette source : Passez de façon transparente du WiFi au cellulaire avec Multipath-TCP Vous pouvez faire usage de Multi-TCP.

Multipath TCP (MPTCP) est Multipath-TCP est une extension de TCP qui permet l'utilisation parallèle de plusieurs connexions Internet. Multipath-TCP est déjà implémenté pour le noyau Linux, mais pas encore intégré dans le noyau amont officiel.

Le code source (et certains noyaux précompilés, y compris les builds Android) peut être trouvé ici : http://multipath-tcp.org

Source supplémentaire avec référence au dispositif Samsung : MPTCP sur les appareils Android et MultiPath TCP - Mise en œuvre du noyau Linux .


  1. Dans une autre source, activer le sans fil et le 4g en même temps Les utilisateurs affirment qu'ils ont pu activer le double réseau avec la solution de contournement suivante (citée) :

    1. Désactivez le wifi de la manière habituelle (à partir de l'interface utilisateur du téléphone) s'il n'est pas déjà désactivé.

    Toutes les étapes suivantes sont effectuées dans un shell Root :

    1. charger les pilotes

      busybox insmod /system/lib/modules/cfg80211.ko busybox insmod /system/lib/modules/wlan.ko

    2. lancez wpa_supplicant pour vous connecter au premier réseau sans fil disponible. Le site wpa_supplicant.conf Le fichier que je liste ci-dessous est celui qui est maintenu automatiquement par le téléphone lorsque vous rejoignez de nouveaux réseaux. Si vous souhaitez avoir plus de contrôle (par exemple, vous connecter uniquement à un réseau spécifique), copiez le fichier wpa_supplicant.conf quelque part, le modifier si nécessaire, et le spécifier sur la ligne de commande.

    wpa_supplicant -B -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf

    1. dhcpcd

    busybox pkill dhcpcd rm /data/misc/dhcp/* dhcpcd wlan0

    1. vérifier la route

    busybox route

    Pour moi, il s'agit d'afficher le défaut d'origine en premier sur la liste (en passant par le rm net_usb0 ) suivi du nouveau configuré pour le réseau sans fil. wlan0 . Traceroute montre le trafic sortant de la première.

    Maintenant, à ce stade, si vous essayez d'activer le wifi normalement à partir du téléphone, cela ne fonctionnera pas. Pour le faire fonctionner :

    ifconfig wlan0 down ifconfig wlan0 unplumb rmmod wlan rmmod cfg80211

    Et vous pouvez réactiver le sans fil

Alternativement avec le script :

# 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
ip route add x.x.x.x via x.x.x.y # add any desired local route

# disable dual-networking:
ip route del x.x.x.x/x via x.x.x.y
pkill dhcpcd
pkill wpa_supplicant 
rm -rf /data/misc/wifi/wlan0
netcfg wlan0 down
svc wifi disable
svc data disable

(Un script runner est nécessaire pour exécuter ces scripts et Root ; vous pouvez en obtenir un ici : SH Script Runner

Et ils ont noté :

Cela fonctionne parfaitement, mais notez que vous ne voyez pas réellement l'icône wifi s'allumer, mais si vous exécutez la commande netcfg | grep UP vous verrez que le wlan0 est en place et fonctionne (ainsi que l'interface rmnet_usb0 mobile data interface Les deux seront en service et auront les adresses IP attendues) et vous pourrez accéder à votre réseau local tandis que vos données mobiles 3g/4g fourniront votre route par défaut vers le monde extérieur.


  1. Autres solutions de contournement :

Utilisation de Super Download Lite

Les développeurs de l'application affirment qu'elle a la capacité de réaliser un double réseau sur les appareils Android en combinant les réseaux 3G/4G et Wi-Fi.


  1. Modifier la table de routage

Une autre source : http://ironings4.rssing.com/chan-3701516/all_p2.html .

Fourni des détails sur la création d'un script bash afin de modifier la table de roting pour permettre le fonctionnement de la 3G/4G avec le Wi-Fi. Voici le script :

pkill com.android.phone sleep 30 route add -net 10.0.0.0 netmask 255.0.0.0 dev ppp0 route add -net 15.0.0.0 netmask 255.0.0.0 dev ppp0

Ce qui précède est un exemple pour quelques plages d'adresses à rediriger vers une connexion 3G vers la table de routage via le shell linux pour utiliser INTRANET via ppp0 pour quelques plages d'adresses, tandis que toutes les autres adresses de destination passent normalement par le Wi-Fi.

L'astuce ici est de forcer une application sur le téléphone (ou peut-être est-ce un service), called com.android.phone L'indicateur du signal 3G s'éteint pendant quelques secondes, puis revient à la normale, mais cette fois avec les icônes H(SDPA) et Wifi dans la zone de notification en haut à droite de l'écran.


  1. Dans un autre article : Faites en sorte que les connexions WiFi et 3G fonctionnent ensemble en hackant ConnectivityService.java (migré vers les forums XDA) L'offre comment accomplir la tâche en piratant le service de connectivité :

Entièrement cité :

"L'objectif du projet COIN est d'utiliser simultanément les connexions WiFi et 3G. Cela entre donc en conflit avec la politique du service de connectivité, mais il n'y a pas de configuration pour modifier la politique, et elle est codée en dur. Vous pouvez trouver l'indice dans la fonction ConnectivityService.java:handleConnect.

Notre solution actuelle est assez brutale, elle consiste à masquer les yeux du service de connectivité en modifiant l'entrée de son gestionnaire de messages comme suit :

// must be stateless – things change under us.
 private class MyHandler extends Handler {
 @Override
 public void handleMessage(Message msg) {
 NetworkInfo info;
 //added by COIN to disable Connectivity Service
 int networkState = 8; //not any following state
 /*use static google dns server for wifi and 3g*/
 if (msg.what == NetworkStateTracker.EVENT_STATE_CHANGED) {
 SystemProperties.set(“net.dns1, “8.8.8.8);
 SystemProperties.set(“net.dns2, “8.8.4.4);
 bumpDns();
 }
 //////////////////////////////////////////////
 //switch (msg.what) {
 switch (networkState) {
 case NetworkStateTracker.EVENT_STATE_CHANGED:
 info = (NetworkInfo) msg.obj;
 int type = info.getType();

…..

And then compile the modified ConnectivityService.java in the android source code tree, you can get an new services.jar file in framewor directory. Replace the existing services.jar on the cell phone with the following adb commands, then reboot the phone

 adb shell “mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system”
adb shell “chmod 0777 /system/framework”
adb push services.jar /system/framework
 adb shell “chmod 0644 /system/framework/services.jar”
adb shell “chmod 0755 /system/framework”
.”

Conclusion

Bien que je n'aie pas pu tester moi-même certaines des solutions de contournement, j'ai appris que la plupart d'entre elles auraient pu fonctionner en les versions antérieures d'Android (sur la base de l'évidence) donc je ne suis pas sûr que la même chose soit applicable dans Android 6. Cette fonctionnalité semble susceptibles d'être mises en œuvre avec les technologies émergentes, comme en témoigne la technologie Multipath TCP décrite. Pour toutes les solutions de contournement, il faut Root.

J'espère que cela apportera un peu de lumière.

Références

(Inclus dans le corps du texte)

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X