I am trying to set up a 5GHz wireless access point on an Alix 3d2 board with an AR9220 (ath9k "Merlin") PCI card. I have done so successfully using Fedora 14 on identical hardware but I would greatly prefer to use Gentoo so I can use a more recent kernel and customize things appropriately for the platform.
I have an up-to-date ~x86 Gentoo build working and I am able to run hostapd as a 2.4GHz access point, but trying to run it on a 5 GHz channel in "a" mode fails complaining it is unable to set the channel. After some poking around I realized that this was due to the regulatory domain not being set correctly--the default ("world"?) regdomain doesn't allow IBSS on any 5GHz channels. I made sure I had crda emerged and tried several different kernel settings but none of them resulted in any different behavior. I even tried statically compiling the regdb ("CONFIG_CFG80211_INTERNAL_REGDB=y") but didn't see any difference. I can run "iw reg set US" all day long but whenever I run "iw reg get" it always comes back with "country 00" on the Gentoo system. Since I'm a relative newbie to both Gentoo and custom Linux kernel building I wanted to make sure I wasn't just missing a setting or kernel config flag somewhere before I started looking for things like driver regressions. Can anyone suggest different things to try to fix the problem or at least pinpoint it better? Below is some info from both the Gentoo system (regdomain not working) and the Fedora system (regdomain working). Let me know what additional information would be helpful. Thanks! JN ### Gentoo ~x86 ### # uname -a Linux alix2 2.6.38-gentoo-r3 #7 Mon May 2 12:51:18 EDT 2011 i586 Geode(TM) Integrated Processor by AMD PCS AuthenticAMD GNU/Linux # relevant dmesg output [ 0.107215] cfg80211: Calling CRDA to update world regulatory domain [ 2.228041] ath: EEPROM regdomain: 0x0 [ 2.228056] ath: EEPROM indicates default country code should be used [ 2.228072] ath: doing EEPROM country->regdmn map search [ 2.228093] ath: country maps to regdmn code: 0x3a [ 2.228108] ath: Country alpha2 being used: US [ 2.228122] ath: Regpair used: 0x3a # iw reg set US # iw reg get country 00: (2402 - 2472 @ 40), (6, 20) (2457 - 2482 @ 20), (6, 20), PASSIVE-SCAN, NO-IBSS (2474 - 2494 @ 20), (6, 20), NO-OFDM, PASSIVE-SCAN, NO-IBSS (5170 - 5250 @ 40), (6, 20), PASSIVE-SCAN, NO-IBSS (5735 - 5835 @ 40), (6, 20), PASSIVE-SCAN, NO-IBSS # iw list ... Frequencies: * 5180 MHz [36] (18.0 dBm) (passive scanning, no IBSS) * 5200 MHz [40] (18.0 dBm) (passive scanning, no IBSS) * 5220 MHz [44] (18.0 dBm) (passive scanning, no IBSS) * 5240 MHz [48] (18.0 dBm) (passive scanning, no IBSS) ... # relevant packages net-wireless/crda-1.1.1 net-wireless/iw-0.9.22 net-wireless/wireless-regdb-20101124 net-wireless/wireless-tools-30_pre9 sys-kernel/gentoo-sources-2.6.38-r3 ### Fedora 14 ### $ uname -a Linux alix.jnielsen.net 2.6.35.6-45.fc14.i686 #1 SMP Mon Oct 18 23:56:17 UTC 2010 i586 i586 i386 GNU/Linux # relevant dmesg output [ 13.191924] cfg80211: Calling CRDA to update world regulatory domain [ 13.433288] cfg80211: World regulatory domain updated: [ 17.134923] ath: EEPROM regdomain: 0x0 [ 17.134943] ath: EEPROM indicates default country code should be used [ 17.134961] ath: doing EEPROM country->regdmn map search [ 17.134984] ath: country maps to regdmn code: 0x3a [ 17.135001] ath: Country alpha2 being used: US [ 17.135018] ath: Regpair used: 0x3a [ 17.248674] cfg80211: Calling CRDA for country: US [ 18.848206] cfg80211: Regulatory domain changed to country: US $ iw reg get country US: (2402 - 2472 @ 40), (3, 27) (5170 - 5250 @ 40), (3, 17) (5250 - 5330 @ 40), (3, 20), DFS (5490 - 5600 @ 40), (3, 20), DFS (5650 - 5710 @ 40), (3, 20), DFS (5735 - 5835 @ 40), (3, 30) $ iw list ... Frequencies: * 5180 MHz [36] (17.0 dBm) * 5200 MHz [40] (17.0 dBm) * 5220 MHz [44] (17.0 dBm) * 5240 MHz [48] (17.0 dBm) ... # relevant packages iw-0.9.22-1.fc14.1.i686 crda-1.1.1_2010.11.22-1.fc14.i686 wireless-tools-29-5.1.fc12.i686 kernel-2.6.35.6-45.fc14.i686