Sunday, May 29, 2011

Slackware 13.37 and BroadComm [14e4:4727] wireless Marriage



I have a Broadcom Wireless card, which was obvious enough not to work just like that.
root@noor:/home/althaf# lspci -vnn | grep 14e4
12:00.0 Network controller [0280]: Broadcom Corporation BCM4313
02.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01)

Follow these procedures to make it work

Kernel configuration for (2.6.37 slackware 13.37 default)

Make sure you have enabled
Location: -> Device Drivers
-> Staging drivers
  -> Exclude Staging drivers from being built
      -> Broadcom IEEE802.11n WLAN drivers
          -> Broadcom IEEE802.11n driver style

Download the firmware


I was luck enough to have this card, well the broadcom guys had the mercy to open up their driver code, any way as usual it required firmware to be loaded.

[Firmware link]

We just need *bcm43xx-0.fw* and *bcm43xx_hdr-0.fw*, when downloaded make sure you have the same file name as given, the drivers have hard coded the path and firmware name in them, so it should be the same to work.

Copy them to /lib/firmware/brcm

Reboot

I highly recommend rebooting the system, though theoretically we could load the firmware on the go, however it didn't work for me.Once rebooted you will find wlan0 or similar interface.

References

[Brcm80211]

6 comments :

  1. Hi Althaf, I need your help.

    I have a wireless device like his.

    I did the following steps:

    make menuconfig
    Location: -> Device Drivers
    -> Staging drivers
    -> Exclude Staging drivers from being built
    -> Broadcom IEEE802.11n WLAN drivers
    -> Broadcom IEEE802.11n driver style
    (X) broadcom IEEE802.11n embedded FullMac WLAN driver

    make
    make modules_install
    cp arch/x86/boot/bzImage /boot/vmlinuz

    download firmware and

    but in my system don't have brcm in /lib/firmware

    so I have created the dir and copy the firmware to inside.

    After the reboot don't show my device.
    What did I do wrong?


    root@darkstar:/# cat /etc/slackware-version
    Slackware 13.37.0
    root@darkstar:/# lspci -vnn | grep 14e4
    12:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727] (rev 01)

    ReplyDelete
  2. Are sure about the module being loaded?
    lsmod?
    if you didnt have bcrm directory its fine, just make one and copy the fw as mentioned. Let me know if the module were loaded.

    ReplyDelete
  3. Module Size Used by
    snd_seq_dummy 1479 0
    snd_seq_oss 30116 0
    snd_seq_midi_event 5708 1 snd_seq_oss
    snd_seq 52486 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
    snd_seq_device 5473 3 snd_seq_dummy,snd_seq_oss,snd_seq
    snd_pcm_oss 40089 0
    snd_mixer_oss 17282 1 snd_pcm_oss
    ipv6 275315 18
    cpufreq_ondemand 9164 4
    acpi_cpufreq 6079 1
    freq_table 2435 2 cpufreq_ondemand,acpi_cpufreq
    mperf 1195 1 acpi_cpufreq
    lp 9781 0
    ppdev 6021 0
    parport_pc 21214 0
    parport 30087 3 lp,ppdev,parport_pc
    fuse 66651 5
    i915 400238 7
    drm_kms_helper 27035 1 i915
    drm 177345 3 i915,drm_kms_helper
    uvcvideo 62696 0
    snd_hda_codec_idt 56457 1
    videodev 65968 1 uvcvideo
    v4l1_compat 15658 2 uvcvideo,videodev
    v4l2_compat_ioctl32 11199 1 videodev
    dell_laptop 7991 0
    intel_agp 10824 1 i915
    snd_hda_intel 21915 2
    rtc_cmos 9374 0
    dell_wmi 1565 0
    i2c_algo_bit 5055 1 i915
    rfkill 16442 2 dell_laptop
    sparse_keymap 2984 1 dell_wmi
    atl1c 32572 0
    processor 25982 1 acpi_cpufreq
    intel_gtt 14862 3 i915,intel_agp
    video 11949 1 i915
    thermal 8082 0
    agpgart 28874 3 drm,intel_agp,intel_gtt
    rtc_core 14471 1 rtc_cmos
    sg 26495 0
    wmi 8349 1 dell_wmi
    rtc_lib 1978 1 rtc_core
    usbhid 36859 0
    i2c_i801 8230 0
    hid 77723 1 usbhid
    dcdbas 5480 1 dell_laptop
    thermal_sys 13862 3 processor,video,thermal
    snd_hda_codec 71748 2 snd_hda_codec_idt,snd_hda_intel
    output 2020 1 video
    battery 10535 0
    ac 3249 0
    button 5013 1 i915
    intel_ips 11442 0
    i2c_core 19769 6 i915,drm_kms_helper,drm,videodev,i2c_algo_bit,i2c_i801
    snd_hwdep 6254 1 snd_hda_codec
    snd_pcm 73762 3 snd_pcm_oss,snd_hda_intel,snd_hda_codec
    snd_timer 19671 2 snd_seq,snd_pcm
    snd 58334 15 snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_hda_codec_idt,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
    soundcore 5681 1 snd
    snd_page_alloc 7297 2 snd_hda_intel,snd_pcm
    lib80211 4078 0
    evdev 9813 10
    psmouse 47222 0
    serio_raw 4534 0
    hwmon 1473 1 thermal_sys

    ReplyDelete
  4. These are the modules that were loaded.

    ReplyDelete
  5. Sorry for the late reply, i was busy.

    Well seems like you haven't loaded the modules.Correct modules loaded will include.

    1) brcm80211
    2) mac80211
    3) cfg80211


    First lets bring the system to a known state, checklist the following

    1) Do not overwrite the stock kernel image /boot/vmlinuz, it seems you have overwritten

    2) From what you have done i came to understand the you haven't changed the kernel version string in the menuconfig, if you don't change, and use the same .config file from slackware, you will end up overwriting stock kernel modules in /lib/ , it seems you have done so.

    3) First, i highly recommend restoring back the kernel image, reinstall the kernel from the slackware dvd you have, before that delete the /lib/modules/2.xxx ,then install it, reason i suggest reinstalling is, if at all you mess up the custom kernel, you need a back door to enter right ?

    4) From the assumption of you have a stock kernel working, and installed, then rebooted.Do the next step.

    5) Check the config file from /proc/config.gz, you can do the following 'zcat /proc/config.gz ~/default.config'

    6) cd /usr/src/linux && 'make mrproper'
    i assume you are using the kernel source from the slackware 13.37 DVD.

    7) cp ~/default.config /usr/src/linux/.config

    8) enable what i have said in my blog, do enable 2) mac80211 3) cfg80211 modules if you haven't done so.

    ReplyDelete
  6. Thanks, I will go to try again.

    Very, very Thanks.

    ReplyDelete