Wi-Fi non funziona in Linux? Ecco come risolverlo

Una fotografia di una finestra con un logo Wi-Fi su di essa.

Una delle grandi sfide che gli utenti tendono ad affrontare con Linux è il Wi-Fi. I driver Wi-Fi spesso non sono inclusi nel kernel e, di conseguenza, ci sono molti problemi per far funzionare bene i moduli Wi-Fi non Intel su Linux. Qui trattiamo cosa succede quando il Wi-Fi non funziona su Linux e come risolverlo.

Indice

  • Problemi Wi-Fi Hardware vs. Software
  • Installare i driver dall’ISO di Ubuntu
  • Problema Uno: Dispositivo non Rilevato
  • Problema Due: Modulo Driver Mancante
  • Problema Tre: DNS
  • Problema Quattro: Nessun Network Manager

Suggerimento: scopri come trovare le password Wi-Fi salvate in Linux.

Problemi Wi-Fi Hardware vs. Software

Un problema di connessione Wi-Fi può essere sia hardware che software. I problemi hardware sono relativamente facili da diagnosticare: tutto ciò che devi fare è aprire il terminale e inserire il seguente comando:

ping localhost

Un terminale che mostra un test di loopback localhost.

Questo è un modo semplice per controllare se l’hardware fisico funziona. localhost funge da indirizzo per controllare la circuiteria della tua scheda NIC. Se questo non funziona, potresti aver bisogno di fare qualche intervento sull’hardware, sia da solo che con l’aiuto di qualcun altro.

Se il ping viene restituito pulito o non vedi nemmeno la tua scheda Wi-Fi, probabilmente hai un problema di software.

A parte ciò, puoi anche controllare se il tuo sistema rileva un’interfaccia di rete attiva eseguendo ip addr. La maggior parte delle distro etichetta le schede wireless attualmente attive come “wl” seguite dai numeri di bus e slot nella scheda madre del computer.

Ad esempio, un’etichetta di “wlp0s1” significa che si tratta di un’interfaccia di rete wireless sul bus 0, slot 1.

Un terminale che evidenzia il dispositivo wireless attualmente in esecuzione nel sistema.

Nota: Se non riesci a navigare in internet, potrebbe essere necessario disabilitare IPv6 sulla tua macchina Linux.

Installare i driver dall’ISO di Ubuntu

Se la tua distro non rileva affatto la tua rete Wi-Fi o se si verificano errori, puoi provare a installare o reinstallare i driver Wi-Fi dal file ISO di Ubuntu. Prima, devi scaricare l’ISO di Ubuntu corrispondente alla tua versione di Ubuntu. (Presumibilmente, devi scaricarlo su un dispositivo diverso o scaricarlo utilizzando la tua connessione Ethernet su Ubuntu.)

Apri un terminale, quindi inserisci la seguente sequenza di comandi per montare l’ISO di Ubuntu su un’unità virtuale:

sudomkdir/media/cdrom  
sudomount-o loop ~/Downloads/ubuntu-*.iso /media/cdrom

Vai su “Aggiornamento Software” dal dashboard, poi fai clic sul pulsante Impostazioni nell’angolo inferiore sinistro della finestra.

Uno screenshot che evidenzia il pulsante

Fai clic sulla scheda Driver Aggiuntivi, quindi seleziona l’opzione Adattatore di Rete Wireless e fai clic su Applica Modifiche.

Problema Uno: Dispositivo non Rilevato

Se il dispositivo wireless non è rilevato da Ubuntu (o da qualsiasi distro per quell’argomento), apri una sessione terminale e digita il seguente comando:

sudo lsusb

Questo comando stamperà tutti i dispositivi USB attualmente collegati al tuo computer. Cerca qualsiasi riga che contenga “Adattatore Wireless” o “RTL”.

sudo lsusb | grep "RTL"

Un terminale che mostra il dispositivo USB Wi-Fi attivamente in uso in Linux.

Oltre a elencare tutti gli adattatori USB, puoi anche sondare il tuo sistema per eventuali dispositivi wireless PCI. Per fare ciò, esegui il seguente comando:

sudo lspci

Proprio come con il comando lsusb, cerca nelle righe dell’output di lspci eventuali etichette contenenti “Controllore di Rete” o “Controllore Ethernet”.

Un terminale che evidenzia il dispositivo Wi-Fi basato su PCI in Ubuntu Linux.

Trova il modulo driver esatto che il tuo dispositivo wireless sta attualmente utilizzando eseguendo il seguente comando:

sudo lshw -C network | grep "driver"

Evidenzia il valore della variabile “driver” e copialo negli appunti.

Un terminale che evidenzia il driver attualmente attivo per il dispositivo Wi-Fi.

Problema Due: Modulo Driver Mancante

Dopo aver eseguito con successo i comandi lsusb e lspci, confermando che la tua distro Linux può vedere la scheda wireless, puoi supporre che il firmware funzioni, solo che il sistema non sa cosa fare con il dispositivo. È qui che servono i driver o i moduli.

Digita il seguente comando e sostituisci “modulename” con il contenuto degli appunti:

sudo modprobe modulename

Ad esempio, se il tuo driver wireless è “iwlwifi,” sarebbe come segue:

sudo modprobe iwlwifi

Dopo questo, esegui sudo lsmod | grep "modulename" per vedere se il kernel Linux ha caricato correttamente il tuo dispositivo Wi-Fi.

Un terminale che mostra il modulo Wi-Fi che viene caricato nel kernel corrente.

Carica il Modulo Driver Automaticamente all’Avvio

È un caso raro, ma a volte il modulo non persiste dall’avvio. In questo caso, puoi forzarlo a caricarsi permanentemente. Inserisci il comando seguente nel terminale:

sudo nano /etc/modules

Aggiungi il nome del tuo modulo in fondo e salva il file.

Un terminale che mostra il file di configurazione che può caricare i moduli del kernel all'avvio.

Riavvia la macchina per verificare se il kernel Linux ha caricato correttamente il dispositivo wireless.

Buono a sapersi: scopri come il tuo computer gestisce il suo hardware installando il tuo kernel Linux personalizzato in Ubuntu oggi.

Problema Tre: DNS

È raro che ci siano problemi con il DNS; tuttavia, vale la pena indagare se hai ancora problemi di connessione. Dal terminale, digita il seguente comando per controllare il risolutore DNS predefinito del sistema:

nmcli device show INTERFACE-NAME | grep IP4.DNS

Per impostazione predefinita, questo sarà impostato sull’indirizzo IP del tuo router. Se non funziona, potresti dover cambiare “wlp0s1” con qualsiasi sia l’utilizzo del tuo wireless. Puoi utilizzare anche il seguente comando per ottenere la designazione:

ip addr | grep ": "

Una volta ottenute queste informazioni, ping il tuo indirizzo del risolutore DNS. Se funziona, puoi anche inviare un ping a una rete esterna come i risolutori DNS di Google:

ping 8.8.8.8

Se tutti i dispositivi nella tua rete danno errori di caricamento della pagina, allora cambia i risolutori DNS sul tuo router con quelli di Google o di OpenNIC. Dovrai consultare il produttore del tuo router per come fare questo, ma in generale si fa accedendo alla console di amministrazione del dispositivo. Puoi trovare questo su maggior parte dei router andando su “192.168.0.1” o “192.168.254.254” su un browser web.

Aggiungere un Server DNS Personalizzato in NetworkManager

Detto ciò, puoi anche cambiare il risolutore DNS su base per dispositivo. Per farlo in Ubuntu, fai clic sul Pulsante Menu di Controllo nell’angolo in alto a destra del desktop, poi seleziona l’icona dell’Ingranaggio.

Uno screenshot che evidenzia il pulsante Impostazioni in Gnome.

Fai clic sulla categoria Wi-Fi, poi cerca la categoria Reti Visibili.

Uno screenshot che evidenzia la sezione delle reti visibili della categoria Wi-Fi.

Seleziona l’icona dell’Ingranaggio sulla riga che contiene il nome del tuo punto di accesso wireless.

Fai clic sulla scheda IPv4 nella barra superiore della finestra più piccola.

Uno screenshot che evidenzia la scheda IPv4 nel menu delle impostazioni del punto di accesso.

Vai alla sezione DNS, poi disattiva l’interruttore Automatico.

Uno screenshot che evidenzia l'interruttore DNS

Digita “8.8.8.8,8.8.4.4” nella casella di testo DNS, poi fai clic su Applica per confermare le impostazioni.

Uno screenshot che evidenzia i risolutori DNS personalizzati per la connessione Wi-Fi attuale.

Apri un nuovo terminale, poi esegui il seguente comando per rimuovere eventuali dati precedenti del risolutore DNS:

resolvectl flush-caches

Testa se il tuo sistema ora utilizza le nuove impostazioni del risolutore DNS eseguendo il seguente comando:

resolvectl status | grep "Current DNS Server"

Controlla se le impostazioni DNS correnti hanno risolto il tuo problema di rete caricando una pagina web su un browser web.

Uno screenshot del sito MakeTechEasier su una macchina Ubuntu con un risolutore DNS personalizzato.

Buono a sapersi: scopri di più sui server di nomi e i risolutori DNS utilizzando dig in Linux.

Problema Quattro: Nessun Network Manager

Supponiamo che tu abbia rimosso il Network Manager o lo abbia disinstallato per errore. Questa è una situazione davvero problematica: non hai internet e non hai Network Manager, ma ci sono cose che puoi fare.

Assumendo che il pacchetto sia ancora nel tuo cache, puoi andare al terminale e inserire:

# Debian/Ubuntu  
sudo apt install network-manager  
  
# Fedora  
sudo dnf install NetworkManager  
  
# Arch Linux  
sudo pacman -Syu networkmanager

Se ciò non funziona, puoi forzare il tuo sistema a connettersi a un punto di accesso wireless utilizzando wpa_supplicant. Questo è uno strumento da linea di comando che utilizza il driver del tuo dispositivo wireless per connettersi a un punto di accesso senza utilizzare Network Manager.

Per cominciare, crea un file di configurazione per wpa_supplicant utilizzando il tuo editor di testo preferito:

sudo nano /etc/wpa_supplicant.conf

Incolla il seguente blocco di codice all’interno del file di configurazione, quindi sostituisci “SSID” e “PASSWORD” con il nome del punto di accesso e la password del tuo router:

network={  
ssid="SSID"  
password="PASSWORD"  
}

Salva il file di configurazione, poi incolla la seguente riga di codice nella tua sessione terminale:

sudo wpa_supplicant -B -i INTERFACE-NAME -c /etc/wpa_supplicant.conf -D nl80211

Sostituisci il valore del flag “-i” con il nome della tua interfaccia wireless.

Nota: questo comando funzionerà solo su schede wireless più recenti. Se stai cercando di collegare una scheda Wi-Fi più vecchia, sostituisci il valore del flag “-D” con “wext.”

Richiedi un nuovo indirizzo IP dal tuo router ricaricando il demone DHCP:

sudo dhclient INTERFACE-NAME

Testa se la tua connessione Wi-Fi ora funziona eseguendo un ping a un sito esterno:

ping -c 5 maketecheasier.com

Reinstalla il Network Manager per ripristinare la piena funzionalità Wi-Fi del tuo sistema Linux:

sudo apt install network-manager

Riavvia la tua macchina per caricare la nuova installazione del Network Manager.

Comprendere come funzionano i moduli Wi-Fi e i driver del kernel è solo il primo passo per capire come funziona Linux sotto il cofano. Esplora di più il lato tecnico di questo sistema operativo creando un filesystem nascosto con Shufflecake.