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 Licensees protection thereof is an essential condition to Licensees 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 Broadcoms 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 BROADCOMS 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 Broadcoms 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.