Configure startup resolution
For display on a HD TV, I recommend a 1280x720 resolution, which is more than enough for all the nice pixels you will display, low enough not to make the BeagleBone suffer, and standard enough to ensure that you will be able to actually have something on screen!
Edit your /boot/uboot/uEnv.txt file and simply edit/add the kms_force_mode variable as follows:
Configure system startup
We now want to make sure that the BeagleBone Blacks starts the GPIO handling process and the GUI automatically.
The environment variables and the device tree overlay are set up with the file /etc/profile.d/pixbox.sh, as follows:
Don't forget to make it executable (chmod a+x /etc/profile.d/pixbox.sh).
#!/bin/bash export LD_LIBRARY_PATH=/media/BBB/lib: export PATH=/media/BBB/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin export SLOTS=/sys/devices/bone_capemgr.9/slots export PINS=/sys/kernel/debug/pinctrl/44e10800.pinmux/pins export CFLAGS="-O3 -march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -mfpu=vfpv3-d16 -ffast-math" export CXXFLAGS="$CFLAGS" export SDL_VIDEODRIVER=fbcon echo PixBox > $SLOTS
To start the GUI automatically, create the file /etc/init.d/pixbox.sh (make it executable too):
Very simple pseudo-service, but with a nice twist: we check that no carrier if found on eth0 to start the GUI. This makes things simpler for remote connection to the device: if plugged at startup, we are in "normal Linux/maintenance" mode, no GUI is started. Otherwise, start GUI.
#!/bin/bash # The following part carries out specific functions depending on arguments. case "$1" in start) if [ `cat /sys/class/net/eth0/carrier` -eq "0" ] then source /etc/profile.d/pixbox.sh export USER=root export SHELL=/bin/bash export PWD=/media/BBB/pixbox/pixbox42 export HOME=/root export NO_MENU=1 /media/BBB/pixbox/service/pixIo_mmap & /media/BBB/pixbox/pixbox42/pixbox_gui fi ;; stop) ;; *) exit 1 ;; esac exit 0
By the way, feel free to tweak the network setup scripts to reduce startup delay (no DHCP if you wish - see /etc/networks/interfaces - , or reduce DHCP timeout - see /etc/dhcp/dhclient.conf).
This should cover most of my work, feel free to contact me if you have specific questions or if I have been too quick on some info. I will probably edit and enrich my articles as I continue fiddling with my system!