Ok.... so far it seems as if I have it working. It functions better than before anyway. It does a couple of weird things every now and then but it is locking into a channel and I no longer receive the error. Heres what I did:
I had to edit a few lines of the patch that sensay linked too. I attached the new version below but here's the new contents anyway:
Code:
--- chan.c.orig
+++ chan.c
@@ -49,9 +49,12 @@ int cfg80211_set_freq(struct cfg80211_registered_device *rdev,
{
struct ieee80211_channel *chan;
int result;
+ struct wireless_dev *mon_dev = NULL;
- if (wdev && wdev->iftype == NL80211_IFTYPE_MONITOR)
+ if (wdev && wdev->iftype == NL80211_IFTYPE_MONITOR) {
+ mon_dev = wdev;
wdev = NULL;
+ }
if (wdev) {
ASSERT_WDEV_LOCK(wdev);
@@ -76,5 +79,8 @@ int cfg80211_set_freq(struct cfg80211_registered_device *rdev,
if (wdev)
wdev->channel = chan;
+ if (mon_dev)
+ mon_dev->channel = chan;
+
return 0;
}
Save it and copy it into the same directory as the chan.c file. Mine was is ~/compat*/net/wireless but you can do a search with somthing like the below to find it.
Code:
sudo find / -name chan.c -print
Now open a terminal and navigate to the directory where chan.c and the patch are located. Run (I had to use sudo because the owner was root as i had already edited the file as root but don't if you haven't already been screwing around):
Code:
sudo patch -p0 -i < watevaucalledthepatch.patch
Now if you had to run the above command with root privileges (like me) then run the below to restore the file permissions. Replace userhere in the first line below with your user name:
Code:
sudo chown userhere:userhere chan.c
sudo chmod 777 chan.c
It should now be patched successfully with the right permissions. All you need to do now is recompile and unload the old drivers. Navigate into the base directory of compat wireless (mine was ~/compat*). I ran the below to select the ath9k drivers but you may have to do different depending on your chipset:
Code:
./scripts/driver-select ath9k
Now run the below to build:
Code:
make
sudo make install
And unload the old drivers:
Code:
sudo make unload
sudo make wlunload
You may or may not have to run the below, it won't hurt if you do
Now reboot or alternatively run:
Code:
sudo modprobe <drivergoeshere>
Everything should be in working order and the problem semi-fixed
Hope this helps.
Bookmarks