- Joined
- May 31, 2012
- Messages
- 5
- Motherboard
- GA-Z77M-D3H
- CPU
- Intel 2500k @ 4.0 GHZ
- Graphics
- EVGA GTX 680
- Mac
- Classic Mac
- Mobile Phone
Hey guys. I've used your resources for a very long time, and now I finally have something to contribute in return. I recently purchased an MSI GT70-2OD laptop. Every PC and laptop I have all run Windows, OSX, and Linux, and I depend on that capability because I'm a computer repair guy, and I sometimes have to do work on exotic systems or do something that requires software exclusive to one platform or another. After quite a bit of work getting OSX installed on the laptop I remembered that it has killer doubleshot wireless and LAN (E2200), and that finding a driver for either of those was going to be nigh impossible. I started looking for a solution, and decided to install linux in the meantime. Lo and behold, the E2200 didn't work in Linux Mint 15 either. I was pretty disappointed, until I found a patch that someone developed to allow the E2200 to work in linux through the ALX driver.
Apparently the ALX driver already did support the E2200, it just didn't know it. At this point, I went back to OSX, downloaded the source for Shailua's ALX driver, manually added the patch, and compiled for mavericks. Unfortunately, that wasn't enough. It would see the hardware properly (PCI addresses and such), and even did load and associate (Which was a very good sign), but it would always fail halfway through the initialization. A couple days worth of digging later, I found out that I had to modify some low-level driver code to make it succeed.
A bit of explanation is in order, I think. With the normal AR8161s, and other ALX compatible chips, there is just the MII (Controller) and the PHY (Physical Link/Port). The PHY answers to the MII, and gives you your link. The MII talks to the PCI bus. (Normally) Only with the Killer, there is that fancy UDP offload engine in the way, and the MII always says that it's busy, because it's only expecting to get commands from the killer controller, and not the system. Part of what I did is, I disabled the check to see if the MII is busy, in order to override that. Accessing the MII will always succeed, even if it -really- is busy.
I AM NOT LIABLE IF THIS BREAKS YOUR SYSTEM OR FRIES YOUR NIC, and this is very important in this case because I -REMOVED- a FAILSAFE in the DRIVER CODE. That said, it works wonderfully for me, and while I didn't remove anything major, i would only recommend testing this driver on the KILLER E2200, and nothing else. The only killer I've used it on is the onboard E2200 on the MSI GT70-2OD. I'm using it on one of my gigabyte hacks' AR8161, and it does work, but I don't know how stable it is yet.
I don't know enough about Xcode to change the version number, and I'm too lazy to clean up the hardware descriptions (The E2200 shows up in System Information as an AR8172 Fast Ethernet. It still runs at gigabit speeds, so it's just a cosmetic thing.) and to be honest, I'm done working on it, because it works great, and I don't have the time to take it any farther. I'm including the modified source code, and the ALX Kext, compiled for Mavericks. If you need it for an older version of OSX, you can open the project in Xcode, change the build target to whichever version you need, and then hit build. it should require no editing for OSX versions 10.7 to 10.9.
EDIT: To install this kext, copy the DEBUG version of the kext to S/L/E, and also copy it into the plugins folder inside IONetworkingFamily.kext. Either use kext wizard, or simply repair permissions on the disk afterwards, then reboot. ^_^
Apparently the ALX driver already did support the E2200, it just didn't know it. At this point, I went back to OSX, downloaded the source for Shailua's ALX driver, manually added the patch, and compiled for mavericks. Unfortunately, that wasn't enough. It would see the hardware properly (PCI addresses and such), and even did load and associate (Which was a very good sign), but it would always fail halfway through the initialization. A couple days worth of digging later, I found out that I had to modify some low-level driver code to make it succeed.
A bit of explanation is in order, I think. With the normal AR8161s, and other ALX compatible chips, there is just the MII (Controller) and the PHY (Physical Link/Port). The PHY answers to the MII, and gives you your link. The MII talks to the PCI bus. (Normally) Only with the Killer, there is that fancy UDP offload engine in the way, and the MII always says that it's busy, because it's only expecting to get commands from the killer controller, and not the system. Part of what I did is, I disabled the check to see if the MII is busy, in order to override that. Accessing the MII will always succeed, even if it -really- is busy.
I AM NOT LIABLE IF THIS BREAKS YOUR SYSTEM OR FRIES YOUR NIC, and this is very important in this case because I -REMOVED- a FAILSAFE in the DRIVER CODE. That said, it works wonderfully for me, and while I didn't remove anything major, i would only recommend testing this driver on the KILLER E2200, and nothing else. The only killer I've used it on is the onboard E2200 on the MSI GT70-2OD. I'm using it on one of my gigabyte hacks' AR8161, and it does work, but I don't know how stable it is yet.
I don't know enough about Xcode to change the version number, and I'm too lazy to clean up the hardware descriptions (The E2200 shows up in System Information as an AR8172 Fast Ethernet. It still runs at gigabit speeds, so it's just a cosmetic thing.) and to be honest, I'm done working on it, because it works great, and I don't have the time to take it any farther. I'm including the modified source code, and the ALX Kext, compiled for Mavericks. If you need it for an older version of OSX, you can open the project in Xcode, change the build target to whichever version you need, and then hit build. it should require no editing for OSX versions 10.7 to 10.9.
EDIT: To install this kext, copy the DEBUG version of the kext to S/L/E, and also copy it into the plugins folder inside IONetworkingFamily.kext. Either use kext wizard, or simply repair permissions on the disk afterwards, then reboot. ^_^