Index | Thread | Search

From:
Kurt Miller <bsdkurt@gmail.com>
Subject:
Re: Radxa ROCK 4B bwfm
To:
Stuart Henderson <stu@spacehopper.org>
Cc:
ports@openbsd.org, Kurt Miller <kurt@openbsd.org>, Patrick Wildt <patrick@blueri.se>
Date:
Mon, 15 Jul 2024 14:47:17 -0400

Download raw body.

Thread
On Jul 2, 2024, at 7:46 AM, Stuart Henderson <stu@spacehopper.org> wrote:
> 
> On 2024/07/02 01:17, Lucas Gabriel Vuotto wrote:
>> Hello ports@, Kurt, Patrick,
>> 
>> I have a Radxa ROCK 4B [0] lying around. It has a bwfm-compatible WiFi
>> but no firmware files. I went ahead and downloaded the files from [1,2]
>> (the actual files, not the symlinks, but kept the naming) and the
>> network is working in some light testing (tcpdump and ssh).  Could it
>> be possible to update the firmware to a newer version? I'm not sending
>> a patch right away because this ports seems a bit more special than the
>> rest. I believe that the relevant files should be added to Kurt's repo.
>> Should I send a PR there, get a new release and then update the
>> supplemental files version?
> 
> I think it would be preferable to fetch them from the armbian repo
> rather than copying them to another source.
> 
> Unfortunately there are no license files for these so not sure what to
> do there.
> 
> Also noticed while investigating this (only considering files which
> are already in the bwfm-firmware port), linux-firmware has newer files
> for 43340 43362 4339 43430 43455 4354 4356-pcie 4356-sdio 43570-pcie
> 4373 in the cypress (rather than brcm) dir, newer ones in the brcm
> dir for 43241b0 4329 4330 4358-pcie, and some fixes for rpi nvram files.
> 
> (I can do some light testing for 43143 and whatever's in the pi 3b [chip
> not listed in dmesg and it's sdio so pci/usb IDs don't help], the only
> other bwfm I have is unsupported plus that's in a MacBook anyway so has
> a different firmware fetch mechanism).
> 

I’m happy to update the GitHub repo with tested updated firmware. Pull 
requests welcome.

The Broadcom firmware is licensed the same in two of the upstream
repos:
https://github.com/RPi-Distro/firmware-nonfree/blob/buster/LICENCE.broadcom_bcm43xx
https://github.com/Freescale/meta-freescale-3rdparty/blob/master/recipes-bsp/broadcom-nvram-config/files/LICENCE.broadcom_bcm43xx

For the other two already in the port I assumed the missing license 
file would be under the same terms, given they ultimately come from
Broadcom. I think that’s a safe assumption but it is an assumption.

Best,
-Kurt

>> [0]: https://wiki.radxa.com/Rockpi4
>> [1]: https://github.com/armbian/firmware/blob/master/brcm/brcmfmac43456-sdio.radxa%2Crockpi4b.bin
>> [2]: https://github.com/armbian/firmware/blob/master/brcm/brcmfmac43456-sdio.radxa%2Crockpi4b.txt
>> [3]: https://github.com/bsdkurt/brcm-supplemental
>> 
>> 
>> OpenBSD 7.5-current (GENERIC.MP) #94: Mon Jul  1 06:31:41 MDT 2024
>>    deraadt@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC.MP
>> real mem  = 4038746112 (3851MB)
>> avail mem = 3830820864 (3653MB)
>> random: good seed from bootblocks
>> mainbus0 at root: Radxa ROCK Pi 4B
>> psci0 at mainbus0: PSCI 1.1, SMCCC 1.4, SYSTEM_SUSPEND
>> efi0 at mainbus0: UEFI 2.8
>> efi0: Das U-Boot rev 0x20211000
>> smbios0 at efi0: SMBIOS 3.0
>> smbios0: vendor U-Boot version "2021.10" date 10/01/2021
>> smbios0: Unknown Unknown Product
>> cpu0 at mainbus0 mpidr 0: ARM Cortex-A53 r0p4
>> cpu0: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
>> cpu0: 512KB 64b/line 16-way L2 cache
>> cpu0: CRC32,SHA2,SHA1,AES+PMULL,ASID16
>> cpu1 at mainbus0 mpidr 1: ARM Cortex-A53 r0p4
>> cpu1: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
>> cpu1: 512KB 64b/line 16-way L2 cache
>> cpu2 at mainbus0 mpidr 2: ARM Cortex-A53 r0p4
>> cpu2: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
>> cpu2: 512KB 64b/line 16-way L2 cache
>> cpu3 at mainbus0 mpidr 3: ARM Cortex-A53 r0p4
>> cpu3: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
>> cpu3: 512KB 64b/line 16-way L2 cache
>> cpu4 at mainbus0 mpidr 100: ARM Cortex-A72 r0p2
>> cpu4: 48KB 64b/line 3-way L1 PIPT I-cache, 32KB 64b/line 2-way L1 D-cache
>> cpu4: 1024KB 64b/line 16-way L2 cache
>> cpu4: CRC32,SHA2,SHA1,AES+PMULL,ASID16
>> cpu5 at mainbus0 mpidr 101: ARM Cortex-A72 r0p2
>> cpu5: 48KB 64b/line 3-way L1 PIPT I-cache, 32KB 64b/line 2-way L1 D-cache
>> cpu5: 1024KB 64b/line 16-way L2 cache
>> apm0 at mainbus0
>> agintc0 at mainbus0 sec shift 3:3 nirq 288 nredist 6 ipi: 0, 1, 2: "interrupt-controller"
>> agintcmsi0 at agintc0
>> syscon0 at mainbus0: "qos"
>> syscon1 at mainbus0: "qos"
>> syscon2 at mainbus0: "qos"
>> syscon3 at mainbus0: "qos"
>> syscon4 at mainbus0: "qos"
>> syscon5 at mainbus0: "qos"
>> syscon6 at mainbus0: "qos"
>> syscon7 at mainbus0: "qos"
>> syscon8 at mainbus0: "qos"
>> syscon9 at mainbus0: "qos"
>> syscon10 at mainbus0: "qos"
>> syscon11 at mainbus0: "qos"
>> syscon12 at mainbus0: "qos"
>> syscon13 at mainbus0: "qos"
>> syscon14 at mainbus0: "qos"
>> syscon15 at mainbus0: "qos"
>> syscon16 at mainbus0: "qos"
>> syscon17 at mainbus0: "qos"
>> syscon18 at mainbus0: "qos"
>> syscon19 at mainbus0: "qos"
>> syscon20 at mainbus0: "qos"
>> syscon21 at mainbus0: "qos"
>> syscon22 at mainbus0: "qos"
>> syscon23 at mainbus0: "qos"
>> syscon24 at mainbus0: "qos"
>> syscon25 at mainbus0: "power-management"
>> "power-controller" at syscon25 not configured
>> syscon26 at mainbus0: "syscon"
>> "io-domains" at syscon26 not configured
>> rkclock0 at mainbus0
>> rkclock1 at mainbus0
>> syscon27 at mainbus0: "syscon"
>> "io-domains" at syscon27 not configured
>> "usb2phy" at syscon27 not configured
>> "usb2phy" at syscon27 not configured
>> rkemmcphy0 at syscon27
>> "pcie-phy" at syscon27 not configured
>> rktcphy0 at mainbus0
>> rktcphy1 at mainbus0
>> rkpinctrl0 at mainbus0: "pinctrl"
>> rkgpio0 at rkpinctrl0
>> rkgpio1 at rkpinctrl0
>> rkgpio2 at rkpinctrl0
>> rkgpio3 at rkpinctrl0
>> rkgpio4 at rkpinctrl0
>> pwmreg0 at mainbus0
>> syscon28 at mainbus0: "syscon"
>> syscon29 at mainbus0: "syscon"
>> "fit-images" at mainbus0 not configured
>> rkdrm0 at mainbus0
>> drm0 at rkdrm0
>> "pmu_a53" at mainbus0 not configured
>> "pmu_a72" at mainbus0 not configured
>> agtimer0 at mainbus0: 24000 kHz
>> "xin24m" at mainbus0 not configured
>> rkpcie0 at mainbus0
>> rkpcie0: link training timeout
>> dwge0 at mainbus0: rev 0x35, address f6:d2:37:a3:9f:1b
>> rgephy0 at dwge0 phy 0: RTL8169S/8110S/8211 PHY, rev. 6
>> dwmmc0 at mainbus0: 50 MHz base clock
>> sdmmc0 at dwmmc0: 4-bit, sd high-speed, dma
>> dwmmc1 at mainbus0: 50 MHz base clock
>> sdmmc1 at dwmmc1: 4-bit, sd high-speed, mmc high-speed, dma
>> sdhc0 at mainbus0
>> sdhc0: SDHC 3.00, 200 MHz base clock
>> sdmmc2 at sdhc0: 8-bit, sd high-speed, mmc high-speed, dma
>> ehci0 at mainbus0
>> usb0 at ehci0: USB revision 2.0
>> uhub0 at usb0 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1
>> ohci0 at mainbus0: version 1.0
>> ehci1 at mainbus0
>> usb1 at ehci1: USB revision 2.0
>> uhub1 at usb1 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1
>> ohci1 at mainbus0: version 1.0
>> rkdwusb0 at mainbus0: "usb"
>> xhci0 at rkdwusb0, xHCI 1.10
>> usb2 at xhci0: USB revision 3.0
>> uhub2 at usb2 configuration 1 interface 0 "Generic xHCI root hub" rev 3.00/1.00 addr 1
>> rkdwusb1 at mainbus0: "usb"
>> xhci1 at rkdwusb1, xHCI 1.10
>> usb3 at xhci1: USB revision 3.0
>> uhub3 at usb3 configuration 1 interface 0 "Generic xHCI root hub" rev 3.00/1.00 addr 1
>> "saradc" at mainbus0 not configured
>> rkiic0 at mainbus0
>> iic0 at rkiic0
>> rkiic1 at mainbus0
>> iic1 at rkiic1
>> com0 at mainbus0: dw16550, 64 byte fifo
>> com1 at mainbus0: dw16550, 64 byte fifo
>> com1: console
>> rktemp0 at mainbus0
>> rkiic2 at mainbus0
>> iic2 at rkiic2
>> rkpmic0 at iic2 addr 0x1b: RK808
>> fanpwr0 at iic2 addr 0x40: SYR827, 1.00 VDC
>> fanpwr1 at iic2 addr 0x41: SYR828, 1.00 VDC
>> rkiic3 at mainbus0
>> iic3 at rkiic3
>> rkpwm0 at mainbus0
>> "video-codec" at mainbus0 not configured
>> "iommu" at mainbus0 not configured
>> "video-codec" at mainbus0 not configured
>> "iommu" at mainbus0 not configured
>> "rga" at mainbus0 not configured
>> "efuse" at mainbus0 not configured
>> "dma-controller" at mainbus0 not configured
>> "dma-controller" at mainbus0 not configured
>> "watchdog" at mainbus0 not configured
>> "rktimer" at mainbus0 not configured
>> rkiis0 at mainbus0
>> rkiis1 at mainbus0
>> rkiis2 at mainbus0
>> rkvop0 at mainbus0: RK3399 VOPL
>> "iommu" at mainbus0 not configured
>> rkvop1 at mainbus0: RK3399 VOPB
>> "iommu" at mainbus0 not configured
>> "iommu" at mainbus0 not configured
>> "iommu" at mainbus0 not configured
>> simpleaudio0 at mainbus0
>> rkdwhdmi0 at mainbus0: HDMI TX
>> rkdwhdmi0: version 2.11a, phytype 0xf3
>> "gpu" at mainbus0 not configured
>> "opp-table0" at mainbus0 not configured
>> "opp-table1" at mainbus0 not configured
>> "opp-table2" at mainbus0 not configured
>> "external-gmac-clock" at mainbus0 not configured
>> "sdio-pwrseq" at mainbus0 not configured
>> "dc-12v" at mainbus0 not configured
>> "vcc-sys" at mainbus0 not configured
>> "vcc-0v9" at mainbus0 not configured
>> "vcc3v3-pcie-regulator" at mainbus0 not configured
>> "vcc3v3-sys" at mainbus0 not configured
>> "vcc5v0-host-regulator" at mainbus0 not configured
>> "vcc5v0-typec-regulator" at mainbus0 not configured
>> "vcc3v3-phy-regulator" at mainbus0 not configured
>> "binman" at mainbus0 not configured
>> "dfi" at mainbus0 not configured
>> rkrng0 at mainbus0: ver 1
>> "dmc" at mainbus0 not configured
>> usb4 at ohci0: USB revision 1.0
>> uhub4 at usb4 configuration 1 interface 0 "Generic OHCI root hub" rev 1.00/1.00 addr 1
>> usb5 at ohci1: USB revision 1.0
>> uhub5 at usb5 configuration 1 interface 0 "Generic OHCI root hub" rev 1.00/1.00 addr 1
>> bwfm0 at sdmmc0 function 1
>> manufacturer 0x02d0, product 0xa9bf at sdmmc0 function 2 not configured
>> manufacturer 0x02d0, product 0xa9bf at sdmmc0 function 3 not configured
>> scsibus0 at sdmmc1: 2 targets, initiator 0
>> sd0 at scsibus0 targ 1 lun 0: <SD/MMC, EE4S5, 0030> removable
>> sd0: 244480MB, 512 bytes/sector, 500695040 sectors
>> scsibus1 at sdmmc2: 2 targets, initiator 0
>> sd1 at scsibus1 targ 1 lun 0: <SD/MMC, SLD32G, 0000> removable
>> sd1: 29600MB, 512 bytes/sector, 60620800 sectors
>> vscsi0 at root
>> scsibus2 at vscsi0: 256 targets
>> softraid0 at root
>> scsibus3 at softraid0: 256 targets
>> sd2 at scsibus3 targ 1 lun 0: <OPENBSD, SR CRYPTO, 006>
>> sd2: 244447MB, 512 bytes/sector, 500628976 sectors
>> root on sd2a (656793cc3f542ebc.a) swap on sd2b dump on sd2b
>> WARNING: bad clock chip time
>> WARNING: CHECK AND RESET THE DATE!
>> rkvop0: using CRTC 0 for RK3399 VOPL
>> rkvop1: using CRTC 1 for RK3399 VOPB
>> drm:pid0:drm_fb_helper_find_format *WARNING* [drm] bpp/depth value of 32/24 not supported
>> drm:pid0:drm_fb_helper_find_format *WARNING* [drm] bpp/depth value of 32/24 not supported
>> drm:pid0:__drm_fb_helper_find_sizes *WARNING* [drm] No compatible format found
>> rkdrm0: 1024x768, 32bpp
>> wsdisplay0 at rkdrm0 mux 1
>> wsdisplay0: screen 0-5 added (std, vt100 emulation)
>> bwfm0: address 08:e9:f6:58:d5:f4
>> 
>