How do you enable 24 bits for Beaglebone Black?


Beaglebone Black Rev C
Image Build 8.6 Jessie Debian
LCD- Apollo Display G104X1-L03

So I am using the Beaglebone black and pairing it with a LVDS display. I layed out an interface board and hooked it up and at first it did not work unless I hooked up an HDMI
interface. So I went into the uEnv.txt and unconmenteded the cmdline=coherent_pool=1M quiet cape_Universal=enable video=HDMI- A-1 1024x768@60e
and now it runs on its own. However the I have the board configured for 24 bit mode so the red and blue colors are swapped (See Picture below)

Auto Generated Inline Image 1.jpg

I was aware that when the am335 swaps red and blue in 24 bit mode so it makes sense as the default BSP is configured for 16.
But now I am struggling to enable 24 bit mode for the latest Jessie build.
For the early Angstrom images all you had to do was go into the X11/xorg.conf and change the color depth from 16 to 24 and it worked.

But for jessie if I do that it does the following on bootup:
Auto Generated Inline Image 2.jpg

I am assuming this is conflict with TI’s tilcdc driver but Im not sure.

In any case what is the best way to enable 24 bits outside of the X11 config?


With v4.4.x+ kernels:


Auto Generated Inline Image 1.jpg

Auto Generated Inline Image 2.jpg

That link is for different dts files which I have seen before.
So if I took one of them and compiled it to a dtbo file which is the correct way to enable it?

I have seen it done 2 ways:

  1. Through the uEvt.txt file
  2. Using the echo command to write to the slots file

Both were done with using older debian builds and I could never get it to work.

I am running Kernal 4.4.30 so based on your post that should be ok correct?

The dtbo file should be included in the kernel. The commit RCN linked to was from two days ago., your issue has been fixed, but you need to update to a kernel that includes the fix (ie: less than two days old).

as long as it's a 4.4.30-ti based kernel..

Last week i started creating an overlay file for the newhaven 24bit lcd
cape. (BB-BONE-NH7C-01-A0.dts)

in the process i noticed that mainline was broken with stretch on all my
24bit lcd's, that one line diff in teh *.dtbo fixed that, it also worked
with ti's v4.4.x-ti..

as a side bonus, we no longer have to define the bit size in


The link RNC provided was device tree source files for 3 different LCD’s, not kernal builds.
I am very confused by “dtbo should be included with the kernal” because I thought the whole point
of using device trees was to avoid having to recompile the kernal…

In /lib/firmware you are correct, those dtbo file do exist. I have actually edited the pinmux configuration for 24 bit and compiled it but could not successfully
write it to the slots file…

Look at your overlay or device tree binary, what you use to init the
display. For the am335x family there is a lcdc node, add the

blue-and-red-wiring = "crossed";


Or are you just loading the default device tree binary?


Ok, well I will try it out and let you know if it works. Do I have to disable the HDMI to avoid pin conflicts?



So I tried compiling BB-BONE-NH7C-01-A0.dts but when I do I get the following error:
Auto Generated Inline Image 1.jpg

I am entering:

dtc -O dtb -o BB-BONE-NH7C-01-A0.dtbo -b 0 -@ BB-BONE-NH7C-01-A0.dts

and it returns the error… am i inputting the command wrong?

Hi David,

Could you provide details as to how you are using an LVDS display with the Beagle Bone Black? Also, which overlay are you using? Any other settings that you configured to get the display working?