We’re glad to release a new i.MX Linux kernel 41.15 branch based on NXP 4.1.15-1.0.0_ga branch for all our platforms:
What’s new?
This Linux kernel 4.1.15 contains the same features as the previous 3.14.52 kernel, the rest of the new features can be found on NXP Release Notes:
- GPU driver upgraded to Vivante v5.0.11p8.3
- Software floating point not supported
- Updated drivers (connectivity + multimedia)
Most importantly, each kernel update implies that it takes advantage of the latest drivers, frameworks and security updates. You can see the different improvements of each Linux kernel version on the following website:
This release has gone under a lot of testing in order to make sure all our patches from 3.14.52-1.1.0_ga branch have been ported over successfully.
OS releases
Yocto
The meta-fsl-arm-extra layer master and krogoth-next branches have already been updated:
Here are the updated Krogoth images with 4.1.15 kernel:
- boundary-eval-image-nitrogen6x-krogoth-next.sdcard.gz
- boundary-eval-image-nitrogen6x-lite-krogoth-next.sdcard.gz
Ubuntu
Here is the Xenial Ubuntu image leveraging the latest 4.1.15 kernel for all platforms:
You can find a lot more details about the Xenial release in the following blog post:
Buildroot
Our Nitrogen configurations have been updated on Buildroot since the 2016.08 release.
Here is an image of latest Buildroot v2016.11.1 with Gstreamer1.0 and Qt5.6.2 with the Cinematic demo:
Here is the defconfig used to build this image:
U-Boot / Bootscript
This release uses the same mechanism as the 3.14.28 which means that U-Boot is in charge of setting the display parameters in the device tree. So it requires to use U-Boot v2015.07 or higher. Please make sure to read our blog post about this release:
- https://boundarydevices.com/u-boot-v2016-03/
- https://boundarydevices.com/compiling-latest-u-boot-for-i-mx6-2015-edition/
As a FYI, you can find all the latest U-Boot binaries at the following address:
As for the 6x_bootscript/6x_upgrade, both scripts have been updated to support new 6QP and 7D cpu values. You can find the files below if needed:
As always, let us know your experiences (both good and bad) when you test out this kernel.

Comments 47
I updated my Yocto build to use this (just by updating meta-fsl-arm-extra) and while it does boot, it’s excruciatingly SLOW. I tried to run the epiphany browser and it popped up a small window when I sent the focus to the URL/Search box which you could count the seconds between movements in its animation 🙁 It too more than 30 seconds just to bring up the network…
Maybe I’m doing something wrong, but this sure doesn’t look like a step forward to me.
Comments/ideas? My build configuration (based on Poky/Yocto master):
meta-oe = “master:e0e9c340fa8ba9e461bf4f87d0bfe6f05a23e809”
meta-amltd = “cutting-edge:97329e1c7773c4846df29f1cab457d6fe9abc7fe”
meta-fsl-arm = “master:8be121ee311690daccac3c6e25963be0fd21fb0e”
meta-fsl-arm-extra = “master:680e9480ab7b6cda4e8414e84982f94247fe729f”
Note: meta-amltd is my own local distribution layer.
Author
Hi Gary,
For those having the same issue:
This is not related to Yocto but to the CPU revision. If you are using a CPU TO1.0 (pre-production), the kernel will indeed run really slow.
Freescale/NXP unfortunately stopped supporting this revision of the i.MX6Q processor since 3.0.35:
https://community.nxp.com/thread/432270
Regards,
Gary
I pushed a patch to boundary-imx_4.1.15_1.0.0_ga that helps.
Hello,
Do you have the configuration file for the buildroot with Gstreamer1.0 and Qt5.6 ?
and the lien of the image of buildroot does not work now.
Thanks,
Author
Hi,
Thanks for your comment, the post has been updated:
– buildroot image link is fixed
– buildroot defconfig is shared
Regards,
Gary
Hey Gary (Bisson),
I just cloned this kernel and attempted to “ubuntunize” the kernel as outlined here: http://boundarydevices.com/ubuntunizing-i-mx6-kernels/. I’ve done this (successfully) several times before on earlier kernels. I get an error:
arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘-fstack-protector-strong’
I’m using arm-linux-gnueabihf version 4.8.2-16ubuntu4, and that appears to be the latest available. Any thoughts?
Author
Hi Ed,
Here is the explanation of this option:
https://lwn.net/Articles/584225/
We added the CONFIG_CC_STACKPROTECTOR_STRONG to our config. This stack protector option is available starting with GCC4.9, I didn’t realize that Trusty was still using 4.8.
For now, please remove this STACKPROTECTOR option from the defconfig. In the meantime I’ll circle back with the time to know whether or not we remove it.
Also, if you use the latest Ubuntu image, it requires to build the the galcore driver separately as a module to match the latest libraries available.
https://github.com/Freescale/kernel-module-imx-gpu-viv
Regards,
Gary
Hi Gary,
I have a question about the GPU. Do you think i can build the GPU driver (the one you mentionned in your post) as module in Linux Kernel 4.1.13 mainline without any real big issue?
Author
Hi,
I’m not sure, never tried it. There’s only one way to find out 😉 The problem I foresee is that the mainline kernel using the drm-imx kms driver whereas the NXP kernel still uses an old fbdev driver, might brings some issues.
Another option is to get the latest mainline kernel and try out the Etnaviv implementation.
Regards,
Gary
Gary,
That did it. One strange note though…
After I made the change you suggested, I rebuilt and got a different error when building one of the arch/arm/kernel files:
“Your compiler is too buggy; it is known to miscompile kernels”
Note my build machine is using gcc4.8. I ran “apt-get update” (thinking that may allow me to update to gcc4.9). It did not, but somehow that magically eliminated the error.
Ed
Gary,
I’m having some trouble with the ubuntu image (booting on a nitrogen6-max).
Digging in, I noticed that the bootscript that is part of the installed image (found at /6x_bootscript.txt on the running system) vs the 6x_bootscript-ubuntu.txt that is pointed to at the top of this page are different. Is that expected?
Ed
Author
Hi Ed,
So you are not able to boot the Ubuntu image as-is? If so, please provide the boot logs and add them to the Ubuntu xenial blog post.
The 6x_bootscript should be similar or very close.
Regards,
Gary
It boots, but no HDMI out. That pointed me to the bootscript; which made me realize there were at least some differences. Didn’t compare in detail. I’ll post to that blog. Thanks
Author
Hi Ed,
One difference between 3.14 and 4.1 is that HDMI is not the default primary display anymore. So if you don’t see HDMI output, it is most likely because your U-Boot is setting up some LVDS and/or LCD display. Make sure to set fb_lvds and fb_lcd to off in U-Boot.
Regards,
Gary
Thanks for the quick reply!
They’re both off already. This is the kind of stuff I was starting to look at when I noticed the two bootscript files were different.
BTW, I’m using the same uboot as I was using for 3.14 ( 2015.07-15). I plan to update, but didn’t think it was immediately necessary. That true?
Author
Hi Ed,
Yes that version of U-Boot should be fine although we recommend updating to latest (v2016.03). Please copy the serial output (U-Boot env, dmesg log) to pastebin.com and send the link on Xenial blog post.
Regards,
Gary
Gary,
One clarification…
This only applies to xenial *AFTER* I tweek a few things in the kernel and “ubuntunize” as outlined in another blog. These tweeks worked just fine in prior releases.
I see others are having a similar problem (referring to comments under https://boundarydevices.com/ubuntu-xenial-mx67-boards-august-2016-kernel-4-1-15/).
Quick question: when building the kernel for nitrogen6-max I do:
$ make distclean
$ make nitrogen6max-defconfig
$ make zImage modules dtbs -j4
$ make -C ubuntunize tarball
Is that still the correct set of steps? (i see “make boundary-defconfig” suggested elsewhere).
Ed
Author
Hi Ed,
So you lied 😉 You’re not using the Ubuntu image as-is. No we need to update this “ubuntunizing” blog post, the problem is that Vivante now provides updates libraries with matching external kernel module. So the built-in Vivante driver should NOT be used anymore, instead the external module should be built against your kernel.
https://github.com/Freescale/kernel-module-imx-gpu-viv
Regards,
Gary
Gary,
Hey, I don’t think I said I was using the “as-is” image! 🙂 If I did imply that, my bad…
Anyway, we got out of sync here… I just kept posting, didn’t see your response..
Also, I realize now that I didn’t notice the second half of your earlier reply regarding the need to rebuild https://github.com/Freescale/kernel-module-imx-gpu-viv.
I’ll walk through that and let you know how things work out.
Thanks, as always, for your help,
Ed
Hi Ed,
Yes boundary_defconfig is the correct one.
BTW… our firewall, does not allow us to get to pastebin.com.
Author
What about https://gist.github.com/ ?
Regards,
Gary
I put the complete bootup (uboot, printenv, kernel boot) here:
http://umonfw.com/tmp/xenial_bootlog_etc.txt
That log, BTW, is with “MXC Vivante GPU support” turned off; as suggested by Laci; however, I have not gotten through the other steps suggested on that blog.
Author
Well this is mandatory, otherwise there’s no graphics support.
Regards,
Gary
Has this linux version been tested to run in the Normal World (non-secure), relying on u-boot for setting up the security settings, or has anybody tried to run it this way?
Thanks,
Darius
Author
Hi Darius,
No it hasn’t been tested in Normal World and NXP kernel is known not to work in this mode:
https://community.nxp.com/message/838156
Regards,
Gary
I had a question regarding configuring a USB “Plug and Play” Touchscreen Panel which does not react to any touch events. How/where do (if I can) add HID driver support for the device if all I know is the VendorId and ProductId (Couldn’t find any other information online on the chip used, just did a lsusb to find that)? Would adding USB Gadget Support as a module in the menuconfig suffice? Is there anything I am missing (should I add it to the hid-core.c list as well?)
Author
Hi,
Be careful of the terms, USB Gadget is only when your platform (Nitrogen6x or others) is the USB *Device*.
Here my understanding is that you want to connect a USB Device (touch controller) to your platform which acts as USB *Host*. In that case adding USB Gadget configuration will not help, especially since it is already enabled in our default configuration.
However, in your case, you are right, you need to make sure the VID/PID is listed in hid-core.c and/or hid-multitouch.c if it is multi-touch.
Regards,
Gary
Thanks for your reply,
Just a follow up question for clarification. Is there a possibility I would have to also add a specific .c file for the touchscreen and linker file in the /drivers/input/touchscreen directory and then add the .c file to the Makefile and add the config for the touchscreen in the Kconfig file? Or is that another way of adding support for the USB device?
Hi,
I have tried to install archlinux arm on my nitrogen6x board, following the guide https://archlinuxarm.org/platforms/armv7/freescale/nitrogen6x, but I didn’t succeed to update the uboot as it says in the guide.
In this guide, it says that: 6x_bootscript is no longer sourced, instead there is a boot.scr file, but after doing the update as it says, the uboot still put “6x_bootscript not found” on the screen.
Do you have any idea about that ? or boundary device has a offical guide to install archliux on the nitrogen6x ?
Thanks
Author
Hi,
Unfortunately we are not supporting ArchLinux. So we are not even aware of that procedure.
I suggest you contact the Arch person who created that post for more details. We’re open to discussion if they need help.
It seems that they have a modified U-Boot or at least a custom U-Boot environment to source boot.scr instead of 6x_bootscript.
Regards,
Gary
Hi,
I am new to Linux Kernel. I would like to build the linux kernel and debug using the Nitrogen6_Lite board which I have already purchased.
Can anyone help me here?
I am getting -fstack-protector-strong not supported by compiler arm-linux-gnueabihf
Thanks,
Author
Hi,
It means your distribution is old or not up to date (needs GCC > 4.9).
If you can’t update/upgrade your dev environment, you can download and use the following toolchain:
https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz
Regards,
Gary
Dear Gary
Product purchased : Nitrogen 6X – Industrial
Build platform : ubuntu 16.04
configuration file :buildroot-v2016.11.1-nitrogen6x-qt5.6.2_defconfig
What I Want to Do:
I want to build the Buildroot v2016.11.1 to get graphics library , and get opengl library development header to start my App development in host system.
Proplem I am facing :
arm-none-linux-gnueabi-gcc: error: unrecognized command line option ‘-fstack-protector-strong’.
Checking / symptoms :
Installed gcc…are presented here,
ramesh@ramesh-16:~$ dpkg -l | grep gcc | awk ‘{print $2}’
gcc
gcc-5
…
Query:
How to solve this Compiler issue?
4 times i dist cleaned the build root . I have tried in Ubuntu 14.04 and Ubuntu 16.02.
so,I have failed to build the new version.
Pls help me
Regards
Ramesh
Author
Hi Ramesh,
Have you changed anything on the defconfig? Are you truly using Buildroot v2016.11.1 or any other version?
I doubt this is the case since the Buildroot defconfig provided uses the Linaro prebuilt ARMHF toolchain (gcc5.3):
https://git.buildroot.net/buildroot/tree/toolchain/toolchain-external/toolchain-external.mk?h=2016.11.x#n323
In your case it seems that you are using an old (gcc < 4.9) ARM non EABIHF toolchain (like code sourcery instead of Linaro). Please make sure that you use the defconfig as-is and that the toolchain is the linaro one. Also, check you environment not to have CC or CROSS_COMPILE set before the build. Regards, Gary
Sir
Above issue, i can add some data to analysis the root of the problem
I am adding the GCC version.
ramesh@ramesh-16:~/Downloads$ gcc –version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz —————– also Broken – file Not available
Pls help me
Author
Hi,
This means you’re not using Buildroot 2016.11.1. Please go to that revision of Buildroot and test again.
Regards,
Gary
Dear Gary,
Thanks Sir .Yes. that is my mistake.Now it is compiling and producing binary file .
I am looking for the GPU developmental Open GL ES / Open GL header file path and library path.
This path i want to use in host PC to compile the application.
As per the Debian Jessie 8.6 for i.MX6/7 boards – December 2016 (kernel 4.1.15) –Blog
I could able to locate the open gl E.S library path in : buildroot2016/buildroot/output/target/usr/lib /
I could not able to locate the header file path open gl E.S : ????
Will you suggest me?
Ramesh
Author
Hi,
Buildroot makes root file systems that aren’t for building on target. Therefore the target/ directory is stripped of headers.
If you are looking for headers (and libraries) to build some other software, you need to use the output/staging/ directory instead.
Regards,
Gary
Hi,
I have downloaded 4.1.15 from the above mentioned git link. But I cannot find the “defconfig” file for Nitrogen 7 board. Can anyone tell me where can I get the Linux kernel for Nitrogen 7 board and build steps? (apart from yocto build I need kernel source alone for development purpose.)
Author
Hi,
You should use boundary_defconfig for all our platforms.
Regards,
Gary
Hi Gary,
Thanks.
I have downloaded “IMX6_L4.1.15_1.0.0_MFG_TOOL” from NXP and added support for Nitrogen 7 board. When I tried to update u-boot in SPI NOR and kernel and rootfs in eMMC, the update process is not started. Instead the u-boot and kernel loaded and the MFG tool waits with error message “No Device Connected”. Can I get MFG tool for Nitrogen 7 board? or steps to flash u-boot and kernel and rootfs via MFG tool?
Author
Hi,
We do not support mfgtools flashing procedure since in our opinion you can do pretty much everything from U-Boot using the USB mass storage gadget:
https://boundarydevices.com/programming-emmc-on-i-mx6/
In your case I guess you need to modify U-Boot to it starts the kernel binary you’ve loaded in RAM. Currently it will only try to find 6x_bootscript.
Regards,
Gary
Hello,
I have connected the USB3 mPCI card into the nitrogen 6x max but I’m not able to use the USB3 ports. I have found out that USB3 (xhci) is supported in Linux Kernel version >=4.4. However, the latest linux-boundary version is 4.1. When do you plan to incorporate higher kernel version? And generally, when do you plan to upgrade the meta-boundary layer to the Pyro branch?
Regards,
Vaclav
Hi Vaclav,
What kind of USB3 mPCI do you use? For exampple this one:
Adealink Motherboard Mini PCI Express to Dual USB 3.0
https://www.amazon.com/Adealink-Motherboard-Express-Expansion-Adapter/dp/B071KBM4GQ/ref=sr_1_10?s=electronics&ie=UTF8&qid=1497548741&sr=1-10&keywords=uPD720202
, with Renesas uPD720202 Chipset was tested and it works with 4.1.15 kernel. We will create meta-boundary, when pyro will be released and meta-freescale will be completed. Currently its under development.
I use the Renesas(uPD720201) chipset with 4.1
i.e.
https://www.amazon.com/Rosewill-Express-Expansion-Connector-Renesas/dp/B011LZY20G/ref=sr_1_2?ie=UTF8&qid=1497548059&sr=8-2&keywords=renesas+usb3.0+uPD720201