Applicera patch?

Här diskuteras programmering och utveckling
jogu
Inlägg: 165
Blev medlem: 03 feb 2007, 03:29
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

Applicera patch?

Inlägg 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  :)
Senast redigerad av 1 jogu, redigerad totalt 14 gånger.
Okänd
Inlägg: 30172
Blev medlem: 03 mar 2008, 01:30
OS: Ubuntu

SV: Applicera patch?

Inlägg 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.
jogu
Inlägg: 165
Blev medlem: 03 feb 2007, 03:29
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

SV: Applicera patch?

Inlägg 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.
jogu
Inlägg: 165
Blev medlem: 03 feb 2007, 03:29
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

SV: Applicera patch?

Inlägg 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 
Användarvisningsbild
Barre
Inlägg: 2298
Blev medlem: 13 dec 2006, 10:23
OS: Ubuntu
Ort: Stockholm
Kontakt:

SV: Applicera patch?

Inlägg 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
________________________________________________________________
twitter @ BarreGargamel
blogg @ Gargamel.NU
Okänd
Inlägg: 30172
Blev medlem: 03 mar 2008, 01:30
OS: Ubuntu

SV: Applicera patch?

Inlägg 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!

^_^
jogu
Inlägg: 165
Blev medlem: 03 feb 2007, 03:29
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

SV: Applicera patch?

Inlägg 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:~$ 
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

SV: Applicera patch?

Inlägg 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". :)
Home sweet ~/ = http://sandnabba.se
Skriv svar

Återgå till "Programmering och webbdesign"