Du wifi avec Broadcom

Un petit mémo sur le wifi avec une carte Broadcom


  • Identifier une carte Broadcom
lspci -nnk | grep 14e4

Exemple:

lspci -nnk | grep 14e4
03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4313 802.11bgn Wireless Network Adapter [14e4:4727] (rev 01)

  • Différents types de drivers
  • brcmsmac/brcmfmac Open-source kernel drivers
    b43, b43legacy and b44 Reverse-engineered kernel drivers
    broadcom-wl Proprietary Broadcom STA driver Causes kernel drivers to be blacklisted
    brcm80211 Open-source kernel driver
    Various Proprietary Windows drivers Require Ndiswrapper

  • Les drivers fournis par le noyau Linux :
  • https://github.com/torvalds/linux/tree/master/drivers/net/wireless/broadcom

    Détails
    

    brcm80211

    b43legacy et b43

    La page du wiki

    On les trouve dans /usr/lib/modules/id-de-votre-noyau/kernel/drivers/net/wireless/broadcom/

    Exemple

    ls /usr/lib/modules/5.9.0-2-amd64/kernel/drivers/net/wireless/broadcom/
    b43  b43legacy	brcm80211
    

    NB: b44 est un driver pour Broadcom en Ethernet (filaire)

    Pour fonctionner il faut le firmware que l’on trouve dans le paquet firmware-brcm80211

    apt list firmware-brcm80211
    En train de lister... Fait
    firmware-brcm80211/testing,testing,unstable,unstable,now 20200918-1 all  [installé]
    

  • Les drivers Broadcom
  • On les trouve dans les paquets

    apt list | grep broadcom
    
    broadcom-sta-common/testing,testing,unstable,unstable 6.30.223.271-15 all
    broadcom-sta-dkms/testing,testing,unstable,unstable 6.30.223.271-15 all
    broadcom-sta-source/testing,testing,unstable,unstable 6.30.223.271-15 all
    
       NB: si vous voulez utiliser sta-dkms, il y aura compilation à l'installation donc il faut  installer aussi le linux-header de votre noyau ainsi que le paquet dkms.
    

    Plus d’infos wl


  • blaklistage des modules
  • Les modules sont incompatibles entre eux il vaut donc mieux blacklister ceux qu’on n’utilise pas.

    Exemple j’utilise bcma je crée un fichier;
    /etc/modprobe.d/broadcom.conf
    avec le contenu

    # pour fonctionner avec bcma
    blacklist b43
    blacklist b43legacy
    blacklist b44
    

  • Vérification
  • lspci -nnk | grep 14e4 -A4

    Exemple

    lspci -nnk | grep 14e4 -A4
    03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4313 802.11bgn Wireless Network Adapter [14e4:4727] (rev 01)
    DeviceName: Broadcom 802.11n+BT combo module
    Subsystem: Hewlett-Packard Company BCM4313 802.11bgn Wireless Network Adapter [103c:1483]
    Kernel driver in use: bcma-pci-bridge
    Kernel modules: bcma
    
    root@debian:~# lsmod | grep bcma
    bcma                   69632  1 brcmsmac
    root@debian:~# modinfo brcmsmac
    filename:       /lib/modules/5.9.0-2-amd64/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
    firmware:       brcm/bcm43xx_hdr-0.fw
    firmware:       brcm/bcm43xx-0.fw
    license:        Dual BSD/GPL
    description:    Broadcom 802.11n wireless LAN driver.
    author:         Broadcom Corporation
    alias:          bcma:m04BFid0812rev18cl*
    alias:          bcma:m04BFid0812rev17cl*
    alias:          bcma:m04BFid0812rev11cl*
    depends:        mac80211,bcma,brcmutil,cfg80211,cordic
    retpoline:      Y
    intree:         Y
    name:           brcmsmac
    vermagic:       5.9.0-2-amd64 SMP mod_unload modversions 
    sig_id:         PKCS#7
    signer:         Debian Secure Boot CA
    sig_key:        B5:5E:B3:B9
    sig_hashalgo:   sha256
    signature:      60:2D:FF:4A:DB:B6:1E:3E:CB:A5:1D:DE:4E:E9:9B:0A:CF:A8:B9:E3:
    		B9:68:B0:E0:02:20:6D:39:33:75:57:2A:65:18:FA:07:CB:CC:B4:DC:
    		90:94:C5:9F:5A:40:92:10:81:B6:FB:02:70:FE:31:02:97:2E:F1:36:
    		A2:32:25:38:FA:A3:44:42:11:B0:C7:15:39:7C:ED:1B:27:7D:C2:05:
    		11:93:E6:17:9B:8A:C2:1B:4B:43:70:64:84:79:E4:C5:38:BF:A1:0E:
    		95:75:15:B1:48:54:AF:EB:72:A8:81:77:2E:05:E5:3C:DE:D2:15:36:
    		51:37:A1:09:90:9B:E0:C2:DC:04:4C:92:51:81:3F:C0:52:F8:FA:73:
    		35:0D:BD:65:80:77:A7:C1:61:E8:FF:F2:0D:56:FC:6B:20:6A:A5:3A:
    		7E:2D:29:EC:D8:D0:7D:62:CD:BA:AE:5F:07:00:16:BE:27:0B:E1:7A:
    		9F:57:01:CB:D9:5F:EF:F9:F7:5F:B0:07:0B:CE:E1:AB:46:67:6A:6E:
    		4D:E4:1C:58:48:92:63:A1:CF:2B:B8:7D:D5:31:72:01:E2:CB:83:E7:
    		1F:26:01:99:41:0F:D9:8C:8A:55:ED:31:91:13:E5:A6:9C:8E:85:B2:
    		FA:72:E9:52:43:7D:B8:E8:DB:C6:5D:89:F6:8B:DB:EF
    root@debian:~#
    

  • Voir dans le journal
  • journalctl | grep bcm
    nov. 10 10:18:41 debian kernel: bcma-pci-bridge 0000:03:00.0: bus0: Found chip with id 0x4313, rev 0x01 and package 0x08
    nov. 10 10:18:41 debian kernel: bcma-pci-bridge 0000:03:00.0: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x24, class 0x0)
    nov. 10 10:18:41 debian kernel: bcma-pci-bridge 0000:03:00.0: bus0: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, rev 0x18, class 0x0)
    nov. 10 10:18:41 debian kernel: bcma-pci-bridge 0000:03:00.0: bus0: Core 2 found: PCIe (manuf 0x4BF, id 0x820, rev 0x11, class 0x0)
    nov. 10 10:18:41 debian kernel: bcma-pci-bridge 0000:03:00.0: bus0: Bus registered
    nov. 10 10:18:44 debian kernel: brcmsmac bcma0:1: mfg 4bf core 812 rev 24 class 0 irq 17
    nov. 10 10:18:44 debian kernel: brcmsmac bcma0:1 wlp3s0b1: renamed from wlan0
    nov. 10 10:18:56 debian NetworkManager[2781]: <info>  [1604999936.5108] rfkill2: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:05.0/0000:03:00.0/bcma0:1/ieee80211/phy0/rfkill2) (driver brcmsmac)
    nov. 10 10:19:00 debian kernel: brcmsmac bcma0:1: firmware: direct-loading firmware brcm/bcm43xx-0.fw
    nov. 10 10:19:00 debian kernel: brcmsmac bcma0:1: firmware: direct-loading firmware brcm/bcm43xx_hdr-0.fw
    nov. 10 10:19:00 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: qos enabled: false (implement)
    nov. 10 10:19:00 debian kernel: brcmsmac bcma0:1: brcms_ops_config: change power-save mode: false (implement)
    nov. 10 10:19:00 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: qos enabled: false (implement)
    nov. 10 10:19:00 debian kernel: brcmsmac bcma0:1: brcms_ops_config: change power-save mode: false (implement)
    nov. 10 10:19:03 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: qos enabled: false (implement)
    nov. 10 10:19:03 debian kernel: brcmsmac bcma0:1: brcms_ops_config: change power-save mode: false (implement)
    nov. 10 10:19:03 debian kernel: brcmsmac bcma0:1: brcmsmac: brcms_ops_bss_info_changed: associated
    nov. 10 10:19:03 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: qos enabled: true (implement)
    nov. 10 10:19:03 debian kernel: brcmsmac bcma0:1: wl0: brcms_c_d11hdrs_mac80211:  txop exceeded phylen 159/256 dur 1778/1504
    nov. 10 10:19:03 debian kernel: brcmsmac bcma0:1: wl0: brcms_c_d11hdrs_mac80211:  txop exceeded phylen 137/256 dur 1602/1504
    nov. 10 10:19:05 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: arp filtering: 1 addresses (implement)
    
    1 J'aime

    Que faut il utiliser à la place de blacklist à l’époque du #blacklivesmatter ??

    Old Joe va surement nous trouver un autre terme.