Results 1 to 2 of 2

Thread: My wireless doesn't work - a primer on what I should do next

  1. #1
    Join Date
    Jun 2008
    Location
    Kansas City Area, Missouri, USA
    Posts
    7,235

    Default My wireless doesn't work - a primer on what I should do next

    (This is the first draft of what I hope will become a sticky for this forum.
    Please comment. Thanks, Larry)

    If your wireless does not work, please read this and follow the steps here to
    minimize the time needed to get your device working.

    First of all, two DO NOTS:

    (1) DO NOT post a message saying "My wireless doesn't work, what do I do next?"
    Such a message conveys zero information, and just wastes everyone's time.

    (2) DO NOT post a message saying "I have a Brand XX, Model YYYY laptop and my
    wireless doesn't work. What do I do next?". Although such a posting does convey
    a little information, it doesn't help a lot as we do not have a map of all the
    laptops ever built in our heads, and I, for one, am never going to search the
    Internet to find what wireless device that company XX put in that model. Who
    knows, they may have changed in the middle of the run for that product.

    What should you do?

    (1) The first thing is to learn how to use the command-line interface in a
    terminal. GUI's are great, but unlike some other OS's, the set of tools
    available are much richer with the command-line. With KDE desktops, the terminal
    program should be available in your "Favorites" section. With Gnome, check under
    "Applications". Whenever someone tells you to run a command, you should open a
    terminal (also called a console), and type in that command - even better if you
    can copy and paste. Note that CTRL/V is not used to paste into a console window.
    You will need to pull-down the Edit menu item.

    (2) Determine what device you have.

    (a) If it is a USB adapter, you should enter the command '/usr/bin/lsusb' in a
    terminal and you will see output that looks like:

    Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 003 Device 005: ID 0bda:8187 Realtek Semiconductor Corp. RTL8187 Wireless
    Adapter
    Bus 003 Device 002: ID 04f2:b016 Chicony Electronics Co., Ltd
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

    From this data, it is obvious that my wireless card is a RealTek RTL8187. The
    line containing the information about it is what would be posted. In particular,
    the two numbers that follow the ID label are important.

    (b) If it is a PCI device, you should enter the command '/sbin/lspci' in a
    terminal. The output will look like:

    00:00.0 RAM memory: nVidia Corporation MCP67 Memory Controller (rev a2)
    00:01.0 ISA bridge: nVidia Corporation MCP67 ISA Bridge (rev a2)

    .... snip ...

    01:09.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)
    04:00.0 Network controller: Broadcom Corporation BCM4312 802.11a/b/g (rev 01)

    A recent computer will have lots of connections to the PCI bus, which is why I
    snipped out a number of entries from my machine. The PCI wireless device here is
    the BCM4312. If you do not see your wireless device in this list, you should go
    back to step (a). Remember that some built-in devices may be attached to the USB
    bus. For PCI, the above list does not provide all the information. Next, you
    should enter the command '/sbin/lspci -n'. The list will be equally long and
    look like:

    00:00.0 0500: 10de:0547 (rev a2)
    00:01.0 0601: 10de:0548 (rev a2)

    -- snip --

    01:09.4 0880: 1180:0852 (rev 12)
    04:00.0 0280: 14e4:4312 (rev 01)

    At this point, you need to match the bus number (the numbers at the front that
    look like 04:00.0) from the first list to the second. These are the PCI vendor
    and product ID codes. For my BCM4312, these data are 14e4:4312. When you post a
    request for help, include both lines.

    (c) If you cannot find a wireless device in either step (a) or step (b), your
    hardware is broken. It may be the motherboard or the wireless device. In either
    case, until the device is seen by either lsusb or lspci, we will not be able to
    help you.

    (3) Once you know what your hardware is, the next step is to see what the kernel
    has to say about it. The command for this is 'dmesg | less'. Less will allow you
    to page through the output. To learn more about less, you can enter the command
    'man less'. To exit the man page, or less itself, type the character q. A space
    will move one page down in the text, as will the "pg dn" key. You may move one
    line at a time with the keyboard arrow keys. As you go through the dmesg output,
    look for any mention of your hardware. On my system, it takes 473 lines of
    output before the line "b43-phy0: Broadcom 4311 WLAN found" appears. In
    particular, you should look for any lines that indicate that you are missing
    firmware. Note that firmware, which runs on the microprocessor in the device, is
    distinct from a driver, which runs on the host CPU. If you have missing
    firmware, check online to learn how to install firmware for your device.

    (4) Once you have firmware in place, next check for a wireless device by using
    the command '/usr/sbin/iwconfig'. For each interface that does not support
    wireless, you will get a line that looks like "eth0 no wireless extensions."
    There will be lines for lo, the loopback pseudo-device, and for eth0 if you have
    a wired interface. There may also be one for wmaster0 - ignore it. What you are
    looking for is one like this:

    wlan1 IEEE 802.11bg ESSID:"lwfdjf_rad"
    Mode:Managed Frequency:2.412 GHz Access Point: 00:1A:70:46:BA:B1
    Bit Rate=54 Mb/s Tx-Power=27 dBm
    Retry min limit:7 RTS thrff Fragment thr=2352 B
    Power Managementff
    Link Quality=72/100 Signal level:-35 dBm
    Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
    Tx excessive retries:0 Invalid misc:0 Missed beacon:0

    The entries will be different - the above one is for a wireless interface that
    is working. What can we learn here? If the ESSID has a value, this means that
    your interface has associated with your access point, the same for a MAC address
    following the Access Point label. Those kind of details are not important now.
    The main point is that any output here requires the driver to be loaded and
    functioning. This fact should be reported.

    (5) The next step is to determine if your adapter is receiving any broadcasts
    from your AP. To do this enter the command 'sudo /usr/sbin/iwlist scan'. The
    command needs to be run as root, thus the sudo, and it will prompt for the root
    password. The results should be like this:

    wlan1 Scan completed :
    Cell 01 - Address: 00:1A:70:46:BA:B1
    ESSID:"lwfdjf_rad"
    Mode:Master
    Channel:1
    Frequency:2.412 GHz (Channel 1)
    Quality=72/100 Signal level:-35 dBm
    Encryption keyn
    IE: WPA Version 1
    Group Cipher : TKIP
    Pairwise Ciphers (1) : TKIP
    Authentication Suites (1) : PSK
    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
    24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
    12 Mb/s; 48 Mb/s
    Extra:tsf=00000067932c618a
    Extra: Last beacon: 56ms ago

    Whatever results from that command, report it as well.

    (6) Once all the steps above have been successfully completed, getting your
    wireless to work is a matter of configuration. At least part of this is done
    with YaST / Network Services / Network Devices. One of the easiest things to do
    is delete the wireless device from this list and reboot. When the system
    restarts, it should find your now working wireless and give you a chance to
    configure it.

  2. #2
    Join Date
    Jun 2008
    Location
    Kansas City Area, Missouri, USA
    Posts
    7,235

    Default Fixing the SPROM programming error for BCM4306/3

    A large number of PCI-based BCM4306 rev 3 devices have an SPROM programming error in the Bluetooth coexistence mode that completely kills the radio. I have been fixing these for people individually, but have decided to post the solution and let each user fix their own. The first step is to acquire and build the b43 tools. You will need packages for git, make, and gcc. Issue the following commands:

    git clone http://git.bu3sch.de/git/b43-tools.git
    cd b43-tools/ssb_sprom
    make

    Once the above steps are completed without error, issue the following commands:

    SPROM=$(find /sys -name ssb_sprom)
    echo $SPROM
    sudo cat $SPROM > sprom.old

    The second of these commands should echo something like "/sys/devices/pci0000:00/0000:00:0b.0/ssb_sprom" - the numbers will depend on which buss your bcm43xx device is attached.

    The next step is to read out the current contents of the SPROM with the command:

    ./ssb-sprom -i sprom.old -P

    A lot of info will be listed. We are only interested in the section that looks like:

    SPROM(0x38, High 16 bits of Boardflags) = 0xFFFF
    SPROM(0x72, Low 16 bits of Boardflags) = 0x4A49
    SPROM(0x4A, MAC address for 802.11b/g) = 00:1a:73:6b:28:5a

    In fact, only the low 16 bits of the boardflags are important. What we need to do is make the least-significant bit be zero.

    IMPORTANT: If the last digit of the low-order boardflags is NOT 1, 3, 5, 7, 9, B, D, or F, QUIT RIGHT NOW. You do not have this problem. For each of the odd numbers, decrease it by 1 to make it even. For the case above, the 9 has to become 8. This change is done by the following command:

    ./ssb-sprom -i sprom.old -o sprom.new --bfl 0x4A48

    You can verify the results with the commannd

    ./ssb-sprom -i sprom.new -P

    You can load the new SPROM contents into the device with the following sequence:

    SPROM=$(find /sys -name ssb_sprom)
    echo $SPROM
    sudo cp sprom.new $SPROM

    The third command should not print anything.

    After you have tested the device and it works now but didn't before, please issue the following command:

    /sbin/lspci -nnv

    Your BCM43xx wireless device will contain lines that look like:

    04:00.0 Network controller [0280]: Broadcom Corporation BCM94311MCG wlan mini-PCI [14e4:4311] (rev 02)
    Subsystem: Hewlett-Packard Company Device [103c:137c]

    Please PM me with that information and a note saying that the BT SPROM fix was needed for your card. That way we will be able to modify the kernel source to do this fix dynamically rather than by modifying the SPROM contents.

    Larry
    Last edited by lwfinger; 29-Sep-2008 at 13:17. Reason: The URL, not the title, is needed.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •