Diagnostica al PC con Linux usando l’Intelligenza Artificiale
Questo articolo è una dimostrazione di come una Intelligenza Artificiale, in breve AI all’inglese, come Bard di Google possa semplificare il processo di analisi delle anomalie del mio PC, ormai anzianotto.
Il tutta inizia il giorno in cui a video appaiono una sequenza di errori all’avvio di Ubuntu. Pensai che fossero problemi di Ubuntu stesso e non notando reali problemi di sorta continuai come nulla fosse. Al successivo upgrade di versione i messaggi di errore persistevano e ormai sono alcuni anni che vengono mostrati a video all’avvio quindi ho pensato che forse Ubuntu non avesse colpe e fosse ora di indagare cosa stesse succedendo al mio PC. Oggi, con l’ausilio di Bard ho deciso di indagare e cercare di scoprirne la causa.
Perché oggi e con l’AI di Google ovvero Bard?
Perché cercare sul motore di ricerca la decifrazione dei messaggi di errore è davvero un processo lungo e dispendioso di tempo ed energie quindi non proprio il massimo ma avendo visto i prodigi delle AI disponibili mi sono detto che forse valeva la pena di provare ad usarle. Fra quelle disponibili gratuitamente ho scelto Bard perché è più aggiornata di ChatGPT ed inoltre connessa ad internet anche se la mia preferita, specialmente per programmare, è ChatGPT.
Per prima cosa chiedo:
dove trovo in Ubuntu i messaggi di errore relativi al check dell'hardware che il sistema scrive nei log di avvio?
In Ubuntu, i messaggi di errore relativi al check dell'hardware vengono scritti nel file di log dmesg. Questo file viene generato durante l'avvio del sistema e contiene informazioni su tutti i dispositivi hardware rilevati dal sistema.
Per visualizzare i messaggi di errore relativi al check dell'hardware, puoi utilizzare il comando dmesg. Questo comando visualizzerà il contenuto completo del file di log dmesg.
dmesg
Per visualizzare solo i messaggi di errore, puoi utilizzare l'opzione -T.
dmesg -T
Risposta corretta al 50% perché il comando è giusto ma l’opzione “-T
” non serve per visualizzare i messaggi di errore ma il “Timestamp“. Per mostrare solo i messaggi di errore l’opzione corretta è “-l err
” che Bard mi ha correttamente suggerito quando gli ho contestato la risposta.
Il comando vale non solo per Ubuntu ma per tutte le distribuzioni GNU/Linux. In realtà la risposta continua fornendo altre informazioni. Le risposte sono sempre molto prolisse. Pertanto apro il terminale e digito il comando suggerito ma ottengo un errore:
dmesg: read kernel buffer failed: Operazione non permessa
Bard si è dimenticato di dirmi che questo comando richiede l’autorizzazione di root
. Quindi il comando corretto è:
sudo dmesg -l err
Utilizzando il comando proposto da Bard avremmo ottenuto tutto il log di avvio con tutti i messaggi che il sistema stampa ad ogni operazione che esegue suddivisi in colori diversi a seconda del loro tipo, utile anche per scoprire come il sistema si avvia, passo dopo passo, con tutte le operazione che esegue. Un utile modo per capire cosa succede e imparare tante cose. Tra l’altro questa lista assai lunga di messaggi è quella che ogni utente Debian, ma probabilmente anche di altre distro, vede all’avvio del suo sistema ma che Ubuntu nasconde.
Quindi utilizzando il comando corretto ottengo esattamente gli errori che appaiono all’avvio di Ubuntu più qualche altro scritti in vari colori tra cui il messaggio di errore vero e proprio in rosso:
[ 0.104617] x86/cpu: VMX (outside TXT) disabled by BIOS
[ 1.079106] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PCI0.SAT0.SPT4._GTF.DSSP], AE_NOT_FOUND (20210730/psargs-330)
[ 1.080113] ACPI Error: Aborting method _SB.PCI0.SAT0.SPT4._GTF due to previous error (AE_NOT_FOUND) (20210730/psparse-529)
[ 1.082487] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PCI0.SAT0.SPT4._GTF.DSSP], AE_NOT_FOUND (20210730/psargs-330)
[ 1.083492] ACPI Error: Aborting method _SB.PCI0.SAT0.SPT4._GTF due to previous error (AE_NOT_FOUND) (20210730/psparse-529)
[ 1.888299] usb 3-14: device descriptor read/64, error -71
[ 2.124286] usb 3-14: device descriptor read/64, error -71
[ 2.488285] usb 3-14: device descriptor read/64, error -71
[ 2.724287] usb 3-14: device descriptor read/64, error -71
[ 3.900229] usb 3-14: device not accepting address 6, error -71
[ 4.444229] usb 3-14: device not accepting address 7, error -71
[ 4.445206] usb usb3-port14: unable to enumerate USB device
[ 2557.011692] usb usb3-port13: disabled by hub (EMI?), re-enabling…
Il primo valore tra parentesi quadre è il tempo in secondi dal momento dell’avvio del PC nella parte intera mentre è espresso in microsecondi nella parte decimale. Segue il messaggio di errore.
Per curiosità ho cominciato ad analizzarli tutti anche se quelli che mi interessavano erano relativi alle connessioni USB. Quindi vediamo il significato del primo messaggio e chiedo a Bard:
cosa indica questo messaggio al boot del mio sistema Ubuntu Linux:
[
0.104617
] x86/cpu: VMX (outside TXT) disabled by BIOS
Questo messaggio indica che la funzionalità VMX (Virtual Machine eXtensions) è disabilitata dal BIOS del tuo sistema. La funzionalità VMX consente al sistema operativo di eseguire macchine virtuali, che sono sistemi operativi che vengono eseguiti all'interno di un altro sistema operativo.
Se stai riscontrando problemi con le macchine virtuali, puoi provare ad abilitare la funzionalità VMX nel BIOS del tuo sistema ...
Come sempre la risposta è lunga e suggerisce come ovviare e altre spiegazioni che non sto a riportare in quanto non uso macchine virtuali e non mi interessa sapere altro. Passiamo quindi per curiosità alla seconda linea dei messaggi di errore:
cosa indica questo messaggio al boot del mio sistema Ubuntu Linux:
[ 1.079106] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PCI0.SAT0.SPT4._GTF.DSSP], AE_NOT_FOUND (20210730/psargs-330)
Il messaggio di errore "ACPI BIOS Error (bug): Could not resolve symbol [_SB.PCI0.SAT0.SPT4._GTF.DSSP], AE_NOT_FOUND (20210730/psargs-330)" indica che il kernel Linux non è stato in grado di trovare un simbolo ACPI (Advanced Configuration and Power Interface) nel BIOS. Questo simbolo è necessario per configurare correttamente l'hardware del sistema.
Ci sono diverse possibili cause per questo errore:
Un BIOS non aggiornato.
Un bug nel BIOS.
Un problema con l'hardware del sistema.
Se stai riscontrando questo errore, la prima cosa che dovresti fare è assicurarti di avere installato la versione più recente del BIOS. Puoi controllare il sito web del produttore del tuo computer per vedere se sono disponibili aggiornamenti del BIOS.
Se hai già installato la versione più recente del BIOS e stai ancora riscontrando l'errore, allora potrebbe trattarsi di un bug nel BIOS o di un problema con l'hardware del sistema. In questo caso, ti consiglio di contattare il produttore del tuo computer per assistenza.
Leggendo la risposta e le sue possibili cause, opterei per un BIOS non aggiornato anche perché questo errore è comparso negli anni e non ho mai aggiornato il BIOS quindi è assai probabile.
Immagino che anche i messaggi successivi relativi al BIOS abbiano la stessa motivazione per cui lascio perdere (magari affronto il problema successivamente e ne scrivo in un altro articolo) e procedo oltre, a ciò che mi interessa veramente, ovvero il presunto problema con le porte USB, per cui chiedo nuovamente a Bard:
cosa indica questo messaggio al boot del mio sistema Ubuntu Linux:
[ 1.888299
] usb 3-14: device descriptor read/64, error -71
Il messaggio di errore "usb 3-14: device descriptor read/64, error -71" indica che il kernel Linux non è stato in grado di leggere il descrittore del dispositivo da un dispositivo USB collegato al sistema. Il descrittore del dispositivo è un blocco di dati che contiene informazioni sul dispositivo, come il nome del produttore, il modello e il numero di serie.
Ci sono diverse possibili cause per questo errore:
Un dispositivo USB non compatibile. Il dispositivo USB potrebbe non essere compatibile con il kernel Linux o potrebbe non essere supportato dal BIOS del sistema.
Un problema con il cavo USB. Il cavo USB potrebbe essere danneggiato o non correttamente collegato al dispositivo.
Un problema con il dispositivo USB stesso. Il dispositivo USB potrebbe essere difettoso.
Se stai riscontrando questo errore, la prima cosa che dovresti fare è assicurarti che il dispositivo USB sia compatibile con il kernel Linux. Puoi controllare il sito web di Linux per vedere se il dispositivo è elencato nella lista dei dispositivi supportati.
Se il dispositivo USB è compatibile con il kernel Linux, puoi provare le seguenti soluzioni:
Prova un altro cavo USB.
Prova a collegare il dispositivo USB a una porta USB diversa.
Prova a riavviare il sistema.
Se hai provato tutte queste soluzioni e stai ancora riscontrando l'errore, allora potrebbe trattarsi di un problema con il dispositivo USB stesso. In questo caso, ti consiglio di contattare il produttore del dispositivo per assistenza.
E continua con altre informazioni ma il cuore del problema è giè evidente. I dispositivi collegati alle porte hanno sempre funzionato e tutt’ora funzionano per cui essendo molte le porte USB presenti ma non tutte utilizzate è probabile che il problema sia in una di queste. Un probabile malfunzionamento causato da guasto da vecchiaia. Ci sta ma poi scopro alla fine che non è così.
A questo punto urge capire di quale porta USB trattasi tra le molte presenti e quindi domando:
ok ma come individuo il dispositivo collegato ?
Per individuare il dispositivo collegato, puoi utilizzare il comando lsusb. Questo comando elencherà tutti i dispositivi USB collegati al sistema.
Per utilizzare il comando lsusb, apri un terminale e digita il seguente comando:
lsusb
Il comando lsusb elencherà tutti i dispositivi USB collegati al sistema, con informazioni come il nome del produttore, il modello e il numero di serie.
Ok, riposta corretta, quindi digitiamo il comando e scopriamo un po’ cosa viene fuori. Questo che segue è il copia/incolla dal terminale di ciò che lsusb
ha prodotto:
Bus 002 Device 002: ID 8087:8000 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 03f0:674a HP, Inc HP 100 USB Optical Mouse
Bus 003 Device 002: ID 048d:1336 Integrated Technology Express, Inc. SD/MMC Cardreader
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Nella lista si evidenziano 4 “root usb” che sono concentratore USB integrati nella scheda madre del computer. Di questi solo 1 è per porte USB 3 ovvero le più veloci con una velocità massima di trasferimento dati di 5 Gbps mentre gli altri 3 sono USB 2 con una velocità massima di trasferimento dati di 480 Mbps. Ognuno di essi rappresenta un “Bus” di riferimento a cui sono collegate tutte le porte fisiche USB presenti nella scheda madre. Motivo per cui sono indicati con un numero di “Bus” ciascuno e come numero di “Device” 001.
L’Integrated Rate Matching Hub è un tipo speciale di concentratore USB che può negoziare la velocità di trasferimento dati con i dispositivi USB collegati. Ciò consente ai dispositivi USB di funzionare alla loro velocità massima di trasferimento dati. L’Integrated Rate Matching Hub è di solito collegato al controller “root usb” della scheda madre. Infatti entrambi dipendono da 2 “Bus” diversi ovvero il “Bus 001” e il “Bus 002” ed in entrambi i casi sono riferiti come “Device 002”
In elenco rimangono solo il mouse e il Cardreader che sarebbe un lettore con innumerevoli porte per leggere i vari formati di schedine di memoria tipo SD che include anche ulteriori 2 porte USB 3.
Adesso però come identifico quella a cui i messaggi di errore facevano riferimento? Ma che domanda, chiediamo a Bard:
ho eseguito lsusb che mi ha mostrato questa lista di dispositivi USB collegati:
… e qui la lista come sopra che ometto …Per identificare il dispositivo USB dal messaggio di errore "usb 3-14: device descriptor read/64, error -71", puoi utilizzare le seguenti informazioni:
Il numero del bus USB: 3
Il numero del dispositivo USB: 14
Per trovare il dispositivo USB corrispondente nella lista dei dispositivi USB collegati, puoi utilizzare il seguente comando:
lsusb | grep -i "bus 3 device 14"
Questo comando elencherà tutti i dispositivi USB collegati al bus USB 3 con il numero di dispositivo 14.
Ad esempio, se la lista dei dispositivi USB collegati è la seguente:
Bus 002 Device 002: ID 8087:8000 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 03f0:674a HP, Inc HP 100 USB Optical Mouse
Bus 003 Device 002: ID 048d:1336 Integrated Technology Express, Inc. SD/MMC Cardreader
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Il seguente comando elencherà il dispositivo USB con il bus USB 3 e il numero di dispositivo 14:
lsusb | grep -i "bus 3 device 14"
Output:
Bus 003 Device 002: ID 048d:1336 Integrated Technology Express, Inc. SD/MMC Cardreader
Pertanto, il dispositivo USB con il messaggio di errore "usb 3-14: device descriptor read/64, error -71" è il lettore di schede SD/MMC USB.
Una volta che hai identificato il dispositivo USB, puoi provare a risolvere il problema seguendo le soluzioni che ho suggerito in precedenza.
Ordunque, risposta esauriente ma non corretta. Innanzitutto il comando grep
così scritto non da alcun output perché non esiste la stringa cercata “bus 3 device 14” motivo per cui non si capisce come Bard abbia dedotto che il dispositivo USB con il messaggio di errore è il Cardreader. Oggi non mi sembra molto sveglia questa AI.
Inoltre bisogna aggiungere che il comando lsusb
fornisce tutti i dati delle porte USB presenti e a cui è connesso qualcosa ma se la porta USB ha dato errore durante la fase di avvio allora non risulterà tra quelle esaminate dal comando lsusb
perché risulterà come inesistente o, per meglio dire, con nulla connesso essendo non identificato il “Device” collegato e quindi non in lista.
Ma arrivati a questo punto morto non mi resta che seguire uno dei consigli di Bard nelle sue lunghe risposte prolisse che ho omesso di riportare dove suggeriva banalmente di scollegare le varie periferiche connesse al PC una alla volta fino a scoprire quella che causa il problema.
Mentre mi accingo a fare ciò vedo il mio vecchio smartphone connesso con un cavo ad una porta USB del PC in modo che sia in costante ricarica causa batteria esausta. Sono anni che lo uso così collegato con una SIM Tiscali ricaricabile che non scade mai per mantenerla attiva. Guarda caso lo smartphone è collegato su una porta USB 2 e non viene riconosciuto dal comando lsusb
e quindi è assai probabile che sia proprio lui all’origine del problema. Stacco prontamente il cavo dal PC e riavvio. Il PC si riavvia e gli errori sulla porta USB scompaiono tutti!
Ecco quindi risolto il mistero degli errori sulla porta USB all’avvio del PC, tutta colpa del vecchio smartphone!
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.