How to setup my beagleboard output for HDMI LCD TV?

806 views
Skip to first unread message

StanleyLee

unread,
Sep 14, 2009, 9:48:31 PM9/14/09
to 0xlab-devel
As the title, I want to setup my beagleboard's output to HDMI.
If anyone knew that, please tell me how.
Thanks.

Shun-Yu Chang

unread,
Sep 14, 2009, 11:42:54 PM9/14/09
to 0xlab...@googlegroups.com
Hi, Stanley:
    Here is my kernel command arguments related to this:  omapdss.def_disp=dvi omapfb.mode=dvi:1024x768MR-24@60 omapfb.vram=0:3M,1:3M,2:3M omapdss.debug=y omap_vout.debug=1
    You may try.
-jeremy

StanleyLee

unread,
Sep 15, 2009, 1:46:08 AM9/15/09
to 0xlab-devel
Hi Shun-Yu Chang:

I setup my kernel command arguments as you suggested.
I only can saw the BB logo from HDMI LCD TV , but cann't enter the
android desktop.
It has the message as follow : No Signal input" from my LCD TV.

Do I mistake the kernel command arguments?

My kernel command arguments setting as below.


Thanks.

============================================
bootcmd=if mmcinit; then if run loadbootscript; then run bootscript;
else if run loaduimage; then if run loadramdisk; then run ramboot;
else run mmcboot; fi; else run nandboot; fi; fi; else run nandboot; fi
baudrate=115200
loadaddr=0x80200000
rdaddr=0x81600000
console=ttyS2,115200n8
mmcargs=setenv bootargs console=${console} ${optargs} root=/dev/
mmcblk0p2 rw rootfstype=ext3 rootwait
ramargs=setenv bootargs console=${console} ${optargs} root=/dev/ram0
rw ramdisk_size=32768 initrd=${rdaddr},32M
jffs2args=setenv bootargs console=${console} ${optargs} root=/dev/
mtdblock4 rw rootfstype=jffs2
loadbootscript=fatload mmc 0 ${loadaddr} boot.scr
bootscript=echo Running bootscript from mmc ...; autoscr ${loadaddr}
loaduimage=fatload mmc 0 ${loadaddr} uImage.bin
loadramdisk=fatload mmc 0 ${rdaddr} ramdisk.gz
ramboot=echo Booting from ramdisk.gz ...; run ramargs; bootm $
{loadaddr}
mmcboot=echo Booting from mmc ...; run mmcargs; bootm ${loadaddr}
usbtty=cdc_acm
stdout=serial,usbtty
stdin=serial,usbtty
stderr=serial,usbtty
serial=726000030000000004013f7903016004
bootdelay=3
ubifsargs=setenv bootargs console=${console} ${optargs}
root=ubi0:rootfs ubi.mtd=4 rw rootfstype=ubifs
nandboot=echo Booting from nand ...; run ubifsargs; nand read $
{loadaddr} 280000 400000; bootm ${loadaddr}
video=omapfb:mode:720p60
optargs=init=/init
omapdss.def_disp=dvi
omapfb.mode=dvi:1024x768MR-24@60
omapfb.vram=0:3M,1:3M,2:3M
omapdss.debug=y
omap_vout.debug=1


On Sep 15, 11:42 am, Shun-Yu Chang <shunyu.ch...@gmail.com> wrote:
> Hi, Stanley:
>     Here is my kernel command arguments related to this:
> omapdss.def_disp=dvi
> omapfb.mode=dvi:1024x768MR...@60omapfb.vram=0:3M,1:3M,2:3M
> omapdss.debug=y omap_vout.debug=1
>     You may try.
> -jeremy
>
> On Tue, Sep 15, 2009 at 9:48 AM, StanleyLee <stanleyleeu...@gmail.com>wrote:
>
>
>
>
>
> > As the title, I want to setup my beagleboard's output to  HDMI.
> > If anyone knew that, please tell me how.
> > Thanks.- Hide quoted text -
>
> - Show quoted text -

Jim Huang

unread,
Sep 15, 2009, 2:15:36 AM9/15/09
to 0xlab...@googlegroups.com
2009/9/15 StanleyLee <stanley...@gmail.com>:

>    I setup my kernel command arguments as you suggested.
>    I only can saw the BB logo from HDMI LCD TV , but cann't enter the
> android desktop.
>    It has the message as follow : No Signal input" from my LCD TV.
>    Do I mistake the kernel command arguments?
>    My kernel command arguments setting as below.
[...]

> omapdss.def_disp=dvi
> omapfb.mode=dvi:1024x768MR-24@60
> omapfb.vram=0:3M,1:3M,2:3M
> omapdss.debug=y
> omap_vout.debug=1
>

So, the above are keys for your device configurations.

Try to change the frequency to lock the signals.

Thanks,
Jim Huang (jserv)
http://0xlab.org/

Stanley

unread,
Sep 16, 2009, 2:02:25 AM9/16/09
to 0xlab...@googlegroups.com
Hi Jim Huang:
I download the Angstrom images and boot it through the sd card.
My kernel command arguments as follow:
setenv bootargs 'console=ttyS2,115200n8 console=tty0
root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait omapdss.def_disp=dvi
omapfb.mode=dvi:1024x768MR-24@60'

Now I can see the HDMI TV screen normally.
My kernel command arguments are as the same as 0xkernel.
I think that has some problems on frame buffer in 0xkernel.

Could I modify the kernel code about the frame buffer?
And how to do?

Thanks.

Jim Huang

unread,
Sep 16, 2009, 2:26:13 AM9/16/09
to 0xlab...@googlegroups.com
2009/9/16 Stanley <stanley...@gmail.com>:

>  I download the Angstrom images and boot it through the sd card.
>  My kernel command arguments as follow:
>     setenv bootargs 'console=ttyS2,115200n8 console=tty0
> root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait omapdss.def_disp=dvi
> omapfb.mode=dvi:1024x768MR-24@60'
>  Now I can see the HDMI TV screen normally.
>  My kernel command arguments are as the same as 0xkernel.

hi Stanley,

Thanks for reporting. We have not tracked the development of OMAP DSS
driver for a while. It seems that you
encountered some compatibility problem. At least, newer DSS driver
shipped in Angstrom kernel image works
for your HDMI TV.

Please figure out the details by passing the extra kernel parameter:
omapfb.debug
- Enable debug printing. You have to have OMAPFB debug support enabled
in kernel config.

Sincerely,

Michael

unread,
Sep 16, 2009, 12:16:34 PM9/16/09
to 0xlab...@googlegroups.com
Hi,

So setup a LCD TV with Beagle you must:

1.Read out your EDID from your LCD TV.
2.Convert the xFree timings to framebuffer timings
3. Add the new framebuffer modeline to
/kernelrootfolder/drivers/video/modedb.c
4. compile the kernel and use your resolution

Details:

1. You can readout your EDID with Monitor Asset Manager or Powerstrip
both available on http://www.entechtaiwan.com/util/ (for Windows) or
with xvidtune (Linux)
I have done it with xvidtune

Then you get all supported Resolutions with its modelines.
One XFree Modeline looks like:
"1280x720" 74,250 1280 1344 1472 1664 720 723 728 748
DCF HR SH1 SH2 HFL VR SV1 SV2 VFL


2. Then you must convert XFree86 timing values info to frame buffer
device timings

1) Pixelclock:

pixclock = 1000000 / DCF

2) horizontal timings:

left_margin = HFL - SH2
right_margin = SH1 - HR
hsync_len = SH2 - SH1

3) vertical timings:

upper_margin = VFL - SV2
lower_margin = SV1 - VR
vsync_len = SV2 - SV1

I'have attached a ruby script to automate the
calculation step --> Just read out the modeline with the tools above and
enter the your values
The script generate the framebuffer modeline

3. Then you insert the modeline to the modedb.c which is in the kernel
directory in /drivers/video/
The whole Block looks like:
{
/* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */
"hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5, <-- this
is the modeline which from the script hd720 is the an example for a "name"
0, FB_VMODE_NONINTERLACED
},

You must insert in in the "static const struct fb_videomode modedb[]" block

This is an example from the Koen Kooi HD patch on:
http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=687a7700eabaa53b1187947b6f3b4f1662b9bbb6

5. Compile your kernel as always.

6. Here are the bootargs for the nand boot:
setenv optargs 'init=/init omapdss.def_disp=dvi
omapfb.mode=dvi:hd720-24@60'

I found out that not all EDID-information you get from the LCDs are correct.
But when a resolution is working with your pc oder notebook it should
work on the beagleboard too!

I know that it not the best method. But it works!!

A better method would be to read the EDID values direct from the driver
of the kernel and choose the best Resolution. There is a experimental
patch on:
http://groups.google.com/group/beagleboard/browse_thread/thread/5274e1527067d88e/99e2af82cba3d50f?lnk=gst&q=EDID#99e2af82cba3d50f

I hope it helps!!

Regards

Michael

Here are my resources:
[1] http://store.smpte.org/product-p/smpte%200296m-2001.htm
[2] http://www.ce.org/Standards/browseByCommittee_2641.asp
[3] http://en.wikipedia.org/wiki/Extended_display_identification_data
[4]
http://groups.google.com/group/beagleboard/browse_thread/thread/5274e...
<http://groups.google.com/group/beagleboard/browse_thread/thread/5274e1527067d88e/99e2af82cba3d50f?lnk=gst&q=EDID#99e2af82cba3d50f>

[5] http://www.entechtaiwan.com/util/moninfo.shtm
[6]
http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=687...
<http://cgit.openembedded.net/cgit.cgi?url=openembedded/commit/&id=687a7700eabaa53b1187947b6f3b4f1662b9bbb6>

[7]
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a...
<http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=blob;f=Documentation/fb/framebuffer.txt;h=b3e3a035683993edc8391cefd11ea3ef6be9eb08;hb=HEAD>

[8] http://www.bat.org/~tomba/linux-omap.html
<http://www.bat.org/%7Etomba/linux-omap.html>

convert.rb

Jim Huang

unread,
Sep 16, 2009, 12:43:02 PM9/16/09
to 0xlab...@googlegroups.com
2009/9/17 Michael <rubik...@googlemail.com>:
> Hi,
>

hi Michael,

> So setup a LCD TV with Beagle you must:

[...]

Thanks for your sharing. Can I get the permission from you to put the
materials of mail into 0xdroid wiki?

> 3.  Then you insert the modeline to the modedb.c which is in the kernel
> directory in /drivers/video/
> The whole Block looks like:
> {
>  /* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */
>  "hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5,        <-- this
> is the modeline which from the script hd720 is the an example for a "name"
>  0, FB_VMODE_NONINTERLACED
>  },
>
> You must insert in in the "static const struct fb_videomode modedb[]" block
>

Yes, exactly. We will try to change mode setting.

[...]

> I found out that not all EDID-information you get from the LCDs are correct.
> But when a resolution is working with your pc oder notebook it should
> work on the beagleboard too!
>

That's an excellent conclusion. :)

> A better method would be to read the EDID values direct from the driver
> of the kernel and choose the best Resolution. There is a experimental
> patch on:
> http://groups.google.com/group/beagleboard/browse_thread/thread/5274e1527067d88e/99e2af82cba3d50f?lnk=gst&q=EDID#99e2af82cba3d50f

[...]


checking.

rubik...@googlemail.com

unread,
Sep 17, 2009, 8:46:27 AM9/17/09
to 0xlab-devel
>Thanks for your sharing. Can I get the permission from you to put the
>materials of mail into 0xdroid wiki?

Its no problem!
You can put it on the wiki!
So everyone could use it.

Regards

Michael

On 16 Sep., 18:43, Jim Huang <js...@0xlab.org> wrote:
> 2009/9/17 Michael <rubiktu...@googlemail.com>:
>
> > Hi,
>
> hi Michael,
>
> > So setup a LCD TV with Beagle you must:
>
> [...]
>
> Thanks for your sharing.  Can I get the permission from you to put the
> materials of mail into 0xdroid wiki?
>
> > 3.  Then you insert the modeline to the modedb.c which is in the kernel
> > directory in /drivers/video/
> > The whole Block looks like:
> > {
> >  /* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */
> >  "hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5,        <-- this
> > is the modeline which from the script hd720 is the an example for a "name"
> >  0, FB_VMODE_NONINTERLACED
> >  },
>
> > You must insert in in the "static const struct fb_videomode modedb[]" block
>
> Yes, exactly.  We will try to change mode setting.
>
> [...]
>
> > I found out that not all EDID-information you get from the LCDs are correct.
> > But when a resolution is working with your pc oder notebook it should
> > work on the beagleboard too!
>
> That's an excellent conclusion. :)
>
> > A better method would be to read the EDID values direct from the driver
> > of the kernel and choose the best Resolution. There is a experimental
> > patch on:
> >http://groups.google.com/group/beagleboard/browse_thread/thread/5274e...

StanleyLee

unread,
Sep 22, 2009, 11:00:55 PM9/22/09
to 0xlab-devel
Hi Michael:

Thank you for your support.
I can see my HDMI LCD TV now.

Thanks.

Reply all
Reply to author
Forward
0 new messages