# [risolto] aiuto patch led iwlwifi..

## GoraNz

ciao a tutti. innanzitutto volevo ringraziare tutti quelli che mi hanno "sorbito" durante la mia installazione di gentoo e in particolare djinnZ che mi ha insegnato molto e mi ha indicato molte volte la via da seguire  :Laughing:  sono qui perchè dopo aver finito tutte le customizzazioni del kernel per le varie funzioni del mio notebook ibm r61, sono riuscito a trovare una patch e una guida per far funzionare i led wireless del notebook con il driver iwl3945 (la guida precisamente è questa: http://www.thinkwiki.org/wiki/Installing_Gentoo_2007.0_on_a_ThinkPad_R61#Unstable_Kernels_and_updates . nel punto 2 è illustrata la patch per i led). ho scaricato la patch e applicata a tutti i file da patchare. successivamente ho dato in /usr/src/linux un make && make modules_install per reinstallare i nuovi moduli patchati ma ricevo errori da tutte le parti per i nuovi file..mi è successa la stessa cosa con una patch per il sistema di protezione dell'hard disk di ibm HDAPS che però sono riuscito a recuperare poichè dopo la patch mi ha salvato molti file .origin con i quali ho potuto ristabilire la forma originale dei moduli..ora pero mi ritrovo con tutti i moduli modificati e senza nessun file origin. volevo chiedervi se è possibile fare un comando contrario a quello patch e togliere con lo stesso script tutte le eventuali modifiche..oppure se è possibile con qualche comando rieffettuare il make di tutti i moduli del kernel in modo da ristabilire le loro funzioni..forse sto dicendo qualcosa di impossibile però sarebbe la soluzione migliore perchè ho applicato piu di una patch (non tutte per questi led) e ristabilire tutti i moduli da capo sarebbe la cosa migliore-_- spero che possiate essermi d'aiuto come lo siete stati durante l'installazione..non so piu dove mettere mano e non voglio riavviare il pc per evitare qualche kernel panic. aiutatemi ragazzi!! vi ringrazio anticipatamente per ogni vostra rispostaLast edited by GoraNz on Thu Aug 21, 2008 10:33 pm; edited 1 time in total

----------

## comio

 *GoraNz wrote:*   

> ... un sacco di cose...

 

aggiorna ad un kernel 2.6.26 ed eviti di usare patch.

ciao

luigi

----------

## GoraNz

e tutti quei moduli verrebbero "riscritti" e ricompilati? certo sicuramente risolverei la maggior parte delle cose dato che ora ho un 2.6.25 ma il problema però è che per quanto riguarda le patch dell'hdaps, le dovrei mettere anche in un'eventuale 2.6.26 quindi sarei . e a capo.

----------

## djinnZ

invece di guardare i file .origin cerca i .rej. Se patch non riesce a modificare il file perchè è diverso da quello che si attende mette le modifiche saltate in quei file. Spesso è solo questione di editare manualmente i file e piazzare le correzioni invece che alla riga 1783 del sorgente alla riga 1788 perchè un poco più sopra le righe di una funzione sono state modificate.

Per metodo se devi patchare un kernel usa prima un vanilla installato ad hoc, molto spesso sono proprio le patch gentoo a creare problemi, quasi sembre banali ma non puoi pensare di aggiure patch su pach senza sporcarti le mani con l'editing manuale dei sorgenti (ed una volta verificato che funziona puoi sempre proporre su bugzilla la patch perchè sia inclusa nel kernel "uffciale").

Quanto al suggerimenti di comio cosa ti vieta di tenere più di un kernel installato?

----------

## GoraNz

il problema è che la patch che ho applicato ha patchato tutti i file con successo quindi non ha creato nessun file .rej. quando lancio il make && make modules_install mi da degli errori in alcuni file e come hai detto te sono andato a modificare ma spesso non so dove mettere mano per il semplice fatto che dopo aver applicato la patch molti dei file in questione necessitano di altri file che non esistono nei miei moduli del kernel. ti faccio un'esempio così mi spiego meglio:

dopo aver applicato la patch lanciando il make && make modules_install mi da quest'errore oltre ai tanti altri:

```
make[2]: *** No rule to make target `net/mac80211/sta_info.o', needed by `net/mac80211/mac80211.o'.  Stop.

make[1]: *** [net/mac80211] Error 2

```

il problema però è che quel file sta_info.o non esiste nella directory */net/mac80211/ ed è impossibile quindi che il make vada avanti perchè quel file non c'è!

ho provato per alcuni file ad editare il file principale(nell'esempio mac80211.o) e ad eliminare le dipendeze con l'altro file subordinato (nell'esempio sta_info.o) ma come vi ho gia detto per alcuni moduli non funziona. c'è un modo per rimettere questi moduli daccapo, qualche comando per aggiornarli o cose del genere?

per quanto riguarda i 2 kernel insieme non c'è problema solo che vorrei prima mettere apposto questo e poi seguo la guida per la coesistenza di piu kernel. ti ringrazio per la risposta comunque sei sempre gentile.  :Laughing: 

----------

## riverdragon

Per curiosità, che comportamento si dovrebbe notare utilizzando tale patch (o il kernel 2.6.26)?

----------

## dynamite

A me con il 2.6.26-r1 ha finalmente preso vita il led che segnala che la scheda è accesa/spenta e lampeggia quando sta trasmettendo/ricevendo pacchetti. Con i precedenti kernel e driver (quelli del 2.6.25 erano pessimi) non dava segni di vita.

----------

## GoraNz

eh in teoria dovrebbe dare vita al led come succede a dynamite solo che è una patch per il 2.6.25 che non ha la funzione del led. volevo chiedervi una cosa: se per risolvere questo problema cambiassi il kernel che ho ora e mettessi il 2.6.26 i moduli che ho patchato vengono ricompilati/aggiornati, oppure cambia solo il source del kernel? mi spiego: nell'operazione di aggiornamento del kernel, i moduli vengono toccati o no? perchè se così fosse mi basterebbe cambiare kernel e tutto va apposto. metterei un 2.6.26 e sarei apposto.

----------

## riverdragon

 *GoraNz wrote:*   

> eh in teoria dovrebbe dare vita al led come succede a dynamite

 E che succede a dynamite? A me il led si accende (e rimane acceso) da parecchio grazie al modulo asus.

I moduli sono dipendenti dalla versione del kernel, ognuno ha i suoi, e li trovi in /lib/modules/<versione del kernel>. Se proprio non puoi fare a meno della gestione del led di iwl passa al kernel 2.6.26 e ricompila i moduli che ti servono per il kernel nuovo; spesso applicare patch una sopra all'altra non funziona perché queste non sono pensate per lavorare insieme, quindi va a pazienza o a fortuna.

----------

## djinnZ

ad ogni kernel corrisponde un differente albero /lib/modules/[versione] ed i moduli interni ai sorgenti vengono ricompilati, per i moduli "esterni" come ntfs3g, truecrypt, driver ATI/NVIDIA devi ricompilare il pacchetto corrispondente o con buone probabilità non funzioneranno.

Aggiungi <sys-kernel/...2.6.27 ~x86 a package.keywords (con < invece di = ti riservi di poter installare le eventuali revisioni successive senza però trovarti il .27 appena disponibile installato) e ti installi il kernel, poi ti copi il .config dal vecchio kernel, lanci un make oldconfig ed eventualmente genkernel con --noclean kernel/all ; module-rebuild rebuild per installarlo. Se hai sbagliato nel rispondere alle richieste sulle nuove opzioni ti basta aggiungere --menuconfig.

----------

## GoraNz

ok allora faccio così aggiorno il kernel e risolvo tutto. però ho qualche dubbio: allora intanto nel mio sistema sono disponibili il 2.6.22 e il 2.6.25 (che è quello che ho installato ora), per far emergere un nuovo kernel devo scaricarlo dal sito dei kernel oppure posso lavorare con l'emerge affinchè lo scarichi direttamente lui da solo? come avete detto voi ad ogni kernel corrisponde un diverso albero dei moduli quindi quando aggiorno automaticamente i moduli vengono reinstallati e aggiornati, ma per i programmi che ho installato finora, tutti i pacchetti, il kde e queste cose qui, devono essere anche loro ricompilati per il nuovo kernel? devo ricompilare pacchetto per pacchetto tutto? @djinnZ: tu mi hai consigliato di aggiungere al package.keywords quella riga con scritto <sys-kernel/...2.6.27 ~x86, ma serve per dire all'emerge di scaricare la nuova versione di kernel 2.6.27? sono un pò nabbazzo  :Embarassed:  mi scuso per le eventuali domande che possono sembrare idiote

----------

## riverdragon

Mi sembra che tu abbia un bel po' di confusione.

Il kernel e i programmi sono cose diverse; quando cambi il kernel devi ricompilare SOLO i pacchetti che inseriscono moduli nel kernel; per esempio, io ad ogni aggiornamento ricompilo i driver nvidia. KDE, così come la stragrande maggioranza dei programmi disponibili tramite portage, NON deve essere ricompilati al cambio di kernel.

Per ottenere il kernel nuovo

```
echo =sys-kernel/gentoo-sources-2.6.26* >> /etc/portage/package.keywords

emerge -u1 gentoo-sources
```

----------

## !equilibrium

 *GoraNz wrote:*   

> ok allora faccio così aggiorno il kernel e risolvo tutto. però ho qualche dubbio: allora intanto nel mio sistema sono disponibili il 2.6.22 e il 2.6.25 (che è quello che ho installato ora), per far emergere un nuovo kernel devo scaricarlo dal sito dei kernel oppure posso lavorare con l'emerge affinchè lo scarichi direttamente lui da solo?

 

continui ad usare emerge come hai fatto fin ora  :Rolling Eyes: 

 *GoraNz wrote:*   

> come avete detto voi ad ogni kernel corrisponde un diverso albero dei moduli quindi quando aggiorno automaticamente i moduli vengono reinstallati e aggiornati, ma per i programmi che ho installato finora, tutti i pacchetti, il kde e queste cose qui, devono essere anche loro ricompilati per il nuovo kernel? devo ricompilare pacchetto per pacchetto tutto?

 

eh??   :Rolling Eyes: 

non devi ricompilare tutto il sistema ad ogni cambio del kernel, hai mai fatto una cosa del genere con una qualsiasi distribuzione binaria? non credo proprio sinceramente...

 *GoraNz wrote:*   

>  @djinnZ: tu mi hai consigliato di aggiungere al package.keywords quella riga con scritto <sys-kernel/...2.6.27 ~x86, ma serve per dire all'emerge di scaricare la nuova versione di kernel 2.6.27? sono un pò nabbazzo  mi scuso per le eventuali domande che possono sembrare idiote

 

package.keywords serve per installare pacchetti ~arch (cioè in testing); ti consiglio di leggerti l'handbook e in particolare la sezione riguardante l'uso e la comprensione di portage.

----------

## djinnZ

Se non mi sbaglio (uso il profilo ed il kernel hardened che hanno dei tempi tutti loro rispetto al resto di gentoo) il kernel 2.6.26 è ancora ~x86 (poco male) quindi per usare emerge gentoo-sources o vanilla sources (la differenza tra i due è che il secondo non include le patch di gentoo e può essere usato per testarci le proprie) devi abilitare ~arch per quel pacchetto.

Visto che è altamente probabile che ci scappi almeno il rilascio di un gentoo-sources-2.6.26-r1 se metti =gentoo-sources-2.6.26 il successivo -r1 non ti verrà installato automaticamente all'aggiornamento, mentre se metti =gentoo-sources-2.6.27 appena il 2.6.27 sarà disponibile sarà automaticamente installato (e fin qui poco male);

Se per caso dopo il rilascio della prima versione instabiledel 2.6.27 viene rilasciato il 2.6.26-r4 per correggere alcuni problemi (e questi aggiornamenti è bene seguirli) dato che emerge aggiorna solo alla più alta versione disponibile non ti verrà mai segnalato o aggiornato.

----------

## GoraNz

mentre se metto quel < prima della riga del package.keywords come mi hai detto tu mi segnala tutto giusto?

@!equilibrium

scusami ma non ho mai aggiornato un kernel e volevo solo chiedere dei chiarimenti  :Rolling Eyes:   :Wink: 

----------

## djinnZ

 *GoraNz wrote:*   

> mentre se metto quel < prima della riga del package.keywords come mi hai detto tu mi segnala tutto giusto?

 si l'alternativa (più rigorosa) è mettere sys-kernel/gentoo-sources ~x86 in package.keywords e >=sys-kernel/gentoo-sources-2.6.27 in package.mask (è pura algebra, il risultato è sempre lo stesso)

----------

## GoraNz

ah ora ho capito il significato della sintassi. grazie mille ora sto reinstallando il kernel e penso che vada tutto ok. alla fine del make && make modules_install mi basta fare il solito cp arch/i386/boot/bzimage /boot/nomerkernel, aggiungere il nuovo kernel al grub.conf e sto apposto giusto?

EDIT: tutto risolto ho installato correttamente il kernel. ora volevo chiedere: per ricompilare il kernel devo andare sempre in /usr/src/kernel-2.6.26-gentoo-r1 e dare il make menuconfig, o c'è un modo per mettere questo nuovo kernel nella directory /usr/src/linux?

----------

## djinnZ

dopo l'emerge del kernel devi impostare il link /usr/src/linux (oppure con eselect o con l'aggiunta della use symlink). Se non lo fai i moduli esterni (driver propietari nvidia ed ati e l'immancabile ntfs3g per fare un esempio che affligge un poco tutti) saranno compilati sempre per il vecchio kernel e rischiano di non funzionare o far danno.

Se usi genkernel e module-rebuild fai tutto con un solo comando, eviti di copiare il kernel, aggiungerlo a grub e dare il depomod, fa tutto lui (basta leggere l'help del comando ed il file di configurazione, è semplicissimo).

----------

## GoraNz

ecco allora io ho fatto tutto quanto senza cambiare il link quindi l'unica cosa che non ho fatto è questa. ora l'ho cambiato ma logicamente devo spostare il .config del kernel in /usr/src/linux lanciare un make oldconfig e rifare un make && make modules_install sempre nella directory /usr/src/linux giusto? l'ho ricompilato a mano senza usare genkernel quindi mi sono un pò complicato ma mi piace compilare oramai  :Laughing: 

EDIT: comunque grazie a tutti per l'aiuto ora ho risolto tutto. siete sempre utili e gentilissimi  :Laughing: 

----------

## riverdragon

Comunque io non ho ancora chiaro cosa faccia tale patch per iwl...

----------

## djinnZ

 :Shocked:  Accende la lucetta quando la scheda è attiva e la spegne quando non lo è. Niente di più.  :Cool: 

----------

## Apetrini

In realtà sul mio vaio lampeggia anche durante la trasmissione/ricezione dei dati. E ovviamente, se batto un

```
ifconfig wlan0 down
```

 si spegne. Ricordo a tutti che è gia tutto incluso nel kernel 2.6.26.

----------

## dynamite

 *riverdragon wrote:*   

>  *GoraNz wrote:*   eh in teoria dovrebbe dare vita al led come succede a dynamite E che succede a dynamite? A me il led si accende (e rimane acceso) da parecchio grazie al modulo asus.
> 
> I moduli sono dipendenti dalla versione del kernel, ognuno ha i suoi, e li trovi in /lib/modules/<versione del kernel>. Se proprio non puoi fare a meno della gestione del led di iwl passa al kernel 2.6.26 e ricompila i moduli che ti servono per il kernel nuovo; spesso applicare patch una sopra all'altra non funziona perché queste non sono pensate per lavorare insieme, quindi va a pazienza o a fortuna.

 

Io non ho un asus (ma un thinkpad t61) quindi non so come funzioni dalle tue parti, ma da me solo con gli ultimi driver inseriti nel *.26 la lucetta ha preso vita. In realtà sono finito in ~arch (amd64) non per la lucetta (di cui francamente posso farne a meno), ma per dei freeze e kernel panic nel 2.6.25.x, ma questo è un altro discorso.

p.s.: avere il led funzionante ha comunque un suo fascino...  :Laughing: 

----------

## riverdragon

Da me il led è controllato dal valore (1 o 0) presente nel file /sys/devices/platform/asus-laptop/wlan

----------

## GoraNz

@dynamite:

io anche avevo dei freeze nel 2.6.25 e ora con questo .26 va tutto a meraviglia.

ragazzi volevi chiedervi un'ultima cosa: se installo il kernel multiplo e setto il dualboot con grub sui due diversi kernel (come da guida ufficiale) dovrebbe andare tutto bene ma mi è sorto un dubbio, facendo così bisognerebbe ogni volta cambiare il symlink oppure con grub c'è qualche opzione per farlo automaticamente? i sorgenti in /usr/src ci sono quindi li posso bootare da li però se percaso devo installare qualcosa con un symlink errato installerebbe tutto nell'altro kernel. c'è una soluzione?

----------

## oRDeX

In genere le installazioni di programmi che interagiscono con i sorgenti del kernel leggono la versione con un 

```
uname -r
```

facendo così in modo che la procedura acceda alle directory giuste..Questo però non è ovviamente garantito per tutto...

Quindi sarebbe comunque consigliabile ricreare il symlink prima di installare un programma che voglia usufruire dei sorgenti

----------

## fbcyborg

Io ho appena messo il kernel 2.6.26-r1, ma del led acceso, nemmeno l'ombra!!!  :Neutral: 

----------

## crisandbea

 *fbcyborg wrote:*   

> Io ho appena messo il kernel 2.6.26-r1, ma del led acceso, nemmeno l'ombra!!! 

 

bisogna abilitare l'opzione led nel kernel nella sezione relativa ai driver iwlwifi.

per l'esattezza questa voce  

```
CONFIG_IWL3945_LEDS=y
```

ciauz

----------

## fbcyborg

Mamma mia che emozione!!!!!!!!!!!!

Sembra un miraggio veder funzionare il led su Linux! Alla fine ce l'hanno fatta finalmente!!!

Grazie per la dritta.. effettivamente non so perché non mi sia venuto in mente che andasse abilitata l'opzione per il modulo..

EDIT: comunque a me questi driver iwlwifi non piacciono per niente.. la scheda wifi mi si disassocia in continuazione!!! Le cose sembrano del tutto peggiorate! Hanno messo il LED e hanno peggiorato il driver! Ma com'è questa faccenda???

----------

## fbcyborg

Ragazzi, c'è da dire che il kernel 2.6.26-r1 è bello buggato!!! A me ha creato diversi problemi anche con i driver della webcam.

Mi sa che per il momento lascio stare il led.  :Sad: 

----------

## GoraNz

fbcyborg io ho il kernel 2.6.26-r1 e va tutto a meraviglia la scheda funziona da paura senza mai dissociarsi..che driver usi per associarti ai network wifi?

----------

## fbcyborg

Scusa, ho scoperto ora la causa delle disconnessioni dall'access point: wicd.

Ho finalmente messo (K)networkmanager e non si disassocia più. 

Piuttosto, ho seri problemi ma di altro genere (driver video e roba simile che producono output molto brutti nel ring buffer), ma questo è OT.

----------

## GoraNz

guarda io per la rete uso wpa_supplicant e va alla grande. per quanto riguarda la grafica ho una scheda intel i810 e impostata a regola d'arte nel kernel non da nessun problema. se posti il tuo hardware (magari in un'altro topic) sicuramente ti possiamo aiutare senza continuare a scrivere su un topic risolto che quasi nessuno legge  :Wink:  altrimenti se hai la mia stessa scheda ti posso dare una mano io! ciao

----------

