For the impatient
You can grab the kernel from the boundary-imx_3.0.35_4.0.0 branch on Github and compile it in the normal way. This code base includes support for all of our unless we’ve discussed your custom board separately.We’ve also tested all of our hardware accessories and a limited set of PCIe devices and it’s ready for integration with various userspaces.
The details (from Boundary Devices)
From our side, this is a pretty straightforward merge of our boundary-imx_3.0.35_1.1.1 branch, although we did clean up a few things:- In prior releases, we added support for our displays and Nitrogen6X boards inside of the SABRE Lite board file. In this release, we moved our code into board-mx6_nitrogen6x.c. We’re carrying far more patches than we expect from Freescale, and this makes integration easier going forward.
- We discarded our thermal management patches, because Freescale has now included much of the same functionality. We’ll publish some of our notes in a separate post when time permits.
The highlights (from Freescale)
Refer to the the release notes in the Freescale documentation package and the commit history for the details, but the following are some of the major features of this release:- Vivante GPU frequency scaling support.
- Fixes for VPU release.
- The Freescale BSP contains support for Wayland.
Compatibility
From our testing and review of the patches, it appears that this kernel is ABI-compatible with the previous (1.1.1) releases except for the GPU libraries.That said, we recommend that this be used with updated versions of the Freescale gstreamer plugins (3.0.7 is included in the Freescale release).
If you’re not using either the GPU or VPU acceleration libraries, this release should be a drop-in replacement.
Let us know if you have any trouble. We believe this release to be very solid, and will be focusing our future efforts on this release for non-Android use.
Stay tuned. We’ll upload some binary images this week.

Comments 98
Hi Eric,
it seems that the new kernel (compiled from boundary-imx_3.0.35_4.0.0 branch) makes the imx6 CPU quite hot compared to the old kernel (boundary-imx_3.0.35_1.1.1 branch). Both kernels use the same config having only MACH_MX6Q_SABRELITE options selected from the mach options.
I had to attach a good heat sink to improve the situation a bit, but the temperature readings are still not good enough. Here are results from the same load (i.e. no load at all as the system was idle with practically no processes running), both with the same heat sink attached:
# # boundary-imx_3.0.35_1.1.1 branch:
# cat /sys/devices/virtual/thermal/thermal_zone0/temp
51
# # boundary-imx_3.0.35_4.0.0 branch:
# cat /sys/devices/virtual/thermal/thermal_zone0/temp
83
In my opinion, the mentioned removal of Boundary’s thermal management patches seems not to be compensated by Freescale’s implementation.
Please let me know if I can do anything to lower down the temperature.
The board is boundarydevices Sabre Lite rev-D, with imx6 rev1.0:
U-Boot 2013.01-00058-g5957f6d (Feb 11 2013 – 15:10:10)
CPU: Freescale i.MX6Q rev1.0 at 792 MHz
Thanks.
Author
Hi David,
Our thermal patches allowed override of the thermal fuse data and the trip temperatures, not the calculation of the temperature.
Your results indicate that the temperature calculation is different.
Can you post the fuse data from your board?
Also note that selecting MACH_MX6Q_SABRELITE will prevent many of our patches and will prevent the use of some peripherals (including camera). You should use MACH_MX6_NITROGEN6X to pull in board-mx6_nitrogen6x.c and support for all of our peripherals.
hmm, not sure what this means:
# cat /sys/fsl_otp/HW_OCOTP_ANA1
0x0
Author
Hi David,
This means that the factory didn’t program the thermal calibration constants.
I should have known this, because you said you’re running 1.0 silicon (the process was put in place for 1.1 or 1.2).
Actually it’s not about temperature calculation – I can feel by hand that the cpu is very hot with the 4.0.0 kernel comparing to the 1.0.0 one. I do not know if temperature calculation has been changed between the two kernels.
I will try again with nitrogen6x mach, but I had unfortunately some difficulties with that option when tried it first time (do not remember what exactly it was – probably the kernel did not boot and/or there was something with the network driver), while the sabrelite mach just worked…
ok, just tried the 4.0.0 again – since my last test, I was missing the last 6 commits, should that explain the difficulties or it might have been the MX6_ENET_IRQ_TO_GPIO option which I was not sure if should be set or not – now I do not have it set and the kernel booted and network is working, having the nitrogen6x (only) mach.
But as mentioned before, the temperature is very high – without any load, thermal_zone0/temp indicates 83 and with some easy load from opengl es application running for few minutes the thermal_zone0/temp shows 97 – and the heat sink is hot.
I have “enable_wait_mode=off” in the kernel command line (always had it there), not sure if that’s important.
Observing bootlog from 1.1.1 kernel, there are following messages:
anatop_thermal anatop_thermal.0: invalid fuse data, use defaults
anatop_thermal anatop_thermal.0: fuse data: 0x5a04d87d
Thermal calibration data is 0x5a04d87d
anatop_thermal_counting_ratio: raw25c=1440 raw_hot=269 hot_temp=651 cvt_to_raw=8034196012
Anatop Thermal registered as thermal_zone0
anatop_thermal_probe: default cooling device is cpufreq!
With the 4.0.0 kernel, following messages are there instead:
Thermal calibration data is 0x0
anatop_thermal_counting_ratio: invalid calibration data, disable cooling!!!
Anatop Thermal registered as thermal_zone0
anatop_thermal_probe: default cooling device is cpufreq!
Hmm, I can see there were significant changes in ANATOP_THERMAL driver – I guess that explains the difference in temperature readings.
Should I assume that the actual temperature and power management is still the same as with previous kernel even in case of 1.0 silicon (and that the hand feeling of temperature difference was just my imagination:-)?
Should I do something to fix anything with regard to temperature reading or power control when using 4.0.0 kernel with 1.0 silicon – like program the fuses with some specific value or something?
Hi there!
The basic problem from fuses, temp and thermal cooling coming from here:
https://github.com/boundarydevices/linux-imx6/blob/boundary-imx_3.0.35_4.0.0/arch/arm/mach-mx6/cpu_op-mx6.c#L341
345 if (!cpu_is_mx6sl()) {
The 1.0 silicons fail here -seems cant resolve the silicon and cpu type correctly-, and assign a arm_max_freq to lowest speed grade. There is a workaround already in 3.0.35_1.1.1:
https://github.com/boundarydevices/linux-imx6/blob/boundary-imx_3.0.35_1.1.1/arch/arm/mach-mx6/cpu_op-mx6.c#L345
Anyway, arm_max_freq tells you the max frequency assigned to you.
printk(KERN_INFO “arm_max_freq=%sn”, (arm_max_freq == CPU_AT_1_2GHz) ?
“1.2GHz” : ((arm_max_freq == CPU_AT_1GHz) ? “1GHz” : “800MHz”));
or -for 3.0.35_1.1.1 and above-
printk(KERN_INFO “arm_max_freq=%xn”, arm_max_freq);
[ 0.000000] arm_max_freq=2
The 3.0.35_1.1.0 fails here too.
About the thermal fuses, the problem its highly related with the blank fuses:
# dmesg | tail
CPU1: shutdown
CPU1: Booted secondary processor
Calibrating delay loop (skipped) already calibrated this CPU
i.MXC CPU frequency driver
thermal_notify: trip_hot reached!
cooling: cpu cur freq is 996000000
cooling: cpu max freq set to 792000000
# cat ./devices/platform/anatop_thermal.0/raw
0x520
# cat ./devices/virtual/thermal/thermal_zone0/temp
89
U-Boot 2013.01 (Mar 13 2013 – 16:34:07)
CPU: Freescale i.MX6Q rev1.0 at 792 MHz
(Yes… 792… )
auto-detected panel wsvga-lvds
Display: wsvga-lvds (1024×600)
In: serial
Out: serial
Err: serial
Invalid temperature fuse data: use defaults
Thermal fuse is 0x0, raw_25c=1440 raw_hot=1240 hot_temp=125 C scale=0.50
Temperature raw=1318 temperature= 86.00 C
CPU is 86 C, too hot to boot, waiting for below 80 C…
Temperature raw=1319 temperature= 85.50 C
CPU is 85 C, too hot to boot, waiting for below 80 C…
Temperature raw=1320 temperature= 85.00 C
CPU is 85 C, too hot to boot, waiting for below 80 C…
I trace the problem to the temp formulas, and the empty fuses. I need this problem solved in hours so I take the short way and hardcoded all temps. Some day…
Hum,
With a silicon 1.0 and 3.0.35_4.0.0:
[ 0.000000] arm_max_freq=800MHz
You need to apply the workaround from 1.1.1 or force de arm_max_freq to 2 (1GHz).
~ # cat /sys/devices/virtual/thermal/thermal_zone0/temp
95
There are something really messed up with the 3.0.35_4.0.0 and 1.0 silicons.
I’m reading again my last post. Sorry for the mess, long history short:
The problem isn’t with temperature itself, the same rootfs with 1.1.1 and 4.0.0 change the temperature reading from ~58º to ~90º and scaling down my frequency and turn off some cores.
The problem lies in how the kernel calculate this temp with 1.0 silicons. Actually one of my 1.0 boards tell me 92º with all cores idle. The same board with 3.0.35_1.1.1 kernel show 58º with the same raw data.
Update from boundary (this solve the problem with lowest grade speed on 1.0 silicons):
https://github.com/boundarydevices/linux-imx6/commits/boundary-imx_3.0.35_4.0.0/arch/arm/mach-mx6/cpu_op-mx6.c
For temperature feedback you can apply a default fixed value for fuses. As you can see here -1.1.1 version-:
https://github.com/boundarydevices/linux-imx6/blob/boundary-imx_3.0.35_1.1.1/drivers/mxc/thermal/thermal.c#L1027
The magic comes from here:
unsigned raw25c = DEFAULT_RAW_25C;
unsigned raw_hot = DEFAULT_RAW_HOT;
unsigned hot_temp = DEFAULT_TEMP_HOT;
Constant values:
#define DEFAULT_RAW_25C 1440
#define DEFAULT_RAW_HOT 1240
#define DEFAULT_TEMP_HOT 125
This asign a fixed value in case of blank fuse, and avoid high temps readings.
Hi Eric,
you wrote you tested “all of our hardware accessories and a limited set of PCIe devices “. I’m still struggling to bring up a ExpressCard which is connected via a Nit6X_PCIE adaptor and a Mini-PCIe to ExpressCard adaptor. But lspci does not show anything. (Card is working in my Ubuntu Laptop)
Could you please specify a test setup which you run successfully?
Our final goal is to attach an 8 channel CVBS converter for mutil-channle video input. but, in the beginning, any other PCIe chip could do.
Frank
Author
Hi Frank,
We tested using a PCIe WiFi module and a Marvell Gb Ethernet adapter in our latest round of testing, but we have brought up an 8-channel composite video card on prior releases. See this commit for details of the part.
Do you have a custom kernel configuration, or did you use nitrogen6x_defconfig?
Hello ericn:
I try to use the wifi module of ath5k which is connected via a Nit6X_PCIE adaptor and I build the drivers in kernel.
But lspci, it shows can not find device.
and i use the u-boot offered in disk,no command about pci.
can you tell me the way you test.
Hi Eric,
thanks for your quick reply. TW6869 is exactly what I had in mind. Up to now I used pre-built images like the latest ubuntu from here: http://boundarydevices.com/freescale-ubuntu-image-with-4-0-0-kernel/
When listing the built-in modules, I can see all the neccessary PCI stuff.
Just started to set up LTIB on my host (for the toolchain only) and building the latest BD kernel from source. More tomorrow.
Frank
Hi Eric,
with your latest ltib4-no-x-20130618.tar.gz image, I get some debug output during boot:
link up failed, DB_R0:0x0c4a4a02, DB_R1:0x0800f700!
IMX PCIe port: link down!
Next, I will simplify my HW setup and look closer at the sources…
Frank
Author
Does your device require 12V by chance? I believe that we had to power our TW6869 eval board with a separate 12V supply.
Hi Eric,
No, no 12V.
Meanwhile, I successfully tested a miniPCIe PLX 2380 USB bridge on a SABRE AI board. The same miniPCIe PLX 2380 USB bridge does not work (=showing DP registers, link down) on the BD-SL-i.MX6 with the Nit6X_PCIE daughter board. The only hardware difference regarding PCIe is IMHO that, on the BD-SL-i.MX6, the connector is missing REFCLK and 1,5V supply. 1,5V is presumably generated on the Nit6X_PCIE daughter board, right? Can the missing REFCLK be the problem?
For software, I used the latest ltib4-no-x-20130618.tar.gz image. Checked that PCIe is enabled in the config.
Do you have any clues here?
Frank
What kernel configuration items are needed to support the PLX USB 2380 device? The device shows up on my system with lspci, but I can’t get a driver loaded.
Hi Eric,
I built the kernel but the HDMI is not working on Nitrogen6-REV2 board!
I noticed the following boot messages:
What has gone wrong?
Author
Hi Tarek,
What does your kernel command-line say?
U-Boot > print bootargs
bootargs=console=ttymxc1,115200 video=mxcfb0:dev=hdmi,1920x1080M@60 fbmem=24M,10M root=/dev/mmcblk0p1 rootfs=ext2 rw rootwait enable_wait_mode=off consoleblank=0 ip=none
Author
Hi Tarek,
This looks good, though you might need ‘if=RGB24’ in the ‘video=’ clause.
That won’t keep you from seeing anything though. Can you check in /sys/class/graphics/ to see how Linux configured things?
Can you also check the line during Linux boot that says Kernel command-line to make sure it’s the same as bootargs under U-Boot?
Hi Eric,
The kernel command line is correct:
Kernel command line: console=ttymxc1,115200 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 fbmem=24M,10M root=/dev/mmcblk0p1 rootfs=ext2 rw rootwait enable_wait_mode=off consoleblank=0 ip=none
linux configuration:
Author
Thanks Tarek,
This also looks good, although I was mistaken about the fsl_disp_property. What I was after was fsl_disp_dev_property, which shows you what output device is selected:
Silly me!
From the output, it looks like you be up and running. Perhaps the problem is in userspace somewhere.
Can you force an unblank and send some output to the display?
Hi Eric,
Yes, fsl_disp_dev_propert is hdmi.
There is nothing displayed when I tried your commands as I expected.
In uboot I can see the pinguane image and uboot version displayed on the screen so my HDMI connection is fine. But once the kernel boots up I get no signal input message on the display and the monitor goes to low power mode! It seams the kernel turned off the HDMI for some reason and I can’t turn it back on!
Author
Hi Tarek,
I’m stumped. If the device isn’t blanked, and the mode is correct, you should see data.
Or at least, the HDMI transmitter should be pumping out data.
Can you try running the LTIB-with-X image from here?
ltib4-with-x-20130618.tar.gz
Doing so will rule out both kernel compilation and userspace issues and allow us to track each in turn.
Hi Eric,
I’ve tried the ltib4-no-x-20130618.tar to rule out compilation issues with same results.
I think I know what’s causing the problem:
I’m using HDMI to DVI cable because the HD monitor I’m using has no HDMI. When I tried a normal HDMI cable with another monitor everything works fine!
Having said that I’ve been testing with the HDMI-DVI using freescale kernel for a long time and it always works.
It would be nice to understand what kernel changes you made that affects this configuration.
Can you please point me to these changes and the reason for having them?
Thanks,
Tarek
Author
Hi Tarek,
When you say Freescale kernel, are you referring to an i.MX6 kernel?
We’ve seen problems with DVI monitor support, and haven’t yet had a chance to work through all of the details. We have a couple of old monitors that work well with an external HDMI/DVI transmitter on i.MX53 and that don’t seem to work with the i.MX6.
That said, this has been the situation since our first kernel releases.
It’s also interesting that U-Boot works.
Hi Eric,
Yes, I’m referring to i.MX6 kernel that’s delivered with BSP 4.0.0 and using a normal LTIB build.
Do you recommend not to use DVI monitor?
Author
Did you test this LTIB kernel on a SABRE Lite, or on a different board?
We’re not doing anything to the HDMI driver itself.
I tested the LTIB kernel on SABRE Lite and Nitrogen and works fine.
Boundary Kernel on Nitrogen board only and has DVI problem.
I think I have the same problem with wandboard quad. There is no video using HDMI-DVI cable. The only way to get something is using: video=mxcfb0:dev=hdmi,1440x900M@60,if=RGB32 . At least I got 1280×1024 with that boot args. Sorry for my bad english.
-Leonardo
Author
Hi Leo,
You might check in /sys to see what resolutions your monitor supports.
This should report the modes identified through EDID.
Hi, sorry for replying too late. My monitor have a resolution of 1680×1050@60Hz. Edid dont find that resolution and the system dont choose any other resolution. Remember, I am using hdmi-dvi cable.
cat /sys/class/graphics/fb0/modes
U:1280x720p-120
U:1280x720p-100
U:1920x1080p-30
U:1920x1080p-25
U:1920x1080p-24
U:1920x1080p-50
U:1440x576p-50
U:1440x576p-50
U:1440x288p-50
U:1440x288p-50
U:1280x720p-50
U:720x576p-50
U:720x576p-50
U:1920x1080p-60
U:1440x480p-60
U:1440x480p-60
U:1440x240p-60
U:1440x240p-60
U:1280x720p-60
U:720x480p-60
U:720x480p-60
U:640x480p-60
V:1280x1024p-60
V:1024x768p-60
V:640x480p-60
Hi there, Tarek,
Nitrogen Boards come with a problem related with the DVI specs vs HDMI specs. For example, the 5v rail routed to pin 18 of HDMI connector has no limiter resistor, HDMI force a maximum current of 55mA from this pin, Nitrogen6X Boards basically gives you as much as you can take.
The another issue is related with hotplug detect from pin 19 of HDMI connector. DVI specs limit the current from this pin (16 pin on DVI connector), the resistors from nitrogen6x drop the voltage from DVI to levels below of the minimum voltage for hotplug event on nitrogen6x hardware.
Take the board, and find the R250 resistor (not soldered), just below of HDMI connector. Make a jumper (soldering a wire or just shorting it). This force the hotplug event and you can use the HDMIDVI connector.
Author
Hi RooT,
Shorting R250 will force the hot-plug detect entirely, so you’ll see the U-Boot hdmidet command always assert and the display always detected.
As you noted, R251 forms a voltage divider to prevent +5V from the HDMI input from hitting the CPU directly, and DVI monitors don’t generally provide enough voltage/current to assert HPD.
We’ve put this off because there’s a software work-around by using the RXSENSE pins instead of the HPD pin, and we should have both a kernel patch and U-Boot patch available on Monday.
We’ve also confirmed that the latest data sheet from Freescale indicates that the HPD pin is 5V-tolerant, so you could also short R251 and prevent the need for the software change.
So, with this patch, the board will detect the max resolution of monitors ( using hdmi-dvi cable) and will use it ?
Author
Well, no.
The next patch in this area will simply fix DVI detection.
On the resolution front, we’ve begun work to pull in EDID information from a monitor with this patch on our staging branch, but we’ll be pushing a broader set of changes that will allow you to configure your U-Boot display without the re-compiling that’s needed now.
Author
Hi Leo,
We’ve pushed patches to our U-Boot and kernel trees:
We’ve also pushed patches to the U-Boot mailing list.
As mentioned, these strictly enable detection and operation of DVI monitors. They don’t do anything with resolution selection.
Ok, but if I use something like this in uboot: video=mxcfb0:dev=hdmi,1680x1050M@60,if=RGB32 , it will work ? Or my monitor will keep in stanby ?
Author
With the U-Boot patch, you’ll get the compiled-in 1024×768 resolution under U-Boot. The ‘video=’ clause only applies to the Linux kernel driver.
Hi ericn!
I developed a much better – and elegant solution – for this problem:
https://dl.dropboxusercontent.com/u/40319604/HDMI_HDP_issues.PNG
Any N-channel did the work.
And please, take note about the another issue with the HDMI Specs from pin 18 and max current. One of our nitrogens die because of this -very cheap cable + worst case scenario pin 18 and 19 shorted on cable and god knows what else-.
The nitrogen keeps booting but all video signals die -RGB, HDMI and LVDS-.
You can use a simple PTC fuse, like 0ZCA0005FF2E -50mA hold and 150mA peak-:
http://www.digikey.com/product-detail/en/0ZCA0005FF2E/507-1476-1-ND/2165305
I am having a problem with booting SabreLite New Kernel. Here is what I did —
Download & Build Kernel:
1. git clone https://github.com/boundarydevices/linux-imx6.git -b boundary-imx_3.0.35_4.0.0
2. Change to kernel directory
3. make mrproper ; make nitrogen6x_defconfig ; make uImage modules
4. Transfer to root file system on sd card. Copy arch/arm/boot/uImage to /mnt/sd/tmp/uImage.
On SabreLite Board:
1. Power on and interrupt kernel load.
2. setenv bootargs console=ttymxc1,115200 root=/dev/mmcblk0p1 rootfs=ext2 rw rootwait enable_wait_mode=off consoleblank=0 ip=none
3. mmc dev 0
4. ext2load mmc 0:1 0x10800000 /tmp/uImage
5. bootm
On Console, what I see is,
MX6Q SABRELITE U-Boot > bootm
## Booting kernel from Legacy Image at 10800000 …
Image Name: Linux-3.0.35
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3127772 Bytes = 3 MB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum … OK
Loading Kernel Image …
And then, it just hangs. I only want console output, no graphics.
1. Has there been a change to the root file system that’s absolutely needed? I have what I used to use
with 1.1.1 kernels. If so, where can I get it form?
2. If parts of the kernel are modular, shouldn’t there be a “make install” step for modules to
get copied to target file system? I tried just a “make install” and it obviously tried to install them
on my PC, not to the target file system.
Thanks
Author
Hi Arun,
I don’t see anything wrong in your process.
The problem certainly isn’t with your filesystem though. The kernel should send a whole bunch of startup info to the screen before it even looks for a root filesystem.
It seems that for some reason, the transition from U-Boot to the kernel is breaking.
Since U-Boot verified the check-sum, I can only surmise that there’s something in the kernel that’s choking.
Can you put your kernel image somewhere for testing?
Here is a link to the “uImage” on Google Docs.
https://docs.google.com/file/d/0B44-pgE0b-etR3dRSkdzc3RCN2s/edit?usp=sharing
I was able to boot that uImage. I had to upgrade the boot loader first from here –
6q_upgrade-20121112.zip – This image will upgrade a system running U-Boot 2009.08 to U-Boot 2012.10 (plus our patches).
And then I added “nosmp” to the u-boot boot args.
Author
Hi Arun,
It looks like I should take that U-Boot image down. It’s missing some critical patches from February.
Since you’re going through the effort, I also recommend that you pull in the the June release, which has some other improvements, including cache support and improved video handling.
You shouldn’t need nosmp.
You can grab a set of prebuilt binaries and the latest upgrade script here:
u-boot-2013-6-19.tar.gz
>> The u-boot.nitogen6q in this tarball is a good one. Has upgradeu command and also loaded
>> the kernel without any problems. Great. However, I tried to build this u-boot by using the
>> nitrogen6q_config. The resultant u-boot runs on Sabrelite board but does not accept input
>> If you type “help”, it responds with “help not found. Please type help..”. It seems to be reading
>> the input but refusing to execute the commands.
The U-Boot files included use the suffix of the U-Boot config settings they were built with, which tells you what type of board they’re for. You can check out the code on the production branch on github.
To upgrade to the latest U-Boot, extract the files from the tarball link above to an SD card. Then you can rename the version you need to u-boot.imx and run upgradeu or you can use the upgrade script’s new feature to set what file it loads. For example, to load the U-Boot configured with nitrogen6q_config, ie 1GiB quad core, you’d use the command
Author
Hi Abiyani,
It appears that you quoted oddly, and that the lines with >> are your response.
The problem U-Boot runs, but can’t process commands, even help is something we’ve seen with old versions of 6x_upgrade which only erased 0x50000 bytes. It should have generated an error message during the programming process.
Are you using the 6x_upgrade script from the tar-ball above?
No, I was using the old 6x_.. script. Thanks. I’ll try the new one.
1. Yes, the quoting was reversed in my response. Sorry about that.
2. I tried with the new script (Renamed 6x_upgrade to 6q_upgrade). Ran into problem as below. My
filesystem type is “ext2”.
3. I then tried executing the commands one after the other (by looking at the script).
U-Boot > ext2load mmc 0:1 12000000 u-boot.imx
329356 bytes read in 179 ms (1.8 MiB/s)
U-Boot > sf probe
SF: Detected SST25VF016B with page size 4 KiB, total 2 MiB
U-Boot > sf erase 0 +$filesize
U-Boot > sf write 0x12000000 0x400 $filesize
and again $filesize did not erase enough so I end up with commands not being recognized.
4. What should $filesize be ?
Arun
U-Boot > run upgradeu
mmc0 is current device
** Unrecognized filesystem type **
1811 bytes read in 117 ms (14.6 KiB/s)
## Executing script at 10008000
check U-Boot
** Bad device 0:1 12000000 **
** Bad device 0:1 12000000 **
No U-Boot image found on SD card
MMC: no card present
mmc1(part 0) is current device
MMC: no card present
** Bad device mmc 1 **
MMC: no card present
** Bad device mmc 1 **
U-Boot > printenv
Author
Hi Arun,
There’s a bug in that there bootscript: The command sf erase 0 +$filesize may not erase enough data, since we actually program to 0x400. We caught that last night.
Please use 0xc0000 instead:
The variable filesize is set by various commands to the size of the file loaded (in this case, the ext2load command).
What is the cross compiler you are using?
Author
The cross-compiler in the latest LTIB package is gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.
There is something wrong with that uboot output, you need to see something like this:
[…]
Entry Point: 00008000
Verifying Checksum … OK
Loading Kernel Image … OK
That last OK it’s important.
Anyway, the command to set your module path and install there:
make INSTALL_MOD_PATH=/mnt/sd/ modules_install
Thanks for info on modules install.
I have two SABRE lite boards running this kernel and the Debian Wheezy rootfs. But, I’m having an issue with one of my boards, that boots up with it’s ethernet interface configured as eth1, because keeps repeatedly reporting “Link is up” and then “Link is down”. It will eventually stop (and with no network connectivity) and an error will be in the system log that says “MDIO read timeout, mii_id=6”. My other board, which boots with it’s ethernet interface configured as eth0, doesn’t report this issue at all.
Have you guys experienced this issue before?
Author
Hi Donald,
We have heard multiple reports of this, and oddly, they’ve all been from those using Debian.
Can you provide the details of which board and kernel build you’re using? From your comment on EEwiki, it sounds as if this is board-specific, and I wonder if some kernel sources floating around have the PHY_RESET pin floating.
I placed a kernel image of our latest on-line here:
Can you give this version a spin and let us know if the problem persists?
Hello Eric,
I will provide you with the requested information and try out the kernel you mentioned when I get into the lab tomorrow. Thanks for your prompt response!
ericn,
I installed the kernel at the link that you provided, but I’m still getting the “Link is up” and “Links is down” messages repeatedly in the syslog. I’m using the BD-SL-i.MX6 board (Rev. D – 5/09/12) with the linux-nitrogen6x-3.0.35_4.0.0-20130713 you provided in the link and the Debian Wheezy minimal root filesystem. The kernel I was using before was the from your linux-imx6 git repo, using the boundary-imx_3.0.35_4.0.0 branch.
Author
Hi Donald,
That rules out the kernel being an issue. Other options include:
Can you provide the U-Boot version information (banner at boot time)?
I presume that you’ve swapped cables, since you mentioned that you had one working and one non-working board. Please confirm.
I haven’t seen boards fail in this manner, but it’s hard to say.
Are you running on a Gb network?
Hello ericn,
I have swapped out cables and the issue persisted. I’m actually running on a 10/100 network. Here’s the U-Boot version I’m running: U-Boot 2013.04-00308-ge1290a7 (Jun 18 2013 – 13:38:20). This version is running on both boards I have.
Author
This version of U-Boot is good. I’ll contact you off-line to see about swapping the board.
Hello ericn,
Doing a little more digging I noticed something else. I was reading the FAQ that mentioned removing the /etc/udev/rules.d/70-persistent-net.rules file from Ubuntu systems that enumerated the ethernet interfaces something other than eth0. So, knowing that Debian and Ubuntu systems are very similar, I removed the /etc/udev/rules.d/70-persistent-net.rules on my Debian rootfs so that the ethernet interface would enumerate to eth0, rather than eth1, and now I don’t get the repeated “Link is down” / “Link is up” messages.
Is there something wrong with having an ethernet interface enumerated as eth1?
Author
Curiouser and curiouser.
Did the udev rule database show your first board as eth0?
Yes, it showed my first board (the one without the problem) as eth0 and the board that was having the issue as eth1.
I did another experiment after deleting the persistent-net.rules file. This time I booted the Debian rootfs on the board I was having the “Link is up” / “Link is down” issue with first, so that it’s ethernet interface would enumerate as eth0 consistently to avoid the “Link is up/down” messages in the future. Then, I shut it down and booted the same Debian rootfs on the board I wasn’t having the “Link is up” / “Link is down” issue on (the one that was enumerated as eth0 before). So, now it’s ethernet interface is enumerated as eth1, but when I check the syslog there were no repeated “Link is up” / “Link is down” messages found.
So, I’m thinking that there is something weird going on with the board that was having the “Link is up” / “Link is down” issue.
Hi,
Does any one knows the “cfg80211: Calling CRDA to update world regulatory domain” issue? when I implemented WPA with wpa_supplicant, it always pop up. Until I unloaded wl12xx module, it stops.
Hi,
I am using the LTIB4 BSP and linux kernel 3.0.35_4.0.0 on my Nitrogen6x board for supporting wifi. I want to set up wifi on board as an access point that can allow other devices (tablet) to connect/access it.
1) Does some one know how to update wl1271 driver? Because the wl1271 driver in the kernel was old version that not support softAP.
2) How to set up an AP by hostapd?
I have tried to followed the TI’s build instruction to update the driver wl1271, but it failed to build the wl12xx_module. I wonder if some one can help me.
Thanks,
Bill Yang
Hello,
I am trying to bring with PCIe interface on sabrelite iMXQ6. Sabrelite is not detecting PCIe interface after rebooting with PCIe enabled release.
I have bought PCIe adapter from boundary devices which contains mini-pcie connector and have used jumper provided with adapter as indicated in its manual for sabrelite.
I have also bought Startech’s mini-pcie based ethernet card based on realtek rtl8111E chipset and inserted it into the mini PCIe slot of the Boundary device’s adapter card attached to Sabrelite iMXQ6. Ethernet cable is also connected to the connector of ethernet card.
As I reboot the Sabrelite I cannot see my new device getting enumerated at the bootup by the PCI core bus driver. Further, output of the ‘lspci’ does not show any detected devices:
root@ubuntu-desktop:~# lspci -tv
-[0000:00]-
root@ubuntu-desktop:~#
I have enabled PCIe switches in the kernel:
– CONFIG_IMX_PCIE=y
– CONFIG_IMX_HAVE_PLATFORM_IMX_PCIE=y
– CONFIG_PCIEPORTBUS=y
– CONFIG_HOTPLUG_PCI=y
– CONFIG_HOTPLUG_PCI_PCIE=y
I have enabled Hotplug so that I could re-trigger scan/remove of devices from user-space using sysfs interface. This ends up using the functions eventually used by Hotplug module to achieve the similar affect of Hotplug event. (I was made aware by the Freescale community that Hotplug as such is not supported with 4.0.0 release on which Boundary device’s release is based. If everything with is okay then devices should at least get enumerated at the boot time)
Any help with respect to this would be much appreciated.
regards
Salil
just to add, is it possible to indicate me the .config file of the working kernel with PCIe support which somebody has tested and is working for at least one PCIe device.
Hi Salil,
I also had issues with bringing-up PCIe. Function imx_pcie_link_up in the driver (see https://github.com/boundarydevices/linux-imx6/blob/boundary-imx_3.0.35_4.1.0/arch/arm/mach-mx6/pcie.c)
is basically a wait loop. I increased max. iterations by a huge factor and printed out each change of ltssm. So I could watch the link training phase and adjust my test setup wiring until I got a “link up”.
I also switched to Nitrogen6x board which has an additional REFCLK pair which is not available on the BD-SL-i.MX6 (formerly SABRE Lite) board. I have not uses hotplug.
Not it works, btw. I’m using TW6869 video decoder as PCIe endpoint.
Good luck
Frank
Hi Frank,
Thanks for the response. I have compiled the kernel with custom configuration (as defined by the company requirements) this time and it boots and works correctly. Now, as per my last post I have enabled few switches which I thought should be sufficient to enable PCIe (to make things simple, let us leave hotplug aside for a moment). and with this PCIe config I should see my realtek Ethernet NIC getting enumerated at boot time if the card is present at the time of booting. I sit possible to confirm the PCIe specific switches used by you or are you using default boundary devices configuration present on github.
I just peaked into the defconfig of nitrogen on github (basically nitrogen6x_dconfig) I could see a switch CONFIG_PCIE_FORCE_GEN1=y enabled. Not sure why Gen-1 is being forced on PCIe. Hope there are no issues with Gen-2 PCIe.
regards
Salil
Thanks! I was able to bring up PCIe over Nitrogen6x and used the release indicated by boundary devices.
Hello frank,
A related question to the link-up function imx_pcie_link_up you mentioned in your earlier post, it returns ltssm value codes. Where can I find the interpretations of these return values. I am getting values between (0,2,3) and they are repeating forever and finally function gives up. I want to know the meaning of each of these return codes.
ltssm = readl(dbi_base + DB_R0) & 0x3F;
The Reference guide P4337 says “see source code” but I could not find any stuff related to ltssm codes in source code. Please guide how you managed to interpret them.
Thanks in anticipation
Salil
(just to add some facts…)
I have a setup with have Nitrogen6x PCIe RC connected to PLX switch and the endpoints are connected to PLX switch. The upstream port connected to Nitrogen6x is not coming up and therefore required above information. PLX switch requires explicit reference clock from the Nitrogen6x and which is being applied to it. Initialization of PLX switch is happening correctly with endpoint links coming up. If I attach endpoint directly to the Nitrogen6x it works.
upstream +—————End-point Device
iMX6Q[RC]——————PLX Switch
link +—————End-point Device
some facts:
– Same switch works well if we attach it to some Host PC machine based on x86. with not configuration required at all as its being initialized by default in transparent mode.
– We tried to compare the clock coming out of the PC Host machine with that of Nitrogen6x we could see there is some degradation in quality of clock and amplitude of the clock from Nitrogen6x seems to be quite less with respect to the clock from x86 Host PC.
– It looks to me that at rx side i.e on Root Complex of iMX6Q is not able to achieve bitlock and its LTSSM is stuck between values (0,2,3). Could it be because of the quality of the clock being poor at the Transmit side i.e. PLX switch. Is there any way I can adjust the clock tolerance/elastic buffer for RX PLL on Root Complex of iMX6Q.
Frank/Eric
Any suggestions might be helpful here.
thanks in anticipation
regards
Salil
Hi Salil
Does forcing GEN1 speed get it working?
Troy
Thanks! Troy, we figured it out, looks like there was some problem with the connector of the Nitrogen6x adapter board we were using. we ordered new one from boundary devices, it is working fine now.
Hello Eric/Troy,
A quick question: is it possible to use external PCIe controller with iMX6Q/Sabrelite/Nitrogen. Does Boundary Devices provides any such external module? We might have to use external controller since we have hit 14MB PCIe mem space allocated to controller (which probably is less for our system).
regards
Salil
Author
I suspect not. Even if you had an adapter, how would it connect? USB?
If so, how would any existing PCIe drivers function?
Yes, those were the precisely set of questions running in my mind as well. I did see some chips from PLX technologies like PEX 3382 and PEX8311 which I guess makes use of USB interface and some sort of local bus (I suppose, EIM in case of iMX6Q). I also saw the USB gadget drivers (which included IMX drivers as part of their SDK bundle) being exported by these, they only provide some sort of read/write interfaces and gelling these interfaces with linux stack PCI core subsytem would be a great headache. Plus, I could not figure out how the memory mapping (for the resources or the end-point devices) would take place in these chips.
Unfortunately, looks like its a dead end for Freescale iMX6Q for us and might have to shift to some more potent processor like Freescale QorIQ (P-series P1010/P1020 or LS1020A) which have much larger PCIe memory mapping space (~512 MB per PCIe controller X 2 = 1 GB).
Please do let me know if you have any suggestions or possible workarounds.
-Salil
Hi Eric,
we are using nitrogen supported board(OKAYA) with nitrogen6x solo board,
I want to know which display panel specific driver code(file name) in Linux3.0.35.4.0.0 kernel it uses ? is the rotation from Landscape to portrait is possible?if possible what needs to be modified in the code.
fyi, for rotation to portrait I modified the code in ipu_idmac.c file ipu_init_channel_buffer() IPU_ROTATE_NONE to IPU_ROTATE_90_RIGHT is this correct?
Please advise me.
Thanking you,
Arun
Author
Hi Arun,
I’m not aware of support for screen rotation at the kernel driver level.
This is normally done in the userspace by XRandR under X, or similar features of Android or Qt.
The “fbcon=rotate:n” kernel command-line parameter can be used to rotate the text-mode console.
Hi,
I have a custom imx6q board. I do not have the ethernet and the sd card interfaces.
I am trying to bring the uboot up using the weimnor.
The uboot comes up, it loads the kernel the console displays
Starting kernel….
and hangs
I guess i have to first try and update the uboot as the one i am using is uboot 2009.
but the patches and the updates seem to be present only for the SD card and not for the weimnor flash.
in this case,can you tell me how i can upgrade my uboot?
Author
Hi Nishad,
This is out of our area, both because you’re using a custom board, and also because we haven’t used weimnor.
You should probably ask this one on the i.MX Community site.
Sorry , i should have continued in the above post itself,
Also i do not see the the
upgradeu
and the
clearenv in my uboot.
I am using thw latest version of ltib, L3.0.35_4.1.0 and i am usind the mx6q_sabreauto_weimnor bootloader.
Looks like i am badly stuck.
can you tell me how do i go forward from here.
Author
Again. You should be asking the Freescale team about this, since the 2009.08 U-Boot is substantially different, and sabreauto does things much differently from ours (no upgradeu or clearenv).
ok,
Thanks for the prompt reply anyways.
Hi,
How can we use I2C functionalities like regmap_write()/read() in this kernel 3.0.35_4.0.0 image.
Does this SD card image support it by default? Or Any configurations to be added or changed
before using these APIs in device driver code?
If i include the file in sample driver code and try to build then it gives fatal error saying that regmap.h does not exist.
Thanks in Advance,
Anil Patel
Hi to everybody,
i’m using kernel 3.0.35 on my ARM7. By default, ALSA is built-in in the kernel, but i have to installa ,the codec for ALC260 downloaded from realtek web-site. After all, when i run configure script, i’ve got got an error becouse ALSA is built-in in the kernel.
So, if i change by menuconfig ALSA from built-into Module and i run make command, i receive these errors:
drivers/built-in.o: In function `mxc_hdmi_register_audio’:
clkdev.c:(.text+0x6cc44): undefined reference to `snd_pcm_link_rwlock’
drivers/built-in.o: In function `mxc_hdmi_abort_stream’:
clkdev.c:(.text+0x6ccfc): undefined reference to `snd_pcm_link_rwlock’
drivers/built-in.o: In function `asrc_init’:
clkdev.c:(.init.text+0x7b34): undefined reference to `asrc_p2p_hook’
drivers/built-in.o: In function `asrc_exit’:
clkdev.c:(.exit.text+0xe74): undefined reference to `asrc_p2p_hook’
make: *** [.tmp_vmlinux1] Errore 1
Can Someone help me?
Thanks in Advantage
Giorgio Fantin
Hi,
This may be a simple question but can anyone help me with where can i get root file system for this kernel release and tool-chain to compile it on Nitrogen 6x.
With Regards,
Sudlin
Hi Sudlin,
Are you sure you want to use this outdated kernel ?
Some old links here, maybe you can use them :
A newer version of 3.0.35 kernel:
http://boundarydevices.com/mx6-kernel-4-1-0/
With Linaro rootfs:
http://boundarydevices.com/linaro-raring-images-4-1-0-kernels-mx6/
With Raring rootfs:
http://boundarydevices.com/rapping-raring/
With Ubuntu rootfs :
http://boundarydevices.com/ubuntunizing-i-mx6-kernels/
Thanks Laci.
Yeah,you are right that this is an outdated kernel. I just want to have a try on this for some references as this is the stable version without device tree (as far as i know).
Regards,
Sudlin
Hi Laci and Sudlin,
I have been trying to use this kernel with my Nitrogen6_max board. I initially cross-compiled it on my host device following the steps as given above. I also prepared the SD card with the uImage in the /boot directory and the 6x_bootscript as well.
When I use this SD card with the board, the kernel loads, but I get an unknown partition table error stopping the process of booting.
I am new to this, could someone help me out with it?
Thanks,
Vikas
Hi Vikas,
The same question to you as well. Why do you want to use this outdated kernel ?
This post is more than 2 yrs. old . Since then we had the following kernels :
3.0.35_4.1.0
3.5.7_1.0.0
3.10.9_1.0.0
3.10.17_1.0.2
3.10.31_1.1.0
3.10.53_1.0.0
and
3.14.28_1.0.0 is almost done.
Do you insist upon 3.0.35_4.0.0 ? On the oldest one ? Are you sure ?
Laci
Hi Laci,
I guess I would go ahead and use the latest kernel.
Which one do you think I should use?
Best,
Vikas
Hi Vikas,
Try this one :
http://boundarydevices.com/ubuntu-trusty-for-i-mx6-boards-june-2015-kernel-3-10-53/
Hi Laci,
Thanks a lot for guidance. I got the 3.10.17 kernel running for my Nitrogen6x_max board.
Best,
Vikas
Hi Laci,
I am using the Nitrogen6x_max board by Boundary Devices and am unable to get a later kernels running on it. The kernels you mentioned apart from the 3.0.35_4.1.0 dont have the nitrogen6_max_defconfig file which is needed during the cross compilation of the kernel.
However, on working with 3.0.35_4.1.0, while booting I get the FATAL: kernel too old error followed by the shutting down of the system.
Is there any way you can help me out with this.
Thanks in advance.