ThinkPadin 3Com 10/100 -verkkokortti

Linux.fista
Versio hetkellä 27. toukokuuta 2006 kello 18.07 – tehnyt Heikki (keskustelu | muokkaukset) (tämmönen ongelma ratkaistiin #linux^n00bs-kanavalla, pistetään tiedot tännekkin)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

IBM:n ThinkPad-mallisissa kannettavissa tietokoneissa käytettävä 3Comin 10/100 mbit/s verkkokortti ei toimi vanhempien ytimen versioiden kanssa. Version 2.6.14-rc1 jälkeen ongelma on korjattu.

Ongelma koskee ThinkPadin malleja

  • A20m, A20p, A21e, A21m, A21p, A22p
  • A30, A30p, A31, A31p
  • T20, T21, T22
  • X20, X21, X22
  • TransNote

Ongelman ratkaisu

Helpoin tapa korjata ongelma on päivittää ydin riittävän uuteen versioon, jolloin ongelma poistuu. Vanhempia ytimiä käytettäessä pitää antaa ytimelle käynnistysparametri acpi=off. Käytettäessä Grubia parametri voidaan joko laittaa /boot/grub/menu.lst-tiedostoon tai se voidaan antaa käynnistyksen yhteydessä muokkaamalla samaa riviä. Muokkaaminen onnistuu valitsemalla ensin muokattava kohta Grubin valikosta ja painamalla sitten e:tä. Tämän jälkeen valitaan rivi joka alkaa sanalla kernel ja painetaan sen kohdalla eetä.

Molempia muokkaustapoja käytettäessä sanalla kernel alkavan rivin loppuun kirjoitetaan käynnistysparametri acpi=off. Jos asetuksia muokataan käynnistyksen yhteydessä, saadaan Linux käynnistymään uusilla optioilla painamalla näppäintä b. Huomaa että asetukset eivät tallennu mihinkään.

Ongelman voi yrittää ratkaista myös ajamalla käynnistyksen yhteydessä seuraavanlaisen skriptin

#!/usr/bin/perl

use strict;

my $DRIVER = "3c59x";
my $VENDOR = "10b7";
my $DEVICE = "6056";
my $LSPCI = `lspci -vd $VENDOR:$DEVICE | grep "I/O ports"`;

print "Resetting 3Com ethernet controller... ";
if($LSPCI =~ m|I/O ports at (\d{4})|i) {
        my $io = $1;
        `rmmod $DRIVER`;
        `setpci -H1 -d $VENDOR:$DEVICE COMMAND=0x07 CACHE_LINE_SIZE=0 LATENCY_TIMER=0x40 BASE_ADDRESS_0=0x$io`;
        `modprobe $DRIVER`;
        print "done.\n";
} else {
        print "failed.\n";
}

Katso myös