fbcon - использовать устройство фреймбуфера Android / MSM для консоли загрузки

4168
Javacow

Я пытаюсь использовать устройство с установленным Nexus 5 (набор микросхем MSM 8974) с Debian, работающим с X-сервером и консолью загрузки linux framebuffer. Я перекомпилировал ядро-молот Android по умолчанию (с CONFIG_FB_MSM_MDSS=yи CONFIG_FB_MSM=yи включил опции для консоли кадрового буфера (назначить основной дисплей и использовать скомпилированные в шрифтах). Используя это ядро, я могу успешно загружать Android, используя fastboot boot -c "console=tty0,115200 fbcon=font:VGA8x8" kernel-fbcon.img, но во время загрузки нет консоли кадрового буфера, только логотип Google с последующей загрузкой анимации.

Я проверил, остановив платформу Android ( stop) и используя корневую оболочку через ADB, чтобы попробовать разные вещи в framebuffer ( /dev/graphics/fb0).

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

Использование con2fbmap 1 0при включенном экране не имеет никакого эффекта, и оно не изменяет отображение и не отображает текст, находящийся на консоли tty0. Я также попытался запустить Xorg на дисплее с помощью команды FRAMEBUFFER=/dev/graphics/fb0 Xorg vt1, которая запускается и завершается в обычном режиме без ошибок, однако на экране не отображается ничего, кроме очень короткой вспышки того, что отображалось на экране в последний раз, когда завершается X (ctrl + с в оболочке). Xorg настроен на использование драйвера fbdev по умолчанию.

Я подозреваю, что эти проблемы вызваны нестандартной реализацией устройства кадрового буфера MSM (для Nexus это находится в kernel_source / drivers / video / msm / mdss / mdss_fb.c). Многие новые устройства Android имеют эту проблему, поскольку устройства с кадровым буфером не работают должным образом.

Я хотел бы знать, возможно ли изменить драйвер кадрового буфера или настроить ядро ​​так, чтобы при загрузке устройства оно отображало консоль загрузки на кадровом буфере.

Спасибо всем, кто может помочь.

РЕДАКТИРОВАТЬ: Эта проблема кажется очень специфичным для Nexus 5. Другие устройства в серии Google Nexus, похоже, не имеют проблем с графикой кадрового буфера и загрузочными консолями.

1

2 ответа на вопрос

1
sub77

Проверьте ваши dts файлы на наличие таких записей 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; + }; 
1
max1220

На моем Nexus 4 у ​​меня была такая же проблема. Это решило это:

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