forcing e1000e driver on new device (old kernel... old everything)
Hi!
I've got this box that (for whatever reason, can't really tell why) got a ubuntu 10.04 installed on it. The problem is that it's got an intel ethernet card that's not got registered to use e1000e driver (and I check in my updated kubuntu box and it uses e1000e by modules.pcimap). The card has PCI id 8086:1503. Now, we hacked modules.pcimap and added a line like the one I have in my computer, then modprobed e1000e, the module got loaded but no new device. Then rebooted, just in case, and the module didn't get loaded... so I bet there's something missing. So, how can I force e1000e to use this device? I checked with modinfo and I don't see a parameter to tell e1000e which PCI id to use. Thanks in advance. |
Yes e1000e is the driver for this card and it *should* be automatically loaded.
Maybe it's conflicting with another one, loaded first. To find out, please send output of following command: Code:
lspci -k | grep -A3 net Code:
lsmod | sort > lsmod.txt Code:
uname -r |
It's an old kernel.... but I don't have the computer in front of me. Just asked the guys in front of the computer to do it... hold on a second. Just keep in mind that the device is not (was not, anyways) in modules.pcimap.... So there has to be a way to force the module to try to work on the device even if it thinks it shouldn't.
|
First command:
Code:
00:19.0 Ethernet controller: Intel Corporation Device 1503 (rev 05) Code:
ahci 32232 1 Code:
2.6.32-24-generic-pae |
What puzzles me is ther be no driver in use. My Ethernet card needs the same driver and this is what I get as output of the first command:
Code:
00:19.0 Ethernet controller: Intel Corporation 82566MM Gigabit Network Connection (rev 03) (1) Does e1000e shows in lsmod after you issue the"modprobe e1000e" command? (2) Type as root "tail -f /var/log/messages in a terminal", then: (a) unplug the Ethernet wire then (b) plug it in What do you see in the log? (3) same as (2) but type as root (a) "ifconfig eth0 up" then (b) "ifconfig eth0 down" Anyway, 2.6.32 is not that old and your card is supposed to be supported. |
I just checked in vanilla 2.6.32 and it's not supported from what I can see.
In 3.6-rc5 http://git.kernel.org/?p=linux/kerne...1a24195dd08217 Line 412: Code:
#define E1000_DEV_ID_PCH2_LV_V 0x1503 |
That's right.
So I suggest you simply upgrade your e1000e driver to the most recent version that you will find here. In the tarball, named e100e-2.1.4.tar.gz you will find a README including instructions to compile and install it. Of course your card is supported in it, I just checked ;) |
Dude, you rock. :-)
|
The guys in maracaibo are checking if it works with the ubuntu server (I just tested compiling it on my updated laptop).
Now, let's suppose it works.... I dare making the same question: Is it possible to force a module to use a device? Perhaps with something generic like Code:
modprobe e1000e pciid=8086:1503 |
Your command won't bind the kernel module to the device. To do that "modprobe e1000e" is sufficient, provided the device be not yet claimed by another driver.
But don't bother to do manually what udev is supposed to do automatically for you. If I understand correctly: (1) After installing a module, run as root the command "modprobe -a". This will update the modules dependencies (needed by modprobe to work properly) and in addition update the file /lib/modules<kernel version>/modules.alias. To do that the command "modinfo <kernel module>" is automatically run for all installed modules and the lines beginning with "alias:" of the command's output are written in the aforementioned file, followed by the module's name. (2) an udev rule like this one: Code:
ACTION=="add", SUBSYSTEM=="pci", MODALIAS=="*", RUN+="/sbin/modprobe $modalias" In our example the "modinfo e1000e" command's output includes, among others, following line: Code:
alias: pci:v00008086d00001503sv*sd*bc*sc*i* So after running "depmod -a" we will see in /lib/modules<kernel version>/modules.alias following line: Code:
alias pci:v00008086d00001503sv*sd*bc*sc*i* e1000e Of course, all that process takes much less time to be executed than it took me to write it down ;) To know more, see here. |
Pretty insightful.
|
All times are GMT -5. The time now is 03:43 PM. |