USB2RJ45- / USB-LAN-Adapter für Androiden verwenden - Treiber-Strategien

  • 13 Antworten
  • Neuster Beitrag
E

email.filtering

Gast
Viele User würden eigentlich gerne per USB-Reverse-Tethering ins Internet einsteigen, doch das ist in der Regel ziemlich kniffelig und setzt Root-Rechte voraus, weil dieser Weg einer Internetanbindung leider nur von ganz wenigen OS-Anbietern (HTC ist einer davon) "nativ" für Windows-betriebene Computer unterstützt wird.

Aber es gibt ja noch einen weiteren Weg, nämlich den über USB On-the-go (OTG) / USB-Host-Mode, doch auch dort gibt es einen gewaltigen Stolperstein zu überwinden. Während die OTG-Unterstützung bei den Tablets die Regel ist, bildet diese bei den Smartphones leider die Ausnahme. Doch das liegt so gut wie immer an den Kernel- & OS-Anbietern, und nur höchst selten an der Hardware selbst.

Daher hat u.k-f ein allgemeines Tutorial zum Selbstbau eines entsprechenden Kernels veröffentlicht.

Wer wissen will welche USB2RJ45-Adapter (~USB-LAN-Adapter) unter AnNdroid genutzt werden können, sollte sich hier einlesen: https://www.android-hilfe.de/forum/geraeteunabhaengiges-android-zubehoer.328/per-usb2rj45-adapter-usb-lan-adapter-ins-internet.332784.html
 
Kiwi++Soft

Kiwi++Soft

Ehrenmitglied
In diesem Thread: https://www.android-hilfe.de/forum/android-allgemein.20/reverse-usb-tethering.6215-page-30.html#post-8457327 habe ich folgendes gepostet:

Darf ich mal eine Alternative Lösung anbieten?

Das könnte jetzt OT werden (und das von einem, der hier Mod ist :scared:):

Wenn Dein Gerät in den USB-Host Mode gebracht werden kann, und wenn Du eine CPU hast, die nicht gerade von MTK oder Rockchip ist kannst Du mit einem OTG-Kabel einen USB-LAN-Adapter verwenden.

EDIT
Der o.a. Satz hört sich danach an, als wäre die MTK oder Rockchip CPUs generell nicht zur Verwendung von USB-Lan Adaptern in der Lage, das wollte ich damit nicht ausdrücken. Vielmehr ist es so, dass die Hersteller von. o.a. Chips keine Kernel-Sourcen/Kernel-Config zur Verfügung stellen, mit den man mit einer 'Standard-Kernel-Build-Umgebung' (wie man sie beispielsweise in den Anleitung zum AOSP findet) ohne weiteres die benötigten Treiber zu dem Kernel erstellen kann. Das bedeutet nicht dass es unmöglich ist, aber nicht mit einer Standard-Kernel-Build-Umgebung.​

Dafür musst Du Dir ggf einen Kernel mit entsprechendem Treiber selbst bauen:

https://www.android-hilfe.de/forum/tipps-und-anleitungen-zum-os-customizing.1941/tut-eigene-treiber-in-den-android-kernel-einbinden-am-beispiel-treiber-fuer-usb-lan.619883.html
Da dieser Vorschlag als Vorschlag zwar vielleicht dorthin passt, die daraus resultierende Diskussion dort jedoch OT ist, habe ich ich sie in dieses Thema ausgelagert.
 
Zuletzt bearbeitet:
E

email.filtering

Gast
An dieses Workaround habe ich natürlich ebenfalls schon gedacht, es aber im Hinblick auf den doch ganz schon erheblichen Aufwand verworfen. Das ist für den Normalo leider ja nicht machbar.
 
MeisterPropper

MeisterPropper

Fortgeschrittenes Mitglied
hmm, aber abgesehen von der (aufwändigen) Installation des Treibers, hat man überall wo es Lan gibt, hervorragendes Internet. Ich meine man braucht dann nur noch die 2 (oder für mehr Geld nur 1) Adapter und ein Kabel... Klingt gut, werde ich ausprobieren.
Mein Vater hat nur noch das Problem, dass er mich, falls nötig, nicht kontrollieren kann, da ihm das Fachwissen bzgl. Smartphones fehlt. Aber ich hab ja auch nur noch ein Jahr zu Hause :)
 
xminister

xminister

Ehrenmitglied
u.k-f schrieb:
Wenn Dein Gerät in den USB-Host Mode gebracht werden kann, und wenn Du eine CPU hast, die nicht gerade von MTK oder Rockchip ist kannst Du mit einem OTG-Kabel einen USB-LAN-Adapter verwenden.
Kurze Korrektur. ;)
Ob ein Gerät USB-LAN Adapter unterstützt, hängt nicht vom SoC ab, sondern von der Firmware. Viele Geräte bis Android 4.2 unterstützen sogar in der Stock-Firmware diese Adapter, teilweise findet sich sogar ein entsprechendes Menü in den Einstellungen. Ist natürlich abhängig vom Hersteller.
Aktuelle MTKs unterstützen allerdings keine LAN-Adapter, dafür bringen sie meist USB-Tethering bereits mit. Zu finden in ->Einstellungen->Drahtlos&Netzwerke->Mehr... -> USB-Internet

Ich muss den Kollegen aber zustimmen, das USB-Tethering, egal auf welchem Weg es realisiert wird, eine ziemlich instabile Angelegenheit ist.
 
Kiwi++Soft

Kiwi++Soft

Ehrenmitglied
xminister schrieb:
Kurze Korrektur. ;)
...Ob ein Gerät USB-LAN Adapter unterstützt, hängt nicht vom SoC ab...
Stimmt, da habe ich mich versehentlich zu knapp ausgedrückt.

Die von mir verlinkte Anleitung zum Kernel-Bau ist nicht für die von MTK ausgelieferten Sourcen geeignet, daher kann man mit der verlinkten Anleitung keine Kernel für MTK bauen.

Da es für Rockchip keine Kernel Sourcen gibt, gilt da ähnliches.

Daher habe ich diese beiden Prozessor-Type ausgeschlossen.

Entschuldigung für für meinen missverständlichen Text!
 
R

rudolf

Lexikon
Ich hab mal meine drei usblan adapter ausprobiert. An je zwei trekstor tablets gingen zwei davon, der moschip und der asix/apple. Zu meiner überraschung ging der pegasus nicht, der geht sonst bei jedem linux. Man sollte also auf den chipsatz achten und nicht glauben dass wenn einer nicht geht dann auch alle nicht gehen.

Hiet ist mal eine Liste von tablets an denen ein asix geht:
Which Tablets Support Ethernet? - BobjGear.com

@ukf
Kannst Du nicht einfach ein Modul erzeugen (.ko) statt eines ganzen kernels?
 
Zuletzt bearbeitet:
xminister

xminister

Ehrenmitglied
Natürlich bräuchte man nur die Module erzeugen aber die Quellen sind meist so unvollständig, das es nicht mal dafür reicht.
Und natürlich gibt es Kernel-Sourcen für Rockchips. ;)
 
R

rudolf

Lexikon
Ich hab da noch was entdeckt. Auf einem Tablet wo die zwei adapter gingen fand ich in /sys/module/ die ordner "mcs7830" für den moschip und "asix". Da kann man ohne root reinschauen was unterstützt wird.
 
Kiwi++Soft

Kiwi++Soft

Ehrenmitglied
rudolf schrieb:
...Kannst Du nicht einfach ein Modul erzeugen (.ko) statt eines ganzen kernels?
Das kompileren des Kernels oder des Moduls macht wenig Unterschied, nur ob man in der Kernel-Config ein 'm' für Modul oder ein 'x' für angekreutzt setzt.

xminister schrieb:
Natürlich bräuchte man nur die Module erzeugen aber die Quellen sind meist so unvollständig, das es nicht mal dafür reicht....
Um die Module zu erzeugen, benötigt man die halt die die Kernel-Config (um die Module zu dem Kernel passend zu erzeugen, Stichpunkt Version-Magic, wenn die nicht passt, lädt der Kernel das Modul nicht). Das ist der Punkt, an dem meine Anleitung beim MTK Chip nicht weiter kommt, denn die Kernel-Config wird da erst aus anderen Konfig-Dateien erzeugt.

Dazu müsste man sich mit den MTK-Tools beschäftigen. Das habe ich bisher nicht und habe es auch nicht vor, denn das einzige MTK-Gerät das ich habe ist ein Mobil-Telefon. Für Telefone entwickle ich jedoch nicht, mit denen telefoniere ich nur. Zum Entwickeln habe ich meine Tablets.

Dazu kommt noch, dass der vorhandene Kernel bestimmte Voraussetzungen (u.a. Modul-Support) mit einkompiliert haben muss.

Ebenso muss er 'USB-Netzwerk-Adapter Support mitbringen, da weiß ich nicht, ob der als Modul nachgeladen werden kann, oder ob der fest im Kernel drin sein muss.

Aber letztlich ist es so, dass das was ich schon getan habe, und nur darüber kann ich sagen, dass es geht und dass ich Support geben kann, eben darauf aufsetzt, dass man die kompletten Kernel-Sourcen und die Kernel-Konfig hat.

Ob man sich damit einen Kernel erzeugt, oder nur ein Modul, macht nur einen Unterschied in einem Setting...

rudolf schrieb:
...Auf einem Tablet wo die zwei adapter gingen fand ich in /sys/module/ die ordner "mcs7830" für den moschip und "asix"...
Interessant ist letztlich, ob der Adapter, wenn er angestöpselt ist, auch als Netzwerk-Device angezeigt wird.

Wenn man busybox installiert hat, sollte nach der Eingabe von
Code:
busybox ifconfig
dann (neben den anderen Netzwerk-Adaptern) folgendes ausgegeben werden:

Code:
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          UP BROADCAST RUNNING MULTICAST  MTU:1488  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
wobei statt XX:XX:XX:XX:XX:XX die Mac-Addresse kommen müsste.
 
Zuletzt bearbeitet:
R

rudolf

Lexikon
u.k-f schrieb:
Das kompileren des Kernels oder des Moduls macht wenig Unterschied, nur ob man in der Kernel-Config ein 'm' für Modul oder ein 'x' für angekreutzt setzt.
Der Stock Kernel kann binär gepatcht sein, oder aus anderen Quellen kompliert sein als die die ich hab. Wenn alles andere geht, werde ich mich hüten den kernel auszutauschen wenn ich ein Modul hinzufügen(laden) kann.

u.k-f schrieb:
Um die Module zu erzeugen, benötigt man die halt die die Kernel-Config (um die Module zu dem Kernel passend zu erzeugen, Stichpunkt Version-Magic, wenn die nicht passt, lädt der Kernel das Modul nicht). Das ist der Punkt, an dem meine Anleitung beim MTK Chip nicht weiter kommt, denn die Kernel-Config wird da erst aus anderen Konfig-Dateien erzeugt.
Da kann man tricksen. Auch ohne config file nimmt man eine ähnliche Source mit gleicher Grundversion, und entnimmt die nötigen Parameter dem Stock Kernel. Den Kompiliert man und benutzt nur das Modul, der Rest ist dann "Müll".
glandium.org » Blog Archive » Building a Linux kernel module without the exact kernel headers
Building modules for a precompiled kernel

u.k-f schrieb:
Dazu kommt noch, dass der vorhandene Kernel bestimmte Voraussetzungen (u.a. Modul-Support) mit einkompiliert haben muss.
Ein lsmod oder ein Blick in die /system/lib/modules verrät das. Mein MTK 6582 Kitkat Telefon hat Module.

u.k-f schrieb:
Ebenso muss er 'USB-Netzwerk-Adapter Support mitbringen, da weiß ich nicht, ob der als Modul nachgeladen werden kann, oder ob der fest im Kernel drin sein muss.
Der kann als Modul


u.k-f schrieb:
Ob man sich damit einen Kernel erzeugt, oder nur ein Modul, macht nur einen Unterschied in einem Setting...
Ein neuer Kernel kann wesentlich mehr Fehler enthalten als ein neues Modul. Ersetze nie etwas das funkioniert.

u.k-f schrieb:
Interessant ist letztlich, ob der Adapter, wenn er angestöpselt ist, auch als Netzwerk-Device angezeigt wird.
Ansonsten dhcpcd ethx.
Ich hatte den Blick in die /sys/module deshalb vorgeschlagen, weil nicht jeder eine Auswahl an Adaptern mit verschiedenen Chips in der Schublade hat. Mann kann also vorher nachsehen welchen Adapter/Chip man kaufen sollte.
 
Zuletzt bearbeitet:
Kiwi++Soft

Kiwi++Soft

Ehrenmitglied
Viele Wege führen zum gleichen Ziel.

Wenn Du einen alternativen Weg kennst, schön für Dich :thumbup:

Nur die von mir geschriebene Anleitung kann halt nicht für MTK verwendet werden.

Ich bevorzuge es auch, einen Chip von einem Hersteller zu haben, der brauchbare Kernel-Sourcen zur Verfügung stellt.

Aber jeder wie er mag.
 
Kiwi++Soft

Kiwi++Soft

Ehrenmitglied
rudolf schrieb:
Ich hatte den Blick in die /sys/module deshalb vorgeschlagen, weil nicht jeder eine Auswahl an Adaptern mit verschiedenen Chips in der Schublade hat. Mann kann also vorher nachsehen welchen Adapter/Chip man kaufen sollte.
Das kann aber zu der unangenehmen Überraschung führen, dass zwar der Treiber für den Chip enthalten ist, aber die Liste der 'Vendor-IDs/Device-IDs' die in den Treiber-Sourcen enthalten ist, nicht zu dem vorhanden Gerät passt, weil man einen Adapter erwischt hat, der zwar den unterstützten Chip hat, aber der Hersteller erst als Hersteller von Adaptern mit diesem Chip aufgetreten ist, nachdem der Kernel aus den Sourcen erstellt wurde.

Beim selbst kompilieren ist das kein Problem, in die Liste eine weitere USB Vendor-ID/Device-ID Paarung einzutragen:

Hier ein Beispiel aus dem AX88179-178a Treiber Source:

Code:
static const struct usb_device_id	products [] = {
{
	/* ASIX AX88179 10/100/1000 */
        USB_DEVICE (0x0b95, 0x1790),
        .driver_info = (unsigned long) &ax88179_info,
},{
	/* ASIX AX88178A 10/100/1000 */
        USB_DEVICE (0x0b95, 0x178a),
        .driver_info = (unsigned long) &ax88178a_info,
},{
	/* Sitecom USB 3.0 to Gigabit Adapter */
        USB_DEVICE (0x0df6, 0x0072),
        .driver_info = (unsigned long) &sitecom_info,
},
	{ },		/* END */
};
Insofern könnte es dennoch passieren, dass man sich einen Adapter kauft, für dessen Chip ein Treiber enthalten ist, aber man dennoch den Treiber (mit einer weiteren Vendor-ID/Device-ID in den Sourcen) erneut bauen müsste.
 
R

rudolf

Lexikon
An meinem Trekstor Tablet wurde der Apple adapter erkannt. Das ist ein asix, aber mit eigener vid/pid. Bei dem Windows Treiber von asix musste ich die id vom Apple adapter erst eintragen.
Was mich überrascht hat ist das man bei asix auch die mcs7830 treiber runterladen kann. Google verriet mir dann, dass asix 2011 Moschip gekauft hat. Daher vetstehe ich auch warum das trekstor gerade die beiden Treiber hat, denn Asix unterstützt Linuxtreiber.
 
Ähnliche Themen - USB2RJ45- / USB-LAN-Adapter für Androiden verwenden - Treiber-Strategien Antworten Datum
25
Oben Unten