Old:Intel PRO/Wireless 3945ABG : Installazione dei moduli senza kernel patching: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
=Prerequisiti= | |||
Prima di seguire quanto riportato nella guida, assicuriamoci di avere a nostra disposizioni gli headers per il nostro kernel. Se abbiamo compilato noi stessi il kernel, allora possiamo essere tranquilli, ma se stiamo usando un kernel precompilato (ad esempio quello installato durante il setup di Debian, oppure scaricato tramite APT) allora dobbiamo necessariamente scaricare il pacchetto Debian contenente gli headers. | |||
Ecco come procedere: | |||
<pre>$ uname -r | |||
linux-image-2.6.18-3-686</pre> | |||
questo significa che dobbiamo procurarci gli headers relativi a questa release del kernel: | |||
<pre># apt-get install kernel-headers-2.6.18-3-686</pre> | |||
== ' | = Software Occorrente = | ||
* [http://bughost.org/ipw3945/ Microcode/Firmware] | |||
* [http://bughost.org/ipw3945/ Binary Userspace Regulatory Daemon] | |||
* [http://ieee80211.sourceforge.net/ Network Stack ieee80211 per kernel Linux] | |||
* [http://ipw3945.sourceforge.net/ Drivers Intel PRO/Wireless 3945ABG per kernel Linux] | |||
E' consigliabile scaricare le versioni stabili (quelle con numero di versione che termina con .0) dei sorgenti del driver per Intel PRO/Wireless 3945ABG e dello stack ieee80211. | |||
Creiamoci uno spazio di lavoro in cui scaricare e compilare i sorgenti: | |||
<pre>mkdir ipw3945</pre> | |||
== Compilazione e installazione del sottosistema ieee80211 == | |||
<pre> | |||
tar xzvf ieee80211-1.1.14.tgz | |||
cd ieee80211-1.1.14 | |||
make | |||
</pre> | |||
Potremmo essere avvisati del fatto che nel kernel installato siano già presenti componenti ieee80211: | |||
<pre> | |||
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211.ko | |||
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt.ko | |||
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_wep.ko | |||
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_ccmp.ko | |||
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_tkip.ko | |||
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211.mod | |||
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt.mod | |||
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_wep.mod/lib/modules/2.6.18-suspend2/net/ieee80211/.tmp_versions/ieee80211_crypt_ccmp.mod | |||
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_tkip.mod | |||
/lib/modules/2.6.18-3-686/include/net/ieee80211.h | |||
/lib/modules/2.6.18-3-686/include/net/ieee80211_crypt.h | |||
/lib/modules/2.6.18-3-686/include/net/ieee80211_radiotap.h | |||
Above files found. Remove? [y],n | |||
</pre> | |||
Rispondendo affermativamente i componenti verranno eliminati e il successivo comando make install provvederà a installare i componenti ieee80211 che stiamo compilando. | |||
Infine (questa istruzione potrebbe necessitare dei diritti di super utente) | |||
<pre> | |||
make install | |||
cd .. | |||
</pre> | |||
== Compilazione e installazione del modulo ipw3945 == | |||
<pre> | |||
tar xzvf ipw3945-1.1.3.tgz | |||
cd ipw3945-1.1.3 | |||
make | |||
</pre> | |||
Per rendere il modulo compilato visibile al tool modprobe dobbiamo copiarlo nel path di depmod: | |||
<pre> | |||
cp ipw3945.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless | |||
depmod -a | |||
</pre> | |||
Ora possiamo utilizzare | |||
<pre>modprobe ipw3945</pre> | |||
per caricare il modulo nel kernel e | |||
<pre>modprobe ipw3945 -r</pre> | |||
per rimuoverlo. | |||
== Installazione del firmware == | |||
<pre> | |||
tar xzvf ipw3945-ucode-1.13.tgz | |||
cp ipw3945-ucode-1.13/ipw3945.ucode /usr/local/lib/firmware/ | |||
</pre> | |||
== Installazione del regulatory daemon == | |||
<pre> | |||
tar xzvf ipw3945d-1.7.22.tgz | |||
</pre> | |||
Per sistemi a 32 bit: | |||
<pre> | |||
cp ipw3945d-1.7.22/x86/ipw3945d /sbin | |||
</pre> | |||
Per sistemi a 64 bit: | |||
<pre> | |||
cp ipw3945d-1.7.22/x86_64/ipw3945d /sbin | |||
</pre> | |||
= | = Caricamento del modulo = | ||
Ora che compilazione e installazione sono completate possiamo procedere al caricamento del modulo nel kernel. | |||
<pre> | Riportiamoci nella directory del driver ipw3945: | ||
<pre> | |||
cd ipw3945-1.1.3 | |||
</pre> | |||
e carichiamo il modulo (ripulendo anche il log del kernel) | |||
<pre> | |||
./load debug=0 | |||
</pre> | |||
Eseguendo iwconfig dovremmo poter essere in grado di vedere l'interfaccia associata al chip wifi: | |||
<pre> | |||
# ifconfig | |||
eth2 unassociated ESSID:off/any | |||
Mode:Managed Channel=0 Access Point: 00:00:00:00:00:00 | |||
Bit Rate=0 kb/s Tx-Power=20 dBm | |||
RTS thr:off Fragment thr:off | |||
Encryption key:off | |||
Power Management:off | |||
Link Quality:0 Signal level:0 Noise level:0 | |||
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 | |||
Tx excessive retries:0 Invalid misc:0 Missed beacon:0 | |||
</pre> | |||
= Automatizzare l'esecuzione del regulatory daemon mediante modprobe = | |||
Per farlo basta creare un file nella directory /etc/modprobe.d | |||
<pre>nano /etc/modprobe.d/</pre> | |||
contenente le seguenti due righe: | |||
<pre> | |||
install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet | |||
remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945 | |||
</pre> | |||
=== | = Predisporre un demone SysV per l'esecuzione del regulatory daemon= | ||
Come super utenti: | |||
<pre> | |||
nano /etc/init.d/ipw3945d | |||
</pre> | |||
Editiamo il file nel seguente modo: | |||
<pre> | |||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | |||
DAEMON=/sbin/ipw3945d | |||
NAME=ipw3945d | |||
DESC=ipw3945d | |||
test -x $DAEMON || exit 0 | |||
$ | |||
# Include ipw3945d defaults if available | |||
if [ -f /etc/default/ipw3945d] ; then | |||
. /etc/default/ipw3945d | |||
fi | |||
set -e | |||
case "$1" in | |||
start) | |||
echo -n "Starting $DESC: " | |||
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ | |||
--exec $DAEMON -- $DAEMON_OPTS | |||
echo "$NAME." | |||
;; | |||
stop) | |||
echo -n "Stopping $DESC: " | |||
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ | |||
--exec $DAEMON | |||
echo "$NAME." | |||
;; | |||
#reload) | |||
# | |||
# If the daemon can reload its config files on the fly | |||
# for example by sending it SIGHUP, do it here. | |||
# | |||
# If the daemon responds to changes in its config file | |||
# directly anyway, make this a do-nothing entry. | |||
# | |||
# echo "Reloading $DESC configuration files." | |||
# start-stop-daemon --stop --signal 1 --quiet --pidfile \ | |||
# /var/run/$NAME.pid --exec $DAEMON | |||
#;; | |||
restart|force-reload) | |||
# | |||
# If the "reload" option is implemented, move the "force-reload" | |||
# option to the "reload" entry above. If not, "force-reload" is | |||
# just the same as "restart". | |||
# | |||
echo -n "Restarting $DESC: " | |||
start-stop-daemon --stop --quiet --pidfile \ | |||
/var/run/$NAME.pid --exec $DAEMON | |||
sleep 1 | |||
start-stop-daemon --start --quiet --pidfile \ | |||
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS | |||
echo "$NAME." | |||
;; | |||
*) | |||
N=/etc/init.d/$NAME | |||
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 | |||
echo "Usage: $N {start|stop|restart|force-reload}" >&2 | |||
exit 1 | |||
;; | |||
esac | |||
exit 0 | |||
</pre> | |||
Salviamo (ctrl-o) e usciamo (ctrl-x). | |||
Ora attribuiamo al file appena editato permessi di esecuzione: | |||
<pre>chmod +x /etc/init.d/ipw3945d</pre> | |||
A questo punto possiamo aggiungere il demone al runlevel che fà al caso nostro. Vi rimando, a tal fine, alla seguente guida: | |||
[http://guide.debianizzati.org/index.php/SysV SysV] | |||
---- | |||
Autore: [[Utente:fulvio|fulvio]] Feb 06, 2007 | |||
[[Categoria:Hardware]][[Categoria:Wireless]] | |||
Versione delle 08:52, 7 feb 2007
Prerequisiti
Prima di seguire quanto riportato nella guida, assicuriamoci di avere a nostra disposizioni gli headers per il nostro kernel. Se abbiamo compilato noi stessi il kernel, allora possiamo essere tranquilli, ma se stiamo usando un kernel precompilato (ad esempio quello installato durante il setup di Debian, oppure scaricato tramite APT) allora dobbiamo necessariamente scaricare il pacchetto Debian contenente gli headers. Ecco come procedere:
$ uname -r linux-image-2.6.18-3-686
questo significa che dobbiamo procurarci gli headers relativi a questa release del kernel:
# apt-get install kernel-headers-2.6.18-3-686
Software Occorrente
- Microcode/Firmware
- Binary Userspace Regulatory Daemon
- Network Stack ieee80211 per kernel Linux
- Drivers Intel PRO/Wireless 3945ABG per kernel Linux
E' consigliabile scaricare le versioni stabili (quelle con numero di versione che termina con .0) dei sorgenti del driver per Intel PRO/Wireless 3945ABG e dello stack ieee80211. Creiamoci uno spazio di lavoro in cui scaricare e compilare i sorgenti:
mkdir ipw3945
Compilazione e installazione del sottosistema ieee80211
tar xzvf ieee80211-1.1.14.tgz cd ieee80211-1.1.14 make
Potremmo essere avvisati del fatto che nel kernel installato siano già presenti componenti ieee80211:
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211.ko /lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt.ko /lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_wep.ko /lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_ccmp.ko /lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_tkip.ko /lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211.mod /lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt.mod /lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_wep.mod/lib/modules/2.6.18-suspend2/net/ieee80211/.tmp_versions/ieee80211_crypt_ccmp.mod /lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_tkip.mod /lib/modules/2.6.18-3-686/include/net/ieee80211.h /lib/modules/2.6.18-3-686/include/net/ieee80211_crypt.h /lib/modules/2.6.18-3-686/include/net/ieee80211_radiotap.h Above files found. Remove? [y],n
Rispondendo affermativamente i componenti verranno eliminati e il successivo comando make install provvederà a installare i componenti ieee80211 che stiamo compilando. Infine (questa istruzione potrebbe necessitare dei diritti di super utente)
make install cd ..
Compilazione e installazione del modulo ipw3945
tar xzvf ipw3945-1.1.3.tgz cd ipw3945-1.1.3 make
Per rendere il modulo compilato visibile al tool modprobe dobbiamo copiarlo nel path di depmod:
cp ipw3945.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless depmod -a
Ora possiamo utilizzare
modprobe ipw3945
per caricare il modulo nel kernel e
modprobe ipw3945 -r
per rimuoverlo.
Installazione del firmware
tar xzvf ipw3945-ucode-1.13.tgz cp ipw3945-ucode-1.13/ipw3945.ucode /usr/local/lib/firmware/
Installazione del regulatory daemon
tar xzvf ipw3945d-1.7.22.tgz
Per sistemi a 32 bit:
cp ipw3945d-1.7.22/x86/ipw3945d /sbin
Per sistemi a 64 bit:
cp ipw3945d-1.7.22/x86_64/ipw3945d /sbin
Caricamento del modulo
Ora che compilazione e installazione sono completate possiamo procedere al caricamento del modulo nel kernel. Riportiamoci nella directory del driver ipw3945:
cd ipw3945-1.1.3
e carichiamo il modulo (ripulendo anche il log del kernel)
./load debug=0
Eseguendo iwconfig dovremmo poter essere in grado di vedere l'interfaccia associata al chip wifi:
# ifconfig eth2 unassociated ESSID:off/any Mode:Managed Channel=0 Access Point: 00:00:00:00:00:00 Bit Rate=0 kb/s Tx-Power=20 dBm RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Automatizzare l'esecuzione del regulatory daemon mediante modprobe
Per farlo basta creare un file nella directory /etc/modprobe.d
nano /etc/modprobe.d/
contenente le seguenti due righe:
install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945
Predisporre un demone SysV per l'esecuzione del regulatory daemon
Come super utenti:
nano /etc/init.d/ipw3945d
Editiamo il file nel seguente modo:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/sbin/ipw3945d NAME=ipw3945d DESC=ipw3945d test -x $DAEMON || exit 0 # Include ipw3945d defaults if available if [ -f /etc/default/ipw3945d] ; then . /etc/default/ipw3945d fi set -e case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON echo "$NAME." ;; #reload) # # If the daemon can reload its config files on the fly # for example by sending it SIGHUP, do it here. # # If the daemon responds to changes in its config file # directly anyway, make this a do-nothing entry. # # echo "Reloading $DESC configuration files." # start-stop-daemon --stop --signal 1 --quiet --pidfile \ # /var/run/$NAME.pid --exec $DAEMON #;; restart|force-reload) # # If the "reload" option is implemented, move the "force-reload" # option to the "reload" entry above. If not, "force-reload" is # just the same as "restart". # echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON sleep 1 start-stop-daemon --start --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; *) N=/etc/init.d/$NAME # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
Salviamo (ctrl-o) e usciamo (ctrl-x). Ora attribuiamo al file appena editato permessi di esecuzione:
chmod +x /etc/init.d/ipw3945d
A questo punto possiamo aggiungere il demone al runlevel che fà al caso nostro. Vi rimando, a tal fine, alla seguente guida: SysV
Autore: fulvio Feb 06, 2007