Ok ! I've seen it's same id for 6212 and 6212a so how choosing between is not easy ... Trying loading first one and if it fails, the other ? (no device is found with 6212 when it's 6212a so perhaps the only way to be sure ? )
It seems the two chip revisions do not have attributes on which they can be differentiated by udev rules. This is why we can't tag the right firmware correctly for the new revision. The firmware file itself is already inside the image, albeit with capital filename (BCM43430A1.hcd). This had me fooled as well at first.
For now, you could work around this issue yourself by placing the following in /storage/.config/udev.rules.d:
80-brcmfmac_sdio.rules
################################################################################
# udev rules file for loading brcmfmac_sdio-firmware modified for BCM43430A1 (prevent other fw load on same attr's)
################################################################################
ACTION!="add", GOTO="end"
SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", GOTO="begin"
GOTO="end"
LABEL="begin"
### Broadcom bcm43362/bcm20710a1 bluetooth device
ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa962", \
ENV{brcm_device}="bcm20710a1"
### Broadcom bcm43438a0 bluetooth device
#ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa9a6", \
# ENV{brcm_device}="bcm43438a0"
### Broadcom bcm4330/bcm40183b2 bluetooth device
ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4330", \
ENV{brcm_device}="bcm40183b2"
### Broadcom bcm4339/bcm4335c0 bluetooth device
ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4335", \
ENV{brcm_device}="bcm4335c0"
### Broadcom bcm4356a2 bluetooth device
ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4356", \
ENV{brcm_device}="bcm4356a2"
### Broadcom bcm4345c0 bluetooth device
ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa9bf", \
ENV{brcm_device}="bcm4345c0"
ENV{brcm_device}=="bcm*", ACTION=="add", \
TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcmfmac_sdio-firmware@$env{brcm_device}.service"
LABEL="end"
Display More
81-fix-brcmfmac_sdio.rules
################################################################################
# udev rules file for loading brcmfmac_sdio-firmware, modified for loading BCM43430A1 on the same attr as rev 0
################################################################################
ACTION!="add", GOTO="end"
SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", GOTO="begin"
GOTO="end"
LABEL="begin"
### Broadcom bcm43438a1 bluetooth device
ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa9a6", \
ENV{brcm_device}="BCM43430A1"
ENV{brcm_device}=="BCM*", ACTION=="add", \
TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcmfmac_sdio-firmware@$env{brcm_device}.service"
LABEL="end"
Display More
After subsequent reboots everything should be fine. Note that this (of course) is only required to get BT working on boxes with 6212a (chip revision 1).
You can check which rev you have by issuing the following command:
Example:
Maybe it's an idea to have the udev script invoke an external script to find out which rev is on board, which in turn could set the required system.wants service env var?