Build kernel results no network device

I am using the version 17.06.1. I installed the image to eMMC. Then modified the kernel: changed I2C0 QUP driver to GPIO bitbanging and it works as it should. But in addition I lost wifi capability…
if I run
dmesg | grep wcn

the result is the following:

root@linaro-alip:~# dmesg | grep wcn [ 0.205843] irq: no irq domain found for /wcnss-smp2p/slave-kernel ! [ 3.417638] Modules linked in: qcom_wcnss_pil(+) msm_rng(+) rng_core venus_core(+) qcom_camss mdt_loader videobuf2_dma_sg v4l2_mem2mem videobuf2_memops videobuf2_v4l2 qcom_cci videobuf2_core [ 3.749935] a204000.wcnss supply vddcx not found, using dummy regulator [ 3.757107] remoteproc remoteproc1: a204000.wcnss is available [ 3.762295] remoteproc remoteproc1: Direct firmware load for wcnss.mdt failed with error -2 [ 3.768093] remoteproc remoteproc1: powering up a204000.wcnss [ 3.776417] remoteproc remoteproc1: Direct firmware load for wcnss.mdt failed with error -2

Is it happens only for me due to the devicetree/kernelmodule modifications or it happens for everyone with build image?

Thank you in advance for any input.

whiskeyske

some questions:
Did you also build and install the modules ?
Do you have /lib/firmware/wcnss.mdt ?

match the “uname -r” output to the folder in /lib/modules, If it doesn’t match build modules and copy it to lib modules…

@ Loic
Hi, I did build and install the modules into initrd.img. Unfortunately it does not containing the firmware for the WCNSS.
The original modules in /lib/modules… are still there but somehow the kernel is not searching this location…

@ric96
when I am checking the “uname -a” the version is identical although the original has a “#1” after build version, and my modified build has “#4”. I do not know what thes numbers stands for but may cause the problem…

When you build modules, you need to install them in the lib/modules directory of the rootfs filesystem.
lib/modules does not contain firmware which are located in lib/firmware.
I don’t know how you proceed, but take care to not overwrite all the lib/ dir.
$ make modules_install INSTALL_MOD_PATH=/PATH/TO/YOUR/ROOTDIR

When you make the modules you need to strip them, otherwise they will be too big, and you need to get them into the sub right directory so the kernel will find them. When I am building on the 410c board I use the following command to install the modules.

sudo make INSTALL_MOD_STRIP=1 modules_install KERNELRELEASE=`make kernelversion`-linaro-lt-qcom

If you are cross compiling, be careful not to overwrite your build system’s modules directory, you may want to add INSTALL_MOD_PATH to the command.

Hi ljking,

Thank you for the answer but the issue was that the modules were installed into the initrd and not into the rootfs…
It was because I was building the system by cross compile and there was no direct way to install modules into rootfs.
So Loic was the winner.
@Loic Thanks a lot

Regards whiskeyske