ROCK Pi 4B+ WiFi/BT not working properly

This file does not seem to support the Ampak AP6212 (Broadcom 43430), Ampak AP6212A (Cypress / Broadcom 43438) or the Azurewave AW-NB197SM (Cypress / Broadcom 43438)

Can this be updated? As currently WiFi / BT do not work correctly.

1 Like

I see. Today I’ll fix this and update the yocto recipe.

Great, thanks very much for your help.

Let me know when you’ve completed this :+1:

I notice that the vendor id of AP6236 is the same as that of ap6212, 0x02d0. So is device id, 0xa9a6

So you can do these.

1.Change the bt fw name to bcm43438a1.hcd for that script. Like this

From

    # ap6236
    if [[ "$DEVICE" == "0xa9a6" ]]; then
        FIRMWARE="$FIRMWARE/BCM4343B0.hcd"
        echo "load ap6236 bt firmware"
    # ap6256

To

    # ap6212
    if [[ "$DEVICE" == "0xa9a6" ]]; then
        FIRMWARE="$FIRMWARE/bcm43438a1.hcd"
        echo "load ap6212 bt firmware"
    # ap6256

2.Add this patch

diff --git a/recipes-kernel/rkwifibt-firmware/rkwifibt-firmware.bb b/recipes-kernel/rkwifibt-firmware/rkwifibt-firmware.bb
index 5e42d2d..8d0353f 100644
--- a/recipes-kernel/rkwifibt-firmware/rkwifibt-firmware.bb
+++ b/recipes-kernel/rkwifibt-firmware/rkwifibt-firmware.bb
@@ -15,6 +15,8 @@ inherit allarch deploy
 
 do_install() {
 	install -d ${D}/system/etc/firmware/
+	install -m 0644 ${S}/firmware/broadcom/AP6212A1/*/* \
+		-t ${D}/system/etc/firmware/
 	install -m 0644 ${S}/firmware/broadcom/AP6236/*/* \
 		-t ${D}/system/etc/firmware/
 	install -m 0644 ${S}/firmware/broadcom/AP6255/*/* \
@@ -32,6 +34,8 @@ do_install() {
 }
 
 PACKAGES =+ " \
+	${PN}-ap6212a1-wifi \
+	${PN}-ap6212a1-bt \
 	${PN}-ap6236-wifi \
 	${PN}-ap6236-bt \
 	${PN}-ap6255-wifi \
@@ -47,6 +51,15 @@ PACKAGES =+ " \
 	${PN}-rtl8821cu-bt \
 "
 
+FILES_${PN}-ap6212a1-wifi = " \
+	system/etc/firmware/fw_bcm43438a1.bin \
+	system/etc/firmware/nvram_ap6212a.txt \
+"
+
+FILES_${PN}-ap6212a1-bt = " \
+	system/etc/firmware/bcm43438a1.hcd \
+"
+
 FILES_${PN}-ap6236-wifi = " \
 	system/etc/firmware/fw_bcm43436b0.bin \
 	system/etc/firmware/nvram_ap6236.txt \

@Stephen do you mean the option 2 will allow us to have the option of either chipset?

But option one will not allow ap6236?

And what about the Ampak AP6212A (Cypress / Broadcom 43438) or the Azurewave AW-NB197SM (Cypress / Broadcom 43438) ?

No. We can only add ap6212 or ap6236. One of them. So far my method is to add one file, whose contents is ap6212 like. Script update-brcm-btfw-load-service.sh parses this file and decide which bt fw should be loaded.

For SDIO id of AP6212/AP6212A/AP6236/AW-NB197SM. They are the same, 0x02d0:0xa9a6.

But it needs to support the multiple firmwares for the different chipsets that you will provide.

Your way does not allow to use this device with the multiple different chipsets that you supply with

I see. I’m still looking for a better way. Please give me some time.

Please note that AP6212, AP6212A, AW-NB197SM use the same wifi and bt fw (same name).

I believe AP6212 and AP6212A use different firmware. So you’d need to differentiate there too.

I would like to propose a change on how you handle bluetooth. I will PR into https://github.com/radxa/meta-radxa and we’ll discuss it there.
One thing about that layer, how do you usually handle new branches? I don’t think you fork from master. That would be the typical approach. I am asking this because I worry that any contributions we make now in the dunfell branch may be lost when you create new branch in the future. Or you just fork for the new branch from the latest available branch, i.e. you forked zeus from warrior, and now you forked dunfell from zeus and so on?

Are you sure?

AP6212 uses BCM43430
AP6212A uses BCM43438
AW-NB197SM uses BCM43438

All of these use the same WiFi/BT firmware?

Okay.

Which repository do you think we can fork from for the dunfell release?

Yes. That’s what we did. If you have typical approach, I’m glad to try.

If you do not plan your master branch to be compatible with poky master then forking newer releases from the latest ones (like you did for forking zeus from warrior, dunfell from zeus and so on with future releases) should be fine.

There is a problem with sending PRs to https://github.com/radxa/meta-radxa
And this is because this repo is a fork of https://github.com/nishantpoorswani/meta-radxa
Apparently github won’t allow forking a fork. Can you on your side make meta-radxa a normal repository, meaning remove the fork relationshiop to the original repo? Is that original repo still maintained?

Our friend @nish helps to bring up radxa board for yocto. He is the maintainer.

How about sending PRs to his github repository?

I think yes. We’re going to send PR for dunfell to him.

Found a way to push to your repo and opened 1st PR

Hi @nish can you also add the bt and wifi firmware for AP6212? I only see firmware for AP6212A1 in github.com/nishantpoorswani/rkwifibt/tree/master/firmware/broadcom

@Stephen did you get a chance to look at the PR?

@Stephen any update here?

I think @Florin_Ionut solved it. See https://github.com/radxa/meta-radxa/commits/dunfell