How Do I Customize BBBAndroid?

Customizing BBBAndroid

Now that you have a working Android system, you might want to play around with its configuration. Most people will just be interested in changing the resolution, which can be accomplished by changing the "video" kernel command line parameter in the uEnv.txt in the "boot" partition (the first partition on the microSD card). By default, I have set this to "720x480-16@60", which is 720x480, 16 bits per pixel color depth, and 60Hz refresh rate.

Important Note: If you remove the "video" setting completely, your resolution will default to the highest resolution that your display reports via EDID. If your display can't report any EDID information, the resolution will default to 1024x768. If your system is running, but you don't get any video, try removing the "video" setting from your uEnv.txt.

I have personally verified that the CircuitCo LCD3, LCD4, and LCD7 and 4D Systems 4DCAPE-43T and 4DCAPE-70T BeagleBone Capes all work correctly (both video and touchscreen) with this Android image. The only change that must be made is that the "video" option in uEnv.txt must be removed so that the default resolution is set. This default resolution is determined by the firmware, so don't try to force a resolution by explicitly setting it. No other capes have been tested that I am aware of.

Because the BBB's HDMI output is being used for output, you have two choices for explicitly setting resolutions in uEnv.txt. You can either set a CEA mode, which is a video mode that supports sending audio data, or a non-CEA mode, which is video only (like a DVI signal). If you are using a DVI/VGA computer monitor for your video, then you can use a non-CEA video mode for your display. If you are using an HDMI television, then you can use a CEA mode. The bad news in this situation is that, while some video modes are both CEA and non-CEA, there are many that are only on one list or the other, but not both.

For example, 640x480 is a non-CEA mode. Using "video=640x480-16@60" will not give you any audio. 720x480 is a CEA mode. Using "video=720x480-16@60" will give you audio, but it probably isn't a valid mode for many VGA monitors. To view the resolutions for valid CEA modes (modes that support audio over the HDMI) look at the edid_cea_modes[] array in kernel/drivers/gpu/drm/drm_edid_modes.h. Lists of other valid modes are in the same file in the drm_dmt_modes[] and edid_est_modes[] arrays.

Adding other kernel command-line options (mpurate, debugfs, etc.) is done in the uEnv.txt in the same fashion. Just add the additional options on the end of the line that the "video" setting is on.

The "qemu=1" on the kernel command line is used to disable certain aspects of hardware graphics acceleration. Once SGX support is ready for the 3.8 kernel, you'll be able to build hardware-accelerated OpenGL for BBB's Android and remove that qemu option. For now, though, it has to be in there.