User Tools

Site Tools


en:users:drivers:brcm80211

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:users:drivers:brcm80211 [2015/09/18 21:20]
Rafał Miłecki [brcmfmac] Add devices with support queued for 4.4
en:users:drivers:brcm80211 [2024/03/20 10:46] (current)
Peter Robinson [Table]
Line 40: Line 40:
 |BCM43570 |14e4:43d9 | ::: | |BCM43570 |14e4:43d9 | ::: |
 |BCM4358 ​ |14e4:43e9 | Supported in 4.2+ | |BCM4358 ​ |14e4:43e9 | Supported in 4.2+ |
 +|BCM4359 ​ |14e4:43ef | Queued for 4.5+ |
 |BCM43602 |14e4:43ba | Supported in 3.17+ | |BCM43602 |14e4:43ba | Supported in 3.17+ |
 |BCM43602 |14e4:43bb | Supported in 3.19+, 2 GHz device | |BCM43602 |14e4:43bb | Supported in 3.19+, 2 GHz device |
 |BCM43602 |14e4:43bc | Supported in 3.19+, 5 GHz device | |BCM43602 |14e4:43bc | Supported in 3.19+, 5 GHz device |
 |BCM43602 |14e4:aa52 | Supported in 4.2+, "​raw"​ device | |BCM43602 |14e4:aa52 | Supported in 4.2+, "​raw"​ device |
-|BCM4365 ​ |14e4:43ca | Queued for 4.4+ | +|BCM4365 ​ |14e4:43ca | Supported in 4.4+ | 
-|BCM4365 ​ |14e4:43cb | Queued for 4.4+, 2 GHz device | +|BCM4365 ​ |14e4:43cb | Supported in 4.4+, 2 GHz device | 
-|BCM4365 ​ |14e4:43cc | Queued for 4.4+, 5 GHz device | +|BCM4365 ​ |14e4:43cc | Supported in 4.4+, 5 GHz device | 
-|BCM4366 ​ |14e4:43c3 | Queued for 4.4+ | +|BCM4366 ​ |14e4:4365 | Queued for 4.6+ | 
-|BCM4366 ​ |14e4:43c4 | Queued for 4.4+, 2 GHz device | +|BCM4366 ​ |14e4:43c3 | Supported in 4.4+ | 
-|BCM4366 ​ |14e4:43c5 | Queued for 4.4+, 5 GHz device |+|BCM4366 ​ |14e4:43c4 | Supported in 4.4+, 2 GHz device | 
 +|BCM4366 ​ |14e4:43c5 | Supported in 4.4+, 5 GHz device |
  
  
Line 55: Line 57:
 ^ Name      ^ Device ID  ^ Notes               ^ ^ Name      ^ Device ID  ^ Notes               ^
 | BCM4329 ​  | 0x4329 ​    ​| ​                    | | BCM4329 ​  | 0x4329 ​    ​| ​                    |
-| BCM4330 ​  | 0x4330 ​    ​| ​                    ​+| BCM4330 ​  | 0x4330 ​    ​| ​Supported in 3.3+   
-| BCM4334 ​  | 0x4334 ​    ​| ​                    ​+| BCM4334 ​  | 0x4334 ​    ​| ​Supported in 3.6+   
-|BCM43340 |0xa94c |Supported in 4.0+ | +| BCM43340 ​ | 0xa94c ​    ​| Supported in 4.0+   ​
-|BCM43341 |0xa94d |Supported in 4.0+ | +| BCM43341 ​ | 0xa94d ​    ​| Supported in 4.0+   ​
-| BCM43241 ​ | 0x4324 ​    ​| ​                    ​+| BCM43241 ​ | 0x4324 ​    ​| ​Supported in 3.7+   
-| BCM4335 ​  | 0x4335 ​    ​| ​                    ​|+| BCM4335 ​  | 0x4335 ​    ​| ​Supported in 3.10+  ​|
 | BCM4339 ​  | 0x4335 ​    | Supported in 3.13+  | | BCM4339 ​  | 0x4335 ​    | Supported in 3.13+  |
 | BCM43362 ​ | 0xA962 ​    | Supported in 3.14+  | | BCM43362 ​ | 0xA962 ​    | Supported in 3.14+  |
Line 66: Line 68:
 | BCM43455 ​ | 0x4345 ​    | Supported in 4.1+   | | BCM43455 ​ | 0x4345 ​    | Supported in 4.1+   |
 | BCM4354 ​  | 0x4354 ​    | Supported in 3.15+  | | BCM4354 ​  | 0x4354 ​    | Supported in 3.15+  |
-| BCM43143 ​ | 0xA887 ​    ​| ​                    ​|+| BCM43143 ​ | 0xA887 ​    ​| ​Supported in 3.10+  ​| 
  
  
Line 113: Line 116:
 === Current === === Current ===
  
-For SDIO driver you need to copy the nvram for your system and place it in /​lib/​firmware/​brcm. The nvram file name depends on the chip you have. The kernel log will tell you the exact file name. For the USB driver no nvram file is needed. ​+For SDIO driver you need to copy the nvram for your system and place it in /​lib/​firmware/​brcm. The nvram file name depends on the chip you have. The kernel log will tell you the exact file name.  
 + 
 +For the USB driver no nvram file is //​strictly// ​needed: in fact, the driver only loads the firmware blob and does not look for an nvram text file. However, the nvram parameters are still required and they are already part of the firmware blob. This is a TRX file which contains the nvram parameters as a sequence of zero-terminated plain text strings, appended at the end of the last section. 
 +For an example of how to modify/add nvram parameters for USB devices, see [[https://​blog.elimo.io/​2020/​06/​05/​pta-coexistence/​|this post]]
  
 The firmware files are located in the linux-firmware repository and can be copied as is to /​lib/​firmware/​brcm. ​ The firmware files are located in the linux-firmware repository and can be copied as is to /​lib/​firmware/​brcm. ​
Line 129: Line 135:
  
  
-===== Contact Info =====+=== NVRAM from EFI === 
 +Some new devices are storing the nvram which is needed in addition to the firmware by the driver in an EFI variable and the Windows driver can access it (this file should be optional in the case of PCIe devices). Currently brcmfmac does not support this automatically. 
 +First mount the efi vars into sysfs: 
 +  mount -t efivarfs none /​sys/​firmware/​efi/​efivars
  
-For driver issues and/or bug reports, please use+The content of the nvram is in this file: 
 +  /​sys/​firmware/​efi/​efivars/​nvram-74b00bd9-805a-4d61-b51f-43268123d113
  
-[[mailto:brcm80211-dev-list@broadcom.com|brcm80211-dev-list@broadcom.com]] +Copy this file where brcmfmac expects the nvram, for example: 
 +   cat /​sys/​firmware/​efi/​efivars/​nvram-74b00bd9-805a-4d61-b51f-43268123d113 > /​lib/​firmware/​brcm/​brcmfmac43241b4-sdio.txt
  
-For any other questions feel free to contact the developers listed below:  +===== Contact Info =====
- +
-Arend van Spriel ​       [[mailto:​arend@broadcom.com|arend@broadcom.com]] ​+
  
-Franky Lin              [[mailto:frankyl@broadcom.com|frankyl@broadcom.com]] ​+For driver issues and/or bug reports, please use one or both:
  
-Hante Meuleman ​         ​[[mailto:meuleman@broadcom.com|meuleman@broadcom.com]] +[[mailto:brcm80211@lists.linux.dev|brcm80211@lists.linux.dev]] ​ [[https://​lore.kernel.org/​brcm80211/​|archive]]\\ 
 +[[mailto:​linux-wireless@vger.kernel.org|linux-wireless@vger.kernel.org]]\\
  
-Brett Rudley ​           [[mailto:brudley@broadcom.com|brudley@broadcom.com]] ​+For any other questions feel free to contact the maintainer(s) listed below
  
 +Arend van Spriel ​       [[mailto:​arend.vanspriel@broadcom.com|arend.vanspriel@broadcom.com]]\\
  
 ===== Developer information ===== ===== Developer information =====
Line 161: Line 172:
             * monitor mode              * monitor mode 
 ==== fullmac driver specifics ==== ==== fullmac driver specifics ====
-              * Integrated with cfg80211  +The brcmfmac driver ​is based on the DHD driver, which is also released in AOSP under the name bcmdhd. Although similar the brcmfmac driver has been reworked significantly. In the figure below the layering of the brcmfmac is shown. It was made couple of years ago so it may not be accurate. 
-              * Most of Mac functionality ​is performed ​on chip  +{{:​en:​users:​drivers:​brcm80211:​brcmfmac-layering.png?​500|}} 
-              * support for SDIO, USB and PCIe  +\\ 
-              * SoftAP  +The bus layer supports ​SDIO, USBand PCIe. The protocol layer support msgbuf protocol used for PCIe devices and BCDC which is used for SDIO and USB devices.
-              * P2P  +
-              * TDLS +
 ==== Get the code ==== ==== Get the code ====
  
Line 172: Line 181:
  
  
-<​code>​git://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​linville/​wireless-testing.git</​code>​+<​code>​git://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​wireless/​wireless-testing.git</​code>​
 The driver is also available in the 3.2 and newer kernels. ​ When using 'make menuconfig'​ it can be accessed: ​ The driver is also available in the 3.2 and newer kernels. ​ When using 'make menuconfig'​ it can be accessed: ​
  
Line 191: Line 200:
                 *  *    *  *  * -> [*] Support for BCMA on PCI-host bus                  *  *    *  *  * -> [*] Support for BCMA on PCI-host bus 
  
 +==== Get Involved ====
 +
 +Maintaining a driver for a family of chipsets that is widespread and productized by multiple entities can be challenging. While having a good stock of devices it is by no means covering a fraction of the variants out in the wild. So we can always use help from people doing regression testing or co-maintaining the driver. The table below provides an overview of those involved and the role they play.
 +
 +^ Name               ^ Email                         ^ Role                ^ Device(s) ​                                                      ^
 +| Izabela Bakollari ​ | ibakolla@redhat.com ​          | Tester ​             | Raspberry PI4 8GB                                               |
 +| Arend van Spriel ​  | arend.vanspriel@broadcom.com ​ | Maintainer, Tester ​ | BCM4330, BCM43664 ​                                              |
 +| Peter Robinson ​    | pbrobinson@gmail.com ​         | Tester ​             | Numerous Arm devices with Broadcom/​Cypress/​Synaptics variants. ​ |
  
 ==== tracepoint support ==== ==== tracepoint support ====
Line 199: Line 216:
                 *  *    *  *  *  * 40MHz channels ​                 *  *    *  *  *  * 40MHz channels ​
                 *  *    *  *  *  * powersave ​                 *  *    *  *  *  * powersave ​
-                *  *    *  *  *  * debugfs (for accessing counters and other diagnostic info)  
                 *  *    *  *  *  * IBSS                  *  *    *  *  *  * IBSS 
-                *  *    *  *  *  * AP  
-                *  *    *  *  *  * LED support ​ 
                 *  *    *  *  *  * HW-based encryption ​                 *  *    *  *  *  * HW-based encryption ​
-                *  *    *  *  *  * Add support for more chips, including (near term) BCM43227, BCM43228, and BCM4331. ​ Support for additional new chips to follow. ​+
 ==== To be done for fullmac driver ==== ==== To be done for fullmac driver ====
                 *  *    *  *  *   * Add support for                  *  *    *  *  *   * Add support for 
Line 212: Line 226:
 ==== Regulatory Implementation for brcmsmac ==== ==== Regulatory Implementation for brcmsmac ====
  
-This generation of chips contain additional ​ regulatory support independent of the driver. The devices use a single ​ worldwide regulatory domain, with channels ​12-14 (2.4 GHz band) and  channels 52-64 and 100-140 (5 GHz band) restricted to passive operation. ​ Transmission on those channels is suppressed until appropriate other  traffic is observed on those channels. Within the driver, we use the  ficticious country code "​X2"​ to represent this worldwide regulatory ​ domain. There is currently no interface to configure a different domain. ​ The driver reads the SROM country code from the chip and hands it up to  mac80211 as the regulatory hint, however this information is otherwise ​ unused with the driver. ​+This generation of chips contain additional ​ regulatory support independent of the driver. The devices use a single ​ worldwide regulatory domain, with channels ​1-11 (2.4 GHz band) and  channels 52-64 and 100-140 (5 GHz band) restricted to passive operation. ​ Transmission on those channels is suppressed until appropriate other  traffic is observed on those channels. Within the driver, we use the  ficticious country code "​X2"​ to represent this worldwide regulatory ​ domain. There is currently no interface to configure a different domain. ​ The driver reads the SROM country code from the chip and hands it up to  mac80211 as the regulatory hint, however this information is otherwise ​ unused with the driver. ​
  
en/users/drivers/brcm80211.1442611235.txt.gz · Last modified: 2015/09/18 21:20 by Rafał Miłecki