You are not logged in.

#26 2015-07-16 11:15:55

matersci
Member
From: Hellas
Registered: 2006-01-19
Posts: 167

Re: Frequent disconnections with Broadcom wifi BCM43142

Has anyone tried this patch with linux-4.1.2? It just entered core repo.


update:

just tried it, for now it seems it's working fine with kernel 4.1 smile

Last edited by matersci (2015-07-16 11:29:00)

Offline

#27 2015-09-15 17:15:47

JoKer--777
Member
Registered: 2013-04-16
Posts: 2

Re: Frequent disconnections with Broadcom wifi BCM43142

Hi guys,

do you still use this patch? Is it working?
I'm trying to install it and get the following error with pacman

error: broadcom-wl-dkms: missing required signature
error: failed to commit transaction (package missing required signature)
Errors occurred, no packages were upgraded.

Any ideas why?

Last edited by JoKer--777 (2015-09-15 17:16:22)

Offline

#28 2015-09-15 17:23:08

matersci
Member
From: Hellas
Registered: 2006-01-19
Posts: 167

Re: Frequent disconnections with Broadcom wifi BCM43142

JoKer--777 wrote:

Hi guys,

do you still use this patch? Is it working?
I'm trying to install it and get the following error with pacman

error: broadcom-wl-dkms: missing required signature
error: failed to commit transaction (package missing required signature)
Errors occurred, no packages were upgraded.

Any ideas why?


Yes, it's working fine.
Where are you trying to install it from?

Offline

#29 2015-09-23 10:43:35

vlast777
Member
Registered: 2015-02-10
Posts: 57

Re: Frequent disconnections with Broadcom wifi BCM43142

matersci wrote:
JoKer--777 wrote:

Hi guys,

do you still use this patch? Is it working?
I'm trying to install it and get the following error with pacman

error: broadcom-wl-dkms: missing required signature
error: failed to commit transaction (package missing required signature)
Errors occurred, no packages were upgraded.

Any ideas why?


Yes, it's working fine.
Where are you trying to install it from?

Hey matersci!

What do I need to install, to get my WLAN working properly? smile
I followed the discussion but somehow lost the line hmm

Okay, I see that I need to install them from archlinuxgr Unofficial User Repo. But it keeps telling me the signature is missing.
If that patched package is working so good, why the hell don't they include it in the official Repos? sad

Last edited by vlast777 (2015-09-23 10:54:59)

Offline

#30 2015-09-23 10:57:09

matersci
Member
From: Hellas
Registered: 2006-01-19
Posts: 167

Re: Frequent disconnections with Broadcom wifi BCM43142

just add archlinuxgr repo

[archlinuxgr]
SigLevel = PackageOptional
Server = http://archlinuxgr.tiven.org/archlinux/$arch

and do a
pacman -Sy broadcom-wl-dkms
to install version 6.30.223.141


it works well with  BCM43142. other card need the newer version.

Last edited by matersci (2015-09-23 10:58:44)

Offline

#31 2015-09-23 11:02:57

vlast777
Member
Registered: 2015-02-10
Posts: 57

Re: Frequent disconnections with Broadcom wifi BCM43142

Thanks alot! smile
So all we can do is hope, that he will never quit maintaining this repo!

So basically this package fixes the "frequent disconnection" problem with the BCM43142?
Iam still building tho. smile

Offline

#32 2015-09-23 19:48:51

vlast777
Member
Registered: 2015-02-10
Posts: 57

Re: Frequent disconnections with Broadcom wifi BCM43142

This is absolutely brilliant!!
After installing the package from this repo, I didn't had a single disconnect. smile
Thanks alot!

Offline

#33 2015-09-28 11:50:49

matersci
Member
From: Hellas
Registered: 2006-01-19
Posts: 167

Re: Frequent disconnections with Broadcom wifi BCM43142

broadcom-wl-dkms 6.30.223.141 is not working with new kernel (4.2)
Until we have a new patch I am staying with 4.1.6...

Last edited by matersci (2015-09-28 11:51:14)

Offline

#34 2015-10-01 11:51:39

ZhKSteaL
Member
From: Omsk City, Russia
Registered: 2015-01-07
Posts: 10

Re: Frequent disconnections with Broadcom wifi BCM43142

Hi!
I have the similar issue with BCM43142.

Could anybody give me link where I can download broadcom-wl-dkms 6.30.223.141 driver and kernel 4.1.6 ?

Offline

#35 2015-10-01 13:02:41

matersci
Member
From: Hellas
Registered: 2006-01-19
Posts: 167

Re: Frequent disconnections with Broadcom wifi BCM43142

kernel 4.1.6 and the rest packages you need, should be in your cache (/var/cache/pacman/pkg by default). If you don't have the packages, you can use Arch Rollback Machine
https://wiki.archlinux.org/index.php/Ar … ck_Machine

For broadcom-wl-dkms 6.30.223.141 I posted the repo a few posts before.

Offline

#36 2015-10-01 15:31:31

ZhKSteaL
Member
From: Omsk City, Russia
Registered: 2015-01-07
Posts: 10

Re: Frequent disconnections with Broadcom wifi BCM43142

matersci wrote:

kernel 4.1.6 and the rest packages you need, should be in your cache (/var/cache/pacman/pkg by default). If you don't have the packages, you can use Arch Rollback Machine
https://wiki.archlinux.org/index.php/Ar … ck_Machine

For broadcom-wl-dkms 6.30.223.141 I posted the repo a few posts before.

Thanks a lot!
I will try to install these kernel and drivers.

Offline

#37 2015-10-05 02:41:01

kuadhual
Member
Registered: 2009-06-24
Posts: 13

Re: Frequent disconnections with Broadcom wifi BCM43142

I think this will be the last patch for 141 that (kinda) works with 4.2.2.

linux-recent.patch

diff -rupN a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
--- a/src/wl/sys/wl_cfg80211_hybrid.c	2015-10-05 08:59:00.780462461 +0700
+++ b/src/wl/sys/wl_cfg80211_hybrid.c	2015-10-05 09:16:33.700103440 +0700
@@ -59,8 +59,13 @@ static s32 wl_cfg80211_set_wiphy_params(
 static s32 wl_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev,
            struct cfg80211_ibss_params *params);
 static s32 wl_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
 static s32 wl_cfg80211_get_station(struct wiphy *wiphy,
            struct net_device *dev, u8 *mac, struct station_info *sinfo);
+#else
+static s32 wl_cfg80211_get_station(struct wiphy *wiphy,
+           struct net_device *dev, const u8 *mac, struct station_info *sinfo);
+#endif
 static s32 wl_cfg80211_set_power_mgmt(struct wiphy *wiphy,
            struct net_device *dev, bool enabled, s32 timeout);
 static int wl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
@@ -1380,7 +1385,7 @@ wl_cfg80211_get_key(struct wiphy *wiphy,
 	key_endian_to_host(&key);
 
 	params.key_len = (u8) min_t(u8, DOT11_MAX_KEY_SIZE, key.len);
-	memcpy(params.key, key.data, params.key_len);
+	memcpy((char *)params.key, key.data, params.key_len);
 
 	if ((err = wl_dev_ioctl(dev, WLC_GET_WSEC, &wsec, sizeof(wsec)))) {
 		return err;
@@ -1414,9 +1419,15 @@ wl_cfg80211_get_key(struct wiphy *wiphy,
 	return err;
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
 static s32
 wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev,
                         u8 *mac, struct station_info *sinfo)
+#else
+static s32
+wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev,
+                        const u8 *mac, struct station_info *sinfo)
+#endif
 {
 	struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy);
 	scb_val_t scb_val;
@@ -1434,7 +1445,11 @@ wl_cfg80211_get_station(struct wiphy *wi
 		WL_DBG(("Could not get rate (%d)\n", err));
 	} else {
 		rate = dtoh32(rate);
+		#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)
+		sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
+		#else
 		sinfo->filled |= STATION_INFO_TX_BITRATE;
+		#endif
 		sinfo->txrate.legacy = rate * 5;
 		WL_DBG(("Rate %d Mbps\n", (rate / 2)));
 	}
@@ -1447,7 +1462,11 @@ wl_cfg80211_get_station(struct wiphy *wi
 			return err;
 		}
 		rssi = dtoh32(scb_val.val);
+		#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)
+		sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
+		#else
 		sinfo->filled |= STATION_INFO_SIGNAL;
+		#endif
 		sinfo->signal = rssi;
 		WL_DBG(("RSSI %d dBm\n", rssi));
 	}
@@ -1780,9 +1799,15 @@ static s32 wl_inform_single_bss(struct w
 
 	notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset);
 	notify_ielen = le32_to_cpu(bi->ie_length);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
 	cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet),
 		0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
 		(const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
+#else
+	cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet),
+		0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
+		(const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
+#endif
 
 	if (unlikely(!cbss))
 		return -ENOMEM;
@@ -1817,7 +1842,11 @@ wl_notify_connect_status(struct wl_cfg80
 		}
 		else if ((event == WLC_E_LINK && ~(flags & WLC_EVENT_MSG_LINK)) ||
 			event == WLC_E_DEAUTH_IND || event == WLC_E_DISASSOC_IND) {
+            #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+			cfg80211_disconnected(ndev, 0, NULL, 0, false, GFP_KERNEL);
+            #else
 			cfg80211_disconnected(ndev, 0, NULL, 0, GFP_KERNEL);
+            #endif            
 			clear_bit(WL_STATUS_CONNECTED, &wl->status);
 			wl_link_down(wl);
 			wl_init_prof(wl->profile);
@@ -1841,7 +1870,11 @@ wl_notify_connect_status(struct wl_cfg80
 			wl_get_assoc_ies(wl);
 			memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
 			wl_update_bss_info(wl);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
+			cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, &wl->conf->channel, GFP_KERNEL);
+#else
 			cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);
+#endif
 			set_bit(WL_STATUS_CONNECTED, &wl->status);
 			wl->profile->active = true;
 		}
@@ -2395,8 +2428,16 @@ cfg80211_attach_out:
 
 void wl_cfg80211_detach(struct net_device *ndev)
 {
-	struct wl_cfg80211_priv *wl = ndev_to_wl(ndev);
-
+	struct wl_cfg80211_priv *wl;
+	struct wireless_dev *wdev;
+	
+	wdev = ndev->ieee80211_ptr;
+	if (wdev == NULL) {
+                printk(KERN_ERR "[%s()] in ndev=%p: IEEE80211ptr=%p\n", __FUNCTION__, ndev, wdev);
+                return;
+        }
+	wl = ndev_to_wl(ndev);
+    
 	wl_deinit_cfg80211_priv(wl);
 	wl_free_wdev(wl);
 }
diff -rupN a/src/wl/sys/wl_dbg.h b/src/wl/sys/wl_dbg.h
--- a/src/wl/sys/wl_dbg.h	2015-10-05 08:59:00.780462461 +0700
+++ b/src/wl/sys/wl_dbg.h	2015-10-05 08:59:00.947128224 +0700
@@ -55,10 +55,12 @@ extern int osl_printf(const char *fmt, .
 
 #define WL_NONE(args)
 
+#define FORCE_TRACE_LEVEL(fmt, ...) do { printk(KERN_ERR fmt, ## __VA_ARGS__); } while (0) /* ## is GCC specific syntax to remove comma when single arg */
+
 #ifdef BCMDBG_ERR
 #define	WL_ERROR(args)		WL_PRINT(args)
 #else
-#define	WL_ERROR(args)
+#define	WL_ERROR(args)		FORCE_TRACE_LEVEL args
 #endif 
 #define	WL_TRACE(args)
 #define WL_APSTA_UPDN(args)
diff -rupN a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
--- a/src/wl/sys/wl_linux.c	2015-10-05 08:59:00.780462461 +0700
+++ b/src/wl/sys/wl_linux.c	2015-10-05 08:59:00.877128603 +0700
@@ -910,7 +910,7 @@ wl_remove(struct pci_dev *pdev)
 	pci_set_drvdata(pdev, NULL);
 }
 
-static struct pci_driver wl_pci_driver = {
+static struct pci_driver wl_pci_driver __refdata = {
 	name:		"wl",
 	probe:		wl_pci_probe,
 	suspend:	wl_suspend,
@@ -1308,6 +1308,7 @@ wl_free_if(wl_info_t *wl, wl_if_t *wlif)
 		MFREE(wl->osh, wlif->dev, sizeof(struct net_device));
 #else
 		free_netdev(wlif->dev);
+		wlif->dev = NULL;
 #endif 
 	}
 
@@ -1345,7 +1346,12 @@ wl_alloc_linux_if(wl_if_t *wlif)
 	dev->priv = priv_link;
 #else
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0))
 	dev = alloc_netdev(sizeof(priv_link_t), intf_name, ether_setup);
+#else
+	dev = alloc_netdev(sizeof(priv_link_t), intf_name, NET_NAME_UNKNOWN,
+			   ether_setup);
+#endif
 	if (!dev) {
 		WL_ERROR(("wl%d: %s: alloc_netdev failed\n",
 			(wl->pub)?wl->pub->unit:wlif->subunit, __FUNCTION__));
@@ -2156,8 +2162,8 @@ wl_start(struct sk_buff *skb, struct net
 	wlif = WL_DEV_IF(dev);
 	wl = WL_INFO(dev);
 
+	skb->prev = NULL;
 	if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) {
-		skb->prev = NULL;
 
 		TXQ_LOCK(wl);
 
@@ -2425,8 +2431,10 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rx
 		p80211msg_t *phdr;
 
 		len = sizeof(p80211msg_t) + oskb->len - D11_PHY_HDR_LEN;
-		if ((skb = dev_alloc_skb(len)) == NULL)
+		if ((skb = dev_alloc_skb(len)) == NULL) {
+			WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
 			return;
+		}
 
 		skb_put(skb, len);
 		phdr = (p80211msg_t*)skb->data;
@@ -2505,9 +2513,10 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rx
 			rtap_len = sizeof(wl_radiotap_ht_brcm_2_t);
 
 		len = rtap_len + (oskb->len - D11_PHY_HDR_LEN);
-		if ((skb = dev_alloc_skb(len)) == NULL)
+		if ((skb = dev_alloc_skb(len)) == NULL) {
+			WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
 			return;
-
+		}
 		skb_put(skb, len);
 
 		if (CHSPEC_IS2G(rxsts->chanspec)) {
@@ -2636,9 +2645,11 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rx
 			len += amsdu_len;
 		}
 
-		if ((skb = dev_alloc_skb(len)) == NULL)
+		if ((skb = dev_alloc_skb(len)) == NULL) {
+			WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
 			return;
-
+		}
+        
 		skb_put(skb, len);
 
 		if (CHSPEC_IS2G(rxsts->chanspec)) {
@@ -2970,7 +2981,7 @@ _wl_del_monitor(wl_task_t *task)
 }
 
 void
-wl_set_monitor(wl_info_t *wl, int val)
+wl_set_monitor(wl_info_t *wl, int val) /* public => is called by wlc_hybrid.o_shipped */
 {
 	const char *devname;
 	wl_if_t *wlif;
@@ -3236,7 +3247,12 @@ void
 wl_tkip_printstats(wl_info_t *wl, bool group_key)
 {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
+	struct seq_file sfile;
+	struct seq_file *debug_buf = &sfile;	
+#else
 	char debug_buf[512];
+#endif
 	int idx;
 	if (wl->tkipmodops) {
 		if (group_key) {
@@ -3249,7 +3265,11 @@ wl_tkip_printstats(wl_info_t *wl, bool g
 			wl->tkipmodops->print_stats(debug_buf, wl->tkip_ucast_data);
 		else
 			return;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
+		printk("%s: TKIP stats from module: %s\n", debug_buf->buf, group_key?"Bcast":"Ucast");
+#else
 		printk("%s: TKIP stats from module: %s\n", debug_buf, group_key?"Bcast":"Ucast");
+#endif
 	}
 #endif 
 }
@@ -3408,11 +3428,19 @@ wl_linux_watchdog(void *ctx)
 	return 0;
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 static int
 wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
 {
 	wl_info_t * wl = (wl_info_t *)data;
+#else
+static int
+wl_proc_read(struct seq_file *seq, void *offset)
+{
+	wl_info_t * wl = (wl_info_t *)seq->private;
+#endif
 	int bcmerror, to_user;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 	int len;
 
 	if (offset > 0) {
@@ -3424,17 +3452,33 @@ wl_proc_read(char *buffer, char **start,
 		WL_ERROR(("%s: Not enough return buf space\n", __FUNCTION__));
 		return 0;
 	}
+#endif
 	WL_LOCK(wl);
 	bcmerror = wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 	len = sprintf(buffer, "%d\n", to_user);
+#endif
 	WL_UNLOCK(wl);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 	return len;
+#else
+	seq_printf(seq, "%d\n", to_user);
+	return bcmerror;
+#endif
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 static int
 wl_proc_write(struct file *filp, const char *buff, unsigned long length, void *data)
 {
 	wl_info_t * wl = (wl_info_t *)data;
+#else
+static ssize_t 
+wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *ppos)
+{
+	struct seq_file *seq = filp->private_data;
+	wl_info_t * wl = (wl_info_t *)seq->private;
+#endif
 	int from_user = 0;
 	int bcmerror;
 
@@ -3445,7 +3489,11 @@ wl_proc_write(struct file *filp, const c
 	}
 	if (copy_from_user(&from_user, buff, 1)) {
 		WL_ERROR(("%s: copy from user failed\n", __FUNCTION__));
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 		return -EIO;
+#else
+		return -EFAULT;
+#endif
 	}
 
 	if (from_user >= 0x30)
@@ -3459,22 +3507,48 @@ wl_proc_write(struct file *filp, const c
 		WL_ERROR(("%s: SET_MONITOR failed with %d\n", __FUNCTION__, bcmerror));
 		return -EIO;
 	}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
+	*ppos += length;
+#endif
 	return length;
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
+static int wl_proc_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, wl_proc_read, PDE_DATA(inode));
+}
+
+static const struct file_operations wl_fops = {
+	.owner = THIS_MODULE,
+	.open = wl_proc_open,
+	.read = seq_read,
+	.write = wl_proc_write,
+	.llseek = seq_lseek,
+	.release = single_release,
+};
+#endif
+
 static int
 wl_reg_proc_entry(wl_info_t *wl)
 {
 	char tmp[32];
 	sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 	if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
 		WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp));
+#else
+	if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_fops, wl)) == NULL) {
+		WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp));
+#endif
 		ASSERT(0);
 		return -1;
 	}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
 	wl->proc_entry->read_proc = wl_proc_read;
 	wl->proc_entry->write_proc = wl_proc_write;
 	wl->proc_entry->data = wl;
+#endif
 	return 0;
 }
 #ifdef WLOFFLD

PKGBUILD

# Maintainer: Frank Vanderham <twelve.eighty (at) gmail.>
pkgname=broadcom-wl-dkms
_pkgname=broadcom-wl
pkgver=6.30.223.141
pkgrel=10
pkgdesc="Broadcom 802.11 Linux STA wireless driver"
url='http://www.broadcom.com/support/802.11/linux_sta.php'
arch=('i686' 'x86_64')
license=('custom')
depends=('dkms')
optdepends=('linux-headers')
install=broadcom-wl-dkms.install
conflicts=('wireless-bcm43142-oneiric-dkms' 'wireless-bcm43142-dkms' 'broadcom-wl6-dkms' 'broadcom-wl')
[[ $CARCH = x86_64 ]] && _arch=_64 || _arch=
source=("http://www.broadcom.com/docs/linux_sta/hybrid-v35${_arch}-nodebug-pcoem-${pkgver//./_}.tar.gz"
	'broadcom-wl-dkms.conf'
	'dkms.conf'
	'license.patch'
	'linux-recent.patch'
	'gcc.patch')
sha1sums=('2917d785ffd9663b1d23cfa388b9bd7c9f03cc3b'
	'a37c5dd9ab279372f0c68595bb2a8f1fe694cd13'
	'91926bb064c00a00dbcab0d1d92c7eb976d56032'
	'81c05d48b234d56ad2e18eaee5ce89b79550ef20'
	'64afcce15fd655f76f9807ec3ed39239e0416a0b'
	'a23e0d52e0a20b5155fa8a418af79b3f7d191fa1')
[[ $CARCH = x86_64 ]] && sha1sums[0]='3a2453c71a07030f41a8fc613c87badf8452848c'

backup=('etc/modprobe.d/broadcom-wl-dkms.conf')

build() {
	cd "${srcdir}"

	patch -p1 -i linux-recent.patch
	patch -p1 -i license.patch
	patch -p1 -i gcc.patch

	# delete files not needed for packaging
	rm hybrid-v35${_arch}-nodebug-pcoem-${pkgver//./_}.tar.gz
}

package() {
	cd "${srcdir}"
	
	mkdir -p ${pkgdir}/usr/src/${_pkgname}-${pkgver}

	cp -RL * ${pkgdir}/usr/src/${_pkgname}-${pkgver}
	install -D -m 644 lib/LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
	install -D -m 644 broadcom-wl-dkms.conf "${pkgdir}"/etc/modprobe.d/broadcom-wl-dkms.conf
}

Offline

#38 2015-10-05 08:11:54

matersci
Member
From: Hellas
Registered: 2006-01-19
Posts: 167

Re: Frequent disconnections with Broadcom wifi BCM43142

nice.
I have uploaded the new version to the repo, try it...

Edit

Looks that everything is working fine, same as previous version.
It seems that until kernel 4.3 we are ok...

Last edited by matersci (2015-10-05 10:11:04)

Offline

#39 2015-11-26 19:27:14

freed00m
Member
From: Czechia
Registered: 2015-11-25
Posts: 5
Website

Re: Frequent disconnections with Broadcom wifi BCM43142

On both kernel 4.1.13 and 4.2.6
I have my journal logs full off this message, the driver itself works fine, but when I use it, spawn 3x per minute this msg.

"kernel: wl_tkip_decrypt: Invalid key_idx 1"

Is there a way how to fix it? or supress this? My log is 50% of this message. Anyway smile thanks for this driver. Any news about kernel 4.3 compatibility?

EDIT: Kernel 4.3 builds / works fine, the invalid key_idx 1 msg is still there. hmm When I don't download anything the msg is not raised that often.

EDIT2: the invalid key idx message parse raw text to loged tty sad no idea why? so distracting, it might be a systemd228 bug aswell, does anybody know if the new 'broadcom-wl  6.30.223.271-2' works with our card without drops?

EDIT3: On Kernel 4.4 the driver compiles fine and works aswell but I suspect it's dropping aswell for some other reason than the new driver. Be cautious with kernel 4.4 I noticed weird behavior.

EDIT4: -I have moved to "linux44-broadcom-wl  6.30.223.248-1" + kernel 4.4.0.2 I will continue testing.- It drops less but it does

EDIT5: 6.30.223.271-4 driver works on kernel44, seems to work well, I will be testing and return here to post results

EDIT6: After long experience with  6.30.223.271-4 I must say the problem is no longer. I had 3x drops in a month and I was very far away and seems to be unrelated to our little problem. So I give a green light for anyone to switch to the newest driver.

Last edited by freed00m (2016-02-29 11:24:58)

Offline

#40 2016-05-29 16:13:28

Smola
Member
From: Kiev, Ukraine
Registered: 2016-05-29
Posts: 3

Re: Frequent disconnections with Broadcom wifi BCM43142

Hi all!

I am a "happy" user of this piece of technology:

02:00.0 Network controller: Broadcom Corporation BCM43142 802.11b/g/n (rev 01) 

And as all of you I had frequent disconnections, low speed and low reported signal strength.
But I came up with workaround:

$ ping -s 16000 192.168.1.1

It turns out that while wireless adapter is busy with transmitting data it would not dissconnect me from AP.
I hope this information was useful for all of you!

P.S. I am using aur/broadcom-wl-dkms as a driver.

Offline

#41 2016-10-20 19:43:53

Pitou
Member
Registered: 2011-02-13
Posts: 62

Re: Frequent disconnections with Broadcom wifi BCM43142

@Smola,

I'm still using the "ping" workaround to keep my connection alive.

Do you know of any permanent solution to this issue? (It still not working that well under linux with the wl driver)

Thank you!

Pitou!

Offline

#42 2016-11-08 11:59:16

Smola
Member
From: Kiev, Ukraine
Registered: 2016-05-29
Posts: 3

Re: Frequent disconnections with Broadcom wifi BCM43142

Pitou wrote:

@Smola,

I'm still using the "ping" workaround to keep my connection alive.

Do you know of any permanent solution to this issue? (It still not working that well under linux with the wl driver)

Thank you!

Pitou!

Unfortunately, no. My workaround was not using wifi at all. Ethernet ftw.

Offline

#43 2017-12-12 20:38:26

amar.lakshya
Member
Registered: 2017-12-12
Posts: 1

Re: Frequent disconnections with Broadcom wifi BCM43142

I am having the same issue with the broadcom-wl-dkms package and 4.14.4-1-ARCH.


In lspci:

07:00.0 Network controller [0280]: Broadcom Corporation BCM43142 802.11b/g/n [14e4:4365] (rev 01)

but dmesg gives

[    5.324254] eth0: Broadcom BCM4365 802.11 Hybrid Wireless Controller 6.30.223.141 (r415941)

Plus I same issue with connectivity problems with some routers.

Offline

#44 2017-12-12 23:09:02

WorMzy
Forum Moderator
From: Scotland
Registered: 2010-06-16
Posts: 11,787
Website

Re: Frequent disconnections with Broadcom wifi BCM43142


Sakura:-
Mobo: MSI MAG X570S TORPEDO MAX // Processor: AMD Ryzen 9 5950X @4.9GHz // GFX: AMD Radeon RX 5700 XT // RAM: 32GB (4x 8GB) Corsair DDR4 (@ 3000MHz) // Storage: 1x 3TB HDD, 6x 1TB SSD, 2x 120GB SSD, 1x 275GB M2 SSD

Making lemonade from lemons since 2015.

Offline

Board footer

Powered by FluxBB