Kernel 5.11.7-200 e driver rtl88x2bu

Salve a tutti e entriamo nell’argomento: oggi ho aggiornato il sistema con le ultime novità e tra le tante vi era la nuova versione del kernel, la 5.11.7-200. Dopo l’aggiornamento ho riavviato il tutto per procedere alla creazione del driver del kernel per la penna USB wi-fi usando i sorgenti del driver rtl88x2bu. Dopo qualche segnalazione d’errore, dopo qualche sforbiciata al codice ho dato inizio alla compilazione e all’installazione seguente. E qui nasce il problema! Il compilatore mi segnala che non può finire la creazione del modulo perchè non trova l’immagine del disco virtuale, in questo caso il file vmlinuz-5.11.7-200.fc33.x86_64 che però è presente nella partizione di boot! Pensavo che questo problema dipendesse dalla mancanza di qualche pacchetto ausiliario al kernel. Nada. Dipende forse dalla pacchettizzazione di questo particolare kernel o bisogna segnalare il problema a quelli di Fedora? P.s: sto usando il kernel precedente per potermi connettere ad internet.

Salve a tutti! Eccovi gli ultimi aggiornamenti: non riesco a compilare il modulo neanche con l’ultimo kernel arrivato oggi. Ho provato a compilarlo da KDE Plasma, l’ambiente che uso abitualmente, e non parte. Sono stato costretto a ripiegare su GNOME ed ecco la sorpresa: da console devo dare prima “sudo make clean” e poi “sudo make” per la compilazione. Il problema è che “sudo” non funziona più! Dare “make clean” seguito da “make” sembra la soluzione logica, ma anche qui la compilazione si blocca! Vedo se trovo una qualche versione di questo driver aggiornato sul Web, speriamo bene…

Ciao @d68qdq8dq secondo mè perchè non hai pieno accesso a root è si vede che determinate librerie con sudo non vengono richiamate , se vuoi un consiglio o provi a dare sudo -s , o abiliti root per avere il (su -) le live install sono un pò strane , per abilitare root :

sudo passwd root ( e scegli la passwod )  

è riavvia , se vuoi rimuovere anche sudo per tornare allo standard di prima :

# gpasswd -d username sudo

io personalmente usando la net install ho le stesse caratteristiche di prima senza sudo , ovvero come era Fedora con il classico comando ( su -) :slightly_smiling_face:

Ciao @edmondo, grazie della tua risposta. Tu pensi che dipenda dal fatto che non ho i privilegi di amministratore? Il problema si verifica anche compilando il driver come semplice utente. Esaminando il file Makefile viene dato il comando " /sbin/depmod -a ${KVER}
". La domanda è: perchè col kernel 5.10.22-200 la compilazione giunge a buon fine mentre coi kernel 5.11.7-200 e 5.11.8-200 questo non avviene? Ho esaminato i tre kernel in /lib/modules e credo di aver trovato la risposta: prima si avevano le directories /build, /extra, /kernel, /source, /updates, /vdso e /weak-updates, ora si è aggiunta una directory /internal e penso che depmod non riesca a finalizzare il modulo del kernel perchè non riesce a trovare una certa disposizione dei files. Questa è solo una mia idea. Esso non riesce in questo caso a generare il file BLF, se non ricordo male. Cosa devo fare?
P.s: mi sono ordinato un’altra pennina USB Wifi ma col chip Broadcomm per risolvere questo problema momentaneamente.
P.p.s: oggi è uscito un altro kernel…

Ciao @d68qdq8dq mi sorge un dubbio accaduto anche a @BlueCode che versione di kernel-headers hai installato ? :slightly_smiling_face:

Buongiorno!
Visto che @edmondo ha pensato che il problema può essere uguale al mio, di seguito ti riporto il link della discussione:

Provo a riassumere cosa abbiamo fatto per risolvere dopo esserci accertati che mancava il kernel-header della versione di fedora con cui stavo lavorando.

 rpm -qa | grep "kernel" 

In questo modo vedi i kernel che hai sul computer, e i vari “file associati” :

kernel-core-
kernel-modules-
kernel-
kernel-modules-extra-
kernel-headers-
kernel-devel-
  1. Ho avviato fedora con la versione del kernel in cui i driver della scheda di rete partivano tranquillamente

  2. Ho aggiornato il kernel dalla stessa versione

  3. Rimosso i driver della scheda di rete e ricompilati dalla nuova versione del kernel.

Qualora dovessi notare dal comando precedente che i file del kernel ci sono tutti e combaciano con la tua versione (uname -a) prova a rimuovere i driver della scheda di rete e ricompilarli.

Ciao edmondo, i files relativi al kernel attualmente installati dando “sudo dnf list installed kernel-*” sono:

kernel-core.x86_64 5.10.22-200.fc33 @updates
kernel-core.x86_64 5.11.7-200.fc33 @updates
kernel-core.x86_64 5.11.8-200.fc33 @updates
kernel-devel.x86_64 5.10.22-200.fc33 @updates
kernel-devel.x86_64 5.11.7-200.fc33 @updates
kernel-devel.x86_64 5.11.8-200.fc33 @updates
kernel-headers.x86_64 5.11.7-200.fc33 @updates
kernel-modules.x86_64 5.10.22-200.fc33 @updates
kernel-modules.x86_64 5.11.7-200.fc33 @updates
kernel-modules.x86_64 5.11.8-200.fc33 @updates
kernel-modules-extra.x86_64 5.10.22-200.fc33 @updates
kernel-modules-extra.x86_64 5.11.7-200.fc33 @updates
kernel-modules-extra.x86_64 5.11.8-200.fc33 @updates
kernel-modules-internal.x86_64 5.11.7-200.fc33 @updates
kernel-modules-internal.x86_64 5.11.8-200.fc33 @updates
kernel-srpm-macros.noarch 1.0-3.fc33 @fedora
kernel-tools.x86_64 5.11.7-200.fc33 @updates
kernel-tools-libs.x86_64 5.11.7-200.fc33 @updates
kernel-tools-libs-devel.x86_64 5.11.7-200.fc33 @updates

Come vedi niente di fuori dall’ordinario.

Ciao @d68qdq8dq come immaginavo sei sul kernel 5.11.8 ma gli headers sono del kernel 5.11.7 , è lo stesso inghippo che è successo a @BlueCode , oggi è stato aggiornato il kernel alla versione 5.11.10 , qua le modifiche https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.11.10 comunque se provi a far partire il kernel 5.11.7 , è rimuovi il kernel 5.11.8 , riavvia , è parti con il 5.11.7 ricompili il driver dovrebbe funzionare , poi riavvia è aggiorna dovrebbe andare apposto da solo anche con il nuovo kernel , a quanto ho capito il passaggio dalla versione 10 alla versione 11 ha qualche modifica di struttura come hai notato anche tè :slightly_smiling_face:

Ciao @edmondo, ho letto il tuo ultimo messaggio. Il problema è che ogni volta che usciva un nuovo kernel entravo in esso, compilavo il driver e lo rendevo visibile al sistema eseguendo queste istruzioni:

cd Scaricati/rtl88x2bu-1-1/rtl88x2bu-master
sudo make clean
sudo make
uname -a
sudo cp 88x2bu.ko /lib/modules//e
xtra/drivers/w1/slaves/
sudo depmod -a
sudo modprobe 88x2bu
lsmod
Anche se adesso la disposizione delle directories in /lib/modules// è cambiata su dove mettere i drivers, rimane il fatto che il driver viene compilato nella sua interezza ma non viene reso tale da depmod, da quello che ho capito. Spero domani di mostrarvi il messaggio che avvisa di quel problema, così da potermi spiegare meglio. Non so se usare dkms…

Ciao @d68qdq8dq io ti consiglio di usare dkms perchè almeno si prende lui la briga di ricaricare il modulo in automatico , nel file README cè la possibilità di usarlo ? hai provato come ti avevo scritto ? :slightly_smiling_face:

Ciao edmondo, è possibile installare questo modulo anche usando dkms. Il mio problema nasce dalla fase di linking dei vari files oggetto. Perciò appena vi arriverà l’altra pennina wifi ho deciso di fare così dopo aver pulito il sistema:

cd Scaricati/rtl88x2bu-1-1/rtl88x2bu-master
sudo dkms add .
sudo dkms build -m 88x2bu -v 1.1
sudo dkms install -m 88x2bu -v 1.1

Nel file Readme.md si consiglia di effettuare un semplice make, ma è proprio il make che non si finalizza con i nuovi kernel. Spero che arrivi oggi questa pennina e vi farò sapere.

Ciao @d68qdq8dq ma esattamente che errore ti dà il make :slightly_smiling_face: hai provato anche con questo https://github.com/RinCat/RTL88x2BU-Linux-Driver ? :slightly_smiling_face:

Ciao @edmondo, scusa per il mio ritardo nella risposta. Ho dovuto compiere alcune commissioni per casa, devo pensare anche a mia madre e solo oggi pomeriggio mi è arrivata la pennina wifi. Allora veniamo a noi. Il codice originale è stato modificato, sai, gli ultimi kernel. Eccoti cosa esce fuori dando prima “make clean” e poi “make”:


CC [M] /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/hal/btc/halbtc8822b2ant.o
CC [M] /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/platform/platform_ops.o
CC [M] /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/core/rtw_mp.o
LD [M] /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/88x2bu.o
MODPOST /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/Module.symvers
CC [M] /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/88x2bu.mod.o
LD [M] /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/88x2bu.ko
BTF [M] /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/88x2bu.ko
Skipping BTF generation for /home/giovanni/Scaricati/rtl88x2bu-1-1/rtl88x2bu-master/88x2bu.ko due to unavailability of vmlinux
make[1]: uscita dalla directory «/usr/src/kernels/5.11.10-200.fc33.x86_64»

Adesso ti lascio perchè mi devo occupare di mia madre. Ti mostrerò i risultati usando dkms, sperando che funzioni…

@edmondo, ecco le ultime novità. Ho usato dkms e il driver è stato installato! Ecco il responso:

[giovanni@localhost rtl88x2bu-master]$ sudo dkms add .

Creating symlink /var/lib/dkms/88x2bu/1.1/source ->
/usr/src/88x2bu-1.1

DKMS: add completed.
[giovanni@localhost rtl88x2bu-master]$ sudo dkms build -m 88x2bu -v 1.1

Kernel preparation unnecessary for this kernel. Skipping…

Building module:
cleaning build area…
‘make’ all KVER=5.11.10-200.fc33.x86_64…
cleaning build area…

DKMS: build completed.
[giovanni@localhost rtl88x2bu-master]$ sudo dkms install -m 88x2bu -v 1.1

88x2bu.ko.xz:
Running module version sanity check.

  • Original module
    • No original module exists within this kernel
  • Installation
    • Installing to /lib/modules/5.11.10-200.fc33.x86_64/extra/
      Adding any weak-modules

depmod…

DKMS: install completed.

Adesso verifichiamo se funziona…

Allora abbiamo un problema: installato con dkms tutto procede bene, eccetto che… non funziona! Forse dipende da quello che ho fatto nel codice sorgente, non lo so, rimane il fatto che la pennina non viene più riconosciuta. Ora che ho la nuova devo usare per forza questa. Mettiamo risolto a questa discussione e speriamo che qualcuno che usa questo driver sia più bravo di me e lo renda funzionante con i nuovi kernel. Auguri a tutti!

Ciao @d68qdq8dq non disperare , prova quel driver che ti ho linkato , ha il supporto per il kernel 5.11 , non ho potuto testarlo però dovrebbe funzionare , ( sperando che con tutte le prove fatte non si sia creato qualche casino con i simlink :slightly_smiling_face: rimuovi quello vecchio è prova comunque , per riuscire a compilare i driver bisogna avere il kernel-headers allineato con il kernel se nò rogna :slightly_smiling_face: prova queste 2 ultime strade , per il post non chiuderlo che potrebbe darsi che un’altro utente è incappato su questo problema :slightly_smiling_face: p.s sembra che il kernel 5.11.11 dato che viene rilasciato con i kernel-headers 5.11.11 risolve il problema :slightly_smiling_face:

edmondo, grazie della tua risposta e del tuo aiuto. Lo scaricato e compilato subito dopo. Questo driver è più pulito rispetto al precedente ma rimane sempre lo stesso problema. Ecco ciò che ne esce fuori nelle fasi ultime della compilazione:

CC [M] /home/giovanni/Scaricati/RTL88x2BU-Linux-Driver/core/rtw_mp.o
LD [M] /home/giovanni/Scaricati/RTL88x2BU-Linux-Driver/88x2bu.o
MODPOST /home/giovanni/Scaricati/RTL88x2BU-Linux-Driver/Module.symvers
CC [M] /home/giovanni/Scaricati/RTL88x2BU-Linux-Driver/88x2bu.mod.o
LD [M] /home/giovanni/Scaricati/RTL88x2BU-Linux-Driver/88x2bu.ko
BTF [M] /home/giovanni/Scaricati/RTL88x2BU-Linux-Driver/88x2bu.ko
Skipping BTF generation for /home/giovanni/Scaricati/RTL88x2BU-Linux-Driver/88x2bu.ko due to unavailability of vmlinux
make[1]: uscita dalla directory «/usr/src/kernels/5.11.10-200.fc33.x86_64»

Rimane allora da capire cos’è questo problema legato a BTF. Mi sa che devo cercare un pò di documentazione sui moduli kernel e le loro specifiche. La discussione si può considerare ancora attiva.

Aggiornamento: allora BTF è un formato di metadati usato da Linux per il debugging. Usando KFind nei sorgenti del driver ho trovato che compare in:

mp.c, hal_btcoex.c, ioctl_linux.c, ioctl_mp.c, os_intfs.c, rtw_bt_mp.c, rtw_efuse.c, drv_types.h e hal_data.h

Adesso bisogna capire cosa manca e aggiornarlo di conseguenza. Forse edmondo siamo sulla strada giusta.

Nuovo aggiornamento: l’unico file su cui dovrei lavorare sarebbe osdep_service_bsd.h nella directory /include. Devo creare le giuste strutture per il BTF.

Ciao @d68qdq8dq ottimo siamo sulla strda giusta , ma credo che con il 5.11.11 funzioni senza problemi , almeno lo spero :slightly_smiling_face: