Bug 135321

Summary: ASUS PCE-AC88(Broadcom 4366c) won't connect to wireless network
Product: Drivers Reporter: Nathan Grennan (kernel-bugzilla)
Component: network-wirelessAssignee: drivers_network-wireless (drivers_network-wireless)
Status: NEW ---    
Severity: normal CC: accounts, apage43, aspriel, brcm80211-dev-list, EB30750, hal9k2, hauke, jakerlock, mikelojkovic, rwhite, xiong.jaguar, zajec5
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 4.6.3 Subsystem:
Regression: No Bisected commit-id:
Attachments: attachment-31625-0.html
chilli555 ouput
lspci -k output
chilli555 output from successful wifi configuration

Description Nathan Grennan 2016-07-15 16:55:11 UTC
I am trying to get a ASUS PCE-AC88 working with Fedora 24. It is running with a 4.6.3 kernel. The firmware is missing from linux-firmware(please add brcm/brcmfmac4366c-pcie.bin). As a workaround I dug into http://dlcdnet.asus.com/pub/ASUS/wireless/PCE-AC88/UT_PCE-AC88_2803.zip. In it I found data1.cab, and in that I found bcmwdidhdpcie.inf. Referenced in that inf file is 4365c0rtecdc.bin. I then renamed it to brcmfmac4366c-pcie.bin, and put it in /lib/firmware/brcm. Which loads and at least lets me see wireless networks. But when I try to connect to a WPA2-PSK 5ghz network, it fails to connect, and I get errors about firmware and p2p. When I try to connect to a WPA2-PSK 2.4ghz network, it also fails, but I don't get the same errors.

  There are actually two different 4365c0rtecdc.bin versions in the cab file. One is for Windows 10 and one is for other Windows versions. Neither works for me in Linux. The Windows 10 copy seems to be a slightly older version.

lspci -nvvv:
06:00.0 0280: 14e4:43c3 (rev 04)
        Subsystem: 1043:86fb
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 48
        Region 0: Memory at fb000000 (64-bit, non-prefetchable) [size=32K]
        Region 2: Memory at fa800000 (64-bit, non-prefetchable) [size=8M]
        Region 4: Memory at d2400000 (64-bit, prefetchable) [size=4M]
        Capabilities: [48] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=2 PME-
        Capabilities: [58] MSI: Enable+ Count=1/32 Maskable- 64bit+
                Address: 00000000fee0800c  Data: 41d4
        Capabilities: [68] Vendor Specific Information: Len=44 <?>
        Capabilities: [ac] Express (v2) Endpoint, MSI 00
                DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10.000W
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr+ NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 <32us
                        ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via WAKE#
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
                LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
                         EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
        Capabilities: [13c v1] Device Serial Number 00-00-00-ff-ff-00-00-00
        Capabilities: [150 v1] Power Budgeting <?>
        Capabilities: [160 v1] Virtual Channel
                Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
                Arb:    Fixed- WRR32- WRR64- WRR128-
                Ctrl:   ArbSelect=Fixed
                Status: InProgress-
                VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                        Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                        Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=01
                        Status: NegoPending- InProgress-
        Capabilities: [1b0 v1] Latency Tolerance Reporting
                Max snoop latency: 0ns
                Max no snoop latency: 0ns
        Capabilities: [220 v1] #15
        Kernel driver in use: brcmfmac
        Kernel modules: brcmfmac

dmesg:
[    3.389589] brcmfmac 0000:06:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.txt failed with error -2
[    4.096359] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Mar  9 2016 09:10:03 version 10.10.69.67 (r623531) FWID 01-fd0b647f
[    4.102818] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[    4.106696] brcmfmac 0000:06:00.0 wlp6s0: renamed from wlan0
[    4.632945] brcmfmac: brcmf_p2p_set_firmware: failed to update device address ret -23
[    4.633157] brcmfmac: brcmf_p2p_create_p2pdev: set p2p_disc error
[  160.037161] brcmfmac: brcmf_p2p_set_firmware: failed to update device address ret -23
[  160.037277] brcmfmac: brcmf_p2p_create_p2pdev: set p2p_disc error
[  173.225533] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[  183.912693] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[  249.768548] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[ 1118.745711] usbcore: deregistering interface driver brcmfmac
[ 1118.755902] brcmfmac: brcmf_fil_cmd_data: bus is down. we have nothing to do.
[ 1131.183117] usbcore: registered new interface driver brcmfmac
[ 1131.284811] brcmfmac 0000:06:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.txt failed with error -2
[ 1131.999877] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Mar  2 2016 03:05:01 version 10.10.69.64 (r622288) FWID 01-e6c8c961
[ 1132.019800] brcmfmac 0000:06:00.0 wlp6s0: renamed from wlan0
[ 1163.244194] brcmfmac: brcmf_p2p_set_firmware: failed to update device address ret -23
[ 1163.244310] brcmfmac: brcmf_p2p_create_p2pdev: set p2p_disc error
[ 1176.912055] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[ 1187.603677] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[ 1252.804518] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[ 2467.307310] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[ 2486.904763] usbcore: deregistering interface driver brcmfmac
[ 2486.919256] brcmfmac: brcmf_fil_cmd_data: bus is down. we have nothing to do.
[ 2492.661046] usbcore: registered new interface driver brcmfmac
[ 2492.762874] brcmfmac 0000:06:00.0: Direct firmware load for brcm/brcmfmac4366c-pcie.txt failed with error -2
[ 2493.480837] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Mar  2 2016 03:05:01 version 10.10.69.64 (r622288) FWID 01-e6c8c961
[ 2493.493397] brcmfmac 0000:06:00.0 wlp6s0: renamed from wlan0
[ 2503.551073] brcmfmac: brcmf_p2p_set_firmware: failed to update device address ret -23
[ 2503.551190] brcmfmac: brcmf_p2p_create_p2pdev: set p2p_disc error
Comment 1 Björn 2016-08-08 20:00:21 UTC
I have the exact same issue. Fedora 24, now also confirmed with kernel 4.6.4.
Comment 2 Hauke Mehrtens 2016-09-11 21:12:39 UTC
I think there are two problems:
1. brcmfmac4366c-pcie.bin is not publicly available, this chip is used in the Asus PCE-AC88 which is available in retails stores.
2. The driver will request for a file called brcm/brcmfmac4366c-pcie.txt after it found the firmware. Where should this come from? I assume this contains calibration data which should be stored on the PCIe device.
Comment 3 Aaron Miller 2016-09-11 22:48:40 UTC
The .txt is just another format the firmware can be stored in, it's the same content as the .bin, the driver will use whichever is available.

I have this card working using a fe extracted from an RT-AC88U but there still seems to be some issue with p2p mode. Mostly this working is waiting on broadcom to contribute a fe file officially.
Comment 4 Rafał Miłecki 2016-09-12 05:25:10 UTC
(In reply to Aaron Miller from comment #3)
> The .txt is just another format the firmware can be stored in, it's the same
> content as the .bin, the driver will use whichever is available.

Definitely not. Take a look at brcmfmac sources, it checks .txt file looking for *NVRAM* (variables file), not the firmware (image running on card's CPU).
Comment 5 Aaron Miller 2016-09-12 06:37:03 UTC
Ah, that's right. Still it is not necessary for use with the PCE-AC88 -- it's a mechanism for the driver to relay variables to the card f/w per: https://wireless.wiki.kernel.org/en/users/drivers/brcm80211#firmware_installation1

> (this file should be optional in the case of PCIe devices)

I'm using this card currently with only a firmware .bin I extracted from a router.
Comment 6 Nathan Grennan 2016-10-03 17:51:15 UTC
I was able to get my PCE-AC88 working on Fedora 24 with the firmware from Aaron Miller. It even works reliably and it is fast. I still get the p2p and ISO code errors, but it works anyway.
Comment 7 Michael Lojkovic 2016-10-07 03:35:39 UTC
Has the issue been fixed in 4.8? I'd prefer to use the official Broadcom firmware if possible sometime soon.
Comment 8 Robert White 2017-01-03 19:43:03 UTC
Has anything happened on releasing or locating brcmfmac4366c-pcie.bin ??

The card I have wants this file and I don't see any motion on this? Is there a means to acquire or build the necessary file that is hidden somewhere?
Comment 9 Rafał Miłecki 2017-01-03 20:22:52 UTC
Last time I asked Arend about this in December but there wasn't any update
https://www.spinics.net/lists/linux-wireless/msg157345.html
https://patchwork.kernel.org/patch/9479377/
Comment 10 Aaron Miller 2017-01-03 21:15:09 UTC
Created attachment 250001 [details]
attachment-31625-0.html

Its possible to slice it out of a router firmware, but as I understand its
not actually the same build -- I believe the FW images are built for the
driver they go with. The windows one (the NDIS driver) doesn't work at all,
router ones meant for the 'dhd' driver *mostly work* -- I wind up having it
fail to connect a couple times before it gets going.

On Tue, Jan 3, 2017 at 12:22 PM <bugzilla-daemon@bugzilla.kernel.org> wrote:

> https://bugzilla.kernel.org/show_bug.cgi?id=135321
>
> --- Comment #9 from Rafał Miłecki <zajec5@gmail.com> ---
> Last time I asked Arend about this in December but there wasn't any update
> https://www.spinics.net/lists/linux-wireless/msg157345.html
> https://patchwork.kernel.org/patch/9479377/
>
> --
> You are receiving this mail because:
> You are on the CC list for the bug.
Comment 11 hal9k2 2017-07-02 17:58:30 UTC
Hi 

Any updates on this issue?

In kernel 4.11.1 this card is still not working error:

brcmfmac: brcmf_pcie_download_fw_nvram: FW failed to initialize
Comment 12 Jaguar Xiong 2017-08-19 12:22:40 UTC
Hi,
  Any updates? Is this actual on either broadcom or Asus's road-map?
Comment 13 PJAL 2017-08-25 13:44:09 UTC
Attempting to follow implementation details from comment #10 to get a Broadcom 14ee:4365 USB/WLAN device working.  Based on the lookup table this model Broadcom device implements the BCM4366c driver.

I have extracted the drivers as prescribed and thought that was the hard part.  However, there is no wlan device that is listed when I run "iwconfig."  

The broadcom-wl module is not loaded but rather brcmfmac module is.  I am suspicious that this kennel brcmfmac/brcmfmac.ko.xz module is not compatible.  

Also, the Broadcom Bluetooth driver is loading but with the error bluetooth hci0: Direct firmware load for brcm/BCM.hcd failed with error -2 due to a missing patch.  Don't know if this is a separate issue or a contributing factor.

I am attaching the output of lspci -k and the ouput of a Fedora modified version chilli555.

Thanks for any advice on resolving this issue.
Comment 14 PJAL 2017-08-25 13:45:05 UTC
Created attachment 258099 [details]
chilli555 ouput
Comment 15 PJAL 2017-08-25 13:46:31 UTC
Created attachment 258101 [details]
lspci -k output
Comment 16 PJAL 2017-08-26 04:02:47 UTC
Created attachment 258113 [details]
chilli555 output from successful wifi configuration
Comment 17 PJAL 2017-08-26 04:10:58 UTC
Yep it was the kernel driver.  Replaced the module brcmfmac with the module wl and the wifi device lit up.  Also, the bluetooth load module error disappeared too.

I attached the output of the chilli555 for a successfully configured Broadcom BCM4366 device type.

There were two errors show in the journalctl.  THese errors are not continuous as others have documented.

Aug 25 23:45:54 BRSINC-01Fed kernel: error (-1)
Aug 25 23:45:54 BRSINC-01Fed kernel: ERROR @wl_cfg80211_get_tx_power : 
Aug 25 23:45:54 BRSINC-01Fed kernel: error (-1)
Aug 25 23:45:54 BRSINC-01Fed kernel: ERROR @wl_dev_intvar_get :
Comment 18 Michael Lojkovic 2017-09-12 08:31:29 UTC
Have any luck getting the connection strength up with the wl driver?
Comment 19 PJAL 2017-09-12 17:54:53 UTC
I have enough connection strength for surfing though with the router just one room away it does vary significantly.  Not sure the HP laptop I am using has a very good antenna.  There are time when the wifi icon reverts to the "?", it still loads pages ok, however.

using
  watch -n1 0 iwconfig link quality ranges from 44 - 77 and signal level -40 to -62

  wavemon quality ranges from 54  - 100 and signal level -35 to -72
Comment 20 Michael Lojkovic 2017-09-12 18:22:59 UTC
What are you getting on Speed test?

This is what I have.

Speedtest results

Linux
  ping: 7 ms
  Download: 35.53 Mbps
  Upload: 9.15 Mbps

Windows
  ping: 5 ms
  Download: 227.61 Mbps
  Upload: 24.89
Comment 21 PJAL 2017-09-12 18:41:45 UTC
Speed test on 12 mbps connection

fc26 
 ping 31
 upload 9.5
 download 2.4

iPhone 7
 upload 11
 download 3.25
Comment 22 Holt Johnson 2017-10-24 22:47:34 UTC
I second Michael Lojkovic and would also like to have official Broadcom firmware if possible. In the meantime I found a temporary solution that works for me here: https://ubuntuforums.org/showthread.php?t=2337200.

My system: Linux 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux