diff --git a/MHS40C-show b/MHS40C-show new file mode 100755 index 0000000..dbcc3b7 --- /dev/null +++ b/MHS40C-show @@ -0,0 +1,103 @@ +#!/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 + +root_dev=`grep -oPr "root=[^\s]*" /boot/cmdline.txt | awk -F= '{printf $NF}'` +if test "$root_dev" = "/dev/mmcblk0p7";then +sudo cp -rf ./boot/config-noobs-nomal.txt ./boot/config.txt.bak +else +sudo cp -rf ./boot/config-nomal.txt ./boot/config.txt.bak +sudo echo "hdmi_force_hotplug=1" >> ./boot/config.txt.bak +fi +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 "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 800 480 60 6 0 0 0" >> ./boot/config.txt.bak +sudo echo "hdmi_drive=2" >> ./boot/config.txt.bak +sudo echo "dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=1,pmax=255,xohms=60,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 ./usr/99-calibration.conf-mhs397-0 /etc/X11/xorg.conf.d/99-calibration.conf +#sudo cp -rf ./usr/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf +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 +if test "$root_dev" = "/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-mhs397.txt /boot/config.txt +sudo cp -rf ./etc/modules /etc/modules +sudo chmod 644 /etc/modules +sudo cp -rf ./etc/modprobe.d/fbtft.conf /etc/modprobe.d/ + +sudo touch ./.have_installed +echo "hdmi:resistance:mhs397:0:800:480" > ./.have_installed + +#FBCP install +wget --spider -q -o /dev/null --tries=1 -T 10 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 +else +sudo install ./usr/fbcp /usr/local/bin/fbcp +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 2017;then +echo "reboot" +else +echo "need to update touch configuration" +sudo dpkg -i -B ./xserver-xorg-input-evdev_1%3a2.10.6-1+b1_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/boot/config-nomal.txt b/boot/config-nomal.txt index b427b4c..f8d34e5 100755 --- a/boot/config-nomal.txt +++ b/boot/config-nomal.txt @@ -47,8 +47,9 @@ #dtparam=i2s=on #dtparam=spi=on -# Uncomment this to enable the lirc-rpi module -#dtoverlay=lirc-rpi +# Uncomment this to enable infrared communication. +#dtoverlay=gpio-ir,gpio_pin=17 +#dtoverlay=gpio-ir-tx,gpio_pin=18 # Additional overlays and parameters are documented /boot/overlays/README @@ -58,7 +59,7 @@ dtparam=audio=on [pi4] # Enable DRM VC4 V3D driver on top of the dispmanx display stack #dtoverlay=vc4-fkms-v3d -#max_framebuffers=2 +max_framebuffers=2 [all] #dtoverlay=vc4-fkms-v3d diff --git a/etc/modprobe.d/fbtft.conf b/etc/modprobe.d/fbtft.conf new file mode 100755 index 0000000..5ee9365 --- /dev/null +++ b/etc/modprobe.d/fbtft.conf @@ -0,0 +1,2 @@ +options fbtft_device name=flexfb gpios=reset:25,dc:24,cs:8 speed=125000000 bgr=1 fps=60 custom=1 height=480 width=800 +options flexfb setaddrwin=0 width=800 height=480 regwidth=16 init=-1,0x29,-3 diff --git a/etc/modules b/etc/modules new file mode 100755 index 0000000..053de55 --- /dev/null +++ b/etc/modules @@ -0,0 +1,9 @@ +# /etc/modules: kernel modules to load at boot time. +# +# This file contains the names of kernel modules that should be loaded +# at boot time, one per line. Lines beginning with "#" are ignored. + +i2c-dev +spi-bcm2835 +flexfb +fbtft_device diff --git a/etc/modules-original b/etc/modules-original new file mode 100755 index 0000000..c696796 --- /dev/null +++ b/etc/modules-original @@ -0,0 +1,6 @@ +# /etc/modules: kernel modules to load at boot time. +# +# This file contains the names of kernel modules that should be loaded +# at boot time, one per line. Lines beginning with "#" are ignored. + +i2c-dev diff --git a/system_backup.sh b/system_backup.sh index 5acdab1..8317899 100755 --- a/system_backup.sh +++ b/system_backup.sh @@ -50,6 +50,14 @@ sudo cp -rf ./usr/99-fbturbo.conf-original /usr/share/X11/xorg.conf.d/99-fbturbo sudo cp -rf /etc/rc.local ./.system_backup/ sudo cp -rf ./etc/rc.local-original /etc/rc.local +sudo cp -rf /etc/modules ./.system_backup/ +sudo cp -rf ./etc/modules-original /etc/modules + +if [ -f /etc/modprobe.d/fbtft.conf ]; then +sudo cp -rf /etc/modprobe.d/fbtft.conf ./.system_backup +sudo rm -rf /etc/modprobe.d/fbtft.conf +fi + if [ -f /etc/inittab ]; then sudo cp -rf /etc/inittab ./.system_backup sudo rm -rf /etc/inittab diff --git a/system_restore.sh b/system_restore.sh index a818eec..964af86 100755 --- a/system_restore.sh +++ b/system_restore.sh @@ -33,6 +33,7 @@ fi sudo cp -rf ./.system_backup/cmdline.txt /boot/ sudo cp -rf ./.system_backup/config.txt /boot/ sudo cp -rf ./.system_backup/rc.local /etc/ +sudo cp -rf ./.system_backup/modules /etc/ if [ -f /etc/inittab ]; then sudo rm -rf /etc/inittab @@ -41,6 +42,13 @@ if [ -f ./.system_backup/inittab ]; then sudo cp -rf ./.system_backup/inittab /etc fi +if [ -f /etc/modprobe.d/fbtft.conf ]; then +sudo rm -rf /etc/modprobe.d/fbtft.conf +fi +if [ -f ./.system_backup/fbtft.conf ]; then +sudo cp -rf ./.system_backup/fbtft.conf /etc/modprobe.d +fi + type fbcp > /dev/null 2>&1 if [ $? -eq 0 ]; then sudo rm -rf /usr/local/bin/fbcp diff --git a/usr/99-calibration.conf-mhs397-0 b/usr/99-calibration.conf-mhs397-0 new file mode 100755 index 0000000..e062456 --- /dev/null +++ b/usr/99-calibration.conf-mhs397-0 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3968 61 188 3960" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs397-180 b/usr/99-calibration.conf-mhs397-180 new file mode 100755 index 0000000..511c220 --- /dev/null +++ b/usr/99-calibration.conf-mhs397-180 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "61 3968 3960 188" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs397-270 b/usr/99-calibration.conf-mhs397-270 new file mode 100755 index 0000000..4306734 --- /dev/null +++ b/usr/99-calibration.conf-mhs397-270 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3971 205 4000 80" + Option "SwapAxes" "0" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs397-90 b/usr/99-calibration.conf-mhs397-90 new file mode 100755 index 0000000..b512bad --- /dev/null +++ b/usr/99-calibration.conf-mhs397-90 @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "188 3960 61 3968" + Option "SwapAxes" "0" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs397-FLIP-H b/usr/99-calibration.conf-mhs397-FLIP-H new file mode 100755 index 0000000..dc195e6 --- /dev/null +++ b/usr/99-calibration.conf-mhs397-FLIP-H @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "94 3973 183 3927" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/99-calibration.conf-mhs397-FLIP-V b/usr/99-calibration.conf-mhs397-FLIP-V new file mode 100755 index 0000000..ae087ef --- /dev/null +++ b/usr/99-calibration.conf-mhs397-FLIP-V @@ -0,0 +1,9 @@ +Section "InputClass" + Identifier "calibration" + MatchProduct "ADS7846 Touchscreen" + Option "Calibration" "3961 69 3975 209" + Option "SwapAxes" "1" + Option "EmulateThirdButton" "1" + Option "EmulateThirdButtonTimeout" "1000" + Option "EmulateThirdButtonMoveThreshold" "300" +EndSection diff --git a/usr/fbcp b/usr/fbcp new file mode 100644 index 0000000..802521c Binary files /dev/null and b/usr/fbcp differ