# [HOWTO] Scheda wireless bcm43xx chip

## ar3ac

Dopo aver usato per parecchio tempo la mia scheda wireless con ndiswrapper sono finalmente passato a usarla tramite il driver bcm43xx che potete trovare nei sorgenti del vostro kernel partendo dalla versione 2.6.17-r2.

Nel scrivere questa guida mi son basato su quella gia' esistente in inglese che potete trovare in questo thread, cercando di arricchirla a modo mio.

Questa guida la potete trovare anche sul mio blog.

1.

Eseguite un emerge di un kernel abbastanza recente, l'importante come ho detto prima che sia >= 2.6.17-r2.

Mentre scrivo questo howto sto usando 2.6.17-gentoo-r4 e una scheda wirelesse Belkin basata su chipset Broadcom 4306.

2.

Configuriamo il nostro bel kernel in questo modo :

```

       Networking  --->

          --- Networking support                                                             

                Networking options  --->                                                                                    

          <M>   Generic IEEE 802.11 Networking Stack                                         

          [*]     Enable full debugging output                                               

          ---     IEEE 802.11 WEP encryption (802.1x)                                        

          <M>     IEEE 802.11i CCMP support                                                  

          <M>     IEEE 802.11i TKIP encryption                                               

          <M>     Software MAC add-on to the IEEE 802.11 networking stack                   

          [*]       Enable full debugging output 

       Device Drivers -->

               Network device support --> 

                  Wireless LAN (non-hamradio) -->

                            [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions                                                                         

                            <M>   Broadcom BCM43xx wireless support                                                              

                            [*]     Broadcom BCM43xx debugging (RECOMMENDED)                                                     

                                    BCM43xx data transfer mode (DMA + PIO)  --->     

```

se usate WEP o WPA dovete compilavi anche dei moduli per la crittografia:

```

       Cryptographic options  --->                            

          <M>   AES cipher algorithms                                                                          

          <M>   AES cipher algorithms (x86_64)                                                                 

          <M>   ARC4 cipher algorithm                                                                          

          <M>   Michael MIC keyed digest algorithm

```

Ora potete compilare il kernel e i vari moduli, e installarli ovviamente.

3.

dobbiamo installare questi 2 pacchetti:

```

# emerge wireless-tools

# emerge bcm43xx-fwcutter

```

se usate WPA :

```

# emerge wpa_supplicant

```

4.

nel file README del pacchetto bcm43xx-fwcutter possiamo trovare dove scaricare il driver per estrarre il firmware per la nostra scheda:

dovrebbero andare tutti bene ma pare sia consigliato il file "wl_apsta.o" , che potete trovare QUI

Io avevo fatto una prova anche con il driver windows che c'era nel cd della mia scheda e funzionava, casomai provate anche quello.

Il file README lo potete trovare qui : /usr/share/doc/bcm43xx-fwcutter-004/README.gz

5.

Una volta in nostro possesso del driver possiamo estrarre il firmware: 

```

# mkdir /lib/firmware

# bcm43xx-fwcutter -w /lib/firmware wl_apsta.o

```

sostituire "wl_apsta.o" con il nome del file del driver da voi scaricato.

6.

Caricachiamo il modulo 

```

# modprobe bcm43xx

```

la prima cosa da fare prima di configurare eventuali parametri sulla scheda di rete e' attivare la stessa con questo comando :

( sostituire i caratteri in rosso con le vostre impostazioni )

 *Quote:*   

> 
> 
> ifconfig eth# up
> 
> 

 

7.

Ora configuriamo la nostra scheda :

 *Quote:*   

> 
> 
> iwlist eth#  scan
> 
> iwconfig eth#   channel # 
> ...

 

Vi riporto i file di configurazione della macchina che sto usando con WPA tramite il bcm43xx driver e wpa_supplicant:

/etc/wpa_supplicant/wpa_supplicant.conf

```

ctrl_interface=/var/run/wpa_supplicant

network={

  ssid="ssid_del_vostro_access_point"

  psk="la_vostra_chiave"

  priority=5

}

```

/etc/conf.d/net

```

modules=( "wpa_supplicant" )

config_eth1=( "up" )

wpa_supplicant_eth1="-Dwext"

config_eth1=( "192.168.1.2 netmask 255.255.255.0 brd 192.168.1.255" )

routes_eth1=( "default gw 192.168.1.1" )

```

So Say We All......

bye,

ar3acLast edited by ar3ac on Thu Oct 12, 2006 7:23 pm; edited 1 time in total

----------

## .:chrome:.

segnalo solo che si è fatto riferimento a una guida un po' vecchiotta e datata

il firmware segnalato nel post non è valido.

ho trovato quest'altro che funziona: http://boredklink.googlepages.com/wl_apsta.o

----------

## ar3ac

 *k.gothmog wrote:*   

> segnalo solo che si è fatto riferimento a una guida un po' vecchiotta e datata
> 
> il firmware segnalato nel post non è valido.
> 
> ho trovato quest'altro che funziona: http://boredklink.googlepages.com/wl_apsta.o

 

guida forse vecchiotta ma validissima, il link del firmware lo avevo preso dal README di bcm43xx-fwcutter

comunque ora ho aggiornato con il tuo link.

grazie mille

bye,

ar3ac

----------

## funkoolow

rispondo solo per bookmarkare il topic  :Rolling Eyes: 

----------

## crisandbea

ma sul kernel 2.6.17-gentoo-r8 non esiste il modulo della scheda che dici tu?????  io uso quello è non l'ho visto.

----------

## ar3ac

 *crisandbea wrote:*   

> ma sul kernel 2.6.17-gentoo-r8 non esiste il modulo della scheda che dici tu?????  io uso quello è non l'ho visto.

 

c'e' c'e' , guarda bene.....

bye,

ar3ac

----------

## crisandbea

 *ar3ac wrote:*   

>  *crisandbea wrote:*   ma sul kernel 2.6.17-gentoo-r8 non esiste il modulo della scheda che dici tu?????  io uso quello è non l'ho visto. 
> 
> c'e' c'e' , guarda bene.....
> 
> bye,
> ...

 

mi dispiace deluderti ma non c'è, o almeno non è dove dovrebbe, ti allego la schermata del kernel verifica con i tuoi occhi 

```

 Linux Kernel v2.6.17-gentoo-r8 Configuration

 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

  ┌──────────────────────────────────────────── Wireless LAN (non-hamradio) ─────────────────────────────────────────────┐

  │  Arrow keys navigate the menu.  <Enter> selects submenus --->.  Highlighted letters are hotkeys.  Pressing <Y>       │

  │  includes, <N> excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend: │

  │  [*] built-in  [ ] excluded  <M> module  < > module capable                                                          │

  │                                                                                                                      │

  │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │

  │ │                      [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions                               │ │

  │ │                      [ ]   Wireless Extension API over RtNetlink                                                 │ │

  │ │                      ---   Obsolete Wireless cards support (pre-802.11)                                          │ │

  │ │                      < >   STRIP (Metricom starmode radio IP)                                                    │ │

  │ │                      < >   AT&T/Lucent old WaveLAN Pcmcia wireless support                                       │ │

  │ │                      < >   Xircom Netwave AirSurfer Pcmcia wireless support                                      │ │

  │ │                      ---   Wireless 802.11 Frequency Hopping cards support                                       │ │

  │ │                      < >   Aviator/Raytheon 2.4MHz wireless support                                              │ │

  │ │                      ---   Wireless 802.11b ISA/PCI cards support                                                │ │

  │ │                      < >   Intel PRO/Wireless 2100 Network Connection                                            │ │

  │ │                      < >   Intel PRO/Wireless 2200BG and 2915ABG Network Connection                              │ │

  │ │                      < >   Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards                                     │ │

  │ │                      < >   Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)                                │ │

  │ │                      < >   Atmel at76c50x chipset  802.11b support                                               │ │

  │ │                      ---   Wireless 802.11b Pcmcia/Cardbus cards support                                         │ │

  │ │                      < >   Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards                                          │ │

  │ │                      < >   Planet WL3501 PCMCIA cards                                                            │ │

  │ │                      ---   Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support                                     │ │

  │ │                      < >   Intersil Prism GT/Duette/Indigo PCI/Cardbus                                           │ │

  │ │                      < >   IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)                              │ │

  │ │                                                                                            
```

----------

## ar3ac

 *Quote:*   

> 
> 
> mi dispiace deluderti ma non c'è, o almeno non è dove dovrebbe, ti allego la schermata del kernel verifica con i tuoi occhi 
> 
> 

 

allora tu non lo vedi perche' non hai seguito la guida bene   :Shocked: 

ovvero prima devi configurare la parte sopra in "Networking" con i vari moduli "IEEE 802.11",

che una volta opzionati ti danno la possibilita' di vedere anche l'opzione del driver "Broadcom BCM43xx wireless support".

E' una dipendenza del driver se non opzioni i moduli sopra ( IEEE ecc..ecc... ), non puoi vederlo in fase di configurazione del kernel...

Spero di essere stato chiaro....in caso contrario ti rispiego   :Very Happy: 

bye,

ar3ac

----------

## crisandbea

mi ritocca smentirti in quando le opzioni le avevo già abilitate ed eccole qua :

```
Linux Kernel v2.6.17-gentoo-r8 Configuration

 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

  ┌───────────────────────────────────────────────────── Networking ─────────────────────────────────────────────────────┐

  │  Arrow keys navigate the menu.  <Enter> selects submenus --->.  Highlighted letters are hotkeys.  Pressing <Y>       │

  │  includes, <N> excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend: │

  │  [*] built-in  [ ] excluded  <M> module  < > module capable                                                          │

  │                                                                                                                      │

  │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │

  │ │                      [*] Networking support                                                                      │ │

  │ │                            Networking options  --->                                                              │ │

  │ │                      [ ]   Amateur Radio support  --->                                                           │ │

  │ │                      < >   IrDA (infrared) subsystem support  --->                                               │ │

  │ │                      < >   Bluetooth subsystem support  --->                                                     │ │

  │ │                      <M>   Generic IEEE 802.11 Networking Stack                                                  │ │

  │ │                      [*]     Enable full debugging output                                                        │ │

  │ │                      <M>     IEEE 802.11 WEP encryption (802.1x)                                                 │ │

  │ │                      <M>     IEEE 802.11i CCMP support                                                           │ │

  │ │                      <M>     IEEE 802.11i TKIP encryption                                                        │ │

  │ │                      < >     Software MAC add-on to the IEEE 802.11 networking stack                             │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ │                                                                                                                  │ │

  │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │

  ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤

  │                                           <Select>    < Exit >    < Help >         

```

----------

## ar3ac

 *crisandbea wrote:*   

> mi ritocca smentirti in quando le opzioni le avevo già abilitate ed eccole qua :
> 
> ```
> Linux Kernel v2.6.17-gentoo-r8 Configuration
> 
> ...

 

e' a me che tocca rismentirti .....

e questo ? 

"Software MAC add-on to the IEEE 802.11 networking stack"

perche' non lo inserisci come modulo ?

ripeto , leggi bene la guida....   :Wink: 

bye,

ar3ac

----------

## crisandbea

questa volta devo prenderne atto, mi era saltata una riga........   :Embarassed:   :Embarassed: 

grazie mille. ciao

----------

## MajinJoko

ciao ar3ac,

devo assolutamente chiederti una cosa. Riesci ad aggirare la seccatura di dover dare *Quote:*   

> ifconfig ethX up

 prima di utilizzare la scheda con i driver bcm43xx?

Te lo chiedo perché ultimamente ho parecchi problemi con la mia wireless (perde la connessione un pò troppo spesso), e sperando che il problema fosse ndiswrapper ho provato a usare i driver bcm43xx. Ebbene, devo dire che per andare vanno, anche se per collegarmi al router protetto da wpa fa veramente molta fatica. Tuttavia, se devo dare il comando ifconfig ethX upprima di connettere la scheda, non capisco come poter utilizzare -ad esempio - gli script del baselayout. Ad esempio (è per me fondamentale) mi piacerebbe che si connettesse all'avvio del sistema, senza mettere nulla in local.start, ma solo grazie ai vari script di init.. è possibile?

Grazie

----------

## ar3ac

 *MajinJoko wrote:*   

> ciao ar3ac,
> 
> devo assolutamente chiederti una cosa. Riesci ad aggirare la seccatura di dover dare *Quote:*   ifconfig ethX up prima di utilizzare la scheda con i driver bcm43xx?
> 
> Te lo chiedo perché ultimamente ho parecchi problemi con la mia wireless (perde la connessione un pò troppo spesso), e sperando che il problema fosse ndiswrapper ho provato a usare i driver bcm43xx. Ebbene, devo dire che per andare vanno, anche se per collegarmi al router protetto da wpa fa veramente molta fatica. Tuttavia, se devo dare il comando ifconfig ethX upprima di connettere la scheda, non capisco come poter utilizzare -ad esempio - gli script del baselayout. Ad esempio (è per me fondamentale) mi piacerebbe che si connettesse all'avvio del sistema, senza mettere nulla in local.start, ma solo grazie ai vari script di init.. è possibile?
> ...

 

hmmm , purtroppo e' fondamentale attivare l'interfaccia ethX della scheda prima di configurarla e quindi connetterla al router/access point.

Se leggi in fondo alla guida ho riportato dei file di esempio che uso io per far collegare la scheda all'avvio senza usare e mettere nulla in local.start.

Infatti se vedi in /etc/conf.d/net ho inserito questa riga :

config_eth1=( "up" )

che serve appunto per attivarla.

Se usi wpa_supplicant puoi modificare quei 2 file che uso io con i tuoi settings...

Spero di esserti stato d'aiuto,

bye,

Luca aka ar3ac

P.S.

se hai bisogno di eventuali chiarimenti , posso risponderti solo dopo le 16...essendo io un piccolo operaio non posso usare la rete al lavoro   :Very Happy: 

----------

## Tintenstich

Ciao e grazie per l'howto!

Io pero' ho un problemino......quinti ti faccio due domande:

Ho un vecchio firmware caricato col cutter, come posso utilizzarne un altro?

Poi, sembra tutto andare a buon fine, ma iwlist eth2 scan sembra non trovare nessuna rete (sembra non scannerizzi nemmeno....)

Grazie per le risposte!!

----------

## ar3ac

 *Tintenstich wrote:*   

> Ciao e grazie per l'howto!
> 
> Io pero' ho un problemino......quinti ti faccio due domande:
> 
> Ho un vecchio firmware caricato col cutter, come posso utilizzarne un altro?

 

cosa intendi per "vecchio" ?

direi di dare un'occhiata al file README di bcm43xx-fwcutter e provarne un altro , io nell'howto ne consiglio uno, prova quello.

 *Quote:*   

> Poi, sembra tutto andare a buon fine, ma iwlist eth2 scan sembra non trovare nessuna rete (sembra non scannerizzi nemmeno....)

 

hai attivato l'interfaccia con "ifconfig" prima di usare "iwlist" ?

dipendera' dal firmware "vecchio" ? 

o dal chipset della scheda non ancora del tutto supportato ?

Se non erro con i bcm4318 , qualcuno ha riscontrato dei problemi.

Comunque vi ricordo che e' un driver ancora in fase di sviluppo...magari con le prossime versioni si stabilizza..

 *Quote:*   

> Grazie per le risposte!!

 

You're welcome!

bye,

Luca aka ar3ac

----------

## Tintenstich

si la scheda e' attiva, i moduli caricati, il led si accende....ho letto in giro che si dovrebbe premere il pulsante per attivare la scheda....ma premendo il bottone il led rimane acceso e non cambia nulla (tail -f /var/log/messages)

Ho provato ndiswrapper ma non sembra funzionare, carica i driver senza errori ma trovo un errore in dmesg. BHO!

----------

## ar3ac

 *Tintenstich wrote:*   

> si la scheda e' attiva, i moduli caricati, il led si accende....ho letto in giro che si dovrebbe premere il pulsante per attivare la scheda....ma premendo il bottone il led rimane acceso e non cambia nulla (tail -f /var/log/messages)
> 
> Ho provato ndiswrapper ma non sembra funzionare, carica i driver senza errori ma trovo un errore in dmesg. BHO!

 

direi che potresti farci vedere i log ......

che tipo di scheda e' e che chipset usa, che driver stai usando per prendere il firmware...

bye,

ar3ac

----------

## Tintenstich

ho risolto usando ndiswrapper

peccato.....  :Sad: 

----------

## lucapost

questi driver sono ancora molto instabili, sono su notebook asus A6T, questo è il chip della scheda

```
03:03.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)

```

il kernel:

```
Linux jarod 2.6.18-gentoo-r1 #9 SMP Thu Oct 19 10:54:01 CEST 2006 x86_64 AMD Turion(tm) 64 X2 Mobile Technology TL-50 AuthenticAMD GNU/Linux
```

se qualcuno pensa di aver raggiunto risultati soddisfacenti lo dica pure.

Io continuo ad usare ndiswrapper.

Luca

----------

## MajinJoko

di nuovo ciao.

ho configurato e sistemato il tutto, grazie anche ai tuoi files di configurazione.

Il problema serio è che mi si connette sì e no una volta su tre. Quando non va, ottengo qualcosa tipo:

 *Quote:*   

> SoftMAC: sent association request! 
> 
> SoftMAC: assoc request timed out!

 

ripetuto più e più volte.

Se va, invece, sembra che si connetta in fretta e senza problemi.

Ho configurato il kernel come riportato nel primo post. Qualche altro consiglio?

Ma soprattutto, visto che a volte mentre sono collegato (utilizzando però ndiswrapper) mi trovo improvvisamente scollegato, chiedo a voi: potrebbe essere colpa del mio access point?

Ciao, e buona giornata

----------

## ar3ac

Ciao,

purtroppo a volte lo faceva anche a me ma non troppo spesso , ma la cosa piu' brutta e' che ultimamente mi si "freezava" proprio il PC.

Cosi' da un paio di giorni son tornato a usare a ndiswrapper e pare che il problema sia risolto.

Essendo dei driver ancora "freschi" e in fase di sviluppo si possono riscontrare vari problemi, aspettiamo e vediamo.

Riguardo al problema dello scollegarsi, non saprei che dirti.

ciao e buona giornata anche a te,

ar3ac

----------

## MajinJoko

stavo leggendo su

https://forums.gentoo.org/viewtopic-t-409194-start-0-postdays-0-postorder-asc-highlight-request+timed.html

che consigliano il kernel 2.18. Io sto ancora usando il 2.17. Forse aggiornare il kernel aiuta, ma preferisco aspettare che passi stabile.

Leggevo anche che consigliano di estrarre il firmware da wl_apsta.o, invece io sto usando il firmware estratto dai driver a 64 bit che avevo trovato in rete. Forse anche questo aiuta, ma mi chiedo se il firmware estratto da wl_apsta.o possa andar bene su architettura a 64 bit.

Sono un pò instabili, ma il progetto è promettente, val la pena provarli.

Ciao e grazie

----------

## ar3ac

 *MajinJoko wrote:*   

> 
> 
> Leggevo anche che consigliano di estrarre il firmware da wl_apsta.o, invece io sto usando il firmware estratto dai driver a 64 bit che avevo trovato in rete. Forse anche questo aiuta, ma mi chiedo se il firmware estratto da wl_apsta.o possa andar bene su architettura a 64 bit.
> 
> 

 

Io sono ufficialmente tornato a ndiswrapper come vi dicevo , e da quando l'ho fatto il mio pc e' tornato ad essere stabile.

Nessun freeze improvviso.

Se ti e' di aiuto anch'io usavo il firmware del driver a 64bit della mia scheda , poi ho provato a estrarlo anche da wl_apsta.o

e funzionava anche su sistema a 64bit.

bye,

ar3ac

----------

## noice

una domanda..ma il supporto per BCM43xx è stato rimosso nel kernel gentoo-sources-2.6.22-r5 ?

----------

## lucapost

http://gentoo-wiki.com/HARDWARE_BCM43xx

----------

## noice

mh..no. Il problema è un altro, la rete wireless mi funziona bene con i bcm43xx e kernel 2.6.22-gentoo-r2, ma oggi, volendo provare il kernel 2.6.22-gentoo-r5 ho notato che manca questa sezione:

```
    <M>   Broadcom BCM43xx wireless support 

       [*]     Broadcom BCM43xx debugging (RECOMMENDED)
```

----------

## lucapost

sei sicuro di aver abilitato anche questi:

```
 Networking -->

   Wireless -->

      <M>   Generic IEEE 802.11 Networking Stack 

      [*]     Enable full debugging output 

      <M>     IEEE 802.11 WEP encryption (802.1x) 

      <M>     IEEE 802.11i CCMP support 

      <M>     IEEE 802.11i TKIP encryption 

      <M>     Software MAC add-on to the IEEE 802.11 networking stack 

      [*]       Enable full debugging output 
```

 :Question:   :Question:   :Question: 

----------

## noice

hai ragione..era proprio quello..ero andato prima in Device Drivers e non avendo trovato nulla lì non sono andato a controllare dall'altra parte..che niubbo..  :Embarassed: 

comunque grazie  :Rolling Eyes: 

----------

