Collegare Raspberry Pi tramite Ethernet al laptop senza router? [chiuso]


99

Sto lavorando a un progetto di palloncino con un Raspberry Pi. Quando potenzialmente ripristiniamo il Raspberry Pi, molto probabilmente sarà in un luogo rurale e mi piacerebbe spegnere il Pi in modo sicuro a quel punto.

Senza un router o una rete nelle vicinanze, mi chiedevo se esiste un modo per collegare un Raspberry Pi con un cavo Ethernet direttamente a un laptop?


Hai considerato di configurarlo come punto di accesso? Questo è quello che ho fatto in passato.
Spencer

Risposte:


75

È una soluzione per Ubuntu (l'idea funziona anche per Windows o Mac) che ho provato oggi e funziona a meraviglia.

Materiale

  1. un cavo Ethernet incrociato (il nome è stravagante ma è solo un normale cavo Ethernet)
  2. un laptop (ubuntu)
  3. un Raspberry Pi (ho il Pi2)

Prerequisiti sul tuo ubuntu

  1. Installa gestore di rete

    $sudo apt-get install network-manager

  2. Installa nmap

    $sudo apt-get install nmap

Modifica la connessione cablata sul tuo laptop (Ubuntu)

  1. Modifica le impostazioni di IpV4 in "Condividi su altri computer"
  2. Salva l'impostazione
  3. Riavvia il tuo laptop

Condividi la connessione WiFi del tuo laptop tramite cavo crossover Ethernet

  1. Collega il tuo RPi al tuo laptop usando il cavo Ethernet

  2. Cerca l'indirizzo di trasmissione della connessione Ethernet (laptop),

$/sbin/ifconfig eth1 | grep "Bcast" | awk -F: '{print $3}' | awk '{print $1}' 10.42.0.255

  1. Usa questo indirizzo per scoprire l'indirizzo IP del tuo RPi, nel mio caso è 10.42.0.96 perché 10.42.0.1 è il mio laptop

    $nmap -n -sP 10.42.0.255/24

  Starting Nmap 6.40 ( http://nmap.org ) at 2016-02-20 23:07 CET
  Nmap scan report for 10.42.0.1
  Host is up (0.00031s latency).
  Nmap scan report for 10.42.0.96
  Host is up (0.0023s latency).
  Nmap done: 256 IP addresses (2 hosts up) scanned in 2.71 seconds
  1. Accedi al tuo RPi dal tuo laptop (-Y con X-forwarding)

    $ssh -Y pi@10.42.0.96

  2. Ed ecco! Ora il tuo RPi è connesso al tuo laptop e RPi può condividere la connessione WiFi.

    pi@raspberrypi ~ $

Condividi display e tastiera del tuo laptop con RPi

  1. Installa vncserver su Raspberry Pi

    $ sudo apt-get update

    $ sudo apt-get install tightvncserver

  2. Installa vncviewer sul tuo laptop scaricando RealVNC (supporta più piattaforme) http://www.realvnc.com/download/vnc/

  3. Per poter copiare e incollare dal server VNC <--> visualizzatore VNC, è necessario installare autocutsel sul tuo RPi.

$sudo apt-get install autocutsel

Se questo sito non funziona, prova a scaricare il .deb direttamente da un sito mirror, ad esempio mirror.hmc.edu/debian/pool/main/a/autocutsel/autocutsel_0.10.0-1_armhf.deb
e installalo

$sudo dpkg -i autocutsel_0.10.0-1_armhf.deb

  1. Avvia vncserver sul tuo RPi (devi riavviare vncserver dopo aver installato autocutsel, puoi emettere $vncserver -kill :1)

    $vncserver :1

  2. Aggiungi autocutsel -fork a /home/pi/.vnc/xstartup

 #!/bin/sh
 xrdb $HOME/.Xresources xsetroot -solid grey 
 autocutsel -fork
 #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
 #x-window-manager &
 # Fix to make GNOME work 
 export XKL_XMODMAP_DISABLE=1 
 /etc/X11/Xsession
  1. Avvia vncviewer sul tuo laptop

    $vncviewer

  2. Apparirà una finestra vncviewer e digiterà l'indirizzo IP del tuo RPi (dato dal tuo laptop) seguito dalla porta 1, che è il tuo server VNC. ad esempio: 10.42.0.96:1 nel mio caso.

  3. Collegalo al vNCServer ospitato sul tuo RPi digitando una password (imposta una password tu stesso)

    12.Ora puoi vedere il desktop di RPi sul tuo laptop e ho aperto il mio browser per mostrare che anche la connessione WiFi condivisa funziona.

Guarda il desktop Raspberry Pi sul tuo ubuntu


scusa, non posso pubblicare più di due link perché sono un principiante su Stackoverflow, tuttavia, questi sono i miei riferimenti: Condivisione Wifi tramite ethernet su ubuntu Condividi display installando VNC su Raspberry per Linux Condividi display installando VNC su Raspberry per Windows
Nicole Finnie

Il riferimento per risolvere il problema di copia e incolla tra il server VNC e il client VNC Copia / incolla TightVNC tra il sistema operativo locale e Raspberry Pi
Nicole Finnie

Grazie, avevo aggiunto la tua risposta ai preferiti per il mio futuro riferimento!
Mohd Shahril

Grazie! Questa è un'ottima risposta, stavo cercando una procedura così chiara ovunque su Internet! Un commento minore: per alcune persone, potresti voler controllare eth0, invece di eth1 (in uno dei comandi nella risposta).
Nishant Kelkar

3
Sei sicuro che i cavi crossover siano quelli normali? Penso di no, vedi: en.wikipedia.org/wiki/Ethernet_crossover_cable Quelli normali funzionano come hai detto su Ubuntu 16.04, RPI 2 Raspbian 2016.05. Il 16.04, non è necessario installare network-manager, basta usare la GUI predefinita "Impostazioni di rete". E dovresti probabilmente fare clic su "Aggiungi" invece di "Modifica". Non ce n'è bisogno nmap, solo cat /var/lib/misc/dnsmasq.leases. Vedi: interlockroc.org/2012/12/06/raspberry-pi-macgyver
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

21

Non hai bisogno di un cavo incrociato. È possibile utilizzare un normale cavo di rete poiché il chip LAN Raspberry Pi è abbastanza intelligente da riconfigurarsi per connessioni di rete dirette. Saluti


21

Nessun router + nessuno schermo + cavo Ethernet normale + RPI 2 + Raspbian Lite 2018-11-13 + Ubuntu 18.10

Per prima cosa dobbiamo abilitare il server SSH sul Pi, che è disabilitato di default per sicurezza.

Se hai già una shell sul Pi tramite un metodo non SSH come schermo + tastiera o UART (vedi sotto), esegui:

sudo systemctl enable ssh
sudo service sshd start

come spiegato su: /raspberrypi/58478/ssh-not-working-with-fresh-install Questo persiste durante gli stivali.

Altrimenti, inserisci la scheda SD sul tuo host e crea un magico file vuoto chiamato sshfile nella boot/partizione.

Sugli host Ubuntu, viene montato automaticamente e puoi fare semplicemente:

sudo touch /media/$USER/boot/ssh

che puoi confermare con:

lsblk

che contiene:

mmcblk0     179:0    0  14.4G  0 disk
├─mmcblk0p1 179:1    0  43.9M  0 part /media/ciro/boot
└─mmcblk0p2 179:2    0  14.4G  0 part /media/ciro/rootfs

Se non abiliti il ​​demone SSHD sul Pi, la connessione SSH fallirà con:

ssh: connect to host 10.42.0.160 port 22: Connection refused

quando lo proviamo più tardi.

Dopo aver abilitato il server SSH

Quindi, avvia il Pi e collega un cavo Ethernet dal tuo laptop direttamente al Pi:

inserisci qui la descrizione dell'immagine

Su Ubuntu 17.04 per aggirare questo bug come menzionato in questa risposta devi prima:

sudo apt-get install dnsmasq-base

Sull'host, apri il gestore di rete:

nm-connection-editor

E vai:

  1. + segno (Aggiungi una nuova connessione)
  2. Ethernet
  3. Creare
  4. Impostazioni IPv4
  5. Metodo: condiviso con altri computer
  6. Dagli un buon nome
  7. Salva

inserisci qui la descrizione dell'immagine

Trova l'IP del Pi sull'host:

cat /var/lib/misc/dnsmasq.leases

produce qualcosa come:

1532204957 b8:27:eb:0c:1f:69 10.42.0.160 raspberrypi 01:b8:27:eb:0c:1f:69

10.42.0.160 è l'IP, quindi come al solito:

ssh pi@10.42.0.160

Ho anche quanto segue nel mio .bashrc:

piip() ( cat /var/lib/misc/dnsmasq.leases | cut -d ' ' -f 3; )
pissh() ( sshpass -p raspberry ssh "pi@$(piip)"; )

Dall'interno del Pi, nota che può accedere a Internet normalmente tramite le altre interfacce del tuo host:

ping google.com

Ad esempio sul mio laptop, il Pi occupa l'Ethernet, ma anche l'host è connesso a Internet tramite WiFi.

Il cavo crossover non è necessario se la scheda di rete host supporta Auto MDI-X . Questo è il caso dell'hardware più recente, incluso ad esempio il Lenovo T430 del 2012 con cui ho testato, che ha una "connessione di rete Gigabit Intel® 82579LM" che documenta il supporto per Auto MDI-X .

Ora puoi anche:

Convertitore USB seriale UART

Questa è un'alternativa a SSH se vuoi solo ottenere una shell sul Pi: https://en.wikipedia.org/wiki/Serial_port

Questo non utilizza SSH o la rete stessa, ma piuttosto l'interfaccia seriale più vecchia, più semplice, più diretta, più affidabile, con larghezza di banda inferiore e distanza inferiore. Il Pi non avrà accesso a Internet con questo metodo.

I computer desktop hanno ancora una porta seriale che puoi collegare direttamente filo a filo con il Pi, ma questi sono nascosti nella maggior parte dei laptop, quindi dobbiamo acquistare un adattatore USB economico. Qui ho usato: https://www.amazon.co.uk/gp/product/B072K3Z3TL Vedi anche: /unix/307390/what-is-the-difference-between- ttys0-ttyusb0-e-ttyama0-in-linux / 367882 # 367882

Innanzitutto collega la scheda SD all'host e modifica il config.txtfile presente nella prima partizione per aggiungere:

enable_uart=1

come spiegato su: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=141195

Questa prima partizione contiene il bootloader, i suoi file di configurazione e il kernel (Linux / tuo), config.txtessendo uno di questi. La seconda partizione contiene l'attuale filesystem root di Linux.

Ora collega il tuo computer al Pi come:

inserisci qui la descrizione dell'immagine

Hai solo bisogno di collegare 3 cavi:

  • Terra a terra
  • Tx su Pi a Rx sulla porta da USB a seriale
  • Rx su Pi to Tx su tye USB alla porta seriale

Questo è anche documentato su: https://www.raspberrypi.org/documentation/usage/gpio/README.md

Fai attenzione a non collegare il Ground al 5V, ho già masterizzato 2 chip UART su USB e un UART RPI in questo modo!

Non è necessario collegare affatto il 5V al 5V. Penso che tu possa alimentare il tuo Pi in questo modo, ma ho letto che questa è una cattiva idea, usa la solita fonte di alimentazione USB.

Infine, collega il lato USB del connettore al tuo computer host e ottieni una shell con:

sudo apt install screen
sudo usermod -a -G dialout $USER
screen /dev/ttyUSB0 115200

Esci con Ctrl-A \.

Ecco un video di Adafruit che lo mostra: https://www.youtube.com/watch?v=zUBPeoLW16Q

Guarda anche

Domanda simile su RPI SE: /raspberrypi/3867/ssh-to-rpi-without-a-network-connection


1
L'unico metodo (ho provato una dozzina di strategie diverse) che funziona per me (sono su Fedora 29). Grazie!
Daniel Schütte

Nel mio caso il file /var/lib/misc/dnsmasq.leases è vuoto ...
borizzzzz

@Kirjain, grazie per la segnalazione. La tua configurazione è assolutamente identica alla mia (host, guest, hardware)? In caso contrario, quali differenze hai?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

1
@CiroSantilli 新疆 改造 中心 996ICU 六四 事件 serbatoi per raggiungere. Ho lo stesso hardware ma il mio PI esegue la versione più recente (giugno 2019) di raspbian buster e il mio host è ubuntu 18.04. Dopo aver fornito il mio host e il mio indirizzo IP statico PI, sono arrivato al punto di eseguire il ping del PI dall'host. Ma quando provo ssh, ottengo l'errore di connessione rifiutata che hai menzionato nella tua risposta. E sì, ho creato il file ssh vuoto nella partizione di avvio del mio PI. Secondo le note di rilascio downloads.raspberrypi.org/raspbian/release_notes.txt, questo dovrebbe comunque essere un approccio valido.
borizzzzz

@AlexeyGy hmm, non è la prima cosa che dico nella risposta? :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

8

L'ho appena implementato e testato con successo. Stessa situazione con il mio progetto, voglio connettermi a un Raspberry Pi senza router o wifi. Solo un semplice cavo ethernet.

Usando il programma ssh putty metti l'indirizzo come

raspberrypi.local

Effettua il login e puoi accedere al terminale.

In alternativa, se il server VNC è configurato, utilizzare il server VNC e inserire

raspberrypi.local: 1

Nell'indirizzo del server. inserisci la password del tuo server VNC e ora hai accesso alla GUI per fare quello che vuoi.

In alcuni casi è stato eseguito script in una posizione remota. Nella situazione dei poster, spegni in sicurezza il Pi. Simples Brufoli.


1
"ssh pi@raspberrypi.local" funziona per una semplice vecchia installazione di rasberrian su un terminale linux mint.
Elliot Robert

vale la pena notare che questo dipende dal nome host. Quindi, se hai cambiato il nome host del pi, ora potrebbe essereelderberryphi.local
lucidbrot

7

Configura l'ip statico per il tuo laptop e Raspberry Pi. Sul rapberryPI configurarlo come segue.

pi@rpi>sudo nano /etc/network/interfaces

Quindi configurare quanto segue come richiesto per connettersi al laptop.

iface eth0 inet static

address 192.168.1.81

netmask 255.255.255.0

broadcast 192.168.1.255

4

configurare l'ip statico sul raspberry pi:

sudo nano /etc/network/interfaces

e poi aggiungi:

iface eth0 inet static
     address 169.254.0.2
     netmask 255.255.255.0
     broadcast 169.254.0.255

quindi puoi accedere al tuo lampone tramite ssh

ssh pi@169.254.0.2

3

Di seguito sono riportate le istruzioni per gli utenti Windows sulla connessione a un RPi utilizzando solo un cavo Ethernet e un server DHCP. Non è necessario un cavo incrociato, poiché l'RPi può gestirlo. Ho un post sul blog che documenta questo con immagini qui che potrebbero essere più facili da seguire.

Download

Scarica il server DHCP per Windows (il link per il download è qui ). Decomprimere il file zip e aprire l'applicazione dhcpwiz, che configurerà il server DHCP.

Configurazione del server DHCP

Premi Avanti nella prima schermata.

Nella seconda schermata, cerca una riga "Connessione alla rete locale" e verifica che il suo indirizzo IP sia 0.0.0.0e il suo stato enabled. Collega il cavo Ethernet dall'RPI al tuo laptop e accendi il Pi. Premi Aggiorna in questa schermata finché l'indirizzo IP non cambia in 169.254.*.*. Se è qualcos'altro, dovresti modificare le impostazioni di rete per la connessione alla rete locale (assicurati che non sia un IP / DNS statico). Fare clic su questa riga Connessione alla rete locale e premere Avanti.

Controlla HTTP (Web Server). Ciò rende molto più facile individuare l'indirizzo IP di RPi. Premi Avanti.

Prendi le impostazioni predefinite e premi Avanti fino ad arrivare allo Writing the INI fileschermo. Controlla Overwrite existing filee premi il Write INI filepulsante. Quindi premi Avanti.

Nella schermata finale, seleziona Run DHCP server immediatelye premi `Fine.

DHCP Server e ottenere l'indirizzo IP del tuo Raspberry PI

Questo avvia il server DHCP effettivo, utilizzando la configurazione appena creata nella procedura guidata precedente. Fare clic sul Continue as tray apppulsante e il server DHCP verrà ridotto a icona nella barra delle applicazioni.

Ovunque da 1 secondo a 5 minuti da ora vedrai un avviso sulla barra delle applicazioni con il tuo laptop e il nuovo indirizzo IP del tuo RPi. Questo avviso è molto veloce e probabilmente lo perderai. Normalmente l'IP del tuo RPi lo è 169.254.0.2, ma potrebbe essere *.01o anche qualcos'altro. È più semplice accedere all'interfaccia utente Web del server DHCP all'indirizzo http: //localhost/dhcpstatus.xml . Questo elencherà il nome host come "raspberrypi" con il suo indirizzo IP.

Ora puoi stucco o desktop remoto nel tuo RPi e configurare le sue impostazioni wireless o qualunque cosa tu voglia fare.

Risoluzione dei problemi

Questo può essere un po 'complicato. Mi è sembrato che la mia connessione si interrompesse e non sono stato in grado di tornare a SSH utilizzando l'indirizzo IP. Normalmente, posso riavviare il Pi e ottenere nuovamente l'indirizzo IP. A volte devo riavviare sia RPi che il server DHCP. A volte devo farlo più volte. Ad un certo punto, quando non ho ricevuto una connessione per 15 minuti, ho copiato tutti i file nella cartella dhcpsrv2.5.1 in una nuova cartella e ho provato di nuovo; ha funzionato immediatamente.


1
Per favore, votanti giù commentate o il vostro voto è inutile per la maggior parte delle persone.
byronyasgur

2

È possibile utilizzare un cavo ethernet cross-over - http://en.wikipedia.org/wiki/Ethernet_crossover_cable

Supponendo che il tuo RPi sia un client DCHP, è meglio eseguire un semplice server DHCP sul tuo notebook per assegnare a RPi un indirizzo IP.


3
Non è necessario un cavo incrociato, poiché RPi ha un software che può funzionare con un normale cavo Ethernet.
Matthew Moisen

1

Sì, puoi collegare il raspberry direttamente al tuo PC senza router. Per questo è necessario che il lampone e il tuo computer siano sulla stessa sottorete, ed entrambi abbiano un IP statico configurato (e un cavo Ethernet collegato tra i due dispositivi).

Una configurazione ideale sarebbe la seguente:

Raspberry su eth0: IP: 192.168.1.10 Sottorete: 255.255.255.0

Il tuo PC: IP: 192.168.1.11 Subnet 255.255.255.0

Per impostare un IP manuale su raspberry puoi seguire questa guida

Nel tuo PC puoi impostare un IP manuale nelle impostazioni dell'adattatore di rete e la procedura dipende dal tuo sistema operativo.

Dopo aver configurato i due IP statici, è possibile connettersi al raspberry tramite SSH utilizzando il set di IP (192.168.1.10).

Un altro metodo più semplice è collegare su GPIO un pulsante per spegnere il lampone! Dai un'occhiata qui!


1

Ciò che ha funzionato per me è stata una combinazione delle risposte di Nicole Finnie e Ciro Santilli insieme ad alcune risposte da altre parti.

Impostazione del pi

Dovremo fare due cose: attivare ssh sul pi e configurare pi per usare un ip statico.

Attivazione di ssh

Aggiungi un file chiamato sshnella partizione di avvio della scheda sd (non la /bootcartella nella partizione principale). Questo è ben documentato in altri posti.

IP statico

Apri /etc/dhcpcd.confsulla scheda SD del pi e rimuovi il commento dall'esempio per un ip statico (inizia intorno alla riga 40). Imposta gli indirizzi su

# Example static IP configuration:
interface eth0
static ip_address=10.42.0.182/24
static routers=10.42.0.1
static domain_name_servers=10.42.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

Configurazione del laptop

Innanzitutto, assicurati di aver installato networkmanager(con GUI) sul tuo laptop. Quindi, assicurarsi che dnsmasqsia non è in esecuzione come un servizio:
systemctl status dnsmasq
Se questo comando stampa che il servizio viene arrestato, allora sei bravo.

Successivamente dobbiamo configurare networkmanager. Apri /etc/NetworkManager/NetworkManager.confe aggiungi le seguenti due righe in alto:

[main]
DNS=dnsmasq

Quindi riavvia. Questo passaggio potrebbe non essere necessario. Potrebbe essere sufficiente riavviare il NetworkManagerservizio. Ora vai sulla NetworkManagerGUI (solitamente accessibile da un'icona nell'angolo dello schermo) e scegli Edit Connections...Nella finestra che si apre, fai clic +sull'icona per creare una nuova connessione. Scegli Ethernetcome tipo e premi Create.... Vai alla IPv4 Settingsscheda e seleziona il metodo Shared to other computers. Dai un buon nome alla connessione e salva.

Collega il Raspberry Pi e assicurati che il tuo laptop utilizzi la nuova connessione come connessione ethernet. Se lo è, il tuo pi dovrebbe ora avere un ip dato dal tuo pc. Puoi trovarlo eseguendo prima ifconfig. Questo dovrebbe darti diversi blocchi di testo, uno per ogni interfaccia di rete. Ti interessa quello che è qualcosa come enp0s25o eth0. Dovrebbe avere una riga che legge qualcosa di simile per
inet 10.42.0.1 netmask 255.255.255.0 broadcast 10.42.0.255
guardare l'indirizzo di trasmissione (in questo caso 10.42.0.255). Se è diverso dal mio, spegni il pi e rimetti la scheda SD nel tuo laptop per cambiare static ip_addressin qualcosa in cui i primi tre numeri sono gli stessi del tuo indirizzo di trasmissione. Cambia anche il static routerse il primo del domain_name_serverstuo laptopinetindirizzo. Riaccendi il pi greco e collegalo. Corri di ifconfignuovo per vedere che gli indirizzi non sono cambiati.

ssh nel pi

ssh pi@10.42.0.182
Se ottieni connection refused, il pi non esegue un sshserver. Se capisci host unreachable, mi dispiace.

Spero che questo aiuti qualcuno!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.