Intel Wireless 2100, 2200bg, 2915bg, 3945abg, 4965agn, IWIDarwin drivers for mac os x 10.4 and 10.5 *under development* |
![]() |
Intel Wireless 2100, 2200bg, 2915bg, 3945abg, 4965agn, IWIDarwin drivers for mac os x 10.4 and 10.5 *under development* |
|
Kramark
InsanelyMac Geek
|
![]() |
Feb 20 2008, 12:24 AM Post #221
|
![]() ![]() ![]()
|
man, thanks for the driver my wifi 2200 now works!!! I just noticed when i check my desktop with iatkos installed, the airport is installed even though there are no wifi card installed but of course the system knows that there are no available wifi card. Is it possible to copy the files from iatkos and embed it with kalyway for example to show the airport instead of ethernet 2?
|
|
Symuc
InsanelyMac Protégé
|
![]() |
Feb 20 2008, 08:06 AM Post #222
|
|
Just a quick update: TNW has gotten it so it gets to the point of card initialization. Currently, the card starts responding alright, but once it gets to a certain point (sending POWER_TABLE_CMD in iwl3945_send_power_mode()) the card starts responding with errors. He suspects that it's because the mbufs are getting corrupted due to the fact that mutexes and spinlocks aren't enabled, which I could see.
Unfortunately, enabling mutexes causes strange and interesting behavior. More unfortunately I can't determine the exact cause of the error, but I suspect it's either the call to alloc_skb() or pci_map_single() in iwl3945_rx_allocate(). I can't figure out where the error is because: 1) I have no wired NIC, so I can't use GDB over the network. 2) I have no serial port, so I can't use DDB. 3) The stack is deeper than DUMPFRAMES, so the darwin_iwi3945 code is lost behind a "Backtrace continues..." message. I've been reading the backtraces to determine where errors are, so I'm not against using the third method. But compiling the kernel is really annoying, especially in an environment with no network access. Is there anyone here who can compile a new kernel and set DUMPFRAMES in osfmk/i386/AT386/model_dep.c:937 to something higher? Like, say, 64? |
|
righteye
InsanelyMac Sage
|
![]() |
Feb 20 2008, 09:44 AM Post #223
|
![]() ![]() ![]() ![]() ![]()
|
Just a quick update: TNW has gotten it so it gets to the point of card initialization. Currently, the card starts responding alright, but once it gets to a certain point (sending POWER_TABLE_CMD in iwl3945_send_power_mode()) the card starts responding with errors. He suspects that it's because the mbufs are getting corrupted due to the fact that mutexes and spinlocks aren't enabled, which I could see. Unfortunately, enabling mutexes causes strange and interesting behavior. More unfortunately I can't determine the exact cause of the error, but I suspect it's either the call to alloc_skb() or pci_map_single() in iwl3945_rx_allocate(). I can't figure out where the error is because: 1) I have no wired NIC, so I can't use GDB over the network. 2) I have no serial port, so I can't use DDB. 3) The stack is deeper than DUMPFRAMES, so the darwin_iwi3945 code is lost behind a "Backtrace continues..." message. I've been reading the backtraces to determine where errors are, so I'm not against using the third method. But compiling the kernel is really annoying, especially in an environment with no network access. Is there anyone here who can compile a new kernel and set DUMPFRAMES in osfmk/i386/AT386/model_dep.c:937 to something higher? Like, say, 64? hello Symuc, i do not have experience in all this but i have the time and the system you need ... i have Xcode3 ... Leopard 10.5.2 ... A machine withe the integrated 3945 ... and the time to make the tests. What should be the next step? should we try remotely? Cheers |
|
baikai
InsanelyMac Protégé
|
![]() |
Feb 20 2008, 12:12 PM Post #224
|
|
[attachment=22622:log.txt] boys,
not sure if it'd help .... but it seems I can load the driver a bit further then in the latest TNW's log. please have a look at my log, maybe it will give you some ideas. The sequence is of the following: 1. latest TNW's source code (ie http://zetasam.ath.cx/iwi3945_19_02_2008.zip) 1a changed spin_lock to spin_lock_saveirq in iwi3945_isr ( don't think it helped since #define for spin_lock_saveirq just calling spin_lock as I found later) 2. did load.command (pc crashed - KP) 3. rebooted pc (crashed again ) 4. rebootede pc, did not crash, however produces the same log as in TNW's LOG.rtf (e.i. MAC = 0:0:0:0) 5. if I kextload at this stage, it goes much further, printing the right MAC in the log. It looks like after this "second" load I can load & unload driver as much as I pleased, no KP. and I can see correct wireless MAC in the log.
Attached File(s)
|
|
TNW
InsanelyMac Protégé
|
![]() |
Feb 20 2008, 12:50 PM Post #225
|
![]()
|
Hello baikai,
Maybe you should play with the lastest version . You must disable spinlock for the moment or replace them with mutex due to this problem. This link explains the problem : http://lists.apple.com/archives/Darwin-ker...n/msg00046.html We have another problem , we need to disable processor's intterupts to make sur that the current thread isn't switched by the kernel's scheduler. But since OS-X we can't do that , maybe can we set an high priority on the current thread? If someone have an idea , that would be great ! Bye |
|
zubi
InsanelyMac Protégé
|
![]() |
Feb 20 2008, 01:17 PM Post #226
|
|
I realize that you guys are working very hard at making this work. I had read somewhere earlier in the thread that porting a BSD driver would be easier than a linux one. I saw some information on freebsd and was wondering if that would help:
http://www.clearchain.com/wiki/Wpi Maybe those guys there could be a resource? Here is the "stable" driver for BSD:
20071102_freebsd_wpi.tar.gz ( 131.33K )
Number of downloads: 49 |
|
jalavoui
InsanelyMac Legend
|
![]() |
Feb 20 2008, 01:51 PM Post #227
|
![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
TNW, Symuc
is the svn tree up to date with latest code? - i hope so, i'll try to help maybe you'd like to change some things in code: class darwin_iwi3945 : public IO80211Controller -> make it IOEthernetController it's nice to have a airport device but at this time the driver will be more stable with IOEthernetController does request_firmware() works? maybe it's better to set struct iwl3945_ucode ucode = (struct iwl3945_ucode*)ipw3945_ucode_raw always leave fInterruptSrc->enable() - the driver needs to work this way... mutex, locks - we don't need them at this time - they only give bugs pci_enable_device() maybe it's better to test old code /*UInt16 reg16; reg16 = fPCIDevice->configRead16(kIOPCIConfigCommand); reg16 |= (kIOPCICommandBusMaster | kIOPCICommandMemorySpace | kIOPCICommandMemWrInvalidate); reg16 &= ~kIOPCICommandIOSpace; // disable I/O space fPCIDevice->configWrite16(kIOPCIConfigCommand,reg16);*/ fPCIDevice->setBusMasterEnable(true); fPCIDevice->setMemoryEnable(true); if_down() - use old iwi2200 code to really turn the interface down power stuff - the code from iwi2200 for requestPowerDomainState(), WiFiPower.cpp and other power things work fine if you're going to use IOEthernetController better to change this. pci_save_state() - this can give some bugs get rid of IOMallocContiguous() - i get some bugs in the past by using this function take a look at pci_map/unmap_single try to use MemoryDmaAlloc() dev_kfree_skb() - add more validation code here- the driver will panic if trying to free a packet in several ways. __alloc_skb() - try to set size to 0 mbuf_setlen(skb->mac_data,0); mbuf_pkthdr_setlen(skb->mac_data,0); start_thread(), queue_work(), queue_delayed_work(), wait_event_interruptible_timeout() to make thread work correctly this code need to be corrected - i don't know if it will ever work maybe it's better to use code form queue_te/td() i hope this helps |
|
TNW
InsanelyMac Protégé
|
![]() |
Feb 20 2008, 02:28 PM Post #228
|
![]()
|
TNW, Symuc is the svn tree up to date with latest code? - i hope so, i'll try to help maybe you'd like to change some things in code: class darwin_iwi3945 : public IO80211Controller -> make it IOEthernetController it's nice to have a airport device but at this time the driver will be more stable with IOEthernetController It's not our problem for the moment but I will do that. does request_firmware() works? maybe it's better to set struct iwl3945_ucode ucode = (struct iwl3945_ucode*)ipw3945_ucode_raw request_firmware() works fine at this moment always leave fInterruptSrc->enable() - the driver needs to work this way... How can we disable the interrupts without that ? mutex, locks - we don't need them at this time - they only give bugs Mutex and Lock help for thread syncronitation , without they all thread acces restricted area of the code pci_enable_device() maybe it's better to test old code /*UInt16 reg16; reg16 = fPCIDevice->configRead16(kIOPCIConfigCommand); reg16 |= (kIOPCICommandBusMaster | kIOPCICommandMemorySpace | kIOPCICommandMemWrInvalidate); reg16 &= ~kIOPCICommandIOSpace; // disable I/O space fPCIDevice->configWrite16(kIOPCIConfigCommand,reg16);*/ fPCIDevice->setBusMasterEnable(true); fPCIDevice->setMemoryEnable(true); if_down() - use old iwi2200 code to really turn the interface down power stuff - the code from iwi2200 for requestPowerDomainState(), WiFiPower.cpp and other power things work fine if you're going to use IOEthernetController better to change this. pci_save_state() - this can give some bugs get rid of IOMallocContiguous() - i get some bugs in the past by using this function take a look at pci_map/unmap_single try to use MemoryDmaAlloc() At this moment we have timeout error on sending cmd, that it ? dev_kfree_skb() - add more validation code here- the driver will panic if trying to free a packet in several ways. __alloc_skb() - try to set size to 0 mbuf_setlen(skb->mac_data,0); mbuf_pkthdr_setlen(skb->mac_data,0); I going to see that start_thread(), queue_work(), queue_delayed_work(), wait_event_interruptible_timeout() to make thread work correctly this code need to be corrected - i don't know if it will ever work maybe it's better to use code form queue_te/td() i hope this helps All this function seems to work fine , but I can change it Thank's for your help |
|
jalavoui
InsanelyMac Legend
|
![]() |
Feb 20 2008, 05:36 PM Post #229
|
![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
TNW,
if the driver is getting firmware errors it can be because of - bad firmware loading - request_firmware()?? - wrong firmware version - have you tryed all firmware versions? - you need to wait for the driver exits start() - i add 1 second delay in iwi2200 and them call __iwl3945_up() to disable interrups the iwl3945_disable_interrupts() should work - maybe there's a problem that we can't see at this point the cmd timeouts might be fixed by adding a IODelay(xxx) to wait_event_interruptible_timeout() you need to fix iwl3945_send_cmd_sync() - maybe make HOST_COMPLETE_TIMEOUT=HOST_COMPLETE_TIMEOUT*x if the value is wrong you'll always get cmd errors maybe it's better to use wait_event_interruptible_timeout() if you're using jiffies in code - get the source from iwi2200. it works fine you need to use fNetif->registerOutputHandler(this,getOutputHandler()); it will allow the driver to start calling outputpacket(). i'm not shure if this is also needed for sending commands. maybe someone can post the linux log for iwl-1.2.23 - this will help us understand what's wrong "Mutex and Lock help for thread syncronitation" - ok - but you should test the driver in both ways i've disabled this code in iwi2200 - the driver can leave without this if the thread functions work fine you should keep them. disable iwl3945_send_power_mode() if you get errors - try to use requestPowerDomainState() in start() i'll keep looking to the svn code and try to help ok - i'll stop writting and let you work |
|
NecronoiD
InsanelyMac Protégé
|
![]() |
Feb 20 2008, 07:19 PM Post #230
|
![]()
|
What about the 3945 tiger development? Reading the threads it looks like it is focused in leopard but is there any way to get it working under tiger 10.4.11?
EDIT:ill try the 10.5 version in my 10.4.11 release to see if it works |
|
leejones
InsanelyMac Protégé
|
![]() |
Feb 21 2008, 06:28 PM Post #231
|
|
Thanks everyone! I was completely new to Mac/OSx86 until I found the community and I've already learned so much just by reading the boards.
So I started my own project when I came across the Kalyway 10.5.1 install DVD. I treid to install it on my Gateway M460 but after a bit of research, and many installation attempts, I found out that I'd probably be better off using the older Tiger because it had better support for my older laptop. So I got JaS 10.4.8 DVD almost everything seems to work. Even my wireless works after I used the latest iwi2200 driver from the group (rev 579 Installer). I was wondering if it's possible to use WEP or WPA with my system. I read the FAQ as well as the installation guide, which states that WEP is NOT supported, but many posts on the board allude to WEP 2200 working with Tiger. Is this possible? If so perhaps someone could direct me to which version of Tiger/2200 driver they're using? Thanks, LJ |
|
jpgrizzly
InsanelyMac Protégé
|
![]() |
Feb 22 2008, 04:07 PM Post #232
|
|
Maybe THIS,
http://opensolaris.org/os/community/laptop/wireless/wpi/ could be of some help JPGRIZZLY 'While computing, never stop drinking'... Water |
|
asstastic
InsanelyMac Sage
|
![]() |
Feb 22 2008, 06:31 PM Post #233
|
![]() ![]() ![]() ![]() ![]()
|
Leopard kexts for 3945 still give me the old "Map is Zero" error meaning the driver loads but can't recognize or can't turn on the wireless card.
|
|
NecronoiD
InsanelyMac Protégé
|
![]() |
Feb 24 2008, 10:02 AM Post #234
|
![]()
|
Thanks everyone! I was completely new to Mac/OSx86 until I found the community and I've already learned so much just by reading the boards. So I started my own project when I came across the Kalyway 10.5.1 install DVD. I treid to install it on my Gateway M460 but after a bit of research, and many installation attempts, I found out that I'd probably be better off using the older Tiger because it had better support for my older laptop. So I got JaS 10.4.8 DVD almost everything seems to work. Even my wireless works after I used the latest iwi2200 driver from the group (rev 579 Installer). I was wondering if it's possible to use WEP or WPA with my system. I read the FAQ as well as the installation guide, which states that WEP is NOT supported, but many posts on the board allude to WEP 2200 working with Tiger. Is this possible? If so perhaps someone could direct me to which version of Tiger/2200 driver they're using? Thanks, LJ The version you have works with wep. Try using an hex password with ":" like aa:bb:cc:dd:ee:ff |
|
TNW
InsanelyMac Protégé
|
![]() |
Feb 24 2008, 11:49 AM Post #235
|
![]()
|
Just to get a quick overview. Is the driver close to getting finished? Hi! We have a bad news , Symuc and I searched a lot on the Linux driver(3945) and we didn't find a solution for a problem. I'll try to explain this problem : When the driver send a command , we have an HW error ( inta; 0x20000000)(DMA error) but when we disable the interrupts the card seems to be OK ( inta 0x80000008 )( cmd sent and cmd response is ready) but the interrupts are disabled. Lastly , when we enabled the interrupts but not on start we have this inta : 0x82000001 (Ucode loaded , cmd sent , SW error) I think it's because the card is a PCIe card and we didn't correctly initialised the card. So , I'm going to port the FreeBSD driver , but Symuc works a lot at his job so he can't work a lot on the driver . If someone with c/cpp skills can help us ,that will be good for the project. |
|
arob92
InsanelyMac Protégé
|
![]() |
Feb 24 2008, 12:35 PM Post #236
|
|
is this for the 3945 or the 2200???
|
|
udovoodoo
InsanelyMac Protégé
|
![]() |
Feb 24 2008, 03:38 PM Post #237
|
|
Just a quick thank you for everyone on this forum for all their hard work, I think everything you all have achieved is outstanding. Please keep up the good work guys. I wish I was as smart as allot of you, however as sad as my stupidness may be to myself I will leave the genius work to the people who know what they are doing.
|
|
jalavoui
InsanelyMac Legend
|
![]() |
Feb 24 2008, 03:42 PM Post #238
|
![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
So , I'm going to port the FreeBSD driver , but Symuc works a lot at his job so he can't work a lot on the driver the freebsd code will not fix the interrupts bug - it's a mac os x problem if you like to use another aproach to fix this search code for IOFilterInterruptEventSource::filterInterruptEventSource() kIOPCIMSICapability, kIOPCIMSIXCapability also check ioreg to see if the driver is sharing the interrupts with another device. maybe this can fix the driver problem. iwi3945 can someone post more logs for TNW last version? |
|
Taz416
InsanelyMac Protégé
|
![]() |
Feb 24 2008, 04:39 PM Post #239
|
|
Thank You very much.
The driver worked for me on Kalyway 10.5.1. It didn't sem to work at first but I checked it out with the troubleshooting instructions, opened Network Selector and turned it on. I haven't gotten as far as checking to see if there is any more support for WPA ( I'm running on an open segment right now ). Thanks again, Taz416 Dell Inspiron 9300/geForceGo 6800/1.7Ghz/Intel 2200BG |
|
TNW
InsanelyMac Protégé
|
![]() |
Feb 24 2008, 05:39 PM Post #240
|
![]()
|
the freebsd code will not fix the interrupts bug - it's a mac os x problem if you like to use another aproach to fix this search code for IOFilterInterruptEventSource::filterInterruptEventSource() kIOPCIMSICapability, kIOPCIMSIXCapability also check ioreg to see if the driver is sharing the interrupts with another device. maybe this can fix the driver problem. iwi3945 can someone post more logs for TNW last version? Hi I don't think that it's a problem of interrupts , I enabled the MSI but I don't know how to initialise the vector( for msi interrupts) because no explains come from Apple. The card is MSI compatible but not compatible with MISX. |
![]() |
|
Lo-Fi Version | Time is now: 21st November 2009 - 01:46 PM |