Digging deeper I found this post documenting that for custom kernels the firmware is located in /lib/firmware/
but the kernel needs the firmware files to be placed in /system/etc/firmware/
. However this is not the case on my system. fw_bcm43456c5_ag.bin
and nvram_ap6256.txt
are both there. Though, clm_bcmdhd.blob
does not exist on my system. I checked syslog for any firmware related errors but found nothing:
$ dmesg | grep firmware
[ 0.000000] psci: PSCIv1.0 detected in firmware.
$ lsmod
Module Size Used by
$
There aren’t any kernel modules loaded as well, which seems suspicious.
Switching to the system image with working wifi I get the following:
$ dmesg | grep firmware
[...] psci: PSCIv1.0 detected in firmware.
[...] dhd_conf_read_config: Ignore config file /system/etc/firmware/config.txt
[...] Final fw_path=/system/etc/firmware/fw_bcm43456c5_ag.bin
[...] Final nv_path=/system/etc/firmware/nvram_ap6256.txt
[...] Final clm_path=/system/etc/firmware/clm_bcmdhd.blob
[...] Final conf_path=/system/etc/firmware/config.txt
[...] dhd_os_open_image: /system/etc/firmware/fw_bcm43456c5_ag.bin (585884 bytes) open success
[...] dhd_os_open_image: /system/etc/firmware/nvram_ap6256.txt (2099 bytes) open success
[...] dhd_apply_default_clm: Ignore clm file /system/etc/firmware/clm_bcmdhd.blob
$ lsmod
Module Size Used by
bcmdhd 1183744 0
binfmt_misc 20480 1
autofs4 40960 3
Firmware is found and the appropriate kernel modules get loaded.
Searching for bcmdhd.ko
on the system running my self-built image does not yield any results. Seems that I’m missing the driver kernel module, right?! Where do I get it from? It’s also suspicious that during boot the system does not even attempt to load any wifi related firmware.
Any pointers on how I may proceed are very appreciated!