The firmware for BCM43438 is missing

245 views
Skip to first unread message

lish...@gmail.com

unread,
Oct 7, 2018, 7:05:38 AM10/7/18
to NuttX
In the folder /drivers/wireless/ieee80211/, it is showing that there is an file containing the firmware and nvram for bcm43438, which is named ap6212_nvram_image and ap6212_firmware_image. But I cannot find it anywhere, and what I can find is only bcm43362_nvram_image for bcm43362. So if configed with bcm43438, nuttx cannot be compiled correctly. Where can I get them?

patacongo

unread,
Oct 7, 2018, 9:25:21 AM10/7/18
to NuttX

In the folder /drivers/wireless/ieee80211/, it is showing that there is an file containing the firmware and nvram for bcm43438, which is named ap6212_nvram_image and ap6212_firmware_image. But I cannot find it anywhere, and what I can find is only bcm43362_nvram_image for bcm43362. So if configed with bcm43438, nuttx cannot be compiled correctly. Where can I get them?

I don't know anything about the BCM chips, but I was told that you can get the files from the Cypress website.

I have a modification that will allow you to load these files from an SD card, but it has not been committed because it does not conform to the coding standard.  I can send that to you if would rather load the files from the SD card rather than incorporate the code into files.

patacongo

unread,
Oct 7, 2018, 12:11:26 PM10/7/18
to NuttX

I have a modification that will allow you to load these files from an SD card, but it has not been committed because it does not conform to the coding standard.  I can send that to you if would rather load the files from the SD card rather than incorporate the code into files.

Here I incorporated Ramtin Amin's patch to load the BCM43438 firmware and CLM blob files from an SD card (or other mounted file system):

commit b539d04cfb40e7e5eaed2648301b59b7aaa59929
Author: Ramtin Amin <key...@gmail.com>
Date:   Sun Oct 7 10:03:39 2018 -0600

    drivers/wireless/ieee802.11:  Add capabilility for Broadcom chips to get firmware and CLM data from a mounted file system vs. in-memory data structures.

Now you have two choices:

1) Download the files from the Cypress web site and convert them to in-memory files, or
2) Download the files form the Cypress web site and put them in some file system.  You will need to add logic to mount that file system before the BCM initialization occurs.

patacongo

unread,
Oct 7, 2018, 12:21:09 PM10/7/18
to NuttX
Now you have two choices:

1) Download the files from the Cypress web site and convert them to in-memory files, or
2) Download the files form the Cypress web site and put them in some file system.  You will need to add logic to mount that file system before the BCM initialization occurs.

You will also have to provide the NVRAM settings in your board-specific logic:

bcmf_chip_43438.c:extern const char ap6212_nvram_image[];
bcmf_chip_43438.c:extern const unsigned int ap6212_nvram_image_len;
bcmf_chip_43438.c:  .nvram_image         = (uint8_t *)ap6212_nvram_image,
bcmf_chip_43438.c:  .nvram_image_size    = (unsigned int *)&ap6212_nvram_image_len,

This is very different for the BCM43438; it is a sequence of name=value strings separated with NULs.  ap6212_nvram_image is the beginning of the list of NUL-terminated name=value pairs; ap6212_nvram_image_len is the total size of the NVRAM data.  This contains information that you must provide (for example, MAC addresses).

patacongo

unread,
Oct 7, 2018, 3:42:27 PM10/7/18
to NuttX
Now you have two choices:

1) Download the files from the Cypress web site and convert them to in-memory files, or
2) Download the files form the Cypress web site and put them in some file system.  You will need to add logic to mount that file system before the BCM initialization occurs.

In the first case, the firmware and CLM files would go in your board/src directory.  You can see how that was done for the phone board here:  https://bitbucket.org/nuttx/nuttx/src/master/configs/photon/src/stm32_wlan_firmware.c   BCM44362).  You will need to do something similar or provide the same information in a file.

lish...@gmail.com

unread,
Oct 8, 2018, 7:10:58 AM10/8/18
to NuttX
It is so kind of you, thank you very much!
I will follow your instructions and have a try, and it is really good if you can send the code to me. 

在 2018年10月8日星期一 UTC+8上午3:42:27,patacongo写道:

patacongo

unread,
Oct 8, 2018, 10:02:44 AM10/8/18
to NuttX

It is so kind of you, thank you very much!
I will follow your instructions and have a try, and it is really good if you can send the code to me. 

I don't have the files.  I don't work with these parts so I cannot help you.

You should check the Cypress web page (not sure where).  You should also be able to get them from the Raspberry Pi source since some of them use the bcm43438.

Googling I find this:   https://github.com/winmecs/Bcm43438-firmware  The bcm43438.cal there looks like the NVRAM file.  I presume that the bcm43438.bin file is the firmware?  And perhaps the remaining file is the CLM file.  I don't know anything about those files.

patacongo

unread,
Oct 8, 2018, 10:29:58 AM10/8/18
to NuttX

patacongo

unread,
Oct 8, 2018, 10:55:02 AM10/8/18
to NuttX
Better... I found the versions I used on an SD card and uploaded them here:  https://bitbucket.org/nuttx/nonbsd/src/master/bcm43438/

Brennan Ashton

unread,
Oct 8, 2018, 10:55:53 AM10/8/18
to nu...@googlegroups.com
You can grab the latest files from Cypress here

The 43438 is a variant of the 43430 and will even identify itself as such.  

The calibration file used in the past is called
brcmfmac43430-sdio.AP6212.txt

The firmware is 
brcmfmac43430-sdio.bin

I suspect you will have to rename those files to work with Nuttx. 

--
You received this message because you are subscribed to the Google Groups "NuttX" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nuttx+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Brennan Ashton

unread,
Oct 8, 2018, 11:01:32 AM10/8/18
to nu...@googlegroups.com
I would not use these files as they are likely not up to date.  The files I posted are actively updated by Cypress to address security vulnerabilities. 

--

patacongo

unread,
Oct 8, 2018, 11:40:24 AM10/8/18
to NuttX

Thanks, Brennan.  That was very helpful.  It it good to have help answering questions from someone who actually knows what they are talking about.
 
I suspect you will have to rename those files to work with Nuttx. 

The full path to the files in the mounted file system are configurable.

Greg

Ramtin Amin

unread,
Oct 8, 2018, 12:08:49 PM10/8/18
to nu...@googlegroups.com
Hello
I am using a murata module, and I got the firmware from here: https://github.com/murata-wireless/cyw-fmac-fw
They are working for me


Reply all
Reply to author
Forward
0 new messages