Beaglebone Buildroot (No hdmi output)


I recently build a Linux Image for the Beaglebone Black rev.C. I cannot get working the hdmi output with this buildroot image. If I use the stock image coming on the NAND of the beaglebone, the hdmi output is well working so this is not an hardware failure.

I need an image having a minimal footprint having (Qt5, nodejs, systemd, nano, some other small packages).

Here is what I’ve done to build the image on buildroot :

$ make beaglebone_defconfig
$ make menuconfig


I add some missing package (ti-gfx, glibc, etc…) and I build the image using :

$ make

I then prepared the MicroSDCard :

$ sudo mount /dev/sdf1 /media/boot
$ sudo mount /dev/sdf2 /media/rootfs
$ sudo cp MLO u-boot.img zImage uEnv.txt *.dtb /media/boot
$ sudo dd if=rootfs.ext2 of=/dev/sdf2
$ sudo umount /dev/sdf1
$ sudo umount /dev/sdf2


I insert the MicrosSDCard into the BeagleBone, hold the S2 button down and then wait until the beaglebone boot. Notice that I have an HDMI LG 24’’ monitor connected to the beaglebone and also the console (FTDI) to my Windows computer (putty).

The monitor remain always blank, the beaglebone do not output on.

Someone on buildroot give me a patch to allow tilcdc to be selected in the kernel. I applied this patch. (Patch of tilcdc).

I rebuild the kernel :

$ make linix-dirclean $ make kernel $ make

Copy the new kernel to the SDCard, and also the rootfs (just to be sure). But the same problem, no hdmi output !

While looking to the dmesg, I notice this error :

[ 1.402202] tilcdc 4830e000.lcdc: no encoders/connectors found [ 1.408337] tilcdc 4830e000.lcdc: failed to initialize mode setting

I also tried modifying the uEnv.txt and setting parameters found on internet but same blank screen.

Now I’m very out of idea :frowning:

Is somebody have succeed to get hdmi working using a buildroot image ? The guys on IRC assumed that the Buildroot configuration for the beaglebone black may be too old and need to be updated.

Best regards,

Why is it that some of you feel compelled to reinvent the wheel ?

Hi William, thank for your anwser.

I do not want to reinvent the wheel, but use tools like Buildroot to automates our process of building a custom Linux image for BeagleBone Black. I have 4 different projects targeting the Beaglebone Black and we want to customize and automated linux image of each of these projects.

I think Buildroot is a good candidate for our needs and we notice that Buildroot is offering a base configuration to support the Beaglebone (boot, kernel). But maybe this configuration is too old or misconfigured.

I noticed that the actual Beaglebone configruration for Buildroot is taking the kernel from Ti-Kernel. If I do not make mistakes, I think this version of Kernel is 3.12 ? But the one you point me RobertCNelson seem to be the 3.14.

Question #1 - Does my HDMI (no output) problem could be related to fact that Buildroot is using a too old kernel ?
Question #2 - Could it be the dtb file not being correctly configured from TI ?
Question #3 - Bad uEnv.txt configuration ?

Question #4 - Since the board is well booting before loading the kernel, I don’t think my problem is related to the u-Boot version ?

Question #5 - Is somebody here can validate the Buildroot configuration file from Buildroot git (BeagleBone LinuxConfig) and (BeagleBone Buildroot Config) ?

I’m starting with the Beaglebone and I confess you that I am not an expert with Linux. However, I believe that if we find the solution together is the whole community that will benefit, since I do not seem to be the only person who wants to use Buildroot with Beaglebone.

Does this would be a better idea to compiles the kernel Nelson apart and then I specify to Buildroot where it (zImage) is to copy it in to my final image folder ? Or maybe I could point to Buildroot the git of the kernel and hoping Buildroot will have the appropriate configuration to make it work as is ?

So far I have had the support of the Buildroot community (y_Morin, Gustavoz), but not much from the Beaglebone community :frowning:

Best regards,

Question #1 - Does my HDMI (no output) problem could be related to fact that Buildroot is using a too old kernel ?

Possibly. The latest TI kernel is using 3.14.x, and I think that 3.12.x is around a year old.

Question #2 - Could it be the dtb file not being correctly configured from TI ?

It is possible.

Question #3 - Bad uEnv.txt configuration ?

No one here has seen your uEnv.txt file. but it is possible.

Question #4 - Since the board is well booting before loading the kernel, I don’t think my problem is related to the u-Boot version ?

Again, no idea. What patches have you applied against your uboot ? The “official” uboot is patched, is yours ?

So, since Robert Nelson builds many kernels and Linux images for the community ( official images ). I am wondering why not just use his steps / build scripts ? I must admit, I have no hands on experience, trying to build using buildroot myself But am quite familiar with Roberts build guide. It is very customizable, in that you can make a bare Debian install ( read: ~75MB on disk ), or you can have his scripts add whatever you like from Roberts, or the official Debian repo’s. You can also configure the kernel however you like prior to building.

Also, Roberts guide covers 3.8.x, 3.18.x, as well as TI’s 3.14.x kernels. If you need “full” device tree support. Use 3.8.x. 3.12.x was never used in the official images, and I believe is past end of life. Meaning, if you use it, you’re likely to be on your own.

Just to be sure I understand :

When looking to the Beaglebone configuration file for Buildroot, the kernel is taken from this location : git://**.** This current release is based on the 3.14. BUT, while looking to the configuration of buildroot for the Beaglebone I did notice that the repo version “7f280334068b7c875ade51f8f3921ab311f0c824” is pointing to a 3.12 Kernel.

What difference between the Robert Nelson TI kernel patched and the Ti 3.14 Kernel ? I’m little bit lost here :frowning: Is the TI Kernel not suppose to expose all hardware of the beaglebone ?

The only patched applied upon the Buildroot kernel configured for the Beaglebone seem to be there :

The U-Boot used by Buildroot (2013.10) seem to be use as is, without any patch.

Yes I need most of the hardware support (SGX (OpenGL ES), SerialPort, HDMI, USB, etc…).
The uEnv.txt is the same as the one supplied with the Buildroot beaglebone configuration :

About the DTS file, I think they are taken from the kernel ? So they are probably taken here :

By the way, here is my complete console boot log :

Maybe I have not enough knowledge with Linux but pretend I’m building the U-Boot and Kernel from those instructions ( Without using Buildroot, how will I customize my rootfs with additional package as (QT, systemd, lib, tools, etc…) ? I understand that I could built all those component separately and copy it to my rootfs then produce the img file. But we are far from having an automated process ?

Best regards,

As for the differences between 3.12.x and 3.14.x you’ll have to ask Robert, or someone else more knowledgeable of those. From what I understand though, is that 3.12.x was a dead end early on, and only TI worked on that kernel in this community. 3.14.x is supposedly the new ( in the future ) de-facto kernel. However, that has been talked about for a long time.

Now, as far as creating a custom rootfs, there are at least a couple ways, and I’ve personally opted for the most easiest for me. Which is to say, I start with Roberts barefs, then I make two copies of the working image. One image would be for “production”, while the other is a development image.

The reasoning here is simple. Sometimes it is too much of a hassle to cross compile certain things. In this case, so long as the item in question will not take too long to compile natively ( on the beaglebone ). I use the development image to build, and package the item. I did this with Nodejs. My Nodejs image with several command line utilities is around 175M in size. Nodejs includes express, and

The production image is of course just the bare minimum to run what I want.

Anyway, I have a fairly complex build system, and from the sound of it a somewhat unique perspective on how the same should be set up. I load my rootfs over ethernet. So the given live image actually sits on an x86 mufti-purpose development machine exclusively for the beaglbone. However, this makes it a snap to do live backups, and revert changes as needed when things go wrong. It also makes it really easy to copy things form the development image, to the production image( multiple ways actually ).

So as an example, I boot my development image, imstall all the necessary tools/utilities to build Nodejs. After which I build from source, and then create a *.deb package. SO then I can shutdown that image, modify my uEnv.txt file to load the production image( or just keep different sdcards ) then run the production image. Ah but wait ! we forgot to copy the deb package over, how do we fix that ? A simple file cp, or mv on the cross compile / server system, or sshfs . . . Followed by a sudo dpkg -i <filename.deb> . . . done.

I’ve been meaning to do a guide on my own build process and how I personally go about doing things like this, but my year so far has been really busy. And shows no signs of being less busy into the foreseeable future. Eventually I hope to get around to it.

By the way. just adding QT5 to your production image will bloat it’s size tremendously.

Hi Martin,

I am currently facing an issue you encountered about 3 years ago. Did you manage to solve this issue of getting buildroot to produce an image that can run GUI applications on the BBB. I am currently trying to do this with 4DSystem 7 Inch display.



Hi Onio,

Did you find any solution? I am also stuck with the same issue.
Any help would be greatly appreciated.