From 62be42eb692e57dfd5d862d0610c05fad4c085c1 Mon Sep 17 00:00:00 2001 From: lcdwiki Date: Thu, 30 May 2019 07:15:10 +0100 Subject: [PATCH] update LCD show --- LCD-hdmi | 0 LCD24-show | 12 +- LCD28-show | 12 +- LCD32-show | 8 +- LCD35-show | 8 +- LCD5-show | 8 +- LCD7B-show | 8 +- LCD7C-show | 8 +- MHS24-show | 45 +++++ MHS32-show | 45 +++++ MHS35-show | 92 ++++++++++ MHS40-show | 45 +++++ MIS35-show | 45 +++++ MPI3508-show | 8 +- MPI3508_480_320-show | 8 +- MPI3510-show | 8 +- MPI4008-show | 55 ++++-- MPI5001-show | 66 +++---- README.md | 17 +- boot/config-28.txt | 2 +- boot/config-32.txt | 0 boot/config-35-480X320.txt | 0 boot/config-35.txt | 0 boot/config-35DPI.txt | 0 boot/config-397.txt | 3 +- boot/config-43.txt | 0 boot/config-5.txt | 3 +- boot/config-7B-800x480.txt | 0 boot/config-7C-1024x600.txt | 0 boot/config-MPI5001.txt | 6 +- boot/config-mhs24.txt | 63 +++++++ boot/config-mhs32.txt | 63 +++++++ boot/config-mhs35.txt | 63 +++++++ boot/config-mhs395.txt | 63 +++++++ boot/config-mis35.txt | 63 +++++++ boot/config-nomal.txt | 10 +- boot/config.txt.bak | 66 +++++++ etc/rc.local | 23 +++ etc/rc.local-original | 20 +++ rotate.sh | 167 ++++++++++++++++++ rpi-fbcp | 1 + system_backup.sh | 75 ++++++++ system_restore.sh | 93 ++++++++++ ...binput.conf-MPI5001 => 40-libinput.conf-0} | 0 usr/40-libinput.conf-180 | 36 ++++ usr/40-libinput.conf-270 | 36 ++++ usr/40-libinput.conf-90 | 36 ++++ usr/40-libinput.conf-FLIP-H | 36 ++++ usr/40-libinput.conf-FLIP-V | 36 ++++ usr/40-libinput.conf-HDMI7B | 0 usr/40-libinput.conf-HDMI7C | 0 usr/99-calibration.conf-24 | 0 usr/99-calibration.conf-28 | 0 usr/99-calibration.conf-32 | 0 usr/99-calibration.conf-35 | 0 usr/99-calibration.conf-3508 | 0 usr/99-calibration.conf-397-0 | 6 + usr/99-calibration.conf-397-180 | 6 + ...n.conf-397 => 99-calibration.conf-397-270} | 2 +- usr/99-calibration.conf-397-90 | 6 + usr/99-calibration.conf-397-FLIP-H | 6 + usr/99-calibration.conf-397-FLIP-V | 6 + usr/99-calibration.conf-43 | 0 usr/99-calibration.conf-5 | 0 usr/99-calibration.conf-HDMI7C | 0 usr/99-calibration.conf-mhs24 | 9 + usr/99-calibration.conf-mhs32 | 9 + usr/99-calibration.conf-mhs35-0 | 9 + usr/99-calibration.conf-mhs35-180 | 9 + usr/99-calibration.conf-mhs35-270 | 9 + usr/99-calibration.conf-mhs35-90 | 9 + usr/99-calibration.conf-mhs395 | 9 + usr/99-fbturbo-fbcp.conf | 16 ++ usr/99-fbturbo.conf | 0 usr/99-fbturbo.conf-HDMI | 0 usr/bcm2709-rpi-2-b.dtb | Bin usr/bcm2710-rpi-3-b.dtb | Bin usr/cmdline.txt | 0 usr/{cmdline.txt_noobs => cmdline.txt-noobs} | 0 usr/inittab | 0 usr/mhs24-overlay.dtb | Bin 0 -> 2648 bytes usr/mhs32-overlay.dtb | Bin 0 -> 2315 bytes usr/mhs35-overlay.dtb | Bin 0 -> 2616 bytes usr/mhs395-overlay.dtb | Bin 0 -> 2640 bytes usr/mis35-overlay.dtb | Bin 0 -> 2736 bytes usr/modules-HDMI | 0 usr/qddpi24.dtb | Bin usr/tft35a-overlay.dtb | Bin 2592 -> 2616 bytes usr/tft9341-overlay.dtb | Bin xinput-calibrator_0.7.5-1_armhf.deb | Bin 38368 -> 41542 bytes ...er-xorg-input-evdev_1%3a2.10.3-1_armhf.deb | Bin xserver-xorg-input-evdev_2.10.5-1_armhf.deb | Bin 92 files changed, 1445 insertions(+), 128 deletions(-) mode change 100644 => 100755 LCD-hdmi mode change 100644 => 100755 LCD24-show mode change 100644 => 100755 LCD28-show mode change 100644 => 100755 LCD32-show mode change 100644 => 100755 LCD35-show mode change 100644 => 100755 LCD5-show mode change 100644 => 100755 LCD7B-show mode change 100644 => 100755 LCD7C-show create mode 100755 MHS24-show create mode 100755 MHS32-show create mode 100755 MHS35-show create mode 100755 MHS40-show create mode 100755 MIS35-show mode change 100644 => 100755 MPI3508-show mode change 100644 => 100755 MPI3508_480_320-show mode change 100644 => 100755 MPI3510-show mode change 100644 => 100755 MPI4008-show mode change 100644 => 100755 MPI5001-show mode change 100644 => 100755 README.md mode change 100644 => 100755 boot/config-28.txt mode change 100644 => 100755 boot/config-32.txt mode change 100644 => 100755 boot/config-35-480X320.txt mode change 100644 => 100755 boot/config-35.txt mode change 100644 => 100755 boot/config-35DPI.txt mode change 100644 => 100755 boot/config-397.txt mode change 100644 => 100755 boot/config-43.txt mode change 100644 => 100755 boot/config-5.txt mode change 100644 => 100755 boot/config-7B-800x480.txt mode change 100644 => 100755 boot/config-7C-1024x600.txt mode change 100644 => 100755 boot/config-MPI5001.txt create mode 100755 boot/config-mhs24.txt create mode 100755 boot/config-mhs32.txt create mode 100755 boot/config-mhs35.txt create mode 100755 boot/config-mhs395.txt create mode 100755 boot/config-mis35.txt mode change 100644 => 100755 boot/config-nomal.txt create mode 100755 boot/config.txt.bak create mode 100755 etc/rc.local create mode 100755 etc/rc.local-original create mode 100755 rotate.sh create mode 160000 rpi-fbcp create mode 100755 system_backup.sh create mode 100755 system_restore.sh rename usr/{40-libinput.conf-MPI5001 => 40-libinput.conf-0} (100%) mode change 100644 => 100755 create mode 100755 usr/40-libinput.conf-180 create mode 100755 usr/40-libinput.conf-270 create mode 100755 usr/40-libinput.conf-90 create mode 100755 usr/40-libinput.conf-FLIP-H create mode 100755 usr/40-libinput.conf-FLIP-V mode change 100644 => 100755 usr/40-libinput.conf-HDMI7B mode change 100644 => 100755 usr/40-libinput.conf-HDMI7C mode change 100644 => 100755 usr/99-calibration.conf-24 mode change 100644 => 100755 usr/99-calibration.conf-28 mode change 100644 => 100755 usr/99-calibration.conf-32 mode change 100644 => 100755 usr/99-calibration.conf-35 mode change 100644 => 100755 usr/99-calibration.conf-3508 create mode 100755 usr/99-calibration.conf-397-0 create mode 100755 usr/99-calibration.conf-397-180 rename usr/{99-calibration.conf-397 => 99-calibration.conf-397-270} (74%) mode change 100644 => 100755 create mode 100755 usr/99-calibration.conf-397-90 create mode 100755 usr/99-calibration.conf-397-FLIP-H create mode 100755 usr/99-calibration.conf-397-FLIP-V mode change 100644 => 100755 usr/99-calibration.conf-43 mode change 100644 => 100755 usr/99-calibration.conf-5 mode change 100644 => 100755 usr/99-calibration.conf-HDMI7C create mode 100755 usr/99-calibration.conf-mhs24 create mode 100755 usr/99-calibration.conf-mhs32 create mode 100755 usr/99-calibration.conf-mhs35-0 create mode 100755 usr/99-calibration.conf-mhs35-180 create mode 100755 usr/99-calibration.conf-mhs35-270 create mode 100755 usr/99-calibration.conf-mhs35-90 create mode 100755 usr/99-calibration.conf-mhs395 create mode 100755 usr/99-fbturbo-fbcp.conf mode change 100644 => 100755 usr/99-fbturbo.conf mode change 100644 => 100755 usr/99-fbturbo.conf-HDMI mode change 100644 => 100755 usr/bcm2709-rpi-2-b.dtb mode change 100644 => 100755 usr/bcm2710-rpi-3-b.dtb mode change 100644 => 100755 usr/cmdline.txt rename usr/{cmdline.txt_noobs => cmdline.txt-noobs} (100%) mode change 100644 => 100755 mode change 100644 => 100755 usr/inittab create mode 100755 usr/mhs24-overlay.dtb create mode 100755 usr/mhs32-overlay.dtb create mode 100755 usr/mhs35-overlay.dtb create mode 100755 usr/mhs395-overlay.dtb create mode 100755 usr/mis35-overlay.dtb mode change 100644 => 100755 usr/modules-HDMI mode change 100644 => 100755 usr/qddpi24.dtb mode change 100644 => 100755 usr/tft35a-overlay.dtb mode change 100644 => 100755 usr/tft9341-overlay.dtb mode change 100644 => 100755 xinput-calibrator_0.7.5-1_armhf.deb mode change 100644 => 100755 xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb mode change 100644 => 100755 xserver-xorg-input-evdev_2.10.5-1_armhf.deb diff --git a/LCD-hdmi b/LCD-hdmi old mode 100644 new mode 100755 diff --git a/LCD24-show b/LCD24-show old mode 100644 new mode 100755 index 4019f92..f013b1a --- a/LCD24-show +++ b/LCD24-show @@ -3,7 +3,7 @@ sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf sudo mkdir /etc/X11/xorg.conf.d sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/ sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/tft9341.dtbo -sudo cp -rf ./usr/99-calibration.conf-24 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-calibration.conf-32 /etc/X11/xorg.conf.d/99-calibration.conf sudo cp -rf ./usr/99-fbturbo.conf /usr/share/X11/xorg.conf.d/ if [ -b /dev/mmcblk0p7 ]; then sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt @@ -11,7 +11,7 @@ else sudo cp ./usr/cmdline.txt /boot/ fi sudo cp ./usr/inittab /etc/ -sudo cp ./boot/config-28.txt /boot/config.txt +sudo cp ./boot/config-32.txt /boot/config.txt nodeplatform=`uname -n` kernel=`uname -r` version=`uname -v` @@ -24,13 +24,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf echo "reboot" fi diff --git a/LCD28-show b/LCD28-show old mode 100644 new mode 100755 index 67fe163..f013b1a --- a/LCD28-show +++ b/LCD28-show @@ -3,7 +3,7 @@ sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf sudo mkdir /etc/X11/xorg.conf.d sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/ sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/tft9341.dtbo -sudo cp -rf ./usr/99-calibration.conf-28 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-calibration.conf-32 /etc/X11/xorg.conf.d/99-calibration.conf sudo cp -rf ./usr/99-fbturbo.conf /usr/share/X11/xorg.conf.d/ if [ -b /dev/mmcblk0p7 ]; then sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt @@ -11,7 +11,7 @@ else sudo cp ./usr/cmdline.txt /boot/ fi sudo cp ./usr/inittab /etc/ -sudo cp ./boot/config-28.txt /boot/config.txt +sudo cp ./boot/config-32.txt /boot/config.txt nodeplatform=`uname -n` kernel=`uname -r` version=`uname -v` @@ -24,13 +24,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf echo "reboot" fi diff --git a/LCD32-show b/LCD32-show old mode 100644 new mode 100755 index 656638d..f013b1a --- a/LCD32-show +++ b/LCD32-show @@ -24,13 +24,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf echo "reboot" fi diff --git a/LCD35-show b/LCD35-show old mode 100644 new mode 100755 index f7cedee..5716905 --- a/LCD35-show +++ b/LCD35-show @@ -24,13 +24,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf echo "reboot" fi diff --git a/LCD5-show b/LCD5-show old mode 100644 new mode 100755 index cf876df..7a068de --- a/LCD5-show +++ b/LCD5-show @@ -22,13 +22,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf echo "reboot" fi diff --git a/LCD7B-show b/LCD7B-show old mode 100644 new mode 100755 index ee11053..0e17561 --- a/LCD7B-show +++ b/LCD7B-show @@ -18,13 +18,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev fi fi sudo mkdir /etc/X11/xorg.conf.d diff --git a/LCD7C-show b/LCD7C-show old mode 100644 new mode 100755 index b9a645a..ce18243 --- a/LCD7C-show +++ b/LCD7C-show @@ -20,13 +20,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev fi fi sudo mkdir /etc/X11/xorg.conf.d diff --git a/MHS24-show b/MHS24-show new file mode 100755 index 0000000..cbb9cd3 --- /dev/null +++ b/MHS24-show @@ -0,0 +1,45 @@ +#!/bin/bash +sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf +sudo mkdir -p /etc/X11/xorg.conf.d +sudo cp ./usr/mhs24-overlay.dtb /boot/overlays/ +sudo cp ./usr/mhs24-overlay.dtb /boot/overlays/mhs24.dtbo +sudo cp -rf ./usr/99-calibration.conf-mhs24 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-fbturbo-fbcp.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf +if [ -b /dev/mmcblk0p7 ]; then +sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt +else +sudo cp ./usr/cmdline.txt /boot/ +fi +sudo cp ./usr/inittab /etc/ +sudo cp ./boot/config-mhs24.txt /boot/config.txt +#FBCP install +sudo cp -rf ./etc/rc.local /etc/rc.local +sudo apt-get install git cmake -y +sudo rm -rf rpi-fbcp +sudo git clone https://github.com/tasanakorn/rpi-fbcp +sudo mkdir ./rpi-fbcp/build +cd ./rpi-fbcp/build/ +sudo cmake .. +sudo make +sudo install fbcp /usr/local/bin/fbcp +#evdev install +nodeplatform=`uname -n` +kernel=`uname -r` +version=`uname -v` +if test "$nodeplatform" = "raspberrypi";then +echo "this is raspberrypi kernel" +version=${version%% *} +version=${version#*#} +echo $version +if test $version -lt 970;then +echo "reboot" +else +echo "need to update touch configuration" +sudo apt-get install xserver-xorg-input-evdev +sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf +echo "reboot" +fi +else +echo "this is not raspberrypi kernel, no need to update touch configure, reboot" +fi +sudo reboot diff --git a/MHS32-show b/MHS32-show new file mode 100755 index 0000000..6799f7e --- /dev/null +++ b/MHS32-show @@ -0,0 +1,45 @@ +#!/bin/bash +sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf +sudo mkdir -p /etc/X11/xorg.conf.d +sudo cp ./usr/mhs32-overlay.dtb /boot/overlays/ +sudo cp ./usr/mhs32-overlay.dtb /boot/overlays/mhs32.dtbo +sudo cp -rf ./usr/99-calibration.conf-mhs32 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-fbturbo-fbcp.conf /usr/share/X11/xorg.conf.d/ +if [ -b /dev/mmcblk0p7 ]; then +sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt +else +sudo cp ./usr/cmdline.txt /boot/ +fi +sudo cp ./usr/inittab /etc/ +sudo cp ./boot/config-mhs32.txt /boot/config.txt +#FBCP install +sudo cp -rf ./etc/rc.local /etc/rc.local +sudo apt-get install git cmake -y +sudo rm -rf rpi-fbcp +sudo git clone https://github.com/tasanakorn/rpi-fbcp +sudo mkdir ./rpi-fbcp/build +cd ./rpi-fbcp/build/ +sudo cmake .. +sudo make +sudo install fbcp /usr/local/bin/fbcp +#evdev install +nodeplatform=`uname -n` +kernel=`uname -r` +version=`uname -v` +if test "$nodeplatform" = "raspberrypi";then +echo "this is raspberrypi kernel" +version=${version%% *} +version=${version#*#} +echo $version +if test $version -lt 970;then +echo "reboot" +else +echo "need to update touch configuration" +sudo apt-get install xserver-xorg-input-evdev +sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf +echo "reboot" +fi +else +echo "this is not raspberrypi kernel, no need to update touch configure, reboot" +fi +sudo reboot diff --git a/MHS35-show b/MHS35-show new file mode 100755 index 0000000..6a5fe7c --- /dev/null +++ b/MHS35-show @@ -0,0 +1,92 @@ +#!/bin/bash + +sudo ./system_backup.sh + +if [ -f /etc/X11/xorg.conf.d/40-libinput.conf ]; then +sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf +fi +if [ ! -d /etc/X11/xorg.conf.d ]; then +sudo mkdir -p /etc/X11/xorg.conf.d +fi +sudo cp ./usr/mhs35-overlay.dtb /boot/overlays/ +sudo cp ./usr/mhs35-overlay.dtb /boot/overlays/mhs35.dtbo + +sudo cp -rf ./boot/config-nomal.txt ./boot/config.txt.bak +sudo echo "hdmi_force_hotplug=1" >> ./boot/config.txt.bak +sudo echo "dtparam=i2c_arm=on" >> ./boot/config.txt.bak +sudo echo "dtparam=spi=on" >> ./boot/config.txt.bak +sudo echo "enable_uart=1" >> ./boot/config.txt.bak +sudo echo "dtoverlay=mhs35:rotate=90" >> ./boot/config.txt.bak +sudo echo "hdmi_group=2" >> ./boot/config.txt.bak +sudo echo "hdmi_mode=1" >> ./boot/config.txt.bak +sudo echo "hdmi_mode=87" >> ./boot/config.txt.bak +sudo echo "hdmi_cvt 480 320 60 6 0 0 0" >> ./boot/config.txt.bak +sudo echo "hdmi_drive=2" >> ./boot/config.txt.bak +sudo cp -rf ./boot/config.txt.bak /boot/config.txt + +sudo cp -rf ./usr/99-calibration.conf-mhs35-90 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf +if [ -b /dev/mmcblk0p7 ]; then +sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt +else +sudo cp ./usr/cmdline.txt /boot/ +fi +sudo cp ./usr/inittab /etc/ +#sudo cp ./boot/config-mhs35.txt /boot/config.txt +sudo touch ./.have_installed +echo "gpio:resistance:mhs35:90" > ./.have_installed + +#FBCP install +wget --spider -q -o /dev/null --tries=1 -T 3 https://github.com +if [ $? -eq 0 ]; then +sudo cp -rf ./usr/99-fbturbo-fbcp.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf +sudo cp -rf ./etc/rc.local /etc/rc.local +sudo apt-get install git cmake -y 2> error_output.txt +result=`cat ./error_output.txt` +echo -e "\033[31m$result\033[0m" +grep -q "^E:" ./error_output.txt && exit +sudo rm -rf rpi-fbcp +sudo git clone https://github.com/tasanakorn/rpi-fbcp +sudo mkdir ./rpi-fbcp/build +cd ./rpi-fbcp/build/ +sudo cmake .. +sudo make +sudo install fbcp /usr/local/bin/fbcp +cd - > /dev/null +fi +#evdev install +nodeplatform=`uname -n` +kernel=`uname -r` +version=`uname -v` +if test "$nodeplatform" = "raspberrypi";then +echo "this is raspberrypi kernel" +version=${version%% *} +version=${version#*#} +echo $version +if test $version -lt 970;then +echo "reboot" +else +echo "need to update touch configuration" +sudo dpkg -i -B ./xserver-xorg-input-evdev_2.10.5-1_armhf.deb 2> error_output.txt +#sudo apt-get install xserver-xorg-input-evdev 2> error_output.txt +result=`cat ./error_output.txt` +echo -e "\033[31m$result\033[0m" +grep -q "error:" ./error_output.txt && exit +sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf +#echo "reboot" +fi +else +echo "this is not raspberrypi kernel, no need to update touch configure, reboot" +fi + +sudo sync +sudo sync +sleep 1 +if [ $# -eq 1 ]; then +sudo ./rotate.sh $1 +elif [ $# -gt 1 ]; then +echo "Too many parameters" +fi + +echo "reboot now" +sudo reboot diff --git a/MHS40-show b/MHS40-show new file mode 100755 index 0000000..1b66f3c --- /dev/null +++ b/MHS40-show @@ -0,0 +1,45 @@ +#!/bin/bash +sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf +sudo mkdir -p /etc/X11/xorg.conf.d +sudo cp ./usr/mhs395-overlay.dtb /boot/overlays/ +sudo cp ./usr/mhs395-overlay.dtb /boot/overlays/mhs395.dtbo +sudo cp -rf ./usr/99-calibration.conf-mhs395 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-fbturbo-fbcp.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf +if [ -b /dev/mmcblk0p7 ]; then +sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt +else +sudo cp ./usr/cmdline.txt /boot/ +fi +sudo cp ./usr/inittab /etc/ +sudo cp ./boot/config-mhs395.txt /boot/config.txt +#FBCP install +sudo cp -rf ./etc/rc.local /etc/rc.local +sudo apt-get install git cmake -y +sudo rm -rf rpi-fbcp +sudo git clone https://github.com/tasanakorn/rpi-fbcp +sudo mkdir ./rpi-fbcp/build +cd ./rpi-fbcp/build/ +sudo cmake .. +sudo make +sudo install fbcp /usr/local/bin/fbcp +#evdev install +nodeplatform=`uname -n` +kernel=`uname -r` +version=`uname -v` +if test "$nodeplatform" = "raspberrypi";then +echo "this is raspberrypi kernel" +version=${version%% *} +version=${version#*#} +echo $version +if test $version -lt 970;then +echo "reboot" +else +echo "need to update touch configuration" +sudo apt-get install xserver-xorg-input-evdev +sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf +echo "reboot" +fi +else +echo "this is not raspberrypi kernel, no need to update touch configure, reboot" +fi +sudo reboot diff --git a/MIS35-show b/MIS35-show new file mode 100755 index 0000000..b2d2dcf --- /dev/null +++ b/MIS35-show @@ -0,0 +1,45 @@ +#!/bin/bash +sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf +sudo mkdir -p /etc/X11/xorg.conf.d +sudo cp ./usr/mis35-overlay.dtb /boot/overlays/ +sudo cp ./usr/mis35-overlay.dtb /boot/overlays/mis35.dtbo +sudo cp -rf ./usr/99-calibration.conf-mhs35 /etc/X11/xorg.conf.d/99-calibration.conf +sudo cp -rf ./usr/99-fbturbo-fbcp.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf +if [ -b /dev/mmcblk0p7 ]; then +sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt +else +sudo cp ./usr/cmdline.txt /boot/ +fi +sudo cp ./usr/inittab /etc/ +sudo cp ./boot/config-mis35.txt /boot/config.txt +#FBCP install +sudo cp -rf ./etc/rc.local /etc/rc.local +sudo apt-get install git cmake -y +sudo rm -rf rpi-fbcp +sudo git clone https://github.com/tasanakorn/rpi-fbcp +sudo mkdir ./rpi-fbcp/build +cd ./rpi-fbcp/build/ +sudo cmake .. +sudo make +sudo install fbcp /usr/local/bin/fbcp +#evdev install +nodeplatform=`uname -n` +kernel=`uname -r` +version=`uname -v` +if test "$nodeplatform" = "raspberrypi";then +echo "this is raspberrypi kernel" +version=${version%% *} +version=${version#*#} +echo $version +if test $version -lt 970;then +echo "reboot" +else +echo "need to update touch configuration" +sudo apt-get install xserver-xorg-input-evdev +sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf +echo "reboot" +fi +else +echo "this is not raspberrypi kernel, no need to update touch configure, reboot" +fi +sudo reboot diff --git a/MPI3508-show b/MPI3508-show old mode 100644 new mode 100755 index c67df03..c3c2829 --- a/MPI3508-show +++ b/MPI3508-show @@ -22,13 +22,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf echo "reboot" fi diff --git a/MPI3508_480_320-show b/MPI3508_480_320-show old mode 100644 new mode 100755 index c67df03..c3c2829 --- a/MPI3508_480_320-show +++ b/MPI3508_480_320-show @@ -22,13 +22,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf echo "reboot" fi diff --git a/MPI3510-show b/MPI3510-show old mode 100644 new mode 100755 index 83ea0fc..2ce75b7 --- a/MPI3510-show +++ b/MPI3510-show @@ -21,13 +21,7 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo apt-get install xserver-xorg-input-evdev sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf echo "reboot" fi diff --git a/MPI4008-show b/MPI4008-show old mode 100644 new mode 100755 index 7b9cbea..c4077a8 --- a/MPI4008-show +++ b/MPI4008-show @@ -1,5 +1,26 @@ #!/bin/bash -sudo cp -rf ./boot/config-397.txt /boot/config.txt + +sudo ./system_backup.sh + +sudo cp -rf ./boot/config-nomal.txt ./boot/config.txt.bak +sudo echo "hdmi_force_hotplug=1" >> ./boot/config.txt.bak +sudo echo "hdmi_force_edid_audio=1" >> ./boot/config.txt.bak +sudo echo "dtparam=i2c_arm=on" >> ./boot/config.txt.bak +sudo echo "dtparam=spi=on" >> ./boot/config.txt.bak +sudo echo "enable_uart=1" >> ./boot/config.txt.bak +sudo echo "display_rotate=3" >> ./boot/config.txt.bak +sudo echo "max_usb_current=1" >> ./boot/config.txt.bak +sudo echo "config_hdmi_boost=7" >> ./boot/config.txt.bak +sudo echo "hdmi_group=2" >> ./boot/config.txt.bak +sudo echo "hdmi_mode=1" >> ./boot/config.txt.bak +sudo echo "hdmi_mode=87" >> ./boot/config.txt.bak +sudo echo "hdmi_drive=2" >> ./boot/config.txt.bak +sudo echo "hdmi_cvt 480 800 60 6 0 0 0" >> ./boot/config.txt.bak +sudo echo "dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900" >> ./boot/config.txt.bak +sudo cp -rf ./boot/config.txt.bak /boot/config.txt + +#sudo cp -rf ./boot/config-397.txt /boot/config.txt + if [ -b /dev/mmcblk0p7 ]; then sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt else @@ -7,8 +28,13 @@ sudo cp ./usr/cmdline.txt /boot/ fi sudo cp ./usr/inittab /etc/ sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf +if [ ! -d /etc/X11/xorg.conf.d ]; then sudo mkdir /etc/X11/xorg.conf.d -sudo cp -rf ./usr/99-calibration.conf-397 /etc/X11/xorg.conf.d/99-calibration.conf +fi +sudo cp -rf ./usr/99-calibration.conf-397-270 /etc/X11/xorg.conf.d/99-calibration.conf +sudo touch ./.have_installed +echo "hdmi:resistance:397:270" > ./.have_installed + nodeplatform=`uname -n` kernel=`uname -r` version=`uname -v` @@ -21,17 +47,26 @@ if test $version -lt 970;then echo "reboot" else echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi +sudo dpkg -i -B ./xserver-xorg-input-evdev_2.10.5-1_armhf.deb 2> error_output.txt +#sudo apt-get install xserver-xorg-input-evdev 2> error_output.txt +result=`cat ./error_output.txt` +echo -e "\033[31m$result\033[0m" +grep -q "error:" ./error_output.txt && exit sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf -echo "reboot" +#echo "reboot" fi else echo "this is not raspberrypi kernel, no need to update touch configure, reboot" fi + +sudo sync +sudo sync +sleep 1 +if [ $# -eq 1 ]; then +sudo ./rotate.sh $1 +elif [ $# -gt 1 ]; then +echo "Too many parameters" +fi + +echo "reboot now" sudo reboot diff --git a/MPI5001-show b/MPI5001-show old mode 100644 new mode 100755 index f5aed0b..bd542f4 --- a/MPI5001-show +++ b/MPI5001-show @@ -1,33 +1,39 @@ -sudo cp -rf ./boot/config-MPI5001.txt /boot/config.txt -if [ -b /dev/mmcblk0p7 ]; then -sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt -else -sudo cp ./usr/cmdline.txt /boot/ -fi -sudo cp ./usr/inittab /etc/ -sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf +#!/bin/bash -nodeplatform=`uname -n` -kernel=`uname -r` -version=`uname -v` -if test "$nodeplatform" = "raspberrypi";then -echo "this is raspberrypi kernel" -version=${version%% *} -version=${version#*#} -echo $version -if test $version -lt 970;then -echo "reboot" -else -echo "need to update touch configuration" -if test $version -ge 1023;then -echo "install xserver-xorg-input-evdev_2.10.5-1" -sudo dpkg -i -B xserver-xorg-input-evdev_2.10.5-1_armhf.deb -else -echo "install xserver-xorg-input-evdev_1%3a2.10.3-1" -sudo dpkg -i -B xserver-xorg-input-evdev_1%3a2.10.3-1_armhf.deb -fi -fi -fi +sudo ./system_backup.sh + +sudo cp -rf ./boot/config-nomal.txt ./boot/config.txt.bak +sudo echo "hdmi_force_hotplug=1" >> ./boot/config.txt.bak +sudo echo "hdmi_force_edid_audio=1" >> ./boot/config.txt.bak +sudo echo "dtparam=i2c_arm=on" >> ./boot/config.txt.bak +sudo echo "dtparam=spi=on" >> ./boot/config.txt.bak +sudo echo "enable_uart=1" >> ./boot/config.txt.bak +sudo echo "display_rotate=0" >> ./boot/config.txt.bak +sudo echo "max_usb_current=1" >> ./boot/config.txt.bak +sudo echo "config_hdmi_boost=7" >> ./boot/config.txt.bak +sudo echo "hdmi_group=2" >> ./boot/config.txt.bak +sudo echo "hdmi_mode=1" >> ./boot/config.txt.bak +sudo echo "hdmi_mode=87" >> ./boot/config.txt.bak +sudo echo "hdmi_drive=2" >> ./boot/config.txt.bak +sudo echo "hdmi_cvt 800 480 60 6 0 0 0" >> ./boot/config.txt.bak +sudo cp -rf ./boot/config.txt.bak /boot/config.txt +#sudo cp -rf ./boot/config-MPI5001.txt /boot/config.txt +sudo cp -rf ./usr/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf + +if [ ! -d /etc/X11/xorg.conf.d ]; then sudo mkdir /etc/X11/xorg.conf.d -sudo cp ./usr/40-libinput.conf-MPI5001 /etc/X11/xorg.conf.d/40-libinput.conf +fi +sudo cp ./usr/40-libinput.conf-0 /etc/X11/xorg.conf.d/40-libinput.conf +sudo touch ./.have_installed +echo "hdmi:capacity:MPI5001:0" > ./.have_installed +sudo sync +sudo sync +sleep 1 +if [ $# -eq 1 ]; then +sudo ./rotate.sh $1 +elif [ $# -gt 1 ]; then +echo "Too many parameters" +fi + +echo "reboot now" sudo reboot diff --git a/README.md b/README.md old mode 100644 new mode 100755 index fbe6741..e502885 --- a/README.md +++ b/README.md @@ -1,5 +1,12 @@ LCD driver for the Raspberry PI Installation
==================================================== +Update:
+v1.9-20181204
+Update to support MHS40 & MHS32
+Update:
+v1.8-20180907
+Update to support MHS35
+Update:
v1.7-20180320
Update to support Raspbian Version:March 2018(Release date:2018-03-13)
Update:
@@ -47,6 +54,12 @@ In case of 3.5inch RPi Display(MPI3501)
```sudo ./LCD35-show```

In case of 3.5" HDMI Display-B(MPI3508)
```sudo ./MPI3508-show```

+ In case of 3.2" High Speed display(MHS32)
+ ```sudo ./MHS32-show```

+In case of 3.5" High Speed display(MHS35)
+ ```sudo ./MHS35-show```

+In case of 4.0" High Speed display(MHS40)
+ ```sudo ./MHS40-show```

In case of 4.0" HDMI Display(MPI4008)
```sudo ./MPI4008-show```

In case of 5inch HDMI Display-B(Capacitor touch)(MPI5001):
@@ -63,7 +76,5 @@ If you need to switch back to the traditional HDMI display
Wait a few minutes,the system will restart automaticall , enjoy with your LCD. ------------------------------------------------------------------------------- The LCD-show.tar.gz also can be download from: -http://www.hellolcd.com/wiki/LCD-show +http://www.lcdwiki.com/RaspberryPi-LCD-Driver

- - diff --git a/boot/config-28.txt b/boot/config-28.txt old mode 100644 new mode 100755 index 3778f46..cce09e0 --- a/boot/config-28.txt +++ b/boot/config-28.txt @@ -54,5 +54,5 @@ enable_uart=1 # Enable audio (loads snd_bcm2835) dtparam=audio=on -dtoverlay=tft9341:rotate=90 +dtoverlay=tft9341:rotate=270 #dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=0,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-32.txt b/boot/config-32.txt old mode 100644 new mode 100755 diff --git a/boot/config-35-480X320.txt b/boot/config-35-480X320.txt old mode 100644 new mode 100755 diff --git a/boot/config-35.txt b/boot/config-35.txt old mode 100644 new mode 100755 diff --git a/boot/config-35DPI.txt b/boot/config-35DPI.txt old mode 100644 new mode 100755 diff --git a/boot/config-397.txt b/boot/config-397.txt old mode 100644 new mode 100755 index 0be179c..3152f15 --- a/boot/config-397.txt +++ b/boot/config-397.txt @@ -22,7 +22,7 @@ #framebuffer_height=720 # uncomment if hdmi display is not detected and composite is being output -hdmi_force_hotplug=1 +#hdmi_force_hotplug=1 # uncomment to force a specific HDMI mode (this will force VGA) #hdmi_group=1 @@ -61,5 +61,6 @@ config_hdmi_boost=7 hdmi_group=2 hdmi_mode=1 hdmi_mode=87 +hdmi_drive=2 hdmi_cvt 480 800 60 6 0 0 0 dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900 diff --git a/boot/config-43.txt b/boot/config-43.txt old mode 100644 new mode 100755 diff --git a/boot/config-5.txt b/boot/config-5.txt old mode 100644 new mode 100755 index 7dd4eb8..6bbe075 --- a/boot/config-5.txt +++ b/boot/config-5.txt @@ -22,7 +22,7 @@ #framebuffer_height=720 # uncomment if hdmi display is not detected and composite is being output -hdmi_force_hotplug=1 +#hdmi_force_hotplug=1 # uncomment to force a specific HDMI mode (this will force VGA) #hdmi_group=1 @@ -55,6 +55,7 @@ enable_uart=1 # Enable audio (loads snd_bcm2835) dtparam=audio=on max_usb_current=1 +display_rotate=0 hdmi_force_hotplug=1 config_hdmi_boost=7 hdmi_group=2 diff --git a/boot/config-7B-800x480.txt b/boot/config-7B-800x480.txt old mode 100644 new mode 100755 diff --git a/boot/config-7C-1024x600.txt b/boot/config-7C-1024x600.txt old mode 100644 new mode 100755 diff --git a/boot/config-MPI5001.txt b/boot/config-MPI5001.txt old mode 100644 new mode 100755 index bf11502..a5aa41f --- a/boot/config-MPI5001.txt +++ b/boot/config-MPI5001.txt @@ -54,11 +54,13 @@ enable_uart=1 # Enable audio (loads snd_bcm2835) dtparam=audio=on +display_rotate=0 max_usb_current=1 hdmi_force_hotplug=1 config_hdmi_boost=7 hdmi_group=2 hdmi_mode=1 hdmi_mode=87 -hdmi_drive=1 -hdmi_cvt 800 480 60 6 0 0 0 \ No newline at end of file +hdmi_drive=2 +hdmi_force_edid_audio=1 +hdmi_cvt 800 480 60 6 0 0 0 diff --git a/boot/config-mhs24.txt b/boot/config-mhs24.txt new file mode 100755 index 0000000..7dd2e2d --- /dev/null +++ b/boot/config-mhs24.txt @@ -0,0 +1,63 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +dtoverlay=mhs24 +hdmi_force_hotplug=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 320 240 60 6 0 0 0 +hdmi_drive=2 diff --git a/boot/config-mhs32.txt b/boot/config-mhs32.txt new file mode 100755 index 0000000..2b191b6 --- /dev/null +++ b/boot/config-mhs32.txt @@ -0,0 +1,63 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +dtoverlay=mhs32 +hdmi_force_hotplug=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 480 320 60 6 0 0 0 +hdmi_drive=2 \ No newline at end of file diff --git a/boot/config-mhs35.txt b/boot/config-mhs35.txt new file mode 100755 index 0000000..51b2e27 --- /dev/null +++ b/boot/config-mhs35.txt @@ -0,0 +1,63 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +#hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +dtoverlay=mhs35:rotate=90 +hdmi_force_hotplug=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 480 320 60 6 0 0 0 +hdmi_drive=2 diff --git a/boot/config-mhs395.txt b/boot/config-mhs395.txt new file mode 100755 index 0000000..b9d3278 --- /dev/null +++ b/boot/config-mhs395.txt @@ -0,0 +1,63 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +dtoverlay=mhs395 +hdmi_force_hotplug=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 480 320 60 6 0 0 0 +hdmi_drive=2 \ No newline at end of file diff --git a/boot/config-mis35.txt b/boot/config-mis35.txt new file mode 100755 index 0000000..fc53c4a --- /dev/null +++ b/boot/config-mis35.txt @@ -0,0 +1,63 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +dtparam=i2c_arm=on +#dtparam=i2s=on +dtparam=spi=on +enable_uart=1 +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +dtoverlay=mis35 +hdmi_force_hotplug=1 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 480 320 60 6 0 0 0 +hdmi_drive=2 diff --git a/boot/config-nomal.txt b/boot/config-nomal.txt old mode 100644 new mode 100755 index 9184c55..06364c5 --- a/boot/config-nomal.txt +++ b/boot/config-nomal.txt @@ -1,5 +1,5 @@ # For more options and information see -# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# http://rpf.io/configtxt # Some settings may impact device functionality. See link above for details # uncomment if you get no picture on HDMI for a default "safe" mode @@ -22,7 +22,7 @@ #framebuffer_height=720 # uncomment if hdmi display is not detected and composite is being output -hdmi_force_hotplug=1 +#hdmi_force_hotplug=1 # uncomment to force a specific HDMI mode (this will force VGA) #hdmi_group=1 @@ -43,10 +43,10 @@ hdmi_force_hotplug=1 #arm_freq=800 # Uncomment some or all of these to enable the optional hardware interfaces -dtparam=i2c_arm=on +#dtparam=i2c_arm=on #dtparam=i2s=on -dtparam=spi=on -enable_uart=1 +#dtparam=spi=on + # Uncomment this to enable the lirc-rpi module #dtoverlay=lirc-rpi diff --git a/boot/config.txt.bak b/boot/config.txt.bak new file mode 100755 index 0000000..6888425 --- /dev/null +++ b/boot/config.txt.bak @@ -0,0 +1,66 @@ +# For more options and information see +# http://rpf.io/configtxt +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +#hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +#dtparam=i2c_arm=on +#dtparam=i2s=on +#dtparam=spi=on + +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +hdmi_force_hotplug=1 +dtparam=i2c_arm=on +dtparam=spi=on +enable_uart=1 +dtoverlay=mhs35:rotate=90 +hdmi_group=2 +hdmi_mode=1 +hdmi_mode=87 +hdmi_cvt 480 320 60 6 0 0 0 +hdmi_drive=2 diff --git a/etc/rc.local b/etc/rc.local new file mode 100755 index 0000000..4e385fd --- /dev/null +++ b/etc/rc.local @@ -0,0 +1,23 @@ +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +# Print the IP address +_IP=$(hostname -I) || true +if [ "$_IP" ]; then + printf "My IP address is %s\n" "$_IP" +fi + +sleep 7 +fbcp & + +exit 0 diff --git a/etc/rc.local-original b/etc/rc.local-original new file mode 100755 index 0000000..7d39ed7 --- /dev/null +++ b/etc/rc.local-original @@ -0,0 +1,20 @@ +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +# Print the IP address +_IP=$(hostname -I) || true +if [ "$_IP" ]; then + printf "My IP address is %s\n" "$_IP" +fi + +exit 0 diff --git a/rotate.sh b/rotate.sh new file mode 100755 index 0000000..5b5c499 --- /dev/null +++ b/rotate.sh @@ -0,0 +1,167 @@ +#!/bin/bash +cur_dir=`pwd` +if [ ! -f $cur_dir/.have_installed ]; then +echo "Please install the LCD driver first" +echo "Usage: sudo ./xxx-show. xxx: MHS35,LCD35,MPI3508 etc." +exit +fi + +print_info() +{ +echo "Usage:sudo ./rotate.sh [0] [90] [180] [270] [360] [450]" +echo "0-Screen rotation 0 degrees" +echo "90-Screen rotation 90 degrees" +echo "180-Screen rotation 180 degrees" +echo "270-Screen rotation 270 degrees" +echo "360-Screen flip horizontal(Valid only for HDMI screens)" +echo "450-Screen flip vertical(Valid only for HDMI screens)" +} + +if [ $# -eq 0 ]; then +echo "Please input parameter:0,90,180,270,360,450" +print_info +exit +elif [ $# -eq 1 ]; then +if [ ! -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ]; then +echo "Invalid parameter" +print_info +exit +else +if [ $1 -ne 0 ] && [ $1 -ne 90 ] && [ $1 -ne 180 ] && [ $1 -ne 270 ] && [ $1 -ne 360 ] && [ $1 -ne 450 ]; then +echo "Invalid parameter" +print_info +exit +fi +fi +else +echo "Too many parameters, only one parameter allowed" +exit +fi + +#get screen parameter +tmp=`cat $cur_dir/.have_installed` +output_type=`cat $cur_dir/.have_installed | awk -F ':' '{printf $1}'` +touch_type=`cat $cur_dir/.have_installed | awk -F ':' '{printf $2}'` +device_id=`cat $cur_dir/.have_installed | awk -F ':' '{printf $3}'` +default_value=`cat $cur_dir/.have_installed | awk -F ':' '{printf $4}'` + +if [ $output_type = "hdmi" ]; then +result=`grep -rn "^display_rotate=" /boot/config.txt | tail -n 1` +line=`echo -n $result | awk -F: '{printf $1}'` +str=`echo -n $result | awk -F: '{printf $NF}'` +old_rotate_value=`echo -n $result | awk -F= '{printf $NF}'` +if [ $old_rotate_value = "0x10000" ]; then +old_rotate_value=4 +elif [ $old_rotate_value = "0x20000" ]; then +old_rotate_value=5 +fi +if [ $1 -eq 0 ] || [ $1 -eq 90 ] || [ $1 -eq 180 ] || [ $1 -eq 270 ]; then +new_rotate_value=$[(($default_value+$1)%360)/90] +else +new_rotate_value=$[$1/90] +fi +elif [ $output_type = "gpio" ]; then +result=`grep -rn "^dtoverlay=" /boot/config.txt | grep ":rotate=" | tail -n 1` +line=`echo -n $result | awk -F: '{printf $1}'` +str=`echo -n $result | awk -F: '{printf $NF}'` +old_rotate_value=`echo -n $result | awk -F= '{printf $NF}'` +if [ $1 -eq 0 ] || [ $1 -eq 90 ] || [ $1 -eq 180 ] || [ $1 -eq 270 ]; then +new_rotate_value=$[($default_value+$1)%360] +else +echo "Invalid parameter: only for HDMI screens" +exit +fi +else +echo "Invalid output type" +exit +fi + +if [ $old_rotate_value -eq $new_rotate_value ]; then +if [ $output_type = "hdmi" ]; then +if [ $1 -eq 0 ] || [ $1 -eq 90 ] || [ $1 -eq 180 ] || [ $1 -eq 270 ]; then +old_rotate_value=$[($old_rotate_value*90+360-$default_value)%360] +else +old_rotate_value=$[$old_rotate_value*90] +fi +elif [ $output_type = "gpio" ]; then +old_rotate_value=$[($old_rotate_value+360-$default_value)%360] +fi +echo "Current rotate value is $old_rotate_value" +exit +fi + +#setting LCD rotate +if [ $output_type = "hdmi" ]; then +if [ $new_rotate_value -eq 4 ]; then +sudo sed -i -e ''"$line"'s/'"$str"'/display_rotate=0x10000/' /boot/config.txt +elif [ $new_rotate_value -eq 5 ]; then +sudo sed -i -e ''"$line"'s/'"$str"'/display_rotate=0x20000/' /boot/config.txt +else +sudo sed -i -e ''"$line"'s/'"$str"'/display_rotate='"$new_rotate_value"'/' /boot/config.txt +fi +new_rotate_value=$[$new_rotate_value*90] +elif [ $output_type = "gpio" ]; then +sudo sed -i -e ''"$line"'s/'"$str"'/rotate='"$new_rotate_value"'/' /boot/config.txt +resultr=`grep -rn "^hdmi_cvt" /boot/config.txt | tail -n 1 | awk -F' ' '{print $1,$2,$3}'` +liner=`echo -n $resultr | awk -F: '{printf $1}'` +strr=`echo -n $resultr | awk -F: '{printf $2}'` +if [ $new_rotate_value -eq $default_value ] || [ $new_rotate_value -eq $[($default_value+180+360)%360] ]; then +sudo sed -i -e ''"$liner"'s/'"$strr"'/hdmi_cvt 480 320/' /boot/config.txt +elif [ $new_rotate_value -eq $[($default_value-90+360)%360] ] || [ $new_rotate_value -eq $[($default_value+90+360)%360] ]; then +sudo sed -i -e ''"$liner"'s/'"$strr"'/hdmi_cvt 320 480/' /boot/config.txt +fi +fi + +#setting touch screen rotate +if [ $touch_type = "resistance" ]; then +if [ $new_rotate_value -eq 0 ]; then +cp $cur_dir/usr/99-calibration.conf-$device_id-0 /etc/X11/xorg.conf.d/99-calibration.conf +echo "LCD rotate value is set to $1" +elif [ $new_rotate_value -eq 90 ]; then +cp $cur_dir/usr/99-calibration.conf-$device_id-90 /etc/X11/xorg.conf.d/99-calibration.conf +echo "LCD rotate value is set to $1" +elif [ $new_rotate_value -eq 180 ]; then +cp $cur_dir/usr/99-calibration.conf-$device_id-180 /etc/X11/xorg.conf.d/99-calibration.conf +echo "LCD rotate value is set to $1" +elif [ $new_rotate_value -eq 270 ]; then +cp $cur_dir/usr/99-calibration.conf-$device_id-270 /etc/X11/xorg.conf.d/99-calibration.conf +echo "LCD rotate value is set to $1" +elif [ $new_rotate_value -eq 360 ]; then +cp $cur_dir/usr/99-calibration.conf-$device_id-FLIP-H /etc/X11/xorg.conf.d/99-calibration.conf +echo "LCD rotate value is set to flip horizontally" +elif [ $new_rotate_value -eq 450 ]; then +cp $cur_dir/usr/99-calibration.conf-$device_id-FLIP-V /etc/X11/xorg.conf.d/99-calibration.conf +echo "LCD rotate value is set to flip vertically" +fi +elif [ $touch_type = "capacity" ]; then +if [ $new_rotate_value -eq 0 ]; then +cp $cur_dir/usr/40-libinput.conf-0 /etc/X11/xorg.conf.d/40-libinput.conf +echo "LCD rotate value is set to $1" +elif [ $new_rotate_value -eq 90 ]; then +cp $cur_dir/usr/40-libinput.conf-90 /etc/X11/xorg.conf.d/40-libinput.conf +echo "LCD rotate value is set to $1" +elif [ $new_rotate_value -eq 180 ]; then +cp $cur_dir/usr/40-libinput.conf-180 /etc/X11/xorg.conf.d/40-libinput.conf +echo "LCD rotate value is set to $1" +elif [ $new_rotate_value -eq 270 ]; then +cp $cur_dir/usr/40-libinput.conf-270 /etc/X11/xorg.conf.d/40-libinput.conf +echo "LCD rotate value is set to $1" +elif [ $new_rotate_value -eq 360 ]; then +cp $cur_dir/usr/40-libinput.conf-FLIP-H /etc/X11/xorg.conf.d/40-libinput.conf +echo "LCD rotate value is set to flip horizontally" +elif [ $new_rotate_value -eq 450 ]; then +cp $cur_dir/usr/40-libinput.conf-FLIP-V /etc/X11/xorg.conf.d/40-libinput.conf +echo "LCD rotate value is set to flip vertically" +fi +else +echo "Invalid touch type" +exit +fi + +sudo sync +sudo sync + +echo "reboot now" +sleep 1 +sudo reboot + diff --git a/rpi-fbcp b/rpi-fbcp new file mode 160000 index 0000000..af8d322 --- /dev/null +++ b/rpi-fbcp @@ -0,0 +1 @@ +Subproject commit af8d32246c23cb23e4030e6588668a14341f5ddc diff --git a/system_backup.sh b/system_backup.sh new file mode 100755 index 0000000..b177b06 --- /dev/null +++ b/system_backup.sh @@ -0,0 +1,75 @@ +#!/bin/bash +if [ ! -d "./.system_backup" ]; then +sudo mkdir ./.system_backup +fi + +sudo rm -rf ./.system_backup/* + +if [ -f /etc/X11/xorg.conf.d/99-calibration.conf ]; then +sudo cp -rf /etc/X11/xorg.conf.d/99-calibration.conf ./.system_backup +sudo rm -rf /etc/X11/xorg.conf.d/99-calibration.conf +fi + +if [ -f /etc/X11/xorg.conf.d/40-libinput.conf ]; then +sudo cp -rf /etc/X11/xorg.conf.d/40-libinput.conf ./.system_backup +sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf +fi + +if [ -d /etc/X11/xorg.conf.d ]; then +sudo mkdir -p ./.system_backup/xorg.conf.d +sudo rm -rf /etc/X11/xorg.conf.d +fi + +result=`grep -rn "^dtoverlay=" /boot/config.txt | grep ":rotate=" | tail -n 1` +if [ $? -eq 0 ]; then +str=`echo -n $result | awk -F: '{printf $2}' | awk -F= '{printf $NF}'` +if [ -f /boot/overlays/$str-overlay.dtb ]; then +sudo cp -rf /boot/overlays/$str-overlay.dtb ./.system_backup +sudo rm -rf /boot/overlays/$str-overlay.dtb +fi +if [ -f /boot/overlays/$str.dtbo ]; then +sudo cp -rf /boot/overlays/$str.dtbo ./.system_backup +sudo rm -rf /boot/overlays/$str.dtbo +fi +fi + +sudo cp -rf /boot/config.txt ./.system_backup +sudo cp -rf /usr/share/X11/xorg.conf.d/99-fbturbo.conf ./.system_backup/ +sudo cp -rf /boot/cmdline.txt ./.system_backup/ +sudo cp -rf /etc/rc.local ./.system_backup/ + +if [ -f /etc/inittab ]; then +sudo cp -rf /etc/inittab ./.system_backup +sudo rm -rf /etc/inittab +fi + +type fbcp > /dev/null 2>&1 +if [ $? -eq 0 ]; then +sudo touch ./.system_backup/have_fbcp +sudo rm -rf /usr/local/bin/fbcp +fi + +#type cmake > /dev/null 2>&1 +#if [ $? -eq 0 ]; then +#sudo touch ./.system_backup/have_cmake +#sudo apt-get purge cmake -y 2> error_output.txt +#result=`cat ./error_output.txt` +#echo -e "\033[31m$result\033[0m" +#fi + +if [ -f /usr/share/X11/xorg.conf.d/10-evdev.conf ]; then +sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf ./.system_backup +sudo dpkg -P xserver-xorg-input-evdev +#sudo apt-get purge xserver-xorg-input-evdev -y 2> error_output.txt +#result=`cat ./error_output.txt` +#echo -e "\033[31m$result\033[0m" +fi + +if [ -f /usr/share/X11/xorg.conf.d/45-evdev.conf ]; then +sudo cp -rf /usr/share/X11/xorg.conf.d/45-evdev.conf ./.system_backup +sudo rm -rf /usr/share/X11/xorg.conf.d/45-evdev.conf +fi + +if [ -f ./.have_installed ]; then +sudo cp -rf ./.have_installed ./.system_backup +fi diff --git a/system_restore.sh b/system_restore.sh new file mode 100755 index 0000000..e6342f2 --- /dev/null +++ b/system_restore.sh @@ -0,0 +1,93 @@ +#!/bin/bash +#Just finished the system, no need to restore +if [ ! -d "./.system_backup" ]; then +echo "The system is the original version and does not need to be restored" +exit +fi + +if [ -d /etc/X11/xorg.conf.d ]; then +sudo rm -rf /etc/X11/xorg.conf.d +fi +if [ -d ./.system_backup/xorg.conf.d ]; then +sudo cp -rf ./.system_backup/xorg.conf.d /etc/X11 +if [ -f ./.system_backup/99-calibration.conf ]; then +sudo cp -rf ./.system_backup/99-calibration.conf /etc/X11/xorg.conf.d +fi +if [ -f ./.system_backup/40-libinput.conf ]; then +sudo cp -rf ./.system_backup/40-libinput.conf /etc/X11/xorg.conf.d +fi +fi + +result=`grep -rn "^dtoverlay=" /boot/config.txt | grep ":rotate=" | tail -n 1` +if [ $? -eq 0 ]; then +str=`echo -n $result | awk -F: '{printf $2}' | awk -F= '{printf $NF}'` +sudo rm -rf /boot/overlays/$str-overlay.dtb +sudo rm -rf /boot/overlays/$str.dtbo +fi +ls -al ./.system_backup/*.dtb > /dev/null 2>&1 && sudo cp -rf ./.system_backup/*.dtb /boot/overlays/ +ls -al ./.system_backup/*.dtbo > /dev/null 2>&1 && sudo cp -rf ./.system_backup/*.dtbo /boot/overlays/ + +sudo cp -rf ./.system_backup/99-fbturbo.conf /usr/share/X11/xorg.conf.d +sudo cp -rf ./.system_backup/cmdline.txt /boot/ +sudo cp -rf ./.system_backup/config.txt /boot/ +sudo cp -rf ./.system_backup/rc.local /etc/ + +if [ -f /etc/inittab ]; then +sudo rm -rf /etc/inittab +fi +if [ -f ./.system_backup/inittab ]; then +sudo cp -rf ./.system_backup/inittab /etc +fi + +type fbcp > /dev/null 2>&1 +if [ $? -eq 0 ]; then +sudo rm -rf /usr/local/bin/fbcp +fi +if [ -f ./.system_backup/have_fbcp ]; then +sudo install ./rpi-fbcp/build/fbcp /usr/local/bin/fbcp +fi + +#type cmake > /dev/null 2>&1 +#if [ $? -eq 0 ]; then +#sudo apt-get purge cmake -y 2> error_output.txt +#result=`cat ./error_output.txt` +#echo -e "\033[31m$result\033[0m" +#fi +#if [ -f ./.system_backup/have_cmake ]; then +#sudo apt-get install cmake -y 2> error_output.txt +#result=`cat ./error_output.txt` +#echo -e "\033[31m$result\033[0m" +#fi + +if [ -f /usr/share/X11/xorg.conf.d/10-evdev.conf ]; then +sudo dpkg -P xserver-xorg-input-evdev +#sudo apt-get purge xserver-xorg-input-evdev -y 2> error_output.txt +#result=`cat ./error_output.txt` +#echo -e "\033[31m$result\033[0m" +fi +if [ -f ./.system_backup/10-evdev.conf ]; then +sudo dpkg -i -B ./xserver-xorg-input-evdev_2.10.5-1_armhf.deb +#sudo apt-get install xserver-xorg-input-evdev -y 2> error_output.txt +#result=`cat ./error_output.txt` +#echo -e "\033[31m$result\033[0m" +fi + +if [ -f /usr/share/X11/xorg.conf.d/45-evdev.conf ]; then +sudo rm -rf /usr/share/X11/xorg.conf.d/45-evdev.conf +fi +if [ -f ./.system_backup/45-evdev.conf ]; then +sudo cp -rf ./.system_backup/45-evdev.conf /usr/share/X11/xorg.conf.d +fi + +if [ -f ./.system_backup/.have_installed ]; then +sudo cp -rf ./.system_backup/.have_installed ./ +fi + +sudo sync +sudo sync + +echo "The system has been restored" +echo "now reboot" +sleep 1 + +sudo reboot diff --git a/usr/40-libinput.conf-MPI5001 b/usr/40-libinput.conf-0 old mode 100644 new mode 100755 similarity index 100% rename from usr/40-libinput.conf-MPI5001 rename to usr/40-libinput.conf-0 diff --git a/usr/40-libinput.conf-180 b/usr/40-libinput.conf-180 new file mode 100755 index 0000000..2f59e67 --- /dev/null +++ b/usr/40-libinput.conf-180 @@ -0,0 +1,36 @@ +# Match on all types of devices but tablet devices and joysticks +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/usr/40-libinput.conf-270 b/usr/40-libinput.conf-270 new file mode 100755 index 0000000..cdc3e19 --- /dev/null +++ b/usr/40-libinput.conf-270 @@ -0,0 +1,36 @@ +# Match on all types of devices but tablet devices and joysticks +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + Option "CalibrationMatrix" "0 -1 1 1 0 0 0 0 1" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/usr/40-libinput.conf-90 b/usr/40-libinput.conf-90 new file mode 100755 index 0000000..b12d365 --- /dev/null +++ b/usr/40-libinput.conf-90 @@ -0,0 +1,36 @@ +# Match on all types of devices but tablet devices and joysticks +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/usr/40-libinput.conf-FLIP-H b/usr/40-libinput.conf-FLIP-H new file mode 100755 index 0000000..8bddc85 --- /dev/null +++ b/usr/40-libinput.conf-FLIP-H @@ -0,0 +1,36 @@ +# Match on all types of devices but tablet devices and joysticks +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + Option "CalibrationMatrix" "-1 0 1 0 1 0 0 0 1" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/usr/40-libinput.conf-FLIP-V b/usr/40-libinput.conf-FLIP-V new file mode 100755 index 0000000..a10c4e1 --- /dev/null +++ b/usr/40-libinput.conf-FLIP-V @@ -0,0 +1,36 @@ +# Match on all types of devices but tablet devices and joysticks +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + Option "CalibrationMatrix" "1 0 0 0 -1 1 0 0 1" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/usr/40-libinput.conf-HDMI7B b/usr/40-libinput.conf-HDMI7B old mode 100644 new mode 100755 diff --git a/usr/40-libinput.conf-HDMI7C b/usr/40-libinput.conf-HDMI7C old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-24 b/usr/99-calibration.conf-24 old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-28 b/usr/99-calibration.conf-28 old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-32 b/usr/99-calibration.conf-32 old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-35 b/usr/99-calibration.conf-35 old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-3508 b/usr/99-calibration.conf-3508 old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-397-0 b/usr/99-calibration.conf-397-0 new file mode 100755 index 0000000..6c2f2cc --- /dev/null +++ b/usr/99-calibration.conf-397-0 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "72 3916 182 4012" + Option "SwapAxes" "0" +EndSection diff --git a/usr/99-calibration.conf-397-180 b/usr/99-calibration.conf-397-180 new file mode 100755 index 0000000..a5cf2ec --- /dev/null +++ b/usr/99-calibration.conf-397-180 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3916 72 4012 182" + Option "SwapAxes" "0" +EndSection diff --git a/usr/99-calibration.conf-397 b/usr/99-calibration.conf-397-270 old mode 100644 new mode 100755 similarity index 74% rename from usr/99-calibration.conf-397 rename to usr/99-calibration.conf-397-270 index 4e759e0..1f3a6b2 --- a/usr/99-calibration.conf-397 +++ b/usr/99-calibration.conf-397-270 @@ -1,6 +1,6 @@ Section "InputClass" Identifier "calibration" MatchProduct "ADS7846 Touchscreen" - Option "Calibration" "3865 158 289 3873" + Option "Calibration" "4012 182 72 3916" Option "SwapAxes" "1" EndSection diff --git a/usr/99-calibration.conf-397-90 b/usr/99-calibration.conf-397-90 new file mode 100755 index 0000000..40de086 --- /dev/null +++ b/usr/99-calibration.conf-397-90 @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "182 4012 3916 72" + Option "SwapAxes" "1" +EndSection diff --git a/usr/99-calibration.conf-397-FLIP-H b/usr/99-calibration.conf-397-FLIP-H new file mode 100755 index 0000000..24d360f --- /dev/null +++ b/usr/99-calibration.conf-397-FLIP-H @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3916 72 182 4012" + Option "SwapAxes" "0" +EndSection diff --git a/usr/99-calibration.conf-397-FLIP-V b/usr/99-calibration.conf-397-FLIP-V new file mode 100755 index 0000000..b63870c --- /dev/null +++ b/usr/99-calibration.conf-397-FLIP-V @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "72 3916 4012 182" + Option "SwapAxes" "0" +EndSection diff --git a/usr/99-calibration.conf-43 b/usr/99-calibration.conf-43 old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-5 b/usr/99-calibration.conf-5 old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-HDMI7C b/usr/99-calibration.conf-HDMI7C old mode 100644 new mode 100755 diff --git a/usr/99-calibration.conf-mhs24 b/usr/99-calibration.conf-mhs24 new file mode 100755 index 0000000..af6faea --- /dev/null +++ b/usr/99-calibration.conf-mhs24 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3697 135 136 3839" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs32 b/usr/99-calibration.conf-mhs32 new file mode 100755 index 0000000..044c457 --- /dev/null +++ b/usr/99-calibration.conf-mhs32 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3713 158 3901 212" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs35-0 b/usr/99-calibration.conf-mhs35-0 new file mode 100755 index 0000000..1576093 --- /dev/null +++ b/usr/99-calibration.conf-mhs35-0 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "268 3880 227 3936" + Option "SwapAxes" "0" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs35-180 b/usr/99-calibration.conf-mhs35-180 new file mode 100755 index 0000000..9d81748 --- /dev/null +++ b/usr/99-calibration.conf-mhs35-180 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3880 268 3936 227" + Option "SwapAxes" "0" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs35-270 b/usr/99-calibration.conf-mhs35-270 new file mode 100755 index 0000000..f536459 --- /dev/null +++ b/usr/99-calibration.conf-mhs35-270 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "227 3936 3880 268" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs35-90 b/usr/99-calibration.conf-mhs35-90 new file mode 100755 index 0000000..2df34e2 --- /dev/null +++ b/usr/99-calibration.conf-mhs35-90 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3936 227 268 3880" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs395 b/usr/99-calibration.conf-mhs395 new file mode 100755 index 0000000..2df34e2 --- /dev/null +++ b/usr/99-calibration.conf-mhs395 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3936 227 268 3880" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-fbturbo-fbcp.conf b/usr/99-fbturbo-fbcp.conf new file mode 100755 index 0000000..1f2fae0 --- /dev/null +++ b/usr/99-fbturbo-fbcp.conf @@ -0,0 +1,16 @@ +# This is a minimal sample config file, which can be copied to +# /etc/X11/xorg.conf in order to make the Xorg server pick up +# and load xf86-video-fbturbo driver installed in the system. +# +# When troubleshooting, check /var/log/Xorg.0.log for the debugging +# output and error messages. +# Run "man fbturbo" to get additional information about the extra +# configuration options for tuning the driver. + +Section "Device" + Identifier "Allwinner A10/A13/A20 FBDEV" + Driver "fbturbo" + Option "fbdev" "/dev/fb0" + + Option "SwapbuffersWait" "true" +EndSection diff --git a/usr/99-fbturbo.conf b/usr/99-fbturbo.conf old mode 100644 new mode 100755 diff --git a/usr/99-fbturbo.conf-HDMI b/usr/99-fbturbo.conf-HDMI old mode 100644 new mode 100755 diff --git a/usr/bcm2709-rpi-2-b.dtb b/usr/bcm2709-rpi-2-b.dtb old mode 100644 new mode 100755 diff --git a/usr/bcm2710-rpi-3-b.dtb b/usr/bcm2710-rpi-3-b.dtb old mode 100644 new mode 100755 diff --git a/usr/cmdline.txt b/usr/cmdline.txt old mode 100644 new mode 100755 diff --git a/usr/cmdline.txt_noobs b/usr/cmdline.txt-noobs old mode 100644 new mode 100755 similarity index 100% rename from usr/cmdline.txt_noobs rename to usr/cmdline.txt-noobs diff --git a/usr/inittab b/usr/inittab old mode 100644 new mode 100755 diff --git a/usr/mhs24-overlay.dtb b/usr/mhs24-overlay.dtb new file mode 100755 index 0000000000000000000000000000000000000000..83ae9d77df6ea54984fe1c2856943a11a19e72f7 GIT binary patch literal 2648 zcma)8O^6&t6t12`lie8N?#UmJ)u>UKW@k66yE`nn2f>So7sVB1=;^MREw-n-?W)es zc#5FJV{SQk@T%TChj}>Z4#Ua%*2U)=X0x}| zX0}T!ZCHujJ|DB=F2F0H`+@q?cqK2eZL|3f#XBxSSpYGYSBn&Qv5XSr3)Y z0_4k)(!ns6QK=B`i_;=ad-60$ZTKSSQ}(2(XDfs(}#h~=|gr+ zUzDE*w!xjj6PaJfZ(82nZT^1ir3vk-~DZRJb+P@;iWw5pWRjl7?@z=0s{+z#$uqHVE zW2||$<3GWgy-S`s{@nHyeGr`d3oB<$2+sbSiY4#uVEsKV|AUo%26_WL-i#OnX|oJ` z53=7uKLE1MQ}Ew`ZUehO!UnJd`QM-`pnp(E!1_y&$3edWT>||Y^hw|j*586&2Ymtb zL(o3x>!5#v()MW*(CeW0gWdpT-5v!pX6E25@D%VR;HSVTBFhkj|ifl zOD&B*&Q!{>9IqdR_o`e*+*gT_d0u43&w?DE)#DGT>@t}|>0weHR#m^Qah!%hJebQK z5?7bF`sUpJop$fIT{pfDegg>ZZP?oI8-K_9fPVQtsLy)Qo^OHRc=kWR@$7km<8S{) zu*V5@-&-LAXy0ccOea}j6#hDhswITR11og(_oe)*mw$0aMG_j7CL&fzG3{piK@!2{ zd=N#bv-U$7$69FhuC&Wsjs?s^lgEA%Or);4p15NO2>0Yg^}Yq3vcR(y!$Kdb$m|Qa zbBnsGgzFelzGR^iW$AfjD)feAbHvl!FFPxmL9e8y0UTyjF;k`jNXI18pT QG54G;Qwt3O&s0zR2NLSjTmS$7 literal 0 HcmV?d00001 diff --git a/usr/mhs32-overlay.dtb b/usr/mhs32-overlay.dtb new file mode 100755 index 0000000000000000000000000000000000000000..afb58647e7f9aee52095b95e2c82a7bacb5702f1 GIT binary patch literal 2315 zcma)8y>HV%6n{>sN+}gk2?Ro7XoWy1R?-hhTOm=gu(1~jMUH(*tva^xo!f+|0}=}Z z8v_F?D}MkRVq#!pV`f2OVFljLcV{~-r9A24d+&bl-Mja3m(TORz7x&P5z#u)%m@D7 z2{MnkwxCP+XVpY(>xZEU2hBllOxkG5PQag#>}#OAqb_{i$qYMh#EEQ zvXQ~waaiCBozh3Gb&`*c>Z^^_wdHOa#2_ub(BKk=t9f_2)zf%$E3*>Xy^Nbn z>h9C{%k1_=)@^X#xkGQ{_A~J$7qLIyEQ$hlP%oTMYN$~!??)omOT~WkEJtn|S)x28 z%!;;shULg}qn}E<0DF)l-;LfNtILsB-A%N?T4d0wF!W)x7g18 z%1(PzdD%cHK71uysf4VdWBZlAKPt#_1*wF`9AYyQQYd$jh6&PgGCuJC7hIfpGmMqU zvOHC8>Sg>KoV;BC8$uRX)$WI>Wk|4x(FoB*Uk|OfxYcR`*pFxv@7C zvgF!y!<0hBXHLU5{Q+AexQPG& literal 0 HcmV?d00001 diff --git a/usr/mhs35-overlay.dtb b/usr/mhs35-overlay.dtb new file mode 100755 index 0000000000000000000000000000000000000000..8e983dbe1fed0c30b607735afce0c447d2607bc1 GIT binary patch literal 2616 zcma)8J!~9B6rQ~V4cRP1pWp8)cnYHhz zTu`J#=_n|Ws3?$7L>-9&Q6YXxBoK5o{1ym=MDl$zJG*;l6Eo81_cQOknfJ4E{_5Pn zKMQfTCxif&ega(wR)G5eEbmq5KeqhbU$2r*fj&-tPz)y~?!?;j;1a zMnyQD$W&kH8ksRp1Iyokbn{nGF9@=IStQ{s2x!3lyMWc~YB-|;%TswA$^9yVwK)U* zY80z*kjThb3DIfUZdE$Q`!8GC8=v})*6XA@dU~WUUJ8ReP8E-#{XM{g0P9Km0O0g% z;M>c^=V`31lXolG-E01C+a`pwy;J>I-{-1W&i)nSjq~i?=W2N`_u?eh^6Cc2<(=Ns z#@hM5Uing90^W$^C@d3AwX;dUw{zKF`t9q(*8VjiDAxAZ!85M&f0vtBPJR#k`Ih`X zc%JR{KLpRYrOevjsOE{a=W_a+m7e|Ja{ixNk+Sy~_%Cqz-$9u<>&Nvhz}mcny+1%1 z;{#w7U~g_z{4G%4g$4KvN~Twc@Ot1?~rU-xc5-K>r^>XwQjx3RniX$M5PzpakfDH{fc>8axWnzYp>n z=nBAluOr!8;GY2R>bC`+HE=THQ6{Px^R>D{Gh@R$2pw;Pk=pI;9Gx$OuVd|t^KTzk zGIRb0V1DiMzN`Am^I4x?Dw%d%)YJYS)5Ti$mIb@joW%>$ww;Ibt@E*ORDnlG*;mTi zV;;PR;M>9bKPu##rA&vjzIp5zhkdw48$BJAqeP~5%bdraT<2bq=}^mR$Hr!F z`3-bNxpEtfM?L%B8H|gzo;Bc1cOp3`$99MI=&yGH^b~5Z4#M1@&iFLgJ_UiAO$J#~ zWkq|;fw#WdJcygE_j&V}cMq|>oyLCq82h=mhVh@dvwb}`W|o3r6i>_C6`pr|5;0zA zVs!gDEXGnJ=|;KTD4DLQ_qU*bHYQt*NuxYIfqo&C)c!b+Gj`)d^Jw@#ZB4HIIMuQ! z%3S+-Sm3wv#3QU*F4HJGNX=2U<8@z?Y#1ifv6{+reH?+NoYpx{+Q`bDXEur)K7v^KxdGP4ZC3__sjVu@DL$SE=m3 zCgvyG{QEL0kz$;sB8k&-x{>dNX#}6OFpAJ@O5*I)M0udv@YIdi0Z{*pTVS46n zm*@flMCJq$5Rf25fCPw7<^aSeL3~0a5J&_Bd>oM=0q^x^W_IuJ(NgWJs;;W;s;=(Y zuh0Jdn-FK77D8+baT*{lf)+sw6ol|FH}{3%r+z&vodDiXzL)n$E4}_`eS70lEo`;7 zo5E%7iTfd+k&0(RdxVN3R$Z8<&D^7A1+3jn3Z|gdQv%OXQSl>r%ENB0e_QrZ{rL!QuQrHzH;4D)=w4`J2E`EWQF{6?TCg z;3?oczysiizy&CY^&pRa)E z`y^-{M8Bpl>+maL(EqB%2zU;(2;zQSUD?yDhm*Igtb5t?o?oaPnrR!ZCyHn#2-Vj1 z=Hb3W_$t<(IRD~-mDvm5f)+u|^}e^~&Gnh%?^dQA2lcf7OINIty?OBur>nKNLE1L+ zaK7}{`IxsW$K#~T>t*awdyi+(!n@^de(rw-U?-}9GV&0FJO-sfG1FU zwI5{uc)};c<)tR0UK-o1Xn!B|15MyV;q& zv#C;0q)kUbK}&&z_yf{XA%2udz+V6a1mTxN_`dn!UHdLMMtXklee=zmnKy67`_;*R ze-z@xr$UI15G&WA*CD4MPeRaww}2B{Y=Hxoq0iComxFPuKNxRzE^OD%PP@}|E}Bun zu#84yndvKS<1@xF$m;i>-2E9k==JhFS*Fpn*CT=bk3ml7H=-#4v_KU}EcaXl%UJ<_ zI!;v7Pi1UaLM%17=N-m)595+=#?01eM;*1sKo9kW?Wk8Inc_6$KMpwqVLqv!hIo7p zcC-2ToQ=8l{*Lqgy5`rmX+n7Jqw>f6UUsoO|4lO*^Vzk}F$W?Vo119qZ$|3lbk8~#VI zIk)fs7&hycK6C$>t0(53&Et0+&hudN<3G19{eW|QfyLj0=9;d-{-t663i}dd3*yH! z$6ODEt!Z1tVsAJ4IOZ5){|0@+lOCd<0$xCt!T;THu0mgTHWlOf#<=(4c+BStusN7N zJQ13CV{P%k{)A%9(*6tT9Q5DNYY_6d&SxOcL0*8YJNsqm4M-RA8l(+jBhFaF-+|tC zJ}c^V_@@5QTs?6N>+UD#n;gO?PX0e8D>FY>6%T;c zb8&&>`nkCeKX$es`!<$%{FHqiEeEw6JPZC3-o9TIHaU9I zuZF42Y?qniB=9@zD{~!b>3VEzo;UBq(y&mzgYk&-jxO~_WfNx(c$b!9*{?>nhkVpd z@I3S~al+I_) z=HN@@?u{eYkAKvGF4M5hmCRLtR~1sm2jNC}FASI!_X2JUdjYgny#V@>UVvH76L-~2 zJ+od`2Kl&%bb`+jVaq}&T&_ylPa^ZFU_P6M6}FhEsA3twh9L_ zO_f+v$$Qe-r5p*Lm@FDgHS^lyzzZOJLWJGFz|I7=Ec%t&Ph!0*5Y8L3+7iBSgxRx5 zvP9#@RfnogS16)c0(@R4VUgk~3G>~tqF-ciGw=(u&(@3v=(p Ee|F;qGynhq literal 0 HcmV?d00001 diff --git a/usr/modules-HDMI b/usr/modules-HDMI old mode 100644 new mode 100755 diff --git a/usr/qddpi24.dtb b/usr/qddpi24.dtb old mode 100644 new mode 100755 diff --git a/usr/tft35a-overlay.dtb b/usr/tft35a-overlay.dtb old mode 100644 new mode 100755 index 31aeff966e441aa8e217516d5ac7d65fe378b79c..b3ed2f3c9e2c04197d0b37c75971b51a28439a44 GIT binary patch delta 200 zcmZ1=vO`4R0`I@K3=CWr3=9lF%<*EPfH>oZjT)bs>Q#V3XBin7J_2boAZ7t#5U>Ga zejx4#%6$UT54QMZ5l9~eIte7iFcF9wCPy&0i&_C$p+G4?AO>mE0NV9`vj)o#Rsarc8)N_g delta 117 zcmdlXvOq-O0`I@K3=CWf3=9kw3=A9>CJKl%&e*8&naP$1D0G&QfnfuXW&qNHObiVF ufwUEn8w#Y&fV2jXJ_Mv)fb>xy4F{8#Ft;;4n*4^@o)e}{aI*u;4^{v^vlSWu diff --git a/usr/tft9341-overlay.dtb b/usr/tft9341-overlay.dtb old mode 100644 new mode 100755 diff --git a/xinput-calibrator_0.7.5-1_armhf.deb b/xinput-calibrator_0.7.5-1_armhf.deb old mode 100644 new mode 100755 index bc5f57bbd0cc732259d61d8a939ccdcf51e329ac..3ec2d5eda286b2f48a3dd334e39d1a7af36ec624 GIT binary patch literal 41542 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 T4t=kTJ}?c70ssI200CKAK4Ehi literal 38368 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