If you look at the Atheros Devices for ath9k_htc, you will see "Atheros chipset:AR7010+AR9287 USB vendor:0x0cf3 USB product:0x7015" is listed. I see from the lsusb output you posted that is precisely what you have. So it appears you do need the ath9k_htc module.
The Linux Wireless Website confirms that firmware is needed for the ath_htc module:
http://wireless.kernel.org/en/users/Dri ... c#Firmware
Firmware
This driver requires firmware. The firmware can be obtained from firmware tree.
Alternately you can download it from here: http://wireless.kernel.org/download/htc_fw/.
Older firmware map:
AR9271 - ar9271.fw
AR7010 - ar7010.fw or ar7010_1_1.fw
Newer firmware map:
AR9271 - htc_9271.fw
AR7010 - htc_7010.fw
The firmware has to be placed in the correct location, usually /lib/firmware. This could vary among distributions, so check your distro's policies if loading of the firmware fails.
Looking at the firmware files installed by the package sys-kernel/linux-firmware-20130421, I can see the above-mentioned firmware files are included:
- Code: Select all
# cat /etc/portage/savedconfig/sys-kernel/linux-firmware-20130421 | grep ar9
ar9170-1.fw
ar9170-2.fw
ar9271.fw
# cat /etc/portage/savedconfig/sys-kernel/linux-firmware-20130421 | grep ar7
ar7010_1_1.fw
ar7010.fw
# cat /etc/portage/savedconfig/sys-kernel/linux-firmware-20130421 | grep htc_
htc_7010.fw
htc_9271.fw
#
So, if you do indeed need the module ath9k_htc to be loaded, then you also need to have the latest version of linux-firmware installed.
If you find from the output of the lsmod command with the 3.7 kernel that you only have ath9k_htc loaded then you could blacklist the ath9k_hw module and reboot to the 3.9 kernel to check what happens. Conversely, if you find from the output of the lsmod command for the 3.7 kernel that you only have the ath9k_hw module loaded then you could blacklist the ath9k_htc module and reboot to the 3.9 kernel to check what happens.
Another thing I notice from the /var/log/messages and dmesg output you posted earlier is the the Belkin adapter appears to be using the World regulatory domain (00) whereas the TP-LINK adapter is using the CN (China) regulatory domain. If you don't know what that means, read my blog post Setting the wireless regulatory domain in Linux on your laptop. Are you actually in China? If you are not, you could try changing the regulatory domain (see my aforementioned blog post):
- Code: Select all
# iw reg set <ISO_3166-1_alpha-2>
where <ISO_3166-1_alpha-2> is the country code for the country you are actually in. You'll need to install net-wireless/iw if you don't already have it installed:
- Code: Select all
equo install net-wireless/iw