Kernel compiled from source breaks wifi - Android Q&A, Help & Troubleshooting

Hi I am new to kernel tweaking. I am trying to compile the kernel for Xiaomi redmi 5a for latest miui stock rom from source located at
https://github.com/MiCode/Xiaomi_Kernel_OpenSource/tree/riva-o-oss
After flashing the boot image created with compiled kernel , everything except wifi works.
Google search revealed that it is a common issue and one suggestion is to put the wil6210.ko (wifi related) file from compiled kernel in to system/lib/modules which doesn't work.
What confuses me even more is that even in if I delete the wil6210.ko from system/lib/module when the stock kernel is running , the wifi still works . It Seems like this kernel module has no effect on wifi.
But deleting the vendor/lib/modules/pronto/pronto_wlan.ko breaks wifi for stock kernel that came with the rom.
But compiling the kernel from source doesn't generate such files.
one related info at https://github.com/Genom-Project/android_kernel_xiaomi_vince-3.18/issues/2
I found a guide at https://github.com/MiCode/Xiaomi_Ke...#download-qualcomm-android-enablement-project that talks about wifi module.
The download seems to be to big and maybe too many unnecessary files will be downloaded. Tried to init and sync the repo. It seems huge. So if nothing else works will try this.
https://github.com/supercairos/android_device_xiaomi_land/issues/1#issuecomment-259458071 seems to provide a shortcut technique. It asks to download the prima folder from https://source.codeaurora.org/quic/...opensource/wlan/prima/tree/?h=LA.UM.5.3_rb1.1 (I can replace the h value to my kernels tag) , merge it into the source and then compile it to generate the prima_wlan.ko . I did so and also added CONFIG_PRONTO_WLAN=m ( m to compile as module) but such file is not being generated after compiling.
So please, if anyone went through something similar , help me with your recommendations.,

try lineage os aarch64 cumpiler and try prima wlan driver
u can use this https://github.com/baunilla/android...mmit/b7e6d4e6aed50d8ae652f292235be1398be5f344

Related

[Q] Compile bcm4329 as built-in?

I was following some guide to compile pershoot's kernel, and I compiled everything as built-in and disabled module support. After I installed the new kernel, the wifi can not be turned on. Any suggestions? (I'd really love to have a all-in-one kernel without "modprobe" things)
Thanks in advance.
You may want to check out Clemsyn's kernels. He typically builds his as all in ones.
Thanks. I've tried all Clemsyn's latest kernels (with Calkulin's ROM, if that matters) and none will boot (stucked at the viewsonic birds logo). I am not sure if that is related to OC... but I still need a kernel that has nls-gb2312/utf8 support.
Interestingly, I unzipped Clemsyn's kernel zip and found his /system/ also has bcm4329.ko as a module. Is it true that wifi driver must be compiled as module to work?
I saw my adb logs that Wifiservices is complaining about driver not available. I assume this must be a failure of "modprobe". How can I manually enable the wifi? Is there some equivalent command like "ifup wifi"?
It seems android wifi.c is making a hardwired assumption that wlan0 driver is compiled as kernel module. To support all-built-in kernel, I must recompile android as well. Could someone point a link to HOWTO-style guide for compiling android 2.2 from scratch? Preferably Calkune's ROM.
Thanks!

(Q) Modules for Wifi

Maybe this is a easy solvable problem, but i tried and googled and could solve it. So...
Im trying to compile a wifi module for evervolv kernel...i have the source, also toolchain. Im using ubuntu, and i have problems extracting toolchains path to kernel directory.I have all necessery tools.
Filesystem->android->toolchain folder and kernel source folder -- this is the location of my files (computer name is AcaPC).
And im using this *export PATH=$HOME/android/toolchain-4.6.3/bin:$PATH* (i tried AcaPC for HOME), but im getting error that my path is not correct. I download the source many times and tried everything, but cant get the path correct. Can someone tell me what am i doing wrong?
Thanks!

Updated Wifi driver, Prima 3.2.3.179

The current Wifi driver Prima branch 3.2.3 doesn't compile with the current kernel. I've added a new kernel config option 'PRIMA_NEXUS7_FLO' and a few hacks to make it work.
The diff is against:
https://www.codeaurora.org/cgit/external/wlan/prima/
Version 3.2.3.179
In my testing, the new driver is slower but the connection is much more stable, especially with 802.11n (I had to switch to 802.11g because it was too unstable). It also fixes problems with channels >11, which don't work properly with the stock driver.
The firmware files from the new branch are required for the driver to work. You need to replace the corresponding files in the ROM with the new files from firmware_bin/WCNSS_cfg.dat, WCNSS_qcom_cfg.ini, WCNSS_qcom_wlan_nv.bin.
v3.2.3.179 picks up the firmware files from: '/system/vendor/firmware/wlan/prima/'.
tni.andro said:
The current Wifi driver Prima branch 3.2.3 doesn't compile with the current kernel. I've added a new kernel config option 'PRIMA_NEXUS7_FLO' and a few hacks to make it work.
The diff is against:
https://www.codeaurora.org/cgit/external/wlan/prima/
Version 3.2.3.179
In my testing, the new driver is slower but the connection is much more stable, especially with 802.11n (I had to switch to 802.11g because it was too unstable). It also fixes problems with channels >11, which don't work properly with the stock driver.
The firmware files from the new branch are required for the driver to work. You need to replace the corresponding files in the ROM with the new files from firmware_bin/WCNSS_cfg.dat, WCNSS_qcom_cfg.ini, WCNSS_qcom_wlan_nv.bin.
Click to expand...
Click to collapse
Flo has some weird firmware stuff going on. How did you end up packaging it? Also, CM has a file WCNSS_qcom_wlan_nv_flo.bin and WCNSS_qcom_wlan_nv_deb.bin
tiny4579 said:
Flo has some weird firmware stuff going on. How did you end up packaging it? Also, CM has a file WCNSS_qcom_wlan_nv_flo.bin and WCNSS_qcom_wlan_nv_deb.bin
Click to expand...
Click to collapse
AOSP has a patch that mucks around with the standard file locations/names (part of 'device/asus/flo/'). Prima v3.2.3.179 uses firmware files from '/system/vendor/firmware/wlan/prima/' (same names as source files from 'firmware_bin/').
For my kernel installation, I use a script and copy the files over via ssh/scp.
tni.andro said:
AOSP has a patch that mucks around with the standard file locations/names (part of 'device/asus/flo/'). Prima v3.2.3.179 uses firmware files from '/system/vendor/firmware/wlan/prima/' (same names as source files from 'firmware_bin/').
For my kernel installation, I use a script and copy the files over via ssh/scp.
Click to expand...
Click to collapse
Well, I think I derped. I forgot to update the kernel in my zip. Now that I did it's working. I basically emulated the way it currently was configured in AOSP as far as the locations. I didn't want to mess things up.

Build from source

Tried to cook CM at my own but I could not make it boot, I followed all the steps in CM wiki although it didn't work... I managed to have a non-bootable zip file.. I belive the problem relies on the omap4 proprietary source... I've manually merged this http://omapzoom.org/?p=device/ti/pr...c7d5886e3284d1df8a63f;hb=d-kitkat-mr2-release to cm source on my computer but I'm not sure if I should, even though I couldn't build without these files...
Any help would be nice
Half solution
I found in this post a half solution... I replaced my vendor's folder for the official cm one and got it booted and working which confirms that my problem is those propietary things...

Asus Zenwatch 2 (Sparrow) - How to get rebuilt kernel work (need framebuffer console)

Hello XDA developers,
First of all my motivation to write here is to create a commandline GNU/Linux-like UI (and maybe add desktop GUI later) on the Asus Zenwatch 2, so I could see the kernel messages at bootup and use Midnight Commander without starting the entire main system (for example, get a text-mode shell and stop after every devices got initialized, firmwares got loaded, but before loading any Surfaceflinger and Dalvik stuff). I did similar thing on an Android tablet before by writing my own keyboard and touchscreen handlers based on Yaft. But that didn't help with boot-time kernel messages and the built-in framebuffer console in the kernel is probably much better. It's not enabled in the stock kernel, so I tried to recompile the Sparrow kernel from source (I didn't modify the default configs yet). After some tweaks to the kernel-source (which doesn't compile without them) I could build the Momentum-kernel and the stock Sparrow-kernel too using the provided .config files (e.g: make sparrow_defconfig). I used Android NDK's r13b gcc on Lubuntu 18.04, because an earlier attempt with NDK r18b wanted to use clang and compilation stopped early with errors.
My problem is that despite the kernel finally got compiled it doesn't seem to start at all. (I had similar experience with the Android-kernel in the past, but more success with Raspberry PI)...
I used mkbootimg to repack the generated zImage-dtb and the previously decompressed initrd into a boot.img, and ran fastboot boot on it, but booting simply stucked at fastboot screen, the animated ASUS logo never came in.
Can anyone point me into the right direction how I could troubleshoot further why the kernel doesn't work?
(I assume the 4.9 gcc isn't the issue here, though I got a zImage with slightly different filesize. I've read somewhere the earlier 14.04 Ubuntu and 4.8 gcc is advised for Sparrow kernel compilation but do these versions matter here? Should I replace the modules too on the system partition with their newly built versions, as the zImage changed?)
I know others managed to build a working kernel, for example TWRP has its own custom kernel and it works fine on the Sparrow watch... Is there any step I might have missed? Is there a debug-tool or logging which helps me to find out why the kernel doesn't boot? Something to troubleshoot the kernel-loading and booting? (A simulator for example? Or how do the experts do it in practice?)
I hope I declared every aspects to get some help. If for some reason I don't succeed I might try to make more linux-like AsteroidOS or PostmarketOS to get my complete Linux console on the smartwatch. The thing is that these don't support all hardware on the watch, that's why I'm trying with Android in the first place.
I guess if I'll be able to compile and then run the stock original kernel somehow the rest will be easy. (To enable framebuffer-console, set governors, remove unnecessary drivers, etc.)
Thanks in advance for the help, XDA gurus...

Categories

Resources