login
Header Space

 
 

Supporting Newer Atheros Devices

October 12, 2007 - 1:27pm
Submitted by Jeremy on October 12, 2007 - 1:27pm.
OpenBSD news

"People who had problems with unsupported Atheros devices (single chip variants found in recent laptops, macbooks, etc.) should get the latest code from CVS and test it..." OpenBSD Reyk Floeter announced regarding recent improvements to his reverse engineered HAL adding support for 11b mode. He noted that the new code wasn't without fault yet, adding, "hacked and tested in the Melbourne Museum during the AUUG 2007..." Reyk explained the changes in his commit message:

"The newer single chip Atheros wireless chipsets like the AR5424, AR2423 etc. are mostly compatible to the AR5212 but use a different algorithm to set the 2GHz RF channel, that's why they didn't work in OpenBSD. I figured out that the channels were set with an offset, setting channel 11 in the driver caused the hardware to set channel 5 etc. Because I didn't figure out the pattern to fix the algoritm yet, I fixed it in a workaroundish way by defining a small 'table' with offsets for the 11b channels to get the right results. For example, if we want to set channel 11 (2462MHz), we add an offset of -30MHz, and feed the result (2432MHz ^= channel 5) into the unmodified AR5212/AR5112 RF setup function.

"Long description for a commit message, but it needed some time to figure it out. It is still not perfect, needs some more work, and it doesn't work in all cases; but it allows to use newer chipsets in 11b mode restricted to 1 or to 2Mbit/s. 11a mode seems to work without problems so far."


From: Reyk Floeter <reyk@...>
Subject: Supporting newer atheros chipsets...
Date: Oct 12, 11:55 am 2007

Hi!

People who had problems with unsupported Atheros devices (single chip
variants found in recent laptops, macbooks, etc.) should get the
latest code from CVS and test it... I was able to make 11b mode work
on at least two different new-age chipsets:

ath0 at pci2 dev 0 function 0 "Atheros AR5212 (IBM MiniPCI)" rev 0x01: apic 1 int 17 (irq 11)
ath0: ARxxxx 10.3 phy 6.1 rf 10.2, WOR2W, address 00:16:cf:ab:4c:97
ath1 at cardbus0 dev 0 function 0 "Atheros Communications, Inc., AR5001-0000-0000, Wireless LAN Reference Card": irq 10
ath1: AR5413 10.5 phy 6.1 rf 6.3, WOR0W, address 00:12:bf:0e:7d:36

Thanks again to Dave Del Debbio and David Menzel for donating me PCI
Express MiniCards for testing and development.

But there are still some known problems:

- The ath0 device sometimes runs into a hardware-locking RX overrun
bug. The only way to recover the device is to _cold_ start the
computer.  Use "ifconfig ath0 debug" and look for "rx FIFO overrun;
resetting".

- The devices sometimes need a long time to calibrate, just associate
and wait some seconds before trying your first ping.

- The offset is not alway right, I'm trying to find a better way to
set the channels correctly. See the attached commit message for more info.

- more...?

Hacked and tested in the Melbourne Museum during the AUUG 2007...

reyk

----- Forwarded message from Reyk Floeter <reyk@cvs.openbsd.org> -----

Date: Fri, 12 Oct 2007 09:34:12 -0600 (MDT)
From: Reyk Floeter <reyk@cvs.openbsd.org>
To: source-changes@cvs.openbsd.org
Subject: CVS: cvs.openbsd.org: src
X-Loop: source-changes@openbsd.org
Precedence: list

CVSROOT:	/cvs
Module name:	src
Changes by:	reyk@cvs.openbsd.org	2007/10/12 09:34:11

Modified files:
	sys/dev/ic     : ar5xxx.c ar5xxx.h 

Log message:
The newer single chip Atheros wireless chipsets like the AR5424,
AR2423 etc. are mostly compatible to the AR5212 but use a different
algorithm to set the 2GHz RF channel, that's why they didn't work in
OpenBSD.  I figured out that the channels were set with an offset,
setting channel 11 in the driver caused the hardware to set channel 5
etc.  Because I didn't figure out the pattern to fix the algoritm yet,
I fixed it in a workaroundish way by defining a small "table" with
offsets for the 11b channels to get the right results. For example, if
we want to set channel 11 (2462MHz), we add an offset of -30MHz, and
feed the result (2432MHz ^= channel 5) into the unmodified
AR5212/AR5112 RF setup function.

Long description for a commit message, but it needed some time to
figure it out. It is still not perfect, needs some more work, and it
doesn't work in all cases; but it allows to use newer chipsets in 11b
mode restricted to 1 or to 2Mbit/s.  11a mode seems to work without
problems so far.


----- End forwarded message -----


speck-geostationary