PDA

View Full Version : Linksys EG1032 V2 (or Marvel Yukon/SysKonnect) based ethernet patch


BMillikan
2005-04-17, 11:13 AM CDT
I have finally found out how to get my Linksys EG1032 V2 ethernet card to be recognized by linux FC3 (2.6.11 & 2.6.10 kernels) by kudzu (on bootup). Here are the steps I followed:

1) Go to http://atrpms.net and got the the FC3 (or whatever distribution you are running... if you are using the 2.4 kernel, you are probably fine. The 2.6 kernel has been changed and significant changed had to be made to modify the driver for this group of ethernet adapters)

2) Find the "sk98lin" link on the page and download the appropriate rpm (64-bit or 32-bit kernel). It has a "patch" for both the 2.4 and 2.6 kernel.

3) You will need the source for your kernel at you will either be patching or "updating" the loadable kernel modules. Personally, I found it easier to patch the kernel. So, run "up2date --get-source kernel" for the source code that matches your current kernel.

a) Type 'uname -r' get the version infor of your current kernel (you are running now). After you get the kernel source by using up2date, it will put it in "/var/spool/up2date/kernel-[version id].src.rpm". Run the rpm -ivh /src/spool/up2date/kernel-[version id].src.rpm command to install it.

b) The kernel source code will be named "linux-[version id].tar.bz2" and will be in the /usr/src/redhat/SOURCES directory. Type tar jxvf linux-[version id].tar.bz2 to unzip the kernel. A directory will be created which will look like "linux-2.6.x" and that is the source directory. Go to /usr/src and create a symbolic link "ln -s /usr/src/redhat/SOURCES/linux-2.6.x linux". If you wish to have several versions of the kernel (I have 2.6.9, 2.6.10 and 2.6.11) on my system and I create symbolic links in /usr/src. For example, I have a 2.6.10 symbolic link that points to -> /usr/src/redhat/SOURCES/linux-2.6.10. If I want that to be my primary boot kernel, I just make a symbolic link to that symobic link. So, /usr/src/linux -> /usr/src/linux-2.6.10.

c) Copy the proper config file from the /boot directory to your linux source directory (just created in step 'b'). This has all of the configuration settings for your current kernel. You can adjust it, if you like. But, me experience with this is "somewhat" successful. Things you think you don't need, you need and you just run into problems booting. DO NOT delete your working kernel. In fact, if you are using a boot-loader (grub or lilo) leave the current kernel as the default. If the patch or build process doesn't work you will need it to get back to your current setup (to "tweak" it and make changes). The config file has the same version id as what you see in 'uname -r'. So, it will be /boot/config-[kernel id]. Copy this file to your /usr/src/linux directory. Check to see if ".config" is there already by doing an "ls .config". If it is not, copy the config-[kernel id] file to .config "cp config-[kernel id] .config". We're ready for the patch!

4) Install the patch (it is source code) by running 'rpm -ivh sk98lin-[version].at.[processor id].rpm. Again, the tar.bz2 file will go into the /usr/src/redhat/SOURCES directory. So, once again, deflate the archive by running 'tar -jxvf install-[version id].tar.bz2'. A 'DriverInstall" will be created.

5) cd into the "DriverInstall" directory and run the 'install.sh' file. Select the "patch" option. If all your kernel source is set up correctly and the .config file is in place and your symbolic link has been created '/usr/src/linux', then it should all be downhill from here.

6) Follow the directions to patch the kernel. It should run through the list of things it's doing and finish up (hopefully, without any errors).

7) Now, you must compile the kernel. You should already be in the directory after the patch is finished installing (part of the instructions is to go into your /usr/src/linux directory). This is what I do, configure your kernel and add all the minor revision details. For example if the kernel is named kernel-2.6.11-1.14_FC3, then I put "-1.14_FC3_[my initials]" as the kernel identifier. The default is just the kernel base name "kernel 2.6.x". The steps I follow to make the kernel are as follows:

a) "make mrproper" - clean up
b) "make bzImage" - makes new base kernel
c) "make modules" - this is where your new code will be compiled
d) "make modules_install' - installs the new kernel modules
e) "make install" - install the new kernel in your /boot directory and adds it to your boot loader.
f) I also copy the ".config" file to a unique name (usually the same name I gave the kernel... config-[kernel id with your unique modifier] and copy that to the /boot directory also. I created a build script that does all this for me.

8) Reboot and select the new kernel. If all went well, it should identify your Marvell/Yukon/SysKonnect ethernet adapter.

Contact me if you have any questions.

Brian :)

GoldFibre
2005-07-09, 11:41 AM CDT
I am using FC4 and trying to follow your instructions. I downloaded and unpackaged my kernel source. Everything was going well until I wanted to download my ethernet patch from atrpms.net.

I've got an Althon 1800+ and so I figure I'm looking for a i386 rpm, but I can't find one for my kernel. (2.6.11-1.1369_FC4) Am I missing something? I don't think the one at the top of the page is correct.

Thanks!

BMillikan
2005-07-09, 01:25 PM CDT
The name of the rpm file for that kernel is "kernel-2.6.11-1.1369_FC4.src.rpm". You can usually type "up2date --get-source kernel" and "up2date" will automatically download the kernel source code for your current kernel version ("uname -r"). You can use the same command to get the source code for any module on your system. I noticed I missed a step between a) & b). After step a), you need to copy your current kernel build configuration from your "/boot" directory. It should be named "config-2.6.11-1.1369_FC4". Copy that file to your source directory (which, after you install it, should be under "/usr/src/redhat/SOURCES/" and the directory created after you bunzip2 & 'tar -xvf' the .tar.bz2 for the kernel source). Copy that file into that same directory as ".config" and when you do a "make bzImage" and the other following commands. Also, you can get more up-to-date source code for the linksys EG1032 V2 card (or SysKonnect/Marvel Yukon) driver from "http://www.syskonnect.com/syskonnect/support/driver/htm/sk9elin.htm". This is the code to patch the kernel source (instead of the atrpms code). They are the original driver writers and support many different OSes (including Linux). Feel free to ask more questions as this is a complex procedure. ATrpms might also have a "kernel module" that you can download that has already been compiled. The problem is that they don't always keep it up-to-date with the current kernel source. I followed this procedure myself and I've always had a good solid gigabit ethernet connection with a plug-in Linksys PCI card.

I've been messing with UN*X systems for years and I learned on a system I didn't really care about (I could rebuild it at will). It's much easier to learn Linux/UN*X in that fashion than on a machine you don't want to mess up! Don't feel bad. It'll get easier and that's how we learn... from others! :-)

Brian

GoldFibre
2005-07-09, 01:39 PM CDT
Hmm... now I think I've been going down the wrong path!

Here's my output when I try to generate the patch:

Kernel version (2.6.11) [ OK ]
Driver version (8.23.1.3) [ OK ]
Release date (Jun-20-2005) [ OK ]
Check kernel functions (Changed: nothing) [ OK ]
Generate driver patches (done) [ OK ]
Generate readme patch (done) [ OK ]
Generate Kconfig patch (done) [ OK ]
Delete temp directories (done) [ OK ]

Patch not generated.
The sources already installed on the system in the directory
/usr/src/redhat/SOURCES/linux-2.6.11
are equal to the sources from the install package.
This implies that it makes not sense to create the patch,
because it'll be of size zero!
Don't worry, this is not a failure. It just means, that you
already use the latest driver version.

Have fun...


My network configuration does see my linksys network card. Sort of. It gives my USB network adapter the name "Linksys Gigabit Network" which is completely wrong.

My network will function through the USB adapter, but I'm adding a wireless router so my roommate can connect to our cable modem through her laptop. Thus I need to connect to the router through my network card, instead of directly to the cable modem with USB!

Do you think this incorrect identification of my USB device is a bug in FC4? If I boot without the USB connected it cannot find my network adapter, but keeps the name "Linksys Gigabit Network" on my deactivated USB.

GoldFibre
2005-07-09, 01:52 PM CDT
Hopefully my attachment will be worth a thousand words.

In that screenshot I'm connected to my cable modem through a USB cable. My EG1032 network card is in my computer, but not connected to any network cable. As you can see, my active network connection is called "Linksys..." but really that is my USB connection! Also, you can see that I have the sk98lin driver installed, but well, I'm pretty confused!

BMillikan
2005-07-09, 06:09 PM CDT
Kernel version (2.6.12) [ OK ]
Driver version (8.23.1.3) [ OK ]
Release date (Jun-20-2005) [ OK ]
Check kernel functions (Changed: nothing) [ OK ]
Generate driver patches (done) [ OK ]
Generate readme patch (done) [ OK ]
Generate Kconfig patch (done) [ OK ]
Delete temp directories (done) [ OK ]

All done. Patch successfully generated.
To apply the patch to the system, proceed as follows:
# cd /usr/src/linux
# cat /usr/src/redhat/SOURCES/DriverInstall/sk98lin_v8.23.1.3_2.6.12_patch | patch -p1

This is the output I get when I run the "install-8_23.tar.bz2" file. You should see something similar. I can patch a kernel that has already been patched with this. It doesn't care. The "patch" command will take care of whether or not the patch needs to be applied or not. That is odd with the USB cable modem connection. Is there a way to isolate your internal network first and eliminate the cable modem until you get your internal network setup? I had problems setting up my NIC card. Since I got the Linksys card, I had to disable my internal NIC (built on the M/B) for it to install correctly. I had to reboot the machine and kudzu "saw" my Gigabit card and took out my "Realtek" 10/100MB card. I can enable the M/B NIC now without a problem, but it's buggy when I first installed the gigabit NIC card.

Try installing the patch (as you see above). You should get 3 options when you run the install shell file 1) user, 2) expert, 3) generate patch. Choose 3 and you should get the same text as above. Then, apply the patch. Make sure your "symbolic link" for the kernel source "/usr/src/linux" is pointing to you kernel source directory. Do this by typing "ln -s /usr/src/redhat/SOURCES/2.6.11 linux".

Brian

Have fun...

GoldFibre
2005-07-10, 04:52 PM CDT
I finally figured out my problem. The network connection on my cable modem DOES NOT WORK. I could never get it to work since I got the modem, but figured I didn't have the right drivers for linux. Today I tried to get it to work with my roommates Windows XP laptop, and it got no connectivity. The tech on the phone confirmed the modem was defective.
Thanks for all your help though, I will probably compile my own kernels in the future with what I've learned!

bham
2005-10-17, 09:08 PM CDT
I'm attempting to follow the directions according to the first post. I get stuck at

4) Install the patch (it is source code) by running 'rpm -ivh sk98lin-[version].at.[processor id].rpm.

When I enter the command I get the following error:

warning: sk98lin-8.23.1.3-6.rhfc4.at.i386.rpm: Header V3 DSA signature: NOKEY, key ID 66534c2b
error: Failed dependencies:
sk98lin-kmdl-8.23.1.3-6.rhfc4.at is needed by sk98lin-8.23.1.3-6.rhfc4.at.i386

Any ideas why this is happening and any suggestions for fixes?

BMillikan
2005-10-18, 05:43 AM CDT
If you're going to patch the kernel, you need to make sure you download the "src" module and not the binary modules (which are also on ATRPMS). You can also get the source from SysKonnect directly (who makes the modules). But, on the ATRPMS site it's easy to find modules.

Anyway, make sure you download the sk98lin module with "src" in the title. That is the source code. When you extract it, it will extract in your /usr/src/redhat/SOURCES directory and you can generate a patch from it and patch your kernel. If you are using Fedora Core 4, I've noticed that they have built in support for this card in the newer kernel 2.6.12-xxxxxx.

You can download the binaries from atrpms (as you were doing) and not patch the kernel. It installs a kernel module as well. You need to install (as it says) the kernel module as well as the sk98lin module itself. I just could never get it to work when I first did this.