I am trying to use a rooted Nexus 5 (msm 8974 chipset) device with Debian running with an X server and linux framebuffer boot console. I have recompiled the default Android hammerhead kernel (with
CONFIG_FB_MSM=y, and enabled options for framebuffer console (assign to primary display and use compiled in fonts). Using this kernel, I can boot Android successfully using
fastboot boot -c "console=tty0,115200 fbcon=font:VGA8x8" kernel-fbcon.img, however during boot there is no framebuffer console, only Google logo followed by boot animation.
I have tested by stopping the Android framework (
stop) and using a root shell via ADB to try various different things on the framebuffer (
# cat /dev/urandom > /dev/graphics/fb0 # does not affect the screen cat: write error: No space left on device
con2fbmap 1 0 while the screen is turned on has no effect, and it does not change the display or show any of the text which is on the console tty0. I have also tried to run Xorg on the display with the command
FRAMEBUFFER=/dev/graphics/fb0 Xorg vt1, which runs and terminates as normal with no errors, however the screen does not display anything except a very brief flash of whatever was displayed on the screen last when X terminates (ctrl+c in shell). Xorg is configured to use the default fbdev driver.
I suspect these issues are caused by a non-standard implementation of the MSM framebuffer device (for the Nexus this is in kernel_source/drivers/video/msm/mdss/mdss_fb.c). Many new Android devices have this issue with framebuffer devices not functioning as expected.
I would like to know if it is possible to modify the framebuffer driver or configure the kernel so that when the device boots, it will display the boot console on the framebuffer.
Thanks to anyone who can help.
EDIT: This issue seems very specific to the Nexus 5. Other devices in the Google Nexus series seem to have no problem with framebuffer graphics and boot consoles.