Jump to content

Kernel Panic when using wifi with D-Link DWA-547


Lumbermatt38
 Share

19 posts in this topic

Recommended Posts

Hi everybody,

 

I have successfully installed 10.8 ML on following configuration :

- Gigabyte H67A-UD3H-B3

- Intel Core i7-2600K with HD3000

 

I use a DSDT from tonymacx86 for my mainboard (bios version F8). I patched it to change the HD3000 model identifier from 0x0122 to 0x0126 so the HD3000 gets enabled with QE/CI.

 

Additional devices works correctly :

- ACL889 soundcard

- Realtek 8167

 

I want to use a DWA-547 (PCI Card) to connected to my home WLAN. As far as I read, this card is supposed to works ootb.

It didn't showed up in the PCI Card section of System Profiler. The card has pci168c,29 as PCI identifier (ioreg provides this information). I had to add the PCI card EFI String to org.chameleon.Boot.plist so it got detected.

 

After rebooting and doing the kext stuff, the card shows up in the system profiler (capture1.png).

 

To force the usage of the Atheros kext, I added to IO80211Family.kext/Contents/Plugins/AirPortAtheros40/Contents/Info.plist the following identifier.

<string>pci168c,29</string>

 

Next reboot, tadaaa !... the Airport logo shows up in the taskbar and the AirDrop one in the Finder. I can detect my wlan network (capture2.png).

 

After trying to connect to my wlan a first time, I get a Kernel Panic... :(

 

I tried another wlan kext : IO80211Family.kext/Contents/Plugins/AirPortAtheros21.kext which have the pci168c,29 identifier in its Info.plist (nothing to change). The card is detected exactly the same way as with as with the AirPortAtheros40 kext. (capture2.png)

 

The initator of the kernel panic (with debug=0x01 boot flag) is :

panic(cpu 6 caller 0xffffff800029dadb): "TLB invalidation IPI timeout: ""CPU(s) failed to respond to interrupts, unresponsive CPU bitmap: 0x3, NMIPI acks: orig: 0x0, now: 0x2"@/Source/Cache/xnu/xnu-2050.9.2/osfmk/x86_64/pmap.c:2337
Debugger called: <panic>
Backtrace (CPU 6), Frame : Return Adress

 

It exactly happens like this :

- Airport > Activate Wi-fi

- Select mywlanssid

- The adapter gets connected

- about 10 seconds after... KP

When I leave Aiport off or if I don't connect to the access point, there is no KP at all : the machine remains rock stable.

 

Does anybody have a clue what could cause this kernel panic ?

 

Thanks in advance.

post-1075443-0-88413200-1346871041_thumb.png

post-1075443-0-96646700-1346871044_thumb.png

Link to comment
Share on other sites

Check your kext Atheros for 64 bit suport?

 

Seems to have both (32 and 64bit) support as far I understand :

localhost:~ lumbermatt$ lipo -info /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros21.kext/Contents/MacOS/AirPortAtheros21
Architectures in the fat file: /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros21.kext/Contents/MacOS/AirPortAtheros21 are: x86_64 i386

Link to comment
Share on other sites

Hmm, I may be wrong here, but looks like a IRQ conflict, I would try using DSDT instead of EFI string to have card detected. Or are there other PCI slots you can use?

 

I have 3 other PCI slot to try this. I'll try both.

Of the DSDT detection, I suppose I have to patch the DSDT with the PCI informations like it is described here for exemple : http://rampagedev.wo...into-a-dsdt-24/

 

Thanks for the advice.

Link to comment
Share on other sites

yup.

 

Also to check DSDT for IRQ edits, here is IRQ patch for your mobo in DSDT Editor. This is from the awesome guys at Olarila.com and not my own, I just copied it from full patch file for your mobo for you to look at, but technically you could run this section as an individual patch just for IRQ, I wouldn't do the full mobo DSDT patch on one thats already been edited

into device name_hid PNP0000 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0100 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0B00 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0103 code_regex_not IRQNoFlags code_regex Name\s\(([^,]+),\sResourceTemplate\s\(\)\n\s+\{((?:.|\n)*)\}\) replace_matched
begin
Name (%1, ResourceTemplate ()\n
				{\n
					IRQNoFlags ()\n
						{0}\n
					IRQNoFlags ()\n
						{8}\n
%2
})
end:

Again, credit to olarila's members and staff

Link to comment
Share on other sites

Some news : it still doesn't work :wallbash:

 

I deleted the EFI String in the Boot.plist and patched the DSDT.aml to get the PCI Cards recognized is System Profiler. In my IOReg, the PCI Card shows up under PEX6 section, so I modifiyed the PEX6 device in DSDT.aml and added following method :

 

			Method (_DSM, 4, NotSerialized)
			{
				Store (Package (0x04)
					{
						"AAPL,slot-name",
						Buffer (0x08)
						{
							"PCI"
						},
						"device-id",
						Unicode ("*")
					}, Local0)
				DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
				Return (Local0)
			}

 

Now every PCI card I plug into the machine is detected and displayed in the System Profiler with its identifyer like pcixxxx,yy (xxxx is vendor-id, and yy product-id). I have 3 PCI Slots which are identified from the first slot with PCI@5,0,0 to the third slot with PCI@5,2,0. There is the IEEE 1394 on PCI@5,3,0 so on the same PCI Bus.

 

I tried the IRQ patch you pasted here, but with no change. I still have KP. Please find a clear picture of the KP output attached. It shows clearly that the Atheros40 kext is involved in the kernel panic.

 

unixserve, I tried you extension. It loads but don't match to the device I have : the info.plist indicates pci168c,2a and pci168c,2b. This kext is intended for Atheros AR9285 and I have an AR5008 chipset.

post-1075443-0-44565400-1346962036_thumb.jpg

Link to comment
Share on other sites

I began everything from the begining : grabed a DSDT for my mobo from tonymacx86 and just added the model for my card and changed nothing alse.

 

I have 3 PCI ports : lets name them PCI1 (upper) to PCI3 (last one). If put the card :

- on PCI1, it gets IRQ 0x13 (IRQ 19)

- on PCI2, it gets IRQ 0x12 (IRQ 18)

- on PCI3, it gets IRQ 0x10 (IRQ 16).

The Firewire host on the bus take IRQ 0x11 (17).

 

On IRQ16, it's a nightmare. I have KP few seconds after enabling the wlan on Airport. On IRQ18 and IRQ19 it's less often : I can enable the wlan and after few minutes of continuious using (browsing the Internet), I get a KP. All panics are related to following error :

"TLB invalidation IPI timeout: ""CPU(s) failed to respond to interrupts, unresponsive CPU bitmap: 0x3, NMIPI acks: orig: 0x0, now: 0x2"@/Source/Cache/xnu/xnu-2050.9.2/osfmk/x86_64/pmap.c:2337

 

So it's definitively an interruption problem. I tried to assign an IRQ in my DSDT.aml to the Wlan card, but it doesn't work. I always have the IRQ19 assigned to my card (maybe I'm doing it wrong in my DSDT editions). I tried to gernerate ressource variable and return it though the _CSR method.

 

One thing is sure, as far as I don't enable Airport, there are no KP at all : it's remains rock stable even after hours of continious use.

 

If somebody have a clue about this problem it would be great. Thanks in advance.

Link to comment
Share on other sites

hmm, lets back up a sec. Do you have device ID 0029 which is AR922x or device ID 0024 which is AR5008. Above you mention having AR5008 but device ID is for AR922x. With the AR922x you can instead use the Atheros40 kext or the Atheros21 kext, but device ID is listed in both. In post where you checked for 64 bit, atheros21 then post with kernel panic screen shot, atheros40? Is it possible you have both kexts loading, and this is the cause of your conflict?

Link to comment
Share on other sites

hmm, lets back up a sec. Do you have device ID 0029 which is AR922x or device ID 0024 which is AR5008. Above you mention having AR5008 but device ID is for AR922x. With the AR922x you can instead use the Atheros40 kext or the Atheros21 kext, but device ID is listed in both. In post where you checked for 64 bit, atheros21 then post with kernel panic screen shot, atheros40? Is it possible you have both kexts loading, and this is the cause of your conflict?

 

Sorry, my previous messages weren’t clear about this.

 

My PCI adapter has a 0x168c Vendor ID (Atheros Communications Inc.) and has a Product ID of 29. This page ( http://www.wikidevi.com/wiki/D-Link_DWA-547 ) misled me to the conclusion I had a 5008 chipset. But when I list the devices with Lspci I find a Atheros 928x chipset.

 

Second point, in the Vanillia installation of 10.8.0, I only have a IO80211Family.kext which contains AirPortAtheros40.kext but no AirPortAtheros21.kext. The Info.plist of AirPortAtheros40.kext doesn’t mention the pci168c,29 device. If I add it manually AirPortAtheros40 loads on startup and I have a KP when enabling wifi.

 

I have tried to replace the IO80211Family.kext with another which has AirPortAtheros21.kext as plugin and the pci168c,29 device id already in its Info.plist. This doesn’t change anything.

 

I can try to install a fresh copy of 10.8 from scratch an try it again. I was wondering if I can install a AirPortAtheros21.kext in the vanilla 10.8 IO80211Family.kext (so without IO80211Family rollback) by copying the AirPortAtheros21 kext in the Plugin folder ?

Link to comment
Share on other sites

looks like only certain versions of both kexts include your device, rather than add device ID's I have every version, update and developer preview update since 10.7.0 and will track down the vanilla ones right quick

Link to comment
Share on other sites

The kext versions I was looking for with device ID, was based on info from Olarila's kext database, sadly after tracking each version down, this was not the case. After doing some quick research, from what I gather, your mostly screwed. Card doesn't seem to jive with any multi core CPU newer than core 2 duo without having crashes and conflicts as you have seen. Booting with cpus=1 seems to fix this, and wouldn't consider it a solution, but a good thing to test real quick to see if it changes behavior at all. :(

 

AR5008 on the other hand does work, I have 2 which are 168c:0024 rev 01, one in MacBook and another Apple branded one in Hack on PCIe to mini PCIe adapter card with zero problems and they can be picked up pretty cheap online if you need to

Link to comment
Share on other sites

The kext versions I was looking for with device ID, was based on info from Olarila's kext database, sadly after tracking each version down, this was not the case. After doing some quick research, from what I gather, your mostly screwed. Card doesn't seem to jive with any multi core CPU newer than core 2 duo without having crashes and conflicts as you have seen. Booting with cpus=1 seems to fix this, and wouldn't consider it a solution, but a good thing to test real quick to see if it changes behavior at all. :(

 

AR5008 on the other hand does work, I have 2 which are 168c:0024 rev 01, one in MacBook and another Apple branded one in Hack on PCIe to mini PCIe adapter card with zero problems and they can be picked up pretty cheap online if you need to

 

I booted the system with cpus=1 and the wlan card is working flawlessly. I used it few hours without any problem, doing some network intensive file transfers. Runing mono-core is not a solution for me, so I will drop the wlan connection and use a homeplug ethernet adapter instead. Seems to be multi-core synchronisation problem (As far as I read, other kext were concerned by this type of problems on the beginning of SL).

 

Thanks a lot to eep357 and the others for the time you spent on this issue.

  • Like 1
Link to comment
Share on other sites

  • 2 months later...
  • 10 months later...

Any updates for this? I have same wifi card DWA-547,  GA-Z77-DS3H mobo with same problems. Gets connected but after 10-15 sec it freezes.. No KP but freezing.

Nothing new. I ended up with buying a TP-Link TL-WDN4800 card which works great out of the box and gave the DWA-547 to a friend of mine who uses it without problems on a Linux PC.

Link to comment
Share on other sites

Nothing new. I ended up with buying a TP-Link TL-WDN4800 card which works great out of the box and gave the DWA-547 to a friend of mine who uses it without problems on a Linux PC.

Okey.. Thanks! Will do same then.. :)

 

EDIT/

So I didn't find that card anywhere so I went and bought TP-Link TL-WN881ND model.  Install this kext and it is working.. About 2 hours no KP, freezing or anything.

Link to comment
Share on other sites

 Share

×
×
  • Create New...