From: Kurt Miller Subject: Re: Radxa ROCK 4B bwfm To: Stuart Henderson Cc: ports@openbsd.org, Kurt Miller , Patrick Wildt Date: Mon, 15 Jul 2024 14:47:17 -0400 On Jul 2, 2024, at 7:46 AM, Stuart Henderson 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: removable >> sd0: 244480MB, 512 bytes/sector, 500695040 sectors >> scsibus1 at sdmmc2: 2 targets, initiator 0 >> sd1 at scsibus1 targ 1 lun 0: 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: >> 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 >> >