Install wireless driver for bcm43225

Hey there,

I tried to install the wireless driver for openSuse 12.3. I googled a little, and first it said, that the driver for this chip should be included in the kernel, BUT if it doesn’t work i have to install the driver from broadcom.
I foud out that I first have to find out what kernel is installed, (default or desktop) and then have to install broadcom-wl and depending on the kernel broadcom-wl-kmp-kernel or broadcom-wl-kmp-default.

After installing broadcom-wl i couldn’t log in anymore, the system started up to the login screen, then I put in my password and then the loginscreen disappaers (The wallpaper stays) but this KDE-loading-thing doesn’t show up.
I noticed, that with broadcom-wl installed the wirless-indicator-led on my laptop is on, so it seems, that it recognizes the chip/driver.

After uninstalling broadcom-wl again with

zypper --no-refresh remove broadcom-wl

I could login again, but obviously still no wirless.

Did I something wrong? Did I miss something? What is the right way to install it?

Thanks for the help.

https://forums.opensuse.org/content/157-broadcom-firmware-needed-b43-but-i-have-no-network-easierwork-around.html

Caf4926,

That workaround looks effective. However, my 13.1-final install will not complete. It hangs (permanently) on the “check installation” step in the initial install. The loading cursor continues to spin, and the only button illuminated (help) cannot be clicked. The message (in the white area) reads “Preparing the initial system configuration…”. (in auto config mode, it hangs with progress bars at 3% and 11%) This bug appears to be documented as Bug 835277

An experienced friend of mine and I have an educated guess that the installation hangs because the installer is attempting to configure the wireless network card driver/firmware.

P.S. The card is a bcm43225 and the system architecture is x86_64. I attempted both 64-bit and 32-bit installation discs with the same result.

If that’s the cause, maybe you can turn it off in the BIOS settings or via a switch?

Bluecanary1 wrote:

> That workaround looks effective. However, my 13.1-final install will not
> complete. It hangs (permanently) on the “check installation” step in the
> initial install. The loading cursor continues to spin, and the only
> button illuminated (help) cannot be clicked. The message (in the white
> area) reads “Preparing the initial system configuration…”. (in auto
> config mode, it hangs with progress bars at 3% and 11%) This bug appears

I (and several others) had this problem.
This seems to happen because the package kernel-firmware is not
automatically selected for installation (it did in one computer but not in
another).
When you install, after the partitioner step you get a final list of things
that will be done. Go to the software section and select that missing
package.
Hopefully it will not freeze at the autoconfig step.

-G-

Neither An active network nor AFAIK the correct firmware is required for install or auto config to work.

For the bcm43225 card, which firmware would that be? And under what category? There’s tons of packages there. I’ll look under where my common sense leads me, but something tells me it’ll be a little cryptic.

Auto or manual config, neither work. They both hang (permanently). And of course neither or required, in theory. But the install is still halting.

Try booting level 3 and see if it will complete…
https://forums.opensuse.org/blogs/jdmcdaniel3/how-start-opensuse-12-3-grub-2-into-run-level-3-112/

Solved it. Took some reading through bug reports, but found out that for this hardware configuration, the “kernel-firmware” package isn’t marked for installation by default. I marked the package and the install went smoothly from then on. After login, the wireless worked out-of-box.

During install, I also connected an ethernet cable to update the online repositories. Not sure if that did any extra magic, but the first part got me past the halting install issue.

Bluecanary1 wrote:

> For the bcm43225 card, which firmware would that be? And under what
> category? There’s tons of packages there. I’ll look under where my
> common sense leads me, but something tells me it’ll be a little cryptic.

I did not have to select any driver. It must have been selected
automatically when seetting kernel-firmware for installation.

When you reach this step:
http://en.opensuse.org/index.php?title=File:Instoverview_13.1.png&filetimestamp=20131105140102

Click on “Software”. That takes you to the package selection. Please look
around there, there is a search option somewhere. Look for “kernel-firmware”
and select it.

The driver (b43) is included with the kernel package.

But AFAIK the required firmware is not in kernel-firmware.
For the driver to work, you would need to use b43-fwcutter to get the firmware, or install this package:
PackMan :: Informationen zum Paket b43-firmware

See also here:
b43 - Linux Wireless

Actually,
Without more information from the OP to know exactly what is being attempted, it’s difficult to recommend actual solutions.

The recommendation here to use fwcutter and Packman drivers is not likely applicable. AFAIK it’s useful <only> when attempting to use the “reverse-engineered” set of drivers, is likely totally irrelevant to any drivers which may already be distributed through the mainline kernel, the Open Sourced “official” Broadcom drivers or if a supported proprietary driver should exist.

Although I’m still troubleshooting my own br43xx NIC, based on my research I’ve listed the available options.
http://forums.opensuse.org/english/get-technical-help-here/wireless/491804-43xx-sticky-incomplete-missing-important-information.html#post2597392

So, it’s important to know which on the list is being attempted…

TSU

I wasn’t talking about any driver. I was talking about the b43 firmware, which is required and has to be installed manually to make the in-kernel b43 driver work.

Of course there’s also the proprietary broadcom-wl driver on Packman that may work better, but that doesn’t need additional firmware OTOH AFAIK.

Hmmmmm…
I’ll look into this further, but I’ve read that the fwcutter is used only when extracting firmware from a Windows source.
If that is true, then I’d be surprised if it’s required to access anything that is distributed through the Linux kernel.

Since Larry used the fwcutter extensively working on the reverse engineered br43xx drivers(In that case makes perfect sense), he’d know better exactly what it does and where it’s used.
I’ve read that the source used for the mainline Linux kernel is completely different source.

TSU

fwcutter is used to extract the firmware from a binary driver. And the package b43-fwcutter contains a script

If that is true, then I’d be surprised if it’s required to access anything that is distributed through the Linux kernel.

Yes it it. Have look at b43 - Linux Wireless .
The firmware is needed and cannot be distributed with the kernel for some reasons (legal ones I’d believe).

Since Larry used the fwcutter extensively working on the reverse engineered br43xx drivers(In that case makes perfect sense), he’d know better exactly what it does and where it’s used.

With reverse engineered br43xx drivers you mean b43?
Again, fwcutter extracts the firmware (i.e. the “OS” of the network card, that is needed for the card to work even with b43) out of the binary driver.
The broadcom wl driver has this firmware built in AFAIK.

I’ve read that the source used for the mainline Linux kernel is completely different source.

Of course the open source b43 driver from the Linux kernel uses a completely different source than the closed source, proprietary broadcom driver.
Where would they have gotten the source from?

You’ve referenced the “reverse engineered drivers” from wireless.kernel.org so as stated on the page fwcutter is required <for the drivers referenced on this page>.

I’ve yet to determine whether fwcutter is required for drivers which are not referenced on this page, my inclination has been that it shouldn’t be (but could be wrong).

If you look at the Arch Linux wiki I referenced in link I gave above, it’s clear that the drivers from the page you referenced “stand alone” and drivers from other source are created differently so it’s not so certain fwcutter would be relevant to those. My list of different sources for Broadcom drivers re-describes the 3 types of drivers described in the Arch Linux wiki and adds two others I’ve come across in my investigation.

BTW - I took a look at licenses Broadcom attached to the STA driver and assume it’s similar to the license associated with the reverse engineered drivers. The “proprietary” part is very similar to a MIT license. In all cases Broadcom has “open sourced” the code so that is not the issue. But the Broadcom license looks like a MIT style license which does not prevent modification and re-distribution of the code but contains the critical part where the person who modifies assumes full shared responsibility and potential liability for any damage rather than GPL-style which states that software is used entirely at the User’s own risk with no liability to the owners of the code.

So, although I’m speculating a bit I’m guessing that it’s likely if someone <really> wanted to modify and re-distribute the code, it’s likely that the Broadcom code could be distributed “without modification” but also with additional code which could be released GPL-style. This would satisfy both the Broadcom issue that the code be distributed “without modification” so there is no shared liability, and the GPL license should protect the owners of the code that distributes the fwcutter script or result.

So, although a lawyer should have the final say maybe this whole issue of making people run fwcutter themselves is necessary.

TSU

fwcutter itself is not required.
Again, fwcutter is only a tool to extract the firmware out of the Windows driver.
You need the firmware to get the card working.
The driver (doesn’t matter which one) has to upload the firmware to the card to get it working.

And since it’s not allowed to distribute the firmware with the kernel, you have to get it in a different way, i.e. either with fwcutter or by installing that b43-firmware package.

I’ve yet to determine whether fwcutter is required for drivers which are not referenced on this page, my inclination has been that it shouldn’t be (but could be wrong).

No.
It’s actually called “b43-fwcutter”. It’s only usable for extracting the firmware for b43xxx devices.

And the broadcom-wl (or call it STA if you want) does not need it AFAIK.

If you look at the Arch Linux wiki I referenced in link I gave above, it’s clear that the drivers from the page you referenced “stand alone” and drivers from other source are created differently so it’s not so certain fwcutter would be relevant to those. My list of different sources for Broadcom drivers re-describes the 3 types of drivers described in the Arch Linux wiki and adds two others I’ve come across in my investigation.

Of course they are created differently.
The drivers from the page I referenced (b43 and b43legacy) are included in the kernel. And need extra firmware, which you can get either by using fwcutter or by installing the b43-firmware package.

Then there’s the STA driver by Broadcom. That’s packaged as broadcom-wl on Packman. And this one is closed-source.

To be continued… the text was too long.

BTW - I took a look at licenses Broadcom attached to the STA driver and assume it’s similar to the license associated with the reverse engineered drivers. The “proprietary” part is very similar to a MIT license. In all cases Broadcom has “open sourced” the code so that is not the issue. But the Broadcom license looks like a MIT style license which does not prevent modification and re-distribution of the code but contains the critical part where the person who modifies assumes full shared responsibility and potential liability for any damage rather than GPL-style which states that software is used entirely at the User’s own risk with no liability to the owners of the code.

So, although I’m speculating a bit I’m guessing that it’s likely if someone <really> wanted to modify and re-distribute the code, it’s likely that the Broadcom code could be distributed “without modification” but also with additional code which could be released GPL-style.

???
The Broadcom driver is closed-source! There is no source code available.
What you mean is the source code for the kernel module which loads the binary driver I think.

And the license of the binary driver is this:

SOFTWARE LICENSE AGREEMENT


Unless you and Broadcom Corporation (“Broadcom”) execute a separate written software license agreement governing use of the accompanying software, this software is licensed to you under the terms of this Software License Agreement (“Agreement”).  




ANY USE, REPRODUCTION OR DISTRIBUTION OF THE SOFTWARE CONSTITUTES YOUR ACCEPTANCE OF THIS AGREEMENT.




1.	DEFINITIONS.




1.1.	“Broadcom Product” means any of the proprietary integrated circuit product(s) sold by Broadcom with which the Software was designed to be used, or their successors.




1.2.	“Licensee” means you or if you are accepting on behalf of an entity then the entity and its affiliates exercising rights under, and complying with all of the terms of this Agreement.




1.3.	“Software” shall mean that software made available by Broadcom to Licensee in binary code form with this Agreement.




2.	LICENSE GRANT; OWNERSHIP




2.1.	License Grants.  Subject to the terms and conditions of this Agreement, Broadcom hereby grants to Licensee a non-exclusive, non-transferable, royalty-free license (i) to use and integrate the Software in conjunction with any other software; and (ii) to reproduce and distribute the Software complete, unmodified and only for use with a Broadcom Product.




2.2.	Restriction on Modification.  If and to the extent that the Software is designed to be compliant with any published communications standard (including, without limitation, DOCSIS, HomePNA, IEEE, and ITU standards), Licensee may not make any modifications to the Software that would cause the Software or the accompanying Broadcom Products to be incompatible with such standard.  




2.3.	Restriction on Distribution.  Licensee shall only distribute the Software (a) under the terms of this Agreement and a copy of this Agreement accompanies such distribution, and (b) agrees to defend and indemnify Broadcom and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or distribution of any and all Software by the Licensee except as contemplated herein. 




2.4.	Proprietary Notices.  Licensee shall not remove, efface or obscure any copyright or trademark notices from the Software.  Licensee shall include reproductions of the Broadcom copyright notice with each copy of the Software, except where such Software is embedded in a manner not readily accessible to the end user.  Licensee acknowledges that any symbols, trademarks, tradenames, and service marks adopted by Broadcom to identify the Software belong to Broadcom and that Licensee shall have no rights therein.




2.5.	Ownership.  Broadcom shall retain all right, title and interest, including all intellectual property rights, in and to the Software.  Licensee hereby covenants that it will not assert any claim that the Software created by or for Broadcom infringe any intellectual property right owned or controlled by Licensee.




2.6.	No Other Rights Granted; Restrictions.  Apart from the license rights expressly set forth in this Agreement, Broadcom does not grant and Licensee does not receive any ownership right, title or interest nor any security interest or other interest in any intellectual property rights relating to the Software, nor in any copy of any part of the foregoing.  Licensee shall not (i) use, license, sell or otherwise distribute the Software except as provided in this Agreement, (ii) attempt to reverse engineer, decompile or disassemble any portion of the Software; or (iii) use the Software or other material in violation of any applicable law or regulation, including but not limited to any regulatory agency, such as FCC, rules.




3.	NO WARRANTY OR SUPPORT




3.1.	No Warranty. THE SOFTWARE IS OFFERED “AS IS,” AND BROADCOM GRANTS AND LICENSEE RECEIVES NO WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR CONDUCT WITH LICENSEE, OR OTHERWISE.  BROADCOM SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THE SOFTWARE OR ANY UPGRADES TO OR DOCUMENTATION FOR THE SOFTWARE.  WITHOUT LIMITATION OF THE ABOVE, BROADCOM GRANTS NO WARRANTY THAT THE SOFTWARE IS ERROR-FREE OR WILL OPERATE WITHOUT INTERRUPTION, AND GRANTS NO WARRANTY REGARDING ITS USE OR THE RESULTS THEREFROM INCLUDING, WITHOUT LIMITATION, ITS CORRECTNESS, ACCURACY OR RELIABILITY.




3.2.	No Support.  Nothing in this agreement shall obligate Broadcom to provide any support for the Software. Broadcom may, but shall be under no obligation to, correct any defects in the Software and/or provide updates to licensees of the Software.  Licensee shall make reasonable efforts to promptly report to Broadcom any defects it finds in the Software, as an aid to creating improved revisions of the Software.




3.3.	Dangerous Applications.  The Software is not designed, intended, or certified for use in components of systems intended for the operation of weapons, weapons systems, nuclear installations, means of mass transportation, aviation, life-support computers or equipment (including resuscitation equipment and surgical implants), pollution control, hazardous substances management, or for any other dangerous application in which the failure of the Software could create a situation where personal injury or death may occur.  Licensee understands that use of the Software in such applications is fully at the risk of Licensee.




4.	TERM AND TERMINATION




4.1.	Termination.  This Agreement will automatically terminate if Licensee fails to comply with any of the terms and conditions hereof. In such event, Licensee must destroy all copies of the Software and all of its component parts.




4.2.	Effect Of Termination.  Upon any termination of this Agreement, the rights and licenses granted to Licensee under this Agreement shall immediately terminate.




4.3.	Survival.  The rights and obligations under this Agreement which by their nature should survive termination will remain in effect after expiration or termination of this Agreement.




5.	CONFIDENTIALITY




5.1.	Obligations.  Licensee acknowledges and agrees that any documentation relating to the Software, and any other information (if such other information is identified as confidential or should be recognized as confidential under the circumstances) provided to Licensee by Broadcom hereunder (collectively, “Confidential Information”) constitute the confidential and proprietary information of Broadcom, and that Licensee’s protection thereof is an essential condition to Licensee’s use and possession of the Software.  Licensee shall retain all Confidential Information in strict confidence and not disclose it to any third party or use it in any way except under a written agreement with terms and conditions at least as protective as the terms of this Section.  Licensee will exercise at least the same amount of diligence in preserving the secrecy of the Confidential Information as it uses in preserving the secrecy of its own most valuable confidential information, but in no event less than reasonable diligence.  Information shall not be considered Confidential Information if and to the extent that it: (i) was in the public domain at the time it was disclosed or has entered the public domain through no fault of Licensee; (ii) was known to Licensee, without restriction, at the time of disclosure as proven by the files of Licensee in existence at the time of disclosure; or (iii) becomes known to Licensee, without restriction, from a source other than Broadcom without breach of this Agreement by Licensee and otherwise not in violation of Broadcom’s rights.




5.2.	Return of Confidential Information.  Notwithstanding the foregoing, all documents and other tangible objects containing or representing Broadcom Confidential Information and all copies thereof which are in the possession of Licensee shall be and remain the property of Broadcom, and shall be promptly returned to Broadcom upon written request by Broadcom or upon termination of this Agreement.




6.	LIMITATION OF LIABILITY
TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ANY OF BROADCOM’S LICENSORS HAVE ANY LIABILITY FOR ANY INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER FOR BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, ARISING OUT OF THIS AGREEMENT, INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will Broadcom’s liability whether in contract, tort (including negligence), or otherwise, exceed the amount paid by Licensee for Software under this Agreement.  THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY.




7.	MISCELLANEOUS




7.1.	Assignment. This Agreement shall be binding upon and inure to the benefit of the parties and their respective successors and assigns, provided, however that Licensee may not assign this Agreement or any rights or obligation hereunder, directly or indirectly, by operation of law or otherwise, without the prior written consent of Broadcom, and any such attempted assignment shall be void.  Notwithstanding the foregoing, Licensee may assign this Agreement to a successor to all or substantially all of its business or assets to which this Agreement relates that is not a competitor of Broadcom.




7.2.	Governing Law; Venue.  This Agreement shall be governed by the laws of California without regard to any conflict-of-laws rules, and the United Nations Convention on Contracts for the International Sale of Goods is hereby excluded.  The sole jurisdiction and venue for actions related to the subject matter hereof shall be the state and federal courts located in the County of Orange, California, and both parties hereby consent to such jurisdiction and venue.




7.3.	Severability.  All terms and provisions of this Agreement shall, if possible, be construed in a manner which makes them valid, but in the event any term or provision of this Agreement is found by a court of competent jurisdiction to be illegal or unenforceable, the validity or enforceability of the remainder of this Agreement shall not be affected if the illegal or unenforceable provision does not materially affect the intent of this Agreement.  If the illegal or unenforceable provision materially affects the intent of the parties to this Agreement, this Agreement shall become terminated.




7.4.	Equitable Relief.  Licensee hereby acknowledges that its breach of this Agreement would cause irreparable harm and significant injury to Broadcom that may be difficult to ascertain and that a remedy at law would be inadequate.  Accordingly, Licensee agrees that Broadcom shall have the right to seek and obtain immediate injunctive relief to enforce obligations under the Agreement in addition to any other rights and remedies it may have. 




7.5.	Export Regulations. The parties agree that they shall each comply, at their own expense, with the U.S. Foreign Corrupt Practices Act and all  import and export laws, restrictions, national security controls and regulations of the United States and any applicable foreign agency or authority.  The parties shall not import, export or re-export, or authorize the export or re-export of the Software or any other product, technology, or information that it obtains or learns hereunder, or any copy or direct product thereof, in violation of any of such laws, restrictions, or regulations or without any license or approval required thereunder.  Any and all obligations of the parties to provide the Software or any other product, technology, or information hereunder shall be subject in all respects to such laws, restrictions, and regulations.




7.6.	Waiver.  The waiver of, or failure to enforce, any breach or default hereunder shall not constitute the waiver of any other or subsequent breach or default.




7.7.	Entire Agreement.  This Agreement sets forth the entire Agreement between the parties and supersedes any and all prior proposals, agreements and representations between them, whether written or oral concerning the Software.  This Agreement may be changed only by mutual agreement of the parties in writing. 

How is this compatible to the GPL?

This would satisfy both the Broadcom issue that the code be distributed “without modification” so there is no shared liability, and the GPL license should protect the owners of the code that distributes the fwcutter script or result.

Again, there is no source code available for the Broadcom driver. It is closed-source, a binary blob, proprietary.

So, although a lawyer should have the final say maybe this whole issue of making people run fwcutter themselves is necessary.

You don’t have to be a lawyer to know that they cannot include the binary-only closed-source driver into the kernel.
And if the firmware was allowed to be shipped with the kernel, don’t you think they would already do it? In the kernel-firmware package?

And the firmware is directly embedded into the binary driver. Extracting and distributing it separately would be a modification, which is explicitely prohibited in the license.
The license only grants the right “to reproduce and distribute the Software complete, unmodified and only for use with a Broadcom Product”
Therefore the user has to use fwcutter to get the firmware out of the binary driver.

On 11/26/2013 12:52 PM, wolfi323 wrote:
>
> tsu2;2602304 Wrote:
>> Hmmmmm…
>> I’ll look into this further, but I’ve read that the fwcutter is used
>> only when extracting firmware from a Windows source.
> fwcutter is used to extract the firmware from a binary driver. And the
> package b43-fwcutter contains a script
>
>> If that is true, then I’d be surprised if it’s required to access
>> anything that is distributed through the Linux kernel.
> Yes it it. Have look at ‘b43 - Linux Wireless’
> (http://wireless.kernel.org/en/users/Drivers/b43#firmware) .
> The firmware is needed and cannot be distributed with the kernel for
> some reasons (legal ones I’d believe).
>
>>
>> Since Larry used the fwcutter extensively working on the reverse
>> engineered br43xx drivers
(In that case makes perfect sense), he’d know
>> better exactly what it does and where it’s used.
> With reverse engineered br43xx drivers you mean b43?
> Again, fwcutter extracts the firmware (i.e. the “OS” of the network
> card, that is needed for the card to work even with b43) out of the
> binary driver.
> The broadcom wl driver has this firmware built in AFAIK.
>
>> I’ve read that the source used for the mainline Linux kernel is
>> completely different source.
> Of course the open source b43 driver from the Linux kernel uses a
> completely different source than the closed source, proprietary broadcom
> driver.
> Where would they have gotten the source from?

I guess I need to go through this once more:

The reverse-engineered drivers for Broadcom devices (b43 and b43legacy) need
external firmware; however, Broadcom refuses to allow redistribution of that
firmware. As a result, openSUSE cannot include that firmware in its
distribution. The workaround is fwcutter, which extracts the necessary firmware
from some binary driver created and distributed by Broadcom. This external
driver could be for Windows; however, most of them are MIPS drivers created for
wireless routers. The script /usr/sbin/install_bcm43xx_firmware downloads one of
the foreign drivers, and invokes fwcutter to extract the firmware.

As a sideline, any web site that provides b43 firmware in the form of .fw files
is violating Broadcom’s explicit statements regarding redistribution of their
firmware. If you don’t get it by running fwcutter on your machine, it is not
legal.

The proprietary driver from Broadcom (wl) had the firmware built into the
driver. It needs no external files.

The other driver for Broadcom devices is brcmsmac, which is licensed under GPL.
It also needs external firmware; however, its authors work for Broadcom and they
have access to the driver and firmware sources. This firmware is distributed
(legally) in the linux-firmware git repo.