diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/LICENSE.broadcom_brcm80211 b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/LICENSE.broadcom_brcm80211
new file mode 100644
index 0000000..e2cf868
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/LICENSE.broadcom_brcm80211
@@ -0,0 +1,205 @@
+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 as provided by Broadcom, and only for use with a Broadcom
+Product.
+
+2.2.	Restriction on Modification.  Licensee may not make any modifications
+to the Software.
+
+2.3.	Restriction on Distribution.  Licensee shall only distribute the
+Software under the terms of this Agreement and a copy of this Agreement
+accompanies such distribution.
+
+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; provided however, the foregoing shall not apply in case the Agreement
+is terminated.
+
+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.  No license is granted
+to Licensee in any human readable code of the Software (source code). Licensee
+shall not (i) use, license, sell or otherwise distribute the Software except as
+provided in this Agreement, (ii) attempt to modify in any way, 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.	Export Regulations. YOU UNDERSTAND AND AGREE THAT THE SOFTWARE IS
+SUBJECT TO UNITED STATES AND OTHER APPLICABLE EXPORT-RELATED LAWS AND
+REGULATIONS AND THAT YOU MAY NOT EXPORT, RE-EXPORT OR TRANSFER THE SOFTWARE OR
+ANY DIRECT PRODUCT OF THE SOFTWARE EXCEPT AS PERMITTED UNDER THOSE LAWS.
+WITHOUT LIMITING THE FOREGOING, EXPORT, RE-EXPORT OR TRANSFER OF THE SOFTWARE
+TO CUBA, IRAN, NORTH KOREA, SUDAN AND SYRIA IS PROHIBITED.
+
+7.2	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.3.	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.4.	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.5.	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.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.
+
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.bin b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.bin
new file mode 100644
index 0000000..84ab5b0
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.bin
Binary files differ
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.txt b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.txt
new file mode 100644
index 0000000..ea4f648
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware/brcmfmac43430-sdio.txt
@@ -0,0 +1,66 @@
+# NVRAM file for BCM943430WLPTH
+# 2.4 GHz, 20 MHz BW mode
+
+# The following parameter values are just placeholders, need to be updated.
+manfid=0x2d0
+prodid=0x0727
+vendid=0x14e4
+devid=0x43e2
+boardtype=0x0727
+boardrev=0x1101
+boardnum=22
+macaddr=00:90:4c:c5:12:38
+sromrev=11
+boardflags=0x00404201
+boardflags3=0x08000000
+xtalfreq=37400
+nocrc=1
+ag0=255
+aa2g=1
+ccode=ALL
+
+pa0itssit=0x20
+extpagain2g=0
+#PA parameters for 2.4GHz, measured at CHIP OUTPUT
+pa2ga0=-168,7161,-820
+AvVmid_c0=0x0,0xc8
+cckpwroffset0=5
+
+# PPR params
+maxp2ga0=84
+txpwrbckof=6
+cckbw202gpo=0
+legofdmbw202gpo=0x66111111
+mcsbw202gpo=0x77711111
+propbw202gpo=0xdd
+
+# OFDM IIR :
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+# PAPD mode:
+papdmode=1
+papdvalidtest=1
+pacalidx2g=42
+papdepsoffset=-22
+papdendidx=58
+
+# LTECX flags
+ltecxmux=0
+ltecxpadnum=0x0102
+ltecxfnsel=0x44
+ltecxgcigpio=0x01
+
+il0macaddr=00:90:4c:c5:12:38
+wl0id=0x431b
+
+deadman_to=0xffffffff
+# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG
+muxenab=0x1
+# CLDO PWM voltage settings - 0x4 - 1.1 volt
+#cldo_pwm=0x4
+
+#VCO freq 326.4MHz
+spurconfig=0x3 
+
+edonthd20l=-75
+edoffthd20ul=-80
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_git.bbappend b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_git.bbappend
new file mode 100644
index 0000000..20ef05f
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_git.bbappend
@@ -0,0 +1,33 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+LICENSE_append = " & Firmware-broadcom_brcm80211"
+
+LIC_FILES_CHKSUM_append = " file://${WORKDIR}/LICENSE.broadcom_brcm80211;md5=8cba1397cda6386db37210439a0da3eb"
+
+NO_GENERIC_LICENSE[Firmware-broadcom_brcm80211] = "LICENSE.broadcom_brcm80211"
+
+SRC_URI_append = " \
+    file://brcmfmac43430-sdio.bin \
+    file://brcmfmac43430-sdio.txt \
+    file://LICENSE.broadcom_brcm80211 \
+    "
+
+do_install_append() {
+    cp ${WORKDIR}/brcmfmac43430-sdio.* ${D}/lib/firmware/brcm/
+    cp ${WORKDIR}/LICENSE.broadcom_brcm80211 ${D}/lib/firmware/
+}
+
+PACKAGES =+ "${PN}-brcm43430 ${PN}-brcm43430-license"
+
+LICENSE_${PN}-brcm43430 = "Firmware-broadcom_brcm80211"
+FILES_${PN}-brcm43430-license = "/lib/firmware/LICENSE.broadcom_brcm80211"
+FILES_${PN}-brcm43430 = " \
+    /lib/firmware/brcm/brcmfmac43430-sdio.bin \
+    /lib/firmware/brcm/brcmfmac43430-sdio.txt \
+    "
+
+RDEPENDS_${PN}-brcm43430 += "${PN}-brcm43430-license"
+
+ALTERNATIVE_LINK_NAME[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac-sdio.bin"
+ALTERNATIVE_TARGET_linux-firmware-brcm43430[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac43430-sdio.bin"
+ALTERNATIVE_linux-firmware-brcm43430 = "brcmfmac-sdio.bin"
