Compat Wireless 3.6.8 1 Snpc Tar Bz2
Aug 10, 2013 - dfcamara gravatar image. Compat-wireless source. [M] /home/danilo/Downloads/compat-wireless-3.6.8-1-snpc/drivers/net/ethernet/. Problem with installing WiFi drivers (self.elementaryos) submitted 3 years ago * by CryMeSomeCum I just made the change and installed Elementary OS Luna, but I'm yet to manage to install wireless driver. How to Install Latest Compat-Wireless Drivers. Discussion in 'Resources' started by Mr. Penguin, 19 Jul 2012.
I am having the same trouble as others getting my Atheros AR8131 Ethernet card recognised by Ubuntu 12.10 on my new HP Pavillion P7-1449 PC. I found the same question where the answer suggested the following:
- Download Tarball
compact-wireless-3.6.8-1-snpc
Run
The problem is when I run the make
command I get the following:
Found a link to an alternative patch file (compat-wireless-2012-09-25-pc) but then I get the similar error:
Any help you could provide would be greatly appreciated.
4 Answers
The instructions to install compat-wireless modules are good, but in recent Ubuntu releases, this has been packaged and there's no need to compile this from source anymore! So, let's take a step back and look at another much simpler approach to install it.
Simply install the appropriate linux-backports-modules-cw-*
package for your kernel, e.g.:
For Quantal, using Linux compat-wireless-3.6 backported to regular kernel
Same, but for Precise
Or use any other package management tool to install this package. While it has 'backport' in its package name, it's not needed to enable any backports repository - it's just there in main
.
Finally, reboot, or if you know the kernel module to load: sudo modproble modulename
.
Lately the modules from the 3.8 kernel have been backported, so use
instead of
as in gertvdijk's answer here
I am not sure, there is no need of compilation. Alx module which only works with my AR8161 on Ubuntu 12.04 LTS is gone. So download, and compile works for me.
I have to download some older package from compact wireless website which ALX module contains as mentioned here.
no, that will not help. The last version that contains alx module is version 3.4, unfortunately.
so a regular user with this network card is completely dumped :(
and each time I upgrade to a new version of kernel once a few months, I have to waste one hour trying to figure out where did the linux magicians hide my network card driver!anybody's been curious why Linux fails on Desktop? this is why! :(
why cannot they just move it where all the other network card drivers are?
Hp proliant ml310e gen8 v2 server drivers. HP ProLiant ML310e Gen8 Server: Access and download drivers by operating environment, revision, software type, software subtype and language. HP ProLiant ML310e Gen8 v2 Server: Access and download drivers by operating environment, revision, software type, software subtype and language.
so the proper command is:
or
depending on which magic version of kernel you magically use..
Not the answer you're looking for? Browse other questions tagged wirelessdriverskernelinstall-from-source or ask your own question.
PermalinkBrowse filesinitial commit from compat-wireless-2.6.39-1.tar.bz2
@@ -0,0 +1,14 @@ | |
001b[36mcompat-wireless code metrics001b[00m | |
001b[35m 832630001b[00m - Total upstream lines of code being pulled | |
001b[01;32m 2215001b[00m - backport code changes | |
001b[01;32m 1922001b[00m - backport code additions | |
001b[01;32m 293001b[00m - backport code deletions | |
001b[01;32m 7534001b[00m - backport from compat module | |
001b[01;32m 9749001b[00m - total backport code | |
001b[31m 1.1709001b[00m - % of code consists of backport work | |
Base tree: 001b[01;32mlinux-2.6-allstable.git001b[00m | |
Base tree version: 001b[35mv2.6.39001b[00m | |
compat-wireless release: 001b[01;33mcompat-wireless-v2.6.39-1001b[00m |
@@ -0,0 +1,32 @@ | |
obj-m += compat.o | |
#compat-objs := | |
obj-$(CONFIG_COMPAT_FIRMWARE_CLASS) += compat_firmware_class.o | |
obj-$(CONFIG_COMPAT_KFIFO) += kfifo.o | |
compat-y += main.o | |
# Compat kernel compatibility code | |
compat-$(CONFIG_COMPAT_KERNEL_14) += compat-2.6.14.o | |
compat-$(CONFIG_COMPAT_KERNEL_18) += compat-2.6.18.o | |
compat-$(CONFIG_COMPAT_KERNEL_19) += compat-2.6.19.o | |
compat-$(CONFIG_COMPAT_KERNEL_21) += compat-2.6.21.o | |
compat-$(CONFIG_COMPAT_KERNEL_22) += compat-2.6.22.o | |
compat-$(CONFIG_COMPAT_KERNEL_23) += compat-2.6.23.o | |
compat-$(CONFIG_COMPAT_KERNEL_24) += compat-2.6.24.o | |
compat-$(CONFIG_COMPAT_KERNEL_25) += | |
compat-2.6.25.o | |
pm_qos_params.o | |
compat-$(CONFIG_COMPAT_KERNEL_26) += compat-2.6.26.o | |
compat-$(CONFIG_COMPAT_KERNEL_27) += compat-2.6.27.o | |
compat-$(CONFIG_COMPAT_KERNEL_28) += compat-2.6.28.o | |
compat-$(CONFIG_COMPAT_KERNEL_29) += compat-2.6.29.o | |
compat-$(CONFIG_COMPAT_KERNEL_32) += compat-2.6.32.o | |
compat-$(CONFIG_COMPAT_KERNEL_33) += compat-2.6.33.o | |
compat-$(CONFIG_COMPAT_KERNEL_35) += compat-2.6.35.o | |
compat-$(CONFIG_COMPAT_KERNEL_36) += compat-2.6.36.o | |
compat-$(CONFIG_COMPAT_KERNEL_37) += compat-2.6.37.o | |
compat-$(CONFIG_COMPAT_KERNEL_38) += compat-2.6.38.o | |
compat-$(CONFIG_COMPAT_KERNEL_39) += compat-2.6.39.o |
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.14. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.14 compat code goes here */ | |
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.18. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.18 compat code goes here */ | |
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.19. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.19 compat code goes here */ | |
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.21. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.21 compat code goes here */ | |
@@ -0,0 +1,14 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.22. | |
*/ | |
#include<net/compat.h> | |
/* 2.6.22 compat code goes here */ | |
@@ -0,0 +1,239 @@ | |
/* | |
* Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
* | |
* Compatibility file for Linux wireless for kernels 2.6.23. | |
*/ | |
#include<net/compat.h> | |
/* On net/core/dev.c as of 2.6.24 */ | |
int__dev_addr_delete(struct dev_addr_list **list, int *count, | |
void *addr, int alen, int glbl) | |
{ | |
struct dev_addr_list *da; | |
for (; (da = *list) != NULL; list = &da->next) { | |
if (memcmp(da->da_addr, addr, da->da_addrlen) 0 && | |
alen da->da_addrlen) { | |
if (glbl) { | |
int old_glbl = da->da_gusers; | |
da->da_gusers = 0; | |
if (old_glbl 0) | |
break; | |
} | |
if (--da->da_users) | |
return0; | |
*list = da->next; | |
kfree(da); | |
(*count)--; | |
return0; | |
} | |
} | |
return -ENOENT; | |
} | |
EXPORT_SYMBOL(__dev_addr_delete); | |
/* On net/core/dev.c as of 2.6.24. This is not yet used by mac80211 but | |
* might as well add it */ | |
int__dev_addr_add(struct dev_addr_list **list, int *count, | |
void *addr, int alen, int glbl) | |
{ | |
struct dev_addr_list *da; | |
for (da = *list; da != NULL; da = da->next) { | |
if (memcmp(da->da_addr, addr, da->da_addrlen) 0 && | |
da->da_addrlen alen) { | |
if (glbl) { | |
int old_glbl = da->da_gusers; | |
da->da_gusers = 1; | |
if (old_glbl) | |
return0; | |
} | |
da->da_users++; | |
return0; | |
} | |
} | |
da = kmalloc(sizeof(*da), GFP_ATOMIC); | |
if (da NULL) | |
return -ENOMEM; | |
memcpy(da->da_addr, addr, alen); | |
da->da_addrlen = alen; | |
da->da_users = 1; | |
da->da_gusers = glbl ? 1 : 0; | |
da->next = *list; | |
*list = da; | |
(*count)++; | |
return0; | |
} | |
EXPORT_SYMBOL(__dev_addr_add); | |
/* Part of net/core/dev_mcast.c as of 2.6.23. This is a slightly different version. | |
* Since da->da_synced is not part of 2.6.22 we need to take longer route when | |
* syncing */ | |
/** | |
* dev_mc_sync - Synchronize device's multicast list to another device | |
* @to: destination device | |
* @from: source device | |
* | |
* Add newly added addresses to the destination device and release | |
* addresses that have no users left. The source device must be | |
* locked by netif_tx_lock_bh. | |
* | |
* This function is intended to be called from the dev->set_multicast_list | |
* function of layered software devices. | |
*/ | |
intdev_mc_sync(struct net_device *to, struct net_device *from) | |
{ | |
struct dev_addr_list *da, *next, *da_to; | |
int err = 0; | |
netif_tx_lock_bh(to); | |
da = from->mc_list; | |
while (da != NULL) { | |
int synced = 0; | |
next = da->next; | |
da_to = to->mc_list; | |
/* 2.6.22 does not have da->da_synced so lets take the long route */ | |
while (da_to != NULL) { | |
if (memcmp(da_to->da_addr, da->da_addr, da_to->da_addrlen) 0 && | |
da->da_addrlen da_to->da_addrlen) | |
synced = 1; | |
break; | |
} | |
if (!synced) { | |
err = __dev_addr_add(&to->mc_list, &to->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
if (err < 0) | |
break; | |
da->da_users++; | |
} elseif (da->da_users1) { | |
__dev_addr_delete(&to->mc_list, &to->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
__dev_addr_delete(&from->mc_list, &from->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
} | |
da = next; | |
} | |
if (!err) | |
__dev_set_rx_mode(to); | |
netif_tx_unlock_bh(to); | |
return err; | |
} | |
EXPORT_SYMBOL(dev_mc_sync); | |
/* Part of net/core/dev_mcast.c as of 2.6.23. This is a slighty different version. | |
* Since da->da_synced is not part of 2.6.22 we need to take longer route when | |
* unsyncing */ | |
/** | |
* dev_mc_unsync - Remove synchronized addresses from the destination | |
* device | |
* @to: destination device | |
* @from: source device | |
* | |
* Remove all addresses that were added to the destination device by | |
* dev_mc_sync(). This function is intended to be called from the | |
* dev->stop function of layered software devices. | |
*/ | |
voiddev_mc_unsync(struct net_device *to, struct net_device *from) | |
{ | |
struct dev_addr_list *da, *next, *da_to; | |
netif_tx_lock_bh(from); | |
netif_tx_lock_bh(to); | |
da = from->mc_list; | |
while (da != NULL) { | |
bool synced = false; | |
next = da->next; | |
da_to = to->mc_list; | |
/* 2.6.22 does not have da->da_synced so lets take the long route */ | |
while (da_to != NULL) { | |
if (memcmp(da_to->da_addr, da->da_addr, da_to->da_addrlen) 0 && | |
da->da_addrlen da_to->da_addrlen) | |
synced = true; | |
break; | |
} | |
if (!synced) { | |
da = next; | |
continue; | |
} | |
__dev_addr_delete(&to->mc_list, &to->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
__dev_addr_delete(&from->mc_list, &from->mc_count, | |
da->da_addr, da->da_addrlen, 0); | |
da = next; | |
} | |
__dev_set_rx_mode(to); | |
netif_tx_unlock_bh(to); | |
netif_tx_unlock_bh(from); | |
} | |
EXPORT_SYMBOL(dev_mc_unsync); | |
/* Added as of 2.6.23 on net/core/dev.c. Slightly modifed, no dev->set_rx_mode on | |
* 2.6.22 so ignore that. */ | |
/* | |
* Upload unicast and multicast address lists to device and | |
* configure RX filtering. When the device doesn't support unicast | |
* filtering it is put in promiscous mode while unicast addresses | |
* are present. | |
*/ | |
void__dev_set_rx_mode(struct net_device *dev) | |
{ | |
/* dev_open will call this function so the list will stay sane. */ | |
if (!(dev->flags&IFF_UP)) | |
return; | |
if (!netif_device_present(dev)) | |
return; | |
/* This needs to be ported to 2.6.22 framework */ | |
#if0 | |
/* Unicast addresses changes may only happen under the rtnl, | |
* therefore calling __dev_set_promiscuity here is safe. | |
*/ | |
if (dev->uc_count > 0 && !dev->uc_promisc) { | |
__dev_set_promiscuity(dev, 1); | |
dev->uc_promisc = 1; | |
} else if (dev->uc_count 0 && dev->uc_promisc) { | |
__dev_set_promiscuity(dev, -1); | |
dev->uc_promisc = 0; | |
} | |
#endif | |
if (dev->set_multicast_list) | |
dev->set_multicast_list(dev); | |
} | |
/** | |
* pci_try_set_mwi - enables memory-write-invalidate PCI transaction | |
* @dev: the PCI device for which MWI is enabled | |
* | |
* Enables the Memory-Write-Invalidate transaction in %PCI_COMMAND. | |
* Callers are not required to check the return value. | |
* | |
* RETURNS: An appropriate -ERRNO error value on error, or zero for success. | |
*/ | |
intpci_try_set_mwi(struct pci_dev *dev) | |
{ | |
int rc = 0; | |
#ifdef HAVE_PCI_SET_MWI | |
rc = pci_set_mwi(dev); | |
#endif | |
return rc; | |
} | |
EXPORT_SYMBOL(pci_try_set_mwi); | |
#endif | |