Sida 1 av 1

Applicera patch?

Postat: 14 jun 2007, 21:20
av jogu
Jag har ett trådlöst nätverkskort med ett BCM4312-chip.
Den fria linuxdrivrutinen bcm43xx funkar OK, men  överföringshastigheten är tyvärr inget vidare.

Nu verkar det som att utvecklarna har hittat problemet:
http://lists.berlios.de/pipermail/bcm43 ... 03809.html
http://lists.berlios.de/pipermail/bcm43 ... 03819.html
och t.ex. inlägg #9 på http://bbs.archlinux.org/viewtopic.php?pid=227671

Patchen som fixar det är

Kod: Markera allt

Index: linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
+++ linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_phy.c
@@ -1225,7 +1225,7 @@ static void bcm43xx_phy_initg(struct bcm
 	}
 	if (phy->rev < 3 && phy->connected)
 		bcm43xx_phy_write(bcm, 0x047E, 0x0078);
-	if (phy->rev >= 6 && phy->rev <= 8) {
+	if (phy->rev >= 6 && phy->rev < 8) {
 		bcm43xx_phy_write(bcm, 0x0801, bcm43xx_phy_read(bcm, 0x0801) | 0x0080);
 		bcm43xx_phy_write(bcm, 0x043E, bcm43xx_phy_read(bcm, 0x043E) | 0x0004);
 	}
Min fråga är nu:
Är det hyfsat enkelt för mig att använda denna patch? Eller skall jag som vanlig dödlig vänta tills Gusty då detta antagligen är med i kärnan 2.6.21 enl. den tredje länken ovan.
Vad gäller datorvana har jag inte kompilerat något program från källkod än i Ubuntu, än mindre kompilerat ett kärna, men jag är på intet sätt ovan vid terminalen  :)

SV: Applicera patch?

Postat: 15 jun 2007, 10:34
av Okänd
Det var ett tag sedan jag kompilerade kernel moduler men det borde inte vara så toksvårt egentligen.
Det du behöver är källkoden för kärnan som du kör just nu, sedan patchar du den, sedan  bygger du bcm43xx modulen och byter ut din gammla bcm43xx modul med den du byggde.
(make modules)

Den gammla modulen borde ligga i typ
/lib/modules/2.6.20-16-386/kernel/drivers/net/wireless/bcm43xx

Så den ersätter du med modulen du byggde.

En sak som är viktigt är att du kompilerar modulen mot samma version av kärnan som du kör nu.

SV: Applicera patch?

Postat: 17 jun 2007, 21:24
av jogu
Gott! Tack för guidningen gasol.
Det gick bra att bygga om bcm43xx-modulen och nu är överföringshastigheten avsevärt snabbare (t.ex. kan jag nu använda WPA-kryptering vilket jag inte kunde tidigare).  :D

Dock kunde jag inte inte använda patchen ovan. Det verkar som att det hänt mkt med drivrutinen sedan den version som finns i Ubuntus förråd. Så jag gick in - på egen risk (jag vet) - och ändrade i vad jag tolkade var motsvarande rader i källkoden jag laddat ner från Ubuntus förråd.

SV: Applicera patch?

Postat: 17 jun 2007, 21:33
av jogu
Om någon undrar så var stegen jag gjorde:

Först hämta och installera sådant som behövs

Kod: Markera allt

sudo apt-get update
sudo apt-get install build-essential linux-source-2.6.20 linux-headers-2.6.20-16-generic
Packa upp källkoden för kärnan

Kod: Markera allt

cd /usr/src
sudo tar xjvf linux-source-2.6.20.tar.bz2
Nu skulle man applicerat patchen om det hade gått.
Som sagt ändra jag i källkoden för hand:

Kod: Markera allt

cd /usr/src/linux-source-2.6.20/drivers/net/wireless/bcm43xx
sudo gedit bcm43xx_phy.c
Förbered och bygg kärnmodulerna

Kod: Markera allt

sudo cp /usr/src/linux-headers-2.6.20-16-generic/.config /usr/src/linux-source-2.6.20
cd /usr/src/linux-source-2.6.20/
sudo make modules
För säkerhets skull kopiera en backup av den gamla modulen

Kod: Markera allt

cp /lib/modules/2.6.20-16-generic/kernel/drivers/net/wireless/bcm43xx/bcm43xx.ko ~/bcm43xx.ko.backup
Avslutningsvis, ersätta den gamla modulen med den nya

Kod: Markera allt

cd /usr/src/linux-source-2.6.20/drivers/net/wireless/bcm43xx
sudo cp bcm43xx.ko /lib/modules/2.6.20-16-generic/kernel/drivers/net/wireless/bcm43xx/bcm43xx.ko 

SV: Applicera patch?

Postat: 17 jun 2007, 21:50
av Barre
en påse karma till jogu!


Tack för att du bidrar med en sådan detaljerad och utförlig beskrivning på lösningen.
Jag är övertygad om att någon kommer att ha hjälp av det i framtiden (och kanske glömmer att tacka, så jag gör det i förebyggande syfte ;D)

cheers

SV: Applicera patch?

Postat: 17 jun 2007, 22:00
av Okänd
Riktigt gött att det gick bra för dig! Förhoppningsvis fler som vågar börja kompilera sina egna program nu!

^_^

SV: Applicera patch?

Postat: 17 jun 2007, 22:20
av jogu
Tackar, jo det var inte så komplicerat som jag först befarat :)

För andra som också har BCM4311- eller BCM4312-kort kan jag berätta att de ändringar jag gjorde var att kommentera bort fyra rader i källkoden.
(Som sagt det är på egen risk!)

Kod: Markera allt

john@john-laptop:~$ diff -u bcm43xx_phy.c.original bcm43xx_phy.c
--- bcm43xx_phy.c.original      2007-06-07 19:47:08.000000000 +0200
+++ bcm43xx_phy.c       2007-06-17 22:05:05.000000000 +0200
@@ -1218,10 +1218,10 @@
                }
                bcm43xx_phy_write(bcm, 0x047E, 0x0078);
        }
-       if (radio->revision == 8) {
+       /*if (radio->revision == 8) {
                bcm43xx_phy_write(bcm, 0x0801, bcm43xx_phy_read(bcm, 0x0801) | 0x0080);
                bcm43xx_phy_write(bcm, 0x043E, bcm43xx_phy_read(bcm, 0x043E) | 0x0004);
-       }
+       }*/
        if (phy->rev >= 2 && phy->connected)
                bcm43xx_calc_loopback_gain(bcm);
        if (radio->revision != 8) {
john@john-laptop:~$ 

SV: Applicera patch?

Postat: 17 jun 2007, 23:33
av Emil.s
Annars så kunde du använt .patch filen med "patch /sökväg/till/bcm43xx /sökväg/till/patch/filen.patch". :)