LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   broadcom bcm4313 wifi chipset on Asus Eee PC Seashell not working (CentOS 7) (https://www.linuxquestions.org/questions/linux-newbie-8/broadcom-bcm4313-wifi-chipset-on-asus-eee-pc-seashell-not-working-centos-7-a-4175642845/)

rima8eou 11-22-2018 02:53 AM

broadcom bcm4313 wifi chipset on Asus Eee PC Seashell not working (CentOS 7)
 
Hello,

this is my first thread on linuxquestions.org.

I tried to solve the problem on fedora 28, but I had no success:
https://forums.fedoraforum.org/showt...ee-PC-Seashell

I downloaded again the driver's source package from here:
https://www.broadcom.com/products/wi...4313#downloads

This is the Makefile:
Code:

#
# Makefile fragment for Linux 2.6
# Broadcom 802.11abg Networking Device Driver
#
# Copyright (C) 2015, Broadcom Corporation. All Rights Reserved.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
# $Id: Makefile_kbuild_portsrc 580354 2015-08-18 23:42:37Z $

ifneq ($(KERNELRELEASE),)

  LINUXVER_GOODFOR_CFG80211:=$(strip $(shell \
    if [ "$(VERSION)" -ge "2" -a "$(PATCHLEVEL)" -ge "6" -a "$(SUBLEVEL)" -ge "32" -o "$(VERSION)" -ge "3" ]; then \
      echo TRUE; \
    else \
      echo FALSE; \
    fi \
  ))

    LINUXVER_WEXT_ONLY:=$(strip $(shell \
    if [ "$(VERSION)" -ge "2" -a "$(PATCHLEVEL)" -ge "6" -a "$(SUBLEVEL)" -ge "17" ]; then \
      echo FALSE; \
    else \
      echo TRUE; \
    fi \
  ))

  ifneq ($(API),)
    ifeq ($(API), CFG80211)
      APICHOICE := FORCE_CFG80211
      $(info CFG80211 API specified in command line)
    else
      ifeq ($(API), WEXT)
        APICHOICE := FORCE_WEXT
        $(info Wireless Extension API specified in command line)
      else
        $(error Unknown API type)
      endif
    endif
  else
    ifeq ($(LINUXVER_GOODFOR_CFG80211),TRUE)
      APICHOICE := PREFER_CFG80211
      $(info CFG80211 API is prefered for this kernel version)
    else
      ifeq ($(LINUXVER_WEXT_ONLY),TRUE)
        APICHOICE := FORCE_WEXT
        $(info Wireless Extension is the only possible API for this kernel version)
      else
        APICHOICE := PREFER_WEXT
        $(info Wireless Extension API is prefered for this kernel version)
      endif
    endif
  endif

  ifeq ($(APICHOICE),FORCE_CFG80211)
    ifneq ($(CONFIG_CFG80211),)
      APIFINAL := CFG80211
    else
      $(error CFG80211 is specified but it is not enabled in kernel)
    endif
  endif

  ifeq ($(APICHOICE),FORCE_WEXT)
    APIFINAL := WEXT
  endif

  ifeq ($(APICHOICE),PREFER_CFG80211)
    ifneq ($(CONFIG_CFG80211),)
      APIFINAL := CFG80211
    else
      ifneq ($(CONFIG_WIRELESS_EXT),)
        APIFINAL := WEXT
      else
        $(warning Neither CFG80211 nor Wireless Extension is enabled in kernel)
      endif
    endif
  endif

  ifeq ($(APICHOICE),PREFER_WEXT)
    ifneq ($(CONFIG_WIRELESS_EXT),)
      APIFINAL := WEXT
    else
      ifneq ($(CONFIG_CFG80211),)
        APIFINAL := CFG80211
      else
        $(warning Neither CFG80211 nor Wireless Extension is enabled in kernel)
      endif
    endif
  endif

endif

#Check GCC version so we can apply -Wno-date-time if supported.  GCC >= 4.9
empty:=
space:= $(empty) $(empty)
GCCVERSIONSTRING := $(shell expr `$(CC) -dumpversion`)
#Create version number without "."
GCCVERSION := $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f1 -d.)
GCCVERSION += $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f2 -d.)
GCCVERSION += $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f3 -d.)
# Make sure the version number has at least 3 decimals
GCCVERSION += 00
# Remove spaces from the version number
GCCVERSION := $(subst $(space),$(empty),$(GCCVERSION))
# Crop the version number to 3 decimals.
GCCVERSION := $(shell expr `echo $(GCCVERSION)` | cut -b1-3)
GE_49 := $(shell expr `echo $(GCCVERSION)` \>= 490)

EXTRA_CFLAGS :=

ifeq ($(APIFINAL),CFG80211)
  EXTRA_CFLAGS += -DUSE_CFG80211
  $(info Using CFG80211 API)
endif

ifeq ($(APIFINAL),WEXT)
  EXTRA_CFLAGS += -DUSE_IW
  $(info Using Wireless Extension API)
endif

obj-m              += wl.o

wl-objs            :=
wl-objs            += src/shared/linux_osl.o
wl-objs            += src/wl/sys/wl_linux.o
wl-objs            += src/wl/sys/wl_iw.o
wl-objs            += src/wl/sys/wl_cfg80211_hybrid.o

EXTRA_CFLAGS      += -I$(src)/src/include -I$(src)/src/common/include
EXTRA_CFLAGS      += -I$(src)/src/wl/sys -I$(src)/src/wl/phy -I$(src)/src/wl/ppr/include
EXTRA_CFLAGS      += -I$(src)/src/shared/bcmwifi/include
#EXTRA_CFLAGS      += -DBCMDBG_ASSERT -DBCMDBG_ERR
ifeq "$(GE_49)" "1"
EXTRA_CFLAGS      += -Wno-date-time
endif

EXTRA_LDFLAGS      := $(src)/lib/wlc_hybrid.o_shipped

KBASE              ?= /lib/modules/`uname -r`
KBUILD_DIR        ?= $(KBASE)/build
MDEST_DIR          ?= $(KBASE)/kernel/drivers/net/wireless

# Cross compile setup.  Tool chain and kernel tree, replace with your own.
CROSS_TOOLS        = /path/to/tools
CROSS_KBUILD_DIR  = /path/to/kernel/tree

all:
        KBUILD_NOPEDANTIC=1 make -C $(KBUILD_DIR) M=`pwd`

cross:
        KBUILD_NOPEDANTIC=1 make CROSS_COMPILE=${CROSS_TOOLS} -C $(CROSS_KBUILD_DIR) M=`pwd`

clean:
        KBUILD_NOPEDANTIC=1 make -C $(KBUILD_DIR) M=`pwd` clean

install:
        install -D -m 755 wl.ko $(MDEST_DIR)

The Makefile is for Kernel 2.6 - that's all I understand.

And when I run make, I get these error messages:

Code:

/usr/src/broadcom4313/src/shared/linux_osl.c: In function ‘osl_getcycles’:
/usr/src/broadcom4313/src/shared/linux_osl.c:935:2: error: implicit declaration of function ‘rdtscl’ [-Werror=implicit-function-declaration]
  rdtscl(cycles);
  ^
cc1: some warnings being treated as errors
make[2]: *** [/usr/src/broadcom4313/src/shared/linux_osl.o] Error 1
make[1]: *** [_module_/usr/src/broadcom4313] Error 2
make: *** [all] Error 2

Code:

$ uname -r
3.10.0-862.14.4.e17.centos.plus.i686

Any ideas?

Best regards

rima

frankbell 11-22-2018 08:00 PM

This post should help you get started: https://www.linuxquestions.org/quest...ux-4175434970/

rima8eou 11-24-2018 03:25 AM

Hi frankbell,

Code:

# lspci -vnn -d 14e4:
[...] Broadcom Limited BCM4313 802.11bgn Wireless Network Adapter [14e4:4727] (rev 01)

So I don't have bcm4313, but 4727. Ok, I'll do my very best. Thanks.

rima

ondoho 11-24-2018 05:04 AM

no, you still have BCM4313.

... on a sidenote, centos 7 is definitely the wrong distro for this legacy minilaptop.
i suggest switching to antiX or some puppy derivate before even trying to fix your wifi issues.

if you decide to switch to antiX, here's your solution:
https://wiki.debian.org/bcm43xx

if not, here:
https://www.startpage.com/do/dsearch...oadcom+bcm4313

rima8eou 11-24-2018 05:34 AM

I'll try out CentOS 6.10. There is an How To
https://wiki.centos.org/HowTos/Lapto...eless/Broadcom
which might help. At the moment I have CentOS 7.5 installed and it doesn't work. I want a RedHat-based distribution to get familiar with rpm, yum and so on.

rima8eou 11-24-2018 08:49 AM

I now have installed CentOS 6.10 (2.6.32-754). But I have a different problem as the one in the link above (Step 3a). This is what happens, when I run make:
Code:

# make -C /lib/modules/`uname -r` /build/ M=`pwd`
make: Entering directory `/lib/modules/2.6.32-754.e16.i686'
make: *** No rule to make target `/build/'. Stop.
make: Leaving directory `/lib/modules/2.6.32-754.e16.i686'

hmmm???

rima8eou 11-24-2018 02:25 PM

After rebooting it was possible to install the driver. Now I work hard on NetworkManager to get a wireless connection.

ondoho 11-25-2018 03:16 AM

are you sure you needed to compile the wifi driver?
why?

you aren't really documenting your progress, that's a very small & isolated piece of information there.

but i doubt that compiling manually is necessary.

rima8eou 11-25-2018 10:40 AM

I tried a lot to get wifi working. See here:
https://forums.fedoraforum.org/showt...ee-PC-Seashell

Then I followed these instructions:
https://wiki.centos.org/HowTos/Lapto...eless/Broadcom

I don't know if compiling was necessary, but I succeded (as I think). I now want to get started with network manager 0.8.1 and if I will also have success with this version of network manager, I will report. Connecting with this version of network manager to wifi means editing the file /etc/NetworkManager/system-connections/wifi-wlan0. Wish me luck!

ondoho 11-26-2018 01:10 AM

it would appear compiling WAS necessary for centos, i stand corrected.
although this just confirms my previous advice that centos isn't the right distro for this hardware.
but, since you WANT to continue using something redhat-like on it, you chose the hard and rocky road.

rima8eou 11-26-2018 06:46 AM

On my Asus Eee PC Seashell 1015PEM with CentOS 6.10 and detected wifi chip I have NetworkManager 0.8.1. This is my wifi-config-file in /etc/NetworkManager/system-connections/

Code:

[connection]
id=WindowsPhone9847
uuid=2f22732d-7f88-4564-bfdc-0ff39a508049
type=wifi
permissions=

[wifi]
mac-address=48:5d:60:d2:25:38
mac-address-blacklist=
mode=infrastructure
ssid=WindowsPhone9847

[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk-flags=1

[ipv4]
dns-search=
method=auto

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto

When I try to connect to the Hotspot, I get this message:
Code:

# nmcli c up WindowsPhone9847
Error: id or uuid has to be specified.

Hmmhhh... I have no idea.


All times are GMT -5. The time now is 09:03 PM.