How do I change kernel configuration in Yocto without breaking FMAC backport?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
ShSt_3500156
Level 2
Level 2

I have been building images for the imx6ull EVK using the instructions in the document "Murata Wi-Fi BT Solution for i.MX Linux User Manual 5.2.pdf". Everything works fine when I follow the directions. After getting the code working, I wanted to add POSIX message queues to my kernel configuration. I added a Yocto layer and created a kernel recipe to provide a configuration fragment. The linux-imx recipe works fine, and I end up with the message queues enabled. However, the backporttool no longer builds. I get the errors below (with some editing to hide my client's name):

ERROR: backporttool-native-1.0-r0 do_compile: Function failed: do_compile (log file is located at /home/sstevenson/work/xxx/gitrepo/000-xxx/murata-imx-bsp/build-imx6ullevk-x11/tmp/work/x86_64-linux/backporttool-native/1.0-r0/temp/log.do_compile.93404)

ERROR: Logfile of failure stored in: /home/sstevenson/work/xxx/gitrepo/000-xxx/murata-imx-bsp/build-imx6ullevk-x11/tmp/work/x86_64-linux/backporttool-native/1.0-r0/temp/log.do_compile.93404

Log data follows:

| DEBUG: Executing shell function do_compile

| Compiling:

| /home/sstevenson/work/xxx/gitrepo/000-xxx/murata-imx-bsp/build-imx6ullevk-x11/tmp/work/x86_64-linux/backporttool-native/1.0-r0/backporttool-native-1.0

| KLIB:

| KLIB_BUILD:

| KBUILD_OUTPUT:

| cp: cannot create regular file '././.git/objects/e8/1713c7433ff344527db9955440a6773ec90d9f': Permission denied

| cp: cannot create regular file '././.git/objects/e8/e0f1bc57e27cd2e71114077642556703331e55': Permission denied

| cp: cannot create regular file '././.git/objects/e8/286585e14978dc86684a5f4034c62777bee2c2': Permission denied

| cp: cannot create regular file '././.git/objects/e5/aad0f6869a403b5969d972146925587e89dab0': Permission denied

| cp: cannot create regular file '././.git/objects/eb/9508267dffc6325079dc020a81a2f75bd04a96': Permission denied

| cp: cannot create regular file '././.git/objects/cb/cd2c6d3bca817a7eaa073e39c53fc0cb39c401': Permission denied

| cp: cannot create regular file '././.git/objects/cb/f4996dd9c1045ecc7ffa66a9ec79edd99b1038': Permission denied

| cp: cannot create regular file '././.git/objects/79/0631d709f80ce4df64116fdfb7735464774774': Permission denied

| cp: cannot create regular file '././.git/objects/79/a8358886fe719c62e04b597529c18a70f704fb': Permission denied

.

.

.

Once this happens, I cannot get the build working again, other than by starting from scratch. What is the recommended way to modify the kernel configuration but keep the backport tool working? I have considering modifying the 0001-defconfig.patch file in "murata-imx-bsp/sources/meta-murata-wireless/recipes-kernel/linux/linux-imx-4.9.11" but that seems like a poor solution, since I need to modify the Murata provided package.

0 Likes
1 Solution

Hi jameel.kareem_2628916

I tested WiFi before making any changes to my build so there was no need for me to do that again. I deleted the tmp and sstate-cache directories and after a few hours of rebuilding everything worked fine. Now I have the WiFi working, plus the kernel change that I wanted.

Now I know that I can successfully patch the kernel, but it is bad that I need to rebuild absolutely everything, because It takes so many hours. Before rebuilding everything, I tried to clear the state cache for all of the Murata layer recipes: backporttool-native, hostapd, murata-binaries, wpa_supplicant, backporttool-linux, firmware-imx, linux-imx, and linux-firmware. In that case the build finished without errors, but the "brcmfmac" driver would not load properly, because there was some kind of version mismatch. So there is something not being rebuilt even when all of those recipes are started from scratch. I noticed that the backport recipes use a staging directory at "STAGING_KERNEL_BUILDDIR". Next time I will try to delete that directory each time I build linux-imx.

Thanks,

Shawn

View solution in original post

0 Likes
13 Replies
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

Adding jameel.kareem_2628916skerr_1713761​ and inoue_tomohiro_1742091​ from Murata.

Please specify which Murata module you are using with the i.MX6UL EVK.

0 Likes

I am using the 1DX module that comes with the Wi-Fi and BT Development Kit for i.MX6: Model: Type1DX EVK+.  And I am using the i.MX6ULL.

0 Likes
Anonymous
Not applicable

Hi,

Please take the latest script file from the following location and then try again.

https://github.com/murata-wireless/meta-murata-wireless/blob/master/cyw-script-utils/latest/Murata_Wireless_Yocto_Build.sh

The backport recipes have been updated.

Please take the release of imx-morty-battra_r1.1 / imx-krogoth-battra_r1.1 / imx8-morty-battra_r1.1 ( as per your build config)

With Regards,

Jameel Basha

Thanks Jameel. I'll try it when I have a chance. It will likely take me several days to get back to you.

0 Likes

Jameel,

I see that the script is for the "Fast Track" build steps in section 4.2. I've been following the "Manual Steps" in section 4.3. Can I just copy the script into the murata-imx-bsp folder and run it? Will it wipe out my current build folder? Or is the intention that I should start a new build apart from what I currently have? Please let me know.

Thanks,

Shawn

0 Likes

Yesterday, I created a whole new folder and ran the Murata_Wireless_Yocto_Build.sh script. This morning I transferred the created images to the SD card and tried setting up wlan0. Right away I ran into a problem when I typed "ifconfig wlan0 up". Here is the output that I saw:

Dongle Host Driver, version 1.141.100.6 (r)

Compiled in drivers/net/wireless/bcmdhd

wl_android_wifi_on in

mmc0: queuing unknown CIS tuple 0x80 (2 bytes)

mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

mmc0: queuing unknown CIS tuple 0x80 (7 bytes)

mmc0: queuing unknown CIS tuple 0x80 (3 bytes)

mmc0: queuing unknown CIS tuple 0x80 (6 bytes)

F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x1 pkg:0x3

DHD: dongle ram size is set to 524288(orig 524288) at 0x0

dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.

dhdsdio_htclk: HT Avail timeout (1000000): clkctl 0x50

dhdsdio_htclk: HT Avail timeout (1000000): clkctl 0x50

I didn't attempt to do any kernel patching or other changes to the configuration, so I was just trying to get the unmodified build working with your script. I am not running Android, so is there any reason why "wl_android_wifi_on in" should be appearing in the output? Please help.

Thanks,

Shawn

0 Likes
Anonymous
Not applicable

HI Shawn,

That is totally incorrectly. You haven’t flashed the image correctly.

Request you to flash using another SD card.

May I know, which release you built ?. is it imx-morty-battra?.

There won’t be any reference to android at all.

With Regards,

Jameel Basha

Hi Jameel,

In the script I chose the following:

i.MX Yocto Release          : 4.9.11_1.0.0 GA
Yocto branch                : morty
fmac version                : "battra" (v4.14)
Target                      : imx6ull14x14evk

meta-murata-wireless Release Tag: imx-morty-battra_r1.1

VIO Signaling               : 3.3V VIO signaling (No HW mods needed)
DISTRO                      : fsl-imx-x11
Image                       : fsl-image-validation-imx
Build Directory             : build-imx6ullevk-x11

I flashed the ".sdcard" image on another card and then switched the correct .dtb file in the u-boot prompt. I still get the same error. I must have made some type of build error. I'll try again.

Thanks,

Shawn

0 Likes

Jameel,

I have everything building correctly again. Now I want to change a configuration option for the kernel. I have some questions before I begin.

1. I see in the file "murata-imx-bsp/sources/meta-murata-wireless/recipes-kernel/linux/0001-defconfig.patch" that the file imx_v7_defconfig is patched directly. Is that the recommended way for me to add configuration options as well?

2. In order for the Murata kernel patches to work correctly, I must patch imx_v7_defconfig AFTER the Murata patch has been applied. Is that correct?

3. After generating the patch file, is there any particular steps I need to take to rebuild the image? What I would typically do is the following:

bitbake linux-imx -c cleansstate

bitbake fsl-image-validation-imx

I appreciate any advice you can give me to get this working.

Thanks,

Shawn

0 Likes
Anonymous
Not applicable

Hi Shawn,

1. You can generate a new defconfig patch file using the base Kernel default config file and replace it in “meta-murata-wireless” layer. And then issue the following commands from the <bsp-dir> to continue the build:

$ source setup-environments <build-dir>

$ bitbake fsl-image-validation-imx

2. Yes. Otherwise, the patch won’t get applied from “meta-murata-wireless” layer.

3. Provided in Step 1.

With regards,

Jameel Basha

0 Likes

Hi Jameel,

I updated the patch in the meta-murata-wireless layer and ran the bitbake command as you suggested. There weren't any build errors that I noticed, but lots of errors during startup, as follows (this is just a small piece):

brcmutil: loading out-of-tree module taints kernel.

brcmutil: loading out-of-tree module taints kernel.

Loading modules backported from Linux version v4.14-0-gbebc608

Backport generated by backports.git v4.14-rc2-1-35-g3d13478

brcmfmac: disagrees about version of symbol cfg80211_sched_scan_results

brcmfmac: Unknown symbol cfg80211_sched_scan_results (err -22)

brcmfmac: disagrees about version of symbol cfg80211_scan_done

brcmfmac: Unknown symbol cfg80211_scan_done (err -22)

brcmfmac: disagrees about version of symbol cfg80211_sched_scan_stopped

brcmfmac: Unknown symbol cfg80211_sched_scan_stopped (err -22)

Any idea what to try next? There seems to be a problem in that some piece was not re-built. One thing I could do is delete the folders "build-imx6ullevk-x11/tmp" and "build-imx6ullevk-x11/sstate-cache" so that everything is rebuilt from scratch. But then it will take 3 to 4 hours to build again.

Thanks,

Shawn

0 Likes
Anonymous
Not applicable

Hi Shawn,

Before you move further with any defconfig changes from your end, revert back to original defconfig from murata-wireless or build a new one from scratch and keep it as reference.

Ensure that, you were able to bring up WiFi and Bluetooth.

After that, you can make mods to defconfig.

Btw, you can build core-image-base as well and it will take less time.

Regards,

Jameel

Hi jameel.kareem_2628916

I tested WiFi before making any changes to my build so there was no need for me to do that again. I deleted the tmp and sstate-cache directories and after a few hours of rebuilding everything worked fine. Now I have the WiFi working, plus the kernel change that I wanted.

Now I know that I can successfully patch the kernel, but it is bad that I need to rebuild absolutely everything, because It takes so many hours. Before rebuilding everything, I tried to clear the state cache for all of the Murata layer recipes: backporttool-native, hostapd, murata-binaries, wpa_supplicant, backporttool-linux, firmware-imx, linux-imx, and linux-firmware. In that case the build finished without errors, but the "brcmfmac" driver would not load properly, because there was some kind of version mismatch. So there is something not being rebuilt even when all of those recipes are started from scratch. I noticed that the backport recipes use a staging directory at "STAGING_KERNEL_BUILDDIR". Next time I will try to delete that directory each time I build linux-imx.

Thanks,

Shawn

0 Likes