讓 LineageOS支援樹莓派官方七吋觸控螢幕

陳培郁 (Raymond)
豬窩部落格
Published in
4 min readJan 13, 2018

上一篇,我們已經在樹莓派 3 上面安裝了 Android/LineageOS,但接下來會發現無法在數莓派的官方七吋觸控螢幕上面正常顯示。這一篇文章會描述如何設定這個觸控螢幕。

問題情況

直接使用 LineageOS 14.1 與觸控螢幕的話,我們會遇到的問題有三個:

  1. 解析度不正常,讓畫面有點偏移或是只顯示一部分的現象
  2. 觸控無法使用
  3. 畫面顛倒,因此若是安裝螢幕支撐架的話,電源(Micro USB)會插不進去

關於第 1 個問題,是因為 LineageOS 預設把解析度鎖死在 1280*800,所以對於解析度只有 800*480 的觸控螢幕來講就會變得不正常。第 2 問題是因為我們並未設定好必要的裝置,才導致觸控不會發生作用。第 3 個問題則是可以靠著調整設定值,將畫面旋轉 180 度來解決。

修改 config.txt

重新把 SD 卡插上電腦,修改磁區 1(儲存 boot 資訊)裡的 config.txt 檔。首先,在 Display 相關的部分,確認 hdmi 的參數修改成這個樣子:

hdmi_force_hotplug=1
hdmi_drive=2
hdmi_group=2
hdmi_mode=87
hdmi_cvt=800 480 6 0 0 0

然後把 disable_overscan, framebuffer_width, framebuffer_height 幾行刪掉或是用 # 註解掉:

#disable_overscan=1
#framebuffer_width=1280
#framebuffer_height=720

對於 overlay 相關的部分,我們需要新增幾個新的 overlay 上去:

dtoverlay=i2c-rtc,ds3231
dtoverlay=rpi-backlight
dtoverlay=rpi-ft5406
dtoverlay=vc4-kms-v3d,cma-256 # should already existed

然後新增或確認這兩個參數存在:

dtparam=i2c_arm=on
dtparam=i2c1=on

最後,為了讓畫面旋轉180度,加入下面這一行。如果你不需要它旋轉,也可以不要加上這行:

lcd_rotate=2 # optional

上面這些修改主要基於這份 diff 檔。關於這些參數的詳細說明請參考這份文件

加入 overlays

前面我們在設定檔裡面指定了幾個 overlays,現在我們要把對應的檔案加進去。移動到 lineageOS 編譯的目錄下,找出底下幾個檔案,然後複製到磁區 1 的 overlays 資料夾:

kernel/rpi/arch/arm/boot/dts/overlays/i2c-rtc.dtbo
kernel/rpi/arch/arm/boot/dts/overlays/rpi-backlight.dtbo
kernel/rpi/arch/arm/boot/dts/overlays/rpi-ft5406.dtbo

所謂的 overlays 其實是指 Device Tree Overlays,我們可以靠著編譯產生的這些 dtbo 檔案,讓 bootloader 得知這些裝置存在並產生 device tree。關於他們的說明跟原理請參考 Google 官方文件

關於上面幾個 dtbo 的用途,請參考數莓派的官方文件

移除掉 debug 設定的固定解析度

最後,找到磁區 2(燒錄整個系統的磁區)裡面的 build.prop,找出下面這一行並把它刪掉或註解掉:

#debug.drm.mode.force=1280x720

完成了

到此所有必要的修改都結束了,把 SD 卡插回樹莓派看看吧。

Android 在觸控螢幕上的顯示效果

--

--

陳培郁 (Raymond)
豬窩部落格

軟體工程師,喜歡關注台灣與美國的科技新聞、分享自己的見解與技術交流。 技能包含 Android 開發、Linux 網路、資訊安全、影音串流。