ubuntuusers.de

HOWTO: Ethernet over USB

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Emma2

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 609

Ich möchte einen Raspberry Pi über USB mit dem PC verbinden (aktuell Ubuntu, später im Projekt leider Windows), hänge aber irgendwie bei den Grundlagen...
Auf dem Pi kann ich den USB-Port "als Netzwerkkarte" konfigurieren, steht z.B. in https://raspberrypi.stackexchange.com/questions/112240/communication-between-raspi-and-another-computer-over-usb. Dort sehe ich dann auf ifconfig einen Netzwerkadapter namens usb0.

Aber was muss ich auf Linux-Seite dazu tun? Die entsprechenden Module scheinen geladen zu sein:

1
2
3
$ lsmod | grep usbnet
usbnet                 53248  3 cdc_mbim,cdc_ncm,cdc_ether
mii                    20480  1 usbnet

Ich sehe dort aber keinen entsprechenden "Netzwerkadapter". Wie richte ich den ein?
... und dann noch die Frage: wie sorge ich dafür, dass dieser "Adapter" genutzt wird, wenn ich z.B. per ssh zum Pi will? Muss ich dann bei mir den USB-Adapter als Gateway für die IP des Pi eintragen? In dem oben zitietren Beispiel steht leider dazu gar nichts, dort sieht es aus, als ginge es "einfach so" - tut es aber nicht.

p.s.: Um die "unvermeidliche" Frage vorab zu beantworten, ich möchte nicht normales Ethernet oder WiFi benutzen, denn im späteren Projekt stehen die nicht zur Verfügung (es ist gefordert, separat davon zu bleiben, und das Zielsystem hat nicht unbedingt eine zweite Netzwerkkarte).

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18199

Wohnort: in deinem Browser, hier auf dem Bildschirm

Also der PI soll einen USB-Port so behandeln, was wäre er eine Netzwerkkarte gegenüber dem PC? Der PC erkennt ne USB-Netzwerkkarte und im Pi gibt es ne zusätzliche Karte, die dann über USB geht.

Die Netzwerk-Sachen klären wir dann später. Am besten nimmt man zur Kommunikation IPv6-link-local, das ist automatisch da und man muss nichts einrichten. Da gibt man dann bei der Adresse das lokale Interface an, über das der Traffic geht.

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 609

Hallo, und vielen Dank für die schnelle Antwort. 😀

Vermutlich habe ich es etwas kraus formuliert, also noch einmal - hoffentlich sauberer:

Auf Seiten des Pi scheint es schon zu funktionieren, ja, er "sieht" den USB-Port als "Netzwerkadapter":

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
pi@rasppidev:~ $ ifconfig -a
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether e4:5f:01:d8:99:5f  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Lokale Schleife)
        RX packets 33  bytes 3351 (3.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 33  bytes 3351 (3.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

usb0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b6:ca:ef:09:4b:54  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.179  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::b06f:ca62:f74f:891d  prefixlen 64  scopeid 0x20<link>
        ether e4:5f:01:d8:99:60  txqueuelen 1000  (Ethernet)
        RX packets 470  bytes 382901 (373.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 320  bytes 39023 (38.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(eth0 und wlan0 will ich abschalten bzw. später "anders" nutzen.)

Ob der PC eine Netzwerkkarte erkennt, das weiß ich eben nicht, denn sie wird dort ja auf ifconfig hin eben nicht angezeigt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
$ ifconfig
enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.161  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::56e1:adff:fe92:4d23  prefixlen 64  scopeid 0x20<link>
        ether 54:e1:ad:92:4d:23  txqueuelen 1000  (Ethernet)
        RX packets 502293479  bytes 721987199265 (721.9 GB)
        RX errors 0  dropped 812276  overruns 0  frame 0
        TX packets 229995073  bytes 24324798504 (24.3 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xdc100000-dc120000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Lokale Schleife)
        RX packets 310286  bytes 27640237 (27.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310286  bytes 27640237 (27.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Daran scheitert es also schon. Konkret suche ich Unterstützung bei folgenden Schritten:
1. Aktivieren der "USB-Netzwerkkarte"
2. Einrichten der "USB-Netzwerkkarte"
3. Einrichten der Verbindung (ssh oder sftp als Test, später Sockets) zum Pi am anderen Ende des USB-Kabels
NB: ssh und sftp selbst funktionieren, wenn ich den Pi über WiFi "sehe".

Oder hast Du mir die Lösung schon aufgezeigt?
Deinen Satz über "IPv6-link-local" verstehe ich leider nicht. Könntest Du mir mit einem Beispiel aushelfen?

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18199

Wohnort: in deinem Browser, hier auf dem Bildschirm

Wird der Pi nun unter

lsusb

am PC angezeigt?

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 609

Nein, wird er nicht. Egal, ob ich das USB-Kabel anstecke oder abziehe, bleibt das Ergebnis:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ lsusb
Bus 002 Device 007: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
Bus 002 Device 005: ID 17ef:1010 Lenovo Lenovo ThinkPad Dock   
Bus 002 Device 002: ID 0bda:0316 Realtek Semiconductor Corp. USB3.0-CRW
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 009: ID 138a:0097 Validity Sensors, Inc. 
Bus 001 Device 007: ID 5986:111c Acer, Inc Integrated Camera
Bus 001 Device 005: ID 8087:0a2b Intel Corp. 
Bus 001 Device 070: ID 1199:9079 Sierra Wireless, Inc. Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
Bus 001 Device 068: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 015: ID 17ef:100f Lenovo Lenovo ThinkPad Dock   
Bus 001 Device 067: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 012: ID 17ef:1010 Lenovo Lenovo ThinkPad Dock   
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Aber wieso sollte er denn überhaupt dort angezeigt werden? Ich betreibe ihn doch nicht im "Gadget-Mode".

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18199

Wohnort: in deinem Browser, hier auf dem Bildschirm

Aber wieso sollte er denn überhaupt dort angezeigt werden? Ich betreibe ihn doch nicht im "Gadget-Mode".

Weil er das muss. Nur so kann er für den PC eine USB-Netzwerkkarte sein, was du haben willst.

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 609

Hmm, aber dann ist das Ganze also nicht symmetrisch?
Ich hatte jetzt irgendwie die Vorstellung, dass sowohl auf dem Pi als auch auf dem PC der USB-Adapter als "weitere Netzwerkkarte" auftaucht, der ich dann z.B. manuell eine IP geben kann... und über diese IP können die beiden sich dann gegenseitig erreichen. Ist das denn falsch?

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18199

Wohnort: in deinem Browser, hier auf dem Bildschirm

Vergiss bitte das Netzwerk und die IP-Adressen. Erstmal muss für den PC die USB-Karte verfügbar sein, was sie aktuell nicht ist.

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 609

Ok, Netzwerk vergesse ich erst einmal...
Aber wahrscheinlich stehe ich trotzdem "auf dem Schlauch": Was meinst Du denn mit "USB-Karte"? Ich verstehe nicht, was der PC hier denn sehen soll? Müsste das dann aber nicht umgekehrt auch für den Pi gelten? Dass er etwas "sieht"?

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18199

Wohnort: in deinem Browser, hier auf dem Bildschirm

Der PC muss ja irgendwie mit dem Netzwerk vom PI verbunden werden. Das geht per USB. richtig?

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 609

"Jein"... wieso "mit dem Netzwerk vom Pi"?Ich hatte es bisher so verstanden, dass ein USB-Device/Bus quasi als "Netzwerkkarte" auftaucht - so sieht es doch zumindest auf dem Pi aus (siehe Ergebnis von ifconfig oben). Dann würde ich erwarten, dass das auf dem PC genauso aussieht. Oder habe ich das an dieser Stelle schon ganz falsch verstanden?
Ich dachte, ein "Gerät", das ich an einen USB-Anschluss stecke, sehe ich nur dann spontan, wenn dieses Gerät eben kein Host ist, sondern ein "Gadget".
(NB: Diesen Mode kann der Pi auch, aber dann ist er ja eher "passiv", zumindest "sieht" er dann den PC nicht, und ich könnte wohl nur kommunizieren, indem der PC Dateien irgendwo auf dem Pi ablegt...)

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 609

Habe gerade noch etwas gefunden: Es könnte sein, dass nicht alle USB-Ports des Pi als Netzwerkanschluss verwendet werden können, steht hier: https://raspberrypi.stackexchange.com/questions/100583/where-is-the-usb2-otg-port-on-the-rpi-4-model-b-located Zumindest für den "Gadget-Mode" muss es anscheinend der USB-C-Port sein, in dem normalerweise das Netzteil steckt.
(Zugegeben, ich möchte eigentlich nicht den Gadget-Mode nutzen, aber wenn ich sonst keine Lösung finde, würde ich den wohl auch einmal testen...)

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18199

Wohnort: in deinem Browser, hier auf dem Bildschirm

Der Rechner muss jetzt per USB den Pi anzeigen. Solange das nicht der Fall ist, ist was faul.

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 609

Ich habe nun den Pi über seinen "Power"-USB-Anschluss an den PC gestöpselt, und dann sehe ich ihn tatsächlich, aber eben als "Gadget" (Bus 001, Device 001):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
$ lsusb
Bus 002 Device 007: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
Bus 002 Device 005: ID 17ef:1010 Lenovo Lenovo ThinkPad Dock   
Bus 002 Device 002: ID 0bda:0316 Realtek Semiconductor Corp. USB3.0-CRW
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 009: ID 138a:0097 Validity Sensors, Inc. 
Bus 001 Device 007: ID 5986:111c Acer, Inc Integrated Camera
Bus 001 Device 005: ID 8087:0a2b Intel Corp. 
Bus 001 Device 070: ID 1199:9079 Sierra Wireless, Inc. Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
Bus 001 Device 068: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 015: ID 17ef:100f Lenovo Lenovo ThinkPad Dock   
Bus 001 Device 081: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
Bus 001 Device 067: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 012: ID 17ef:1010 Lenovo Lenovo ThinkPad Dock   
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Aber dann ist der Pi "passiv", ich kann an ihm nichts machen, habe kein Monitorbild, nix. Der Pi ist dann auch nicht mehr per ping zu erreichen, er erscheint mir eben als "dummes Gerät".

Dabei möchte ich doch eigentlich dieses tun: https://raspberrypi.stackexchange.com/questions/112240/communication-between-raspi-and-another-computer-over-usb, wüsste aber nicht, wie ich ihn jetzt überhaupt ansprechen soll... 😢

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11250

Wohnort: München

Wie viel Bandbreite brauchst du für die Verbindung? Geht es da nur darum Befehle abzusetzen oder sollen da auch größere Datenmengen drüber laufen? Für ersteres reicht ein USB-Seriell-Adapter an den entsprechenden GPIO-Pins: https://elinux.org/RPi_Serial_Connection

Antworten |