Problem with 3Com 10/100 Ethernet card not being recognized

From ThinkWiki
Revision as of 11:39, 3 August 2005 by (Talk) (Alternative to disabling ACPI)
Jump to: navigation, search

Information about the problem of non-recognized 3Com Ethernet card when using ACPI with 2.6 kernels.

Problem description

When using a 2.6 kernel with ACPI enabled, the card is not recognized properly. In fact the kernel finds the card and tries to enable it but gives an error message in dmesg output.

Affected Models

Affected Operating Systems

  • all Linux flavours


This is a problem with the PCI power management and resource management, which occurs when the ACPI subsystem is enabled. It is tracked in issue 158725 in RedHat's Bugzilla and issue 1188 in the Bugzilla. The former contains tentative kernel patches.


Try one of the following kernel parameters (in that order):

  • nolapic (disables support for local apic)
  • acpi=nopci (disables PCI resource control of the ACPI subsystem)
  • acpi=off (completely disables ACPI, should always work)

Alternative to disabling ACPI

It is possible to get the ethernet controller of the 3Com combo card working with ACPI enabled by using the setpci command. Since it requires an IO port address that may change each boot, this Perl script will help to automate things. It has only been tested under the 2.6.12-rc5-mm2 and 2.6.12-rc6 kernels with the 3c59x driver compiled as a module. It may break with different versions of the lspci command (tested with 2.1.11).


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 = sprintf("%x", (hex $1) + 1);
	`rmmod $DRIVER`;
	`modprobe $DRIVER`;
	print "done.\n";
} else {
	print "failed.\n";

There is a patch at that fixed this issue for my T21 using Linux 2.6.13-rc5 - Thanks John!