Jump to content

Intel Wireless Drivers [OSx86]


pjmiller435
 Share

254 posts in this topic

Recommended Posts

FIRST OF ALL, WARNING!

mac os x 10.5 support exists for 2100, 2200, 2915 , 3945, 4965, 5150, 5350, 6x00, 6x50, 1000 series

 

at this time (oct 09) only iwi2100 and iwi2200 driver works - for mac os x 10.4 and 10.5

 

UPDATE 10/13/2009!

===============================================

UPDATE SLOT!
 This thread is now a collaboration thread for ALL developers and users seeking to get ALL intel wireless cards working on OSx86:

	   Head on over to http://code.google.com/p/iwidarwin/ to get your hands on the newly updated intel drivers that everyone has put so much time into. Help debug and report everything. 

	   Forget P.Diddy's Vote or Die slogan... this is an SOS........Contribute or Die! lol.  =)

 

http://code.google.com/p/iwidarwin/

 

You can help debug and test by following this thread:

http://www.insanelymac.com/forum/index.php?showtopic=71779

 

================================================

 

 

mercurysquad is also working on intel drivers - check it here:

http://projectcamphor.mercurysquad.com/

 

dong as disassembled IO80211 - search for source code of IO80211Controller , IO80211Interface in previous thread

 

pjmiller435 also works on intel cards: http://www.insanelymac.com/forum/index.php?showtopic=164237

 

get iwi's latest files from

http://code.google.com/p/iwidarwin/

 

please read the FAQ here http://code.google.com/p/iwidarwin/wiki/FAQ

 

check for development news in this tread

 

mac os x 10.5 support exists for 2100, 2200, 2915 , 3945, 4965, 5150, 5350, 6x00, 6x50, 1000 series

 

at this time only iwi2100 and iwi2200 driver works - for mac os x 10.4 and 10.5

 

to learn how to install and test latest version of iwi drivers read

http://forum.insanelymac.com/index.php?showtopic=71779

 

 

the drivers aren't stable - to see how it works open console.app -> system.log

if you get errors in system.log like timeouts,fw errors,rf kill,etc try a few reboots

after install goto system preferences -> networks and check if the iwi device is there (en1,etc)

this is important if you use kextload to load the driver

to test the card it must be powered on - use the wirless switch or reboot from windows with the card powered on.

match your log against the linux log to check if the driver is working - compare with attached linux logs

to catch kernel panics boot with flag -v -debug=0x100

 

to fix PCI pci bus detection, use the files from: http://forum.insanelymac.com/index.php?sho...036&st=500# - this avoids issues of the card appearing switched off. (thanks asstastic)

 

 

thanks for helping

 

 

*****************************

 

drivers for 3945, 4965, 5150, 5350, 6x00, 6x50, 1000 cards hare available in the svn tree of iwidarwin site

 

 

the project is based on linux source (no airport for now)

 

iwifi driver - check release in http://code.google.com/p/iwidarwin/updates/list

download and install iwifi.dmg

 

 

if someone can find 6000 ucode files please post them here - i see them in google but cand find a way to download

 

 

the driver is very unstable - please post logs, kernel panics, etc

and state what card are you testing

 

 

please stop trying to send JALAVOURI wireless cards - He's using a macbook to write the code - there's no way to use a intel card here.

 

I on the other hand could use some wireless cards. So if you have extras or can afford to send one. Please DO NOT HESITATE to contact me. As I only have the 5100 to test. (This is for the future)

 

if you get a Kernel Panic boot with -s -v and use kextload to load the driver

The driver now as all the code necessary to work

maybe i write a nsgui/networkselector gui for managing networks

at this stage all it needs to finish is testing and bug removing

 

 

 

 

 

 

 

 

 

*****************************************************

Future Hopeful Intel Injector

 

lethalintel.jpg

 

 

 

FOR LINUX

Screenshot coming.

 

 

**About L.I.F.I.**

Linux Intel Future Injector

 

What is LIFI?

LIFI is an app for os x/linux that will take linux/bsd device firmware and compile it into a working kext.

Of course it wont work 100% of the time. We're just trying to ease the transition of newer Intel cards to make them easily more compatible with OS X.

 

It'll also leave developers wiping the sweat off their brows. As it'll provide a nice template for any cards that do not work "Out The App" / Out the box from using this application.

You'll have everything ready in front of you, ready to debug, test and develop.

 

 

==================================================================

 

 

 

we're looking into this heavily.

this is a great step forward!

 

 

If you want to help:

 

USERS

You can help by testing/debugging and supplying log files for all developers and users to see. (look at top of thread, has link on how to get the svn, compile latest source code of the iwidarwin drivers, along with how to debug, etc.

 

 

 

DEVELOPERS

Knowing C++ is a almost must.

You also need a running mac/osx86 with

xcode, etc.

 

 

Attached file is for my use ONLY or for anyone with an Intel 5100agn who wants to test some experimental kext. NO OTHER CARDS SUPPORTED WITH THIS DOWNLOAD.

 

If you have any other card or dont want these experimental drivers,

then please go to the darwin page :

http://code.google.com/p/iwidarwin/

 

Only download below file if you know what you're doing and how you can debug/test/help.

iwifi.kext.zip

Link to comment
Share on other sites

EDITED FROM ORIGINAL POST*

 

HOW TO BACKUP KEXTS

 

How about I do the guide :P

 

Here is the guide for you n00bs that wish to backup your kexts:

 

Open Terminal and type in these commands:

 

sudo -s
  [enter password]
  cp -r /System/Library/Extensions /System/Library/Extensions.backup
  cp -r /mach_kernel /mach_kernel.backup

 

And thats about it :unsure: Here is how you restore the backup from Terminal:

 

sudo -s
  [enter password]
  cp -r /System/Library/Extensions.backup /System/Library/Extensions
  cp -r /mach_kernel.backup /mach_kernel

 

If you are restoring from single user mode (-s at F8 prompt), its the same commands except type in this command before you do the above commands:

 

mount -uw /

 

:thumbsup_anim:

 

 

====================================================================

 

 

HOW TO TEST/COMPILE/DEBUG iwidarwin source

 

 

Seeing as nobody else is stepping up to the plate, I'll write out a decent tutorial.

Mods: Feel free to move this to where you think it should be. I'm only posting it in this thread for the sake of keeping things easy to find.

This assumes that the reader has no knowledge whatsoever of how to do anything. (obtaining from SVN, compiling, loading the kext, logging)

 

WARNING: Testing these experimental drivers may cause irreversible system changes.

WARNING: Setting up OS X just to be able to compile the kext requires XCode, which is a hefty download. ( version 3.0: 1.1GB, @ http://developer.apple.com/tools/download/ )

 

RECOMMENDED: Back up your kexts, just in case.

( see http://forum.insanelymac.com/index.php?s=&...st&p=636840 )

 

Part I: How to download from the SVN.

potentially considered an unnecessary step, see note below

Note: You /may/ be able to skip this portion (Part I) by downloading XCode and following the steps shown in the Post-script, Part III.

After finishing the instructions in the Post-script, Part III, proceed with the instructions in the body of the tutorial, Part II: Compiling the source from the SVN.

(Once again, XCode 3.0 is used in this tutorial, and it is a large download.)

 

1. Obtain SVN Client software

Personally, I use svnX. It can be found on:

http://www.lachoseinteractive.net/en/commu.../svnx/download/

Make sure to download and install the Subversion binary package linked on the page too.

2. Setting up svnX to download the latest source from the SVN.

Here are the two repository locations

http://iwidarwin.googlecode.com/svn/trunk/iwi4965-osx10.5/

http://iwidarwin.googlecode.com/svn/trunk/...45_new-osx10.5/

Make note of the one that applies to your card.

 

Launch svnX. You'll see two windows appear. Pay no heed to the "Working Copies" window, but instead focus your attention to the "Repositories" window.

Now look back to the two repository locations, for this tutorial, I'll be explaining instructions on how to download the iwi4965 source.

 

On the repositories window, click the "+" sign to add a new SVN location.

Select the new entry that appears in the window and change the following:

Name: "My Repository" to "iwi4965-osx10.5"

Path: "svn://" to "http://iwidarwin.googlecode.com/svn/trunk/iwi4965-osx10.5/"

(Without the quotes, for those of you that must ask)

Also, for those sleepyheads out there. These are the instructions for the Intel 4965 card.

 

The window should now look like this:

svnxsnapshot003561.png

 

Now, highlight and double-click that entry. Another window should now appear.

It should look like this:

svnxsnapshot002823.png

 

The latest revision should be selected, if not, do so. (Rev#)

Seeing as we want to download the stuff shown down at the bottom, click the "svn export" to save a local copy of the svn repository to your drive. (The green arrow on the top right) For the sake of convenience, select your desktop as the location to save everything to.

 

As the files are being downloaded, you'll see a progress bar appear at the bottom right of the svnX iwi4965-osx10.5 window. Do NOT quit svnX until that disappears. See below for an example:

svnxsnapshot001262.png

 

You should now see a folder named "root" on your desktop. It should contain all the sources required to build the kext.

 

Part II: Compiling the source from the SVN.

 

1. Obtain XCode.

Get it: http://developer.apple.com/tools/download/

I used the 1.1 GB XCode 3.0 DMG. You might need to set up an Apple Developer Connection member account to download it.

Mount the disk image and install the XcodeTools.mpkg package file. I didn't need to install anything else.

2. Launch XCode to compile the kext and networkSelector.

Now refer back to the "root" folder on your desktop. Open it up and open the iwi4965.xcodeproj file. (Double click it, XCode should be automatically launched)

 

You should now see:

xcodesnapshot001388.png

note: if you do not see this exact screen, make sure you have selected the iwi4965 project file, as shown under "Groups & Files"

Notice the iwi4965.kext in red? We need to build that. What do you do? Click the "Build" hammer on top.

You should receive a bunch of warnings, but we'll ignore them.

Afterwards, you should see "Build succeeded" and "iwi4965.kext" should no longer be in red text. If its text color is black, select it and open up a context menu and choose to "Reveal in Finder". (See below)

xcodesnapshot003600.png

 

Drag the kext to your desktop for easy access.

 

Now, follow the same steps for networkSelector. (See the /networkSelector directory for the .xcodeproj)

 

Note: If you are having trouble compiling networkSelector, see: http

://forum.insanelymac.com/index.php?s=&...t&p=727429

or http://forum.insanelymac.com/index.php?s=&...st&p=727434

The posts linked above might also solve future problems when following the rest of this tutorial.

Part III: Getting ready to test.

 

1. Setting up the console.

Open up the Console. (Applications>Utilities>Console)

Show the log list, if not already visible. (The top left button)

Select the system.log file. (Under LOG FILES>system.log)

This is what a typical user should see, notice how messy it is? It has all of these irrelevant error messages.

consolesnapshot001330.png

 

Let's clear up that log, to make it simpler to see the information we need.

Reveal the file in Finder.

consolesnapshot002514.png

 

Then open it using your favorite text editor.

findersnapshot001903.png

 

Afterwards, clear the log. (Select everything, delete, and save)

You may need to authenticate for this action. That's normal.

Click Reload in the Console. Everything should be squeaky clean (empty).

If not, there should at least be fewer error messages in the system log.

 

Mine is squeaky clean ;)

consolesnapshot003689.png

 

2. Obtain Kext Helper b7

http://www.cheetha.net/Kext_Helper/Software.html

Seriously. It kicks ass! No more repetitive Terminal work. :)

Part IV: Testing

 

 

Here's where the real fun begins. Kernel panics, lock-ups, and system instability.

If you got lost more than 10 times up to now, it's never too late to turn back.

But since I'm taking the time to write this tutorial, why not follow it? hehe >.>;;

 

1. Checklist

Make sure that you have done the following:

[] Compiled the kext and networkSelector and know where they are

[] Cleared system.log of any error messages generated before the testing

[] Downloaded Kext Helper

[] Realized that I'm not responsible for any damage to your system

[] Thanked jalavoui and the other hard-working people, all dealing with this enormous pain in the arse. (Driver development = ew)

[] Read all of the above

 

2. Loading the kext

Run Kext Helper b7.

Drag your iwi4965.kext into the window.

Enter the password for the user logged in.

It should look like this. (Check the "advanced" box if you want to look cool)

kext_helper_b7snapshot001373.png

 

Ready? Click the EASY INSTALL button.

Are you really ready? If so, click OK.

kext_helper_b7snapshot002410.png

 

Now, after a couple seconds, you should see:

kext_helper_b7snapshot003704.png

 

BUT WAIT! You don't necessarily want to reboot yet!

Check the Console first!

Make sure OS X detects your card. You might see something as follows (from rev 872)

consolesnapshot004191.png

 

If you do, congrats! You have the experimental drivers loaded!

Now, you have two options, unless I'm mistaken.

 

[1] Save the system.log as a text file now (File>Save Copy As) and unload the kext

[2] Or reboot with the kext loaded still to see what happens (Kernel Panic? Success? Pancakes?)

 

After saving system.log, post it to this topic and be sure to indicate your revision number!

 

I'll add a more detailed section regarding networkSelector if I should ever feel like it.

You basically just need to launch it, and initiate a scan from it.

 

From my experience, if I don't initiate a scan from networkSelector, my card defaults into 802.11a.

When I do use networkSelector to initiate a scan, it's forced into 802.11b/g.

 

Anyhow. That concludes the main portion of the tutorial.

Onto the aftermath portion.

 

Post-script Part I: Unloading the kext.

There are many ways to do this, I'll go over three situations.

 

1. Situation 1

You've barely made it through this godly tutorial and haven't yet restarted as you're too scared as to what may happen. You're still logged in and want to unload the kext while your system is still stable. What do you do?

 

Open up Finder. Browse to your Extensions directory.

/System/Library/Extensions

Locate iwi4965.kext and drag it to the trash.

findersnapshot002354.png

You'll have to authenticate. That's normal.

You can now reboot and everything should be back to how it was before.

 

2. Situation 2.

You're in the same situation as above. However, you want to be pro and unload it using the terminal.

That's fine.

Open up the Terminal.

Type in the following:

sudo rm -rf /System/Library/Extensions/iwi4965.kext

You'll have to authenticate, and it should be unloaded after you rebooted.

 

3. Situation 3.

Oh no! You've rebooted and you either get a kernel panic or OS X simply locks up before you can get to a GUI.

 

edit|note:

 

For all I know, austinsnyc has a point there, but I've gotten into a forced habit of adding more boot flags than necessary.

In this part, something is definitely not going right if you're getting kernel panics, so at least have "-v -s" so you can easily diagnose the issue.

Removing the "-x" flag will save you an extra reboot, after you've unloaded the kext and want to have full functionality.

If you want more info about boot flags, please see: http://forum.insanelymac.com/index.php?showtopic=99891

 

Try booting into OS X with the following flags (all at once):

-v -x -s

You should be greeted with the standard terminal prompt after everything has loaded.

Then do the following commands:

mount -uw /
   rm -rf /System/Library/Extensions/iwi4965.kext
   exit

You should then be able to boot into OS X. (With minimal kexts loaded)

If you are able to, and wish to be able to have full functionality, reboot yet again without the flags to load all installed kexts.

If you are not, and you performed all the steps on

http://forum.insanelymac.com/index.php?s=&...st&p=636840

Try restoring the backups.

 

Post-script Part II: Messing around

 

Sometimes jalavoui (or someone else) may suggest that you edit some source code and experiment with certain values.

Here's how you'd do it in XCode.

 

Let's assume you need to change an IOSleep value. How would you find what to change in the jungle of code?

Load up iwi4965.xcodeproj or whatever.

Go to Edit>Find>Find in Project

 

xcodesnapshot002403.png

The following window will pop up. Search for the proper string, and scroll around for the right instance you're looking for.

Make a change, save it, and build the kext. It's that easy :)

xcodesnapshot003948.png

 

Post-script Part III: Subversion (SVN) in XCode

Now, since you've already gotten the XCode project file, and XCode, why bother with svnX? (I still use it, due to force of habit, but this alternative method could save you lots of time)

 

Original instruction set used in this portion by jalavoui @ http://forum.insanelymac.com/index.php?s=&...st&p=727731

1. Enable Subversion integration.

 

Basically, we'll be linking your XCode project directly to the SVN repository.

This way, you'll be able to switch between revisions, check for changes, and other things, all in XCode.

note: I've just realized that this portion may be able to replace the portion regarding svnX, the tutorial will be changed to reflect this.

 

Launch XCode. Go to SCM>Configure Repositories

Click on the + to add a new repository. (You choose whatever name you want, it doesn't affect much, just the name of the directory everything is saved in)

xcodesnapshot003481.png

Make sure Subversion is set as the SCM System.

 

Now you'll see this:

xcodesnapshot001823.png

 

Paste in

http://iwidarwin.googlecode.com/svn/trunk

and the rest should automatically be filled in for you.

Note: You must have that URL in the code-box above (or one in a higher directory) for you to be able to proceed with these instructions.

Do not use the URL for the SVN directory pertaining to your wireless card.

Once you've been Authenticated, click OK.

 

Next, we'll export the contents of that SVN directory through XCode.

Go to SCM>Repositories

You'll see a window like:

xcodesnapshot002707.png

Select the proper folder for your wireless card and click on "Checkout" as shown above.

Make sure you click on "Checkout" and not "Export".

Just exporting the directory will not allow you to integrate the project with Subversion.

I export my folders to the desktop, for easy access. Just choose a location that's convenient for you.

xcodesnapshot001991.png

You will receive an "Checkout Complete" notification message.

 

Now open the XCode project and click on "Get Info" in the context menu shown below.

xcodesnapshot006909.png

 

This window will appear.

 

xcodesnapshot003462.png

Select the proper SCM Repository. Once that's done, you can close that window.

Now, onto another part.

 

2. Comparing versions

 

Basically, how to check for changes in code.

Choose to "Get Info" from any file in the project window.

In this case, we'll use "compatibility.cpp" as it's the most frequently modified file.

xcodesnapshot001540.png

 

The following window will appear, after you've switched to the SCM tab.

xcodesnapshot002483.png

Any changes to a file in a release will be displayed here.

 

Select a revision, and click compare to see what has been changed in respect to the latest release.

Example window:

xcodesnapshot003172.png

One of the many shortcuts in XCode is Option+Arrow Up/Down. This particular shortcut will allow you to quickly scroll between changes in the code, while skipping the fluff inbetween.

 

 

{end}

{to-do}

- add portion on how to compare the log results from Linux

- anything else jalavoui might've requested that I do

{note}

Exams are coming up for me (mid-May), expect a delay at times between updates and changes.

 

 

Anyways, I hope this helps!

 

 

 

 

 

 

 

 

 

 

 

*this post has been modified from what it originally said to fit more information "on-top" of the thread"

Link to comment
Share on other sites

  • 2 weeks later...

**UPDATE**

===================================================

 

I''ve hit many speed bumps along the way but I believe that my GUI is only needed to turn the wireless card on......FOR NOW THAT IS until I hit another problem.

 

What does this mean to me?

 

You will only need to use my app to turn the wireless card on, after that apple is detecting it. I've masked it and am in the process of tricking the OS into thinking it's a Broadcom airport card (through the process of leaving my app open and running in bg). One that comes supported by Mac OS X by default.

 

My only problem was the card had to be turned on by the software but I didnt think the intel cards power was app controlled, or am I mistaken here? lol.

Link to comment
Share on other sites

**UPDATE**

===================================================

 

I''ve hit many speed bumps along the way but I believe that my GUI is only needed to turn the wireless card on......FOR NOW THAT IS until I hit another problem.

 

What does this mean to me?

 

You will only need to use my app to turn the wireless card on, after that apple is detecting it. I've masked it and am in the process of tricking the OS into thinking it's a Broadcom airport card (through the process of leaving my app open and running in bg). One that comes supported by Mac OS X by default.

 

My only problem was the card had to be turned on by the software but I didnt think the intel cards power was app controlled, or am I mistaken here? lol.

 

So are you implying that you can somehow make this card airport compatible by making the OS pretend it's a Broadcom card, or am I mistaken? How long will it take for there to be a testing driver that one who has this card can use?

Link to comment
Share on other sites

So are you implying that you can somehow make this card airport compatible by making the OS pretend it's a Broadcom card, or am I mistaken? How long will it take for there to be a testing driver that one who has this card can use?

 

No, you're not mistaken. You're right on the money. I'd imagine withing the next week or two I should have a stable enough beta to distribute. I have another friend helping me out as well. His background is linux so he's also helping me on another project of porting the linux drivers for the intel 5100+ cards to the mac os x / unix system. of course re-coding it from scratch into something IOkit compatible.

 

I've planned it out this way in hopes that if one fails, the other will pick up the pace and continue into a working solution for all of us having a 5100+ card(s).

Link to comment
Share on other sites

if you need a place to host code (svn tree) or discuss development mail me with a gmail account so i can add you to iwidarwin.

 

http://code.google.com/p/iwidarwin

 

maybe it's possible to force firmware loading for all intel cards (DSDT patch first?)

 

the 2100/2200/3945 are a/b/g cards -> hack with broadcom

 

the 4965/5100 are b/g/n cards? -> hack with atheros

Link to comment
Share on other sites

nice, didn't think of that. as i've only been able to get B working and none other. Maybe trying the same steps but with Atheros may work you're thinking? That's brilliant. I didn't think of that, to look into the a/b/g/n and what cards did what, etc.

 

ok and as far as DSDT patching, you think we'd have to make different types of patches for all the different kernels, i.e. vanilla, non vanilla, etc.? Just like with updates or could there be a way for one universal way to do it easily all-in-one?

Link to comment
Share on other sites

i haven't tryed DSDT hack before but i think it can be used to make the hardware more "apple" compatible

after patching DSDT it can be used with future kernel versions (vanilla,voodoo,etc)

 

but before doing that it's better to focus on firmware

 

i've tested all 3945 firmware versions on iwi3945 driver

i did notice some work better than others

have you tryed all firmware versions? - maybe this can be a start point

download from http://intellinuxwireless.org/

i use hex2string to convert the files (get it from svn tree of any iwidarwin driver)

Link to comment
Share on other sites

  • 2 weeks later...

sorry for missing in action on the development of this, i had a death in the family, ive continued my work, expect something in a week or so. sorry.

 

and jalavoui thanks for all your info and help. i appreciate it. ill wait and put off from being added to the iwidarwin until0 i have a working, stable beta at the very least. after that, id love to get into all that, very much so.

Link to comment
Share on other sites

Hi,

 

I have Toshiba f50-10q labtop with intel 5100 too.

 

I never program in xcode enviorement but i program in C and in the last days i programming in C#

 

So if i can colaborate in anyway no doubt to ask me

 

 

Thanks,

 

Blady

Link to comment
Share on other sites

Hi,

 

I have Toshiba f50-10q labtop with intel 5100 too.

 

I never program in xcode enviorement but i program in C and in the last days i programming in C#

 

So if i can colaborate in anyway no doubt to ask me

 

 

Thanks,

 

Blady

 

 

hell yeah. ill def. be getting in touch with you. and as far as programming in xcode.... you just gotta learn how to mac does things a lil different and also its objective c itself so.... it shouldnt be too hard.

 

 

so you have an up and running osx86 mac installed? i take it as yes just had to ask or see if you had any major problems, etc.

Link to comment
Share on other sites

hell yeah. ill def. be getting in touch with you. and as far as programming in xcode.... you just gotta learn how to mac does things a lil different and also its objective c itself so.... it shouldnt be too hard.

 

 

so you have an up and running osx86 mac installed? i take it as yes just had to ask or see if you had any major problems, etc.

 

Hey Miller

 

I am a Software Engineer too, with some linux driver experience and C/C++ experience. But, I am new to Mac development. I got leopard 10.5.7, XCode and ethernet working on my Sony Laptop. I can help you with the 5100 driver, show me a way forward.

 

Thanks

Link to comment
Share on other sites

I most definitely can't wait. i just bought an acer aspire 6930 with an intel wireless wifi 5100 card. i got ideneb 10.5.6 v4 installed without a hassle. booted the first time, no sound at first but i know have a fix which has been implemented into the system so it works perfect : ) all i'm missing is the wifi. if you would like to have a tester for your software i'm quite open to that.

 

I'm up for testing too if you need some. I have a HP dv7 with the 5100 agn and another sony vaio with one too. Both work almost 100% other than wifi.

Link to comment
Share on other sites

just wondering what the status is. im quite excited to get my 5100 device working on leopard. it will complete the operating system for me. I can't thank you "pjmiller435" enough for the commitment you have put into to your studies.

Link to comment
Share on other sites

If it success, its' time to install OS X on my Dell XPS 16

 

If you're talking about the studio xps 16 I dont think that youre video card will work with qe/ci and resolution changes (ati hd 3670)

I've looked every where for a solution to it so I decided not to buy it.

Link to comment
Share on other sites

 Share

×
×
  • Create New...