[beagleboard] How do I actually use Uboot and uEnv.txt?

I need to change the resolution of my display , and I have seen a lot of
topics about modifying a line in the uEnv.txt file. But how do I actually
do that? By which I mean how do I access the uEnv.txt file in order to
modify it?

uEnv.txt is just a file located in the boot (fat) small partition..

*normally* there is a variable called dvimode: (it might even be
commented out with a "#")
change those numbers to the resolution your monitor supports..)

If I understand everything right, the uEnv.txt is part of uBoot, which is a
bootstrap loader that tells my SD card how to boot my OS image on an
embedded chip. And I was also under the impression that I can press and
hold the User button after I power on the board in order to access uBoot.
But when do that, nothing happens.

Just hold down "any" key over the serial terminal via booting.. (if
your using minicom and it doesn't work, you didn't configure it
correctly.. so use "gtkterm" instead. :wink: )

I used a precompiled kernel in order to
install the OS, which is Ubuntu 12.04. Could that be my problem?

I apologize if this has been asked before, but I have been searching for
days and have come up empty.

With a forum/irc/google, there is no reason to search for days...


Connect a serial (usb/rs232/etc) port up between your board and your pc...


You can connect a serial cable to the board and run a terminal emulation program like TeraTerm on your PC.


Yes. Have you read the System Reference Manual for your board? It tells you how to do this.


If by system reference manual you mean
http://beagleboard.org/static/BBSRM_latest.pdf then yes. I am looking at
section 12, which I believe has the information that I need, I am just still
having a bit of trouble.

I have an RS-232 cable going from my beagleboard to a USB port in my laptop.
Using putty (what I normally use) I set the baud rate, parity, etc to what
is specified by the manual.
  115200 baud rate
  8 data bits
  1 stop bits
  No parity
  No flow control (I don't have an option for none, but I am using XON/XOFF
which has worked as none in the past)

I power on the beagleboard and try to connect, but nothing ever happens. I
guess I am still missing a setting?

Probally, 115200 8 n 1 is correct, give gtkterm/terraterm a try...

(This seems like a lot of hassle just to change the resolution of my
display. Why is this any different from using xrandr in Ubuntu?)

We haven't fully transitioned to "omapdrm" which would allow that.. So
we are stuck with setting the resolution on bootup...


Can you take a moment and register so I don’t keep getting pinged by your posts and have to approve them? Once registered you posts will go right through.


It's a kernel parameter.. (dvimode is the common
angstrom/ubuntu/u-boot used variable name) So no "rebuilding" is


Instead of catching u-boot, you can just edit the file uEnv.txt (Or create one) on the same partition as u-boot. Traditionally that is on the smaller FAT partition on the SD card. This file is read by u-boot and functions the same (correct me if I’m wrong) as passing arguments to u-boot at boot time.

Thanks for the suggestion, but my problem is that I am completely unfamiliar with using this file system. All of the related content I see on the web is about how to set up an SD card or do this or that to uEnv file, but my SD card is set up already and I don’t know how to actually edit the uEnv file. Could you point me to a good tutorial that explains how to actually perform this action? I’m still a student and I don’t have a whole lot of experience with these things. Is there such a thing as a Beagleboard for dummies guide? Thanks for the help

I figured out an ‘alternate’ way of modifying the boot source directly and modifying the line to " omapfb.mode=dvi:640x480MR-16@60". However my system still starts up in the standard 1280x720 display.

The steps I took to change this line was to mount the SD card file system on my laptop, and then edited the boot.script file in /boot. Then I used the command mkimage -A arm -T script -C none -n “Boot Image” -d boot.script boot.scr to make the boot source.

Is there anything else I am missing? Here is my boot.scr

fatload mmc 0:1 0x80000000 uImage
fatload mmc 0:1 0x81600000 uInitrd
setenv bootargs ro elevator=noop vram=12M omapfb.mode=dvi:640x480MR-16@60 mpurate=auto root=UUID=6cbe1be9-803f-4c2e-bd58-d3d9d9200ad7 fixrtc quiet splash
bootm 0x80000000 0x81600000

Thanks for the help

I knew I wasn’t the only one who was having a hard time with this! I was planning on writing a tutorial after I finish my project, but here is a quick run down.

I didn’t directly modify uEnv.txt. I found it easier to modify the boot.scr, using Ubuntu on my laptop with an SD card slot to make my life easy.

1.) Insert SD card into laptop
2.) My boot sector wasn’t mounted immediately, so I have to find and mount it
a.) dmesg | grep -i sd to find what device the boot sector is on
3.) cd /media
4.) sudo mkdir mybeagleboardBoot
5.) sudo mount /dev/sdxx mybeagleboardBoot where xx is your specific device

We can’t edit the boot.scr directly, but we can copy and paste from there. Open it up using nano or whatever text editor you prefer. You will likely see some unreadable stuff followed by the boot instructions. You should copy that to a new file and save it somewhere just in case. I saved it in my home directory and called it boot.script. At this point you can open the new boot.script file and change whatever you want. Then we have to use the mkImage command to remake the boot.scr

6.) mkimage -A arm -T script -C none -n “Boot Image” -d boot.script boot.scr
7.) mv boot.scr /media/mybeagleboardBoot to move the boot.scr back into the boot sector
8.) sudo umount /dev/sdxx
9.) Remove SD card from laptop and insert into beagleboard

I hope that helps.

Great! Thanks, I'll check it out