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_MDSS=y and 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 (/dev/graphics/fb0).

# cat /dev/urandom > /dev/graphics/fb0      # does not affect the screen
cat: write error: No space left on device

Using 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.


Check your dts files for such entries: qcom,cont-splash-enabled:

--- a/arch/arm/boot/dts/msm8226-sec-matissewifi-r03.dtsi
+++ b/arch/arm/boot/dts/msm8226-sec-matissewifi-r03.dtsi
@@ -752,5 +752,5 @@
 &dsi2lvds_wxga_vid_r01 {
-   qcom,cont-splash-enabled;

On my Nexus 4 I had the same problem. This solved it:

cat /sys/class/graphics/fb0/modes > /sys/class/graphics/fb0/mode

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.