Volumio with 3.5" TFT Touch Screen (GPIO) RPi 3B+

Also I tried “cat /dev/input/event*” and I see ghiberish )

Here’s the output

volumio@boombox:~$ cat /usr/share/X11/xorg.conf.d/99-fbturbo.conf
# 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 FBDEV"
        Driver          "fbturbo"
        Option          "fbdev" "/dev/fb0"

        Option          "SwapbuffersWait" "true"
EndSection

Run

sudo curl -L https://raw.githubusercontent.com/goodtft/LCD-show/master/usr/99-fbturbo.conf -o /usr/share/X11/xorg.conf.d/99-fbturbo.conf

again as the previously downloaded file has probably been overwritten by installing “xserver-xorg-video-fbturbo”…

Then disable and re-enable the Touch Display plugin.

1 Like

Holly smokes, it worked. The touch is borked tho. Looks mirrored vertically and somehow the scaling is off.

Is the display currently working in landscape mode?

Yes it is. Power connector coming from bottom left ant top is where the GPIO is.

It’s just a guess, but maybe saves time: Try the calibration file for a rotation by 90 deg.

sudo curl -L https://raw.githubusercontent.com/goodtft/LCD-show/master/usr/99-calibration.conf-mhs35-90 -o /etc/X11/xorg.conf.d/99-calibration.conf

If this should not help revert to the previous file

sudo curl -L https://raw.githubusercontent.com/goodtft/LCD-show/master/usr/99-calibration.conf-mhs35-0 -o /etc/X11/xorg.conf.d/99-calibration.conf

Then enable the mouse pointer on the Touch Display’s config page to be able to easier follow where touch events happen when you touch the screen at certain locations or drag the pointer from right to left and from top to bottom. Describe the results in detail or maybe upload a video.

Up is LEFT, Down is RIGHT, Right is UP, Left is DOWN. Yup -90 worked like magic.
Thank you greatly for your time and knowledge!

:+1: So, touch and display are properly aligned now?

Yes, that is exactly the case! It’s small, but now I can change the song near the soundbar.

Great!

For future readers I have edited the command to download the proper calibration file accordingly.

1 Like

Hi, for 2.9 version it works fine, but after update to 3.x (because of Spotify plugin), I’m not able to get my 3,5’’ display working. Anybody already fixed it for the newest version please?

What’s the brand and exact model name of the display?

This one: MPI3508

Assuming you are on a fresh Volumio system:

  1. Install the Touch Display plugin.

  2. Connect to Volumio via SSH.

  3. Execute

sudo apt-get -y install xserver-xorg-video-fbturbo

sudo apt-get -y install xserver-xorg-input-evdev

sudo cp /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf

sudo curl -L https://raw.githubusercontent.com/goodtft/LCD-show/master/usr/99-calibration.conf-3508-0 -o /etc/X11/xorg.conf.d/99-calibration.conf

sudo curl -L https://raw.githubusercontent.com/goodtft/LCD-show/master/usr/99-fbturbo.conf-HDMI -o /usr/share/X11/xorg.conf.d/99-fbturbo.conf

cat >> /boot/userconfig.txt <<EOL

dtparam=spi=on
config_hdmi_boost=7
hdmi_group=2
hdmi_mode=87
hdmi_drive=2
hdmi_cvt 480 320 60 6 0 0 0
dtoverlay=ads7846
dtparam=cs=1
dtparam=penirq=25
dtparam=penirq_pull=2
dtparam=speed=50000
dtparam=swapxy=0
dtparam=pmax=255
dtparam=xohms=150
dtparam=xmin=200
dtparam=xmax=3900
dtparam=ymin=200
dtparam=ymax=3900
EOL
  1. Reboot.

@gvolt

Have you done this before :slight_smile:

I have followed your instruction, but my display is still black :frowning:

Please post the result of

cat /var/log/Xorg.0.log

sure:

[    29.910]
X.Org X Server 1.20.4
X Protocol Version 11, Revision 0
[    29.910] Build Operating System: Linux 5.4.0-72-generic armv8l Raspbian
[    29.910] Current Operating System: Linux volumio 5.10.92-v7l+ #1514 SMP Mon                                                                                                              Jan 17 17:38:03 GMT 2022 armv7l
[    29.910] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.e                                                                                                             nable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=480 bcm2708_fb.                                                                                                             fbheight=320 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:4B:F8:AF vc_mem.mem_b                                                                                                             ase=0x3ec00000 vc_mem.mem_size=0x40000000  splash plymouth.ignore-serial-console                                                                                                             s dwc_otg.fiq_enable=1 dwc_otg.fiq_fsm_enable=1 dwc_otg.fiq_fsm_mask=0xF dwc_otg                                                                                                             .nak_holdoff=1 quiet console=ttyS0,115200 console=tty1 imgpart=/dev/mmcblk0p2 im                                                                                                             gfile=/volumio_current.sqsh rootwait bootdelay=5 elevator=noop logo.nologo vt.gl                                                                                                             obal_cursor_default=0 net.ifnames=0 snd-bcm2835.enable_compat_alsa=0 snd_bcm2835                                                                                                             .enable_hdmi=1 loglevel=0
[    29.910] Build Date: 04 January 2022  10:05:34AM
[    29.910] xorg-server 2:1.20.4-1+rpt4+deb10u4 (https://www.debian.org/support                                                                                                             )
[    29.910] Current version of pixman: 0.36.0
[    29.910]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[    29.910] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    29.911] (==) Log file: "/var/log/Xorg.0.log", Time: Mon Jun 13 19:41:57 202                                                                                                             2
[    29.916] (==) Using config directory: "/etc/X11/xorg.conf.d"
[    29.916] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    29.922] (==) No Layout section.  Using the first Screen section.
[    29.922] (==) No screen section available. Using defaults.
[    29.922] (**) |-->Screen "Default Screen Section" (0)
[    29.922] (**) |   |-->Monitor "<default monitor>"
[    29.925] (==) No device specified for screen "Default Screen Section".
        Using the first device section listed.
[    29.925] (**) |   |-->Device "Allwinner A10/A13/A20 FBDEV"
[    29.925] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[    29.926] (==) Automatically adding devices
[    29.926] (==) Automatically enabling devices
[    29.926] (==) Automatically adding GPU devices
[    29.929] (==) Max clients allowed: 256, resource mask: 0x1fffff
[    29.930] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[    29.930]    Entry deleted from font path.
[    29.931] (==) FontPath set to:
        /usr/share/fonts/X11/misc,
        /usr/share/fonts/X11/100dpi/:unscaled,
        /usr/share/fonts/X11/75dpi/:unscaled,
        /usr/share/fonts/X11/Type1,
        /usr/share/fonts/X11/100dpi,
        /usr/share/fonts/X11/75dpi,
        built-ins
[    29.931] (==) ModulePath set to "/usr/lib/xorg/modules"
[    29.931] (II) The server relies on udev to provide the list of input devices                                                                                                             .
        If no devices become available, reconfigure udev or disable AutoAddDevic                                                                                                             es.
[    29.931] (II) Loader magic: 0x1fdf80
[    29.931] (II) Module ABI versions:
[    29.931]    X.Org ANSI C Emulation: 0.4
[    29.931]    X.Org Video Driver: 24.0
[    29.931]    X.Org XInput driver : 24.1
[    29.931]    X.Org Server Extension : 10.0
[    29.932] (--) using VT number 2

[    29.932] (II) systemd-logind: logind integration requires -keeptty and -keep                                                                                                             tty was not provided, disabling logind integration
[    29.933] (II) no primary bus or device found
[    29.933] (II) LoadModule: "glx"
[    29.936] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    29.969] (II) Module glx: vendor="X.Org Foundation"
[    29.969]    compiled for 1.20.4, module version = 1.0.0
[    29.969]    ABI class: X.Org Server Extension, version 10.0
[    29.969] (II) LoadModule: "fbturbo"
[    29.969] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so
[    29.972] (II) Module fbturbo: vendor="X.Org Foundation"
[    29.972]    compiled for 1.20.3, module version = 0.5.1
[    29.972]    Module class: X.Org Video Driver
[    29.972]    ABI class: X.Org Video Driver, version 24.0
[    29.972] (II) FBTURBO: driver for framebuffer: fbturbo
[    29.972] (WW) Falling back to old probe method for fbturbo
[    29.972] (II) Loading sub module "fbdevhw"
[    29.972] (II) LoadModule: "fbdevhw"
[    29.973] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[    29.974] (II) Module fbdevhw: vendor="X.Org Foundation"
[    29.974]    compiled for 1.20.4, module version = 0.0.2
[    29.974]    ABI class: X.Org Video Driver, version 24.0
[    29.974] (II) FBTURBO(0): using /dev/fb0
[    29.974] (II) FBTURBO(0): Creating default Display subsection in Screen sect                                                                                                             ion
        "Default Screen Section" for depth/fbbpp 24/32
[    29.974] (==) FBTURBO(0): Depth 24, (==) framebuffer bpp 32
[    29.974] (==) FBTURBO(0): RGB weight 888
[    29.974] (==) FBTURBO(0): Default visual is TrueColor
[    29.974] (==) FBTURBO(0): Using gamma correction (1.0, 1.0, 1.0)
[    29.974] (II) FBTURBO(0): hardware: BCM2708 FB (video memory: 600kB)
[    29.974] (DB) xf86MergeOutputClassOptions unsupported bus type 0
[    29.974] (**) FBTURBO(0): Option "fbdev" "/dev/fb0"
[    29.974] (**) FBTURBO(0): Option "SwapbuffersWait" "true"
[    29.974] (II) FBTURBO(0): processor: Unknown
[    29.974] (II) FBTURBO(0): checking modes against framebuffer device...
[    29.975] (II) FBTURBO(0): checking modes against monitor...
[    29.975] (II) FBTURBO(0): Virtual size is 480x320 (pitch 480)
[    29.975] (**) FBTURBO(0):  Built-in mode "current"
[    29.975] (==) FBTURBO(0): DPI set to (96, 96)
[    29.975] (II) Loading sub module "fb"
[    29.975] (II) LoadModule: "fb"
[    29.975] (II) Loading /usr/lib/xorg/modules/libfb.so
[    29.978] (II) Module fb: vendor="X.Org Foundation"
[    29.978]    compiled for 1.20.4, module version = 1.0.0
[    29.978]    ABI class: X.Org ANSI C Emulation, version 0.4
[    29.989] (II) FBTURBO(0): using backing store heuristics
[    29.996] (II) FBTURBO(0): can't load 'g2d_23' kernel module
[    29.996] (II) FBTURBO(0): failed to enable the use of sunxi display controll                                                                                                             er
[    29.996] (II) FBTURBO(0): No sunxi-g2d hardware detected (check /dev/disp an                                                                                                             d /dev/g2d)
[    29.996] (II) FBTURBO(0): G2D hardware acceleration can't be enabled
[    29.996] (II) FBTURBO(0): enabled fbdev copyarea acceleration
[    29.996] (==) FBTURBO(0): Backing store enabled
[    30.001] (==) FBTURBO(0): DPMS enabled
[    30.001] (II) FBTURBO(0): failed to enable hardware cursor
[    30.001] (II) FBTURBO(0): no 3D acceleration because the driver has been com                                                                                                             piled without libUMP
[    30.001] (II) FBTURBO(0): if this is wrong and needs to be fixed, please che                                                                                                             ck ./configure log
[    30.002] (II) Initializing extension Generic Event Extension
[    30.003] (II) Initializing extension SHAPE
[    30.003] (II) Initializing extension MIT-SHM
[    30.004] (II) Initializing extension XInputExtension
[    30.006] (II) Initializing extension XTEST
[    30.007] (II) Initializing extension BIG-REQUESTS
[    30.007] (II) Initializing extension SYNC
[    30.008] (II) Initializing extension XKEYBOARD
[    30.008] (II) Initializing extension XC-MISC
[    30.009] (II) Initializing extension SECURITY
[    30.009] (II) Initializing extension XFIXES
[    30.009] (II) Initializing extension RENDER
[    30.010] (II) Initializing extension RANDR
[    30.011] (II) Initializing extension COMPOSITE
[    30.012] (II) Initializing extension DAMAGE
[    30.013] (II) Initializing extension MIT-SCREEN-SAVER
[    30.013] (II) Initializing extension DOUBLE-BUFFER
[    30.013] (II) Initializing extension RECORD
[    30.014] (II) Initializing extension DPMS
[    30.014] (II) Initializing extension Present
[    30.015] (II) Initializing extension DRI3
[    30.015] (II) Initializing extension X-Resource
[    30.015] (II) Initializing extension XVideo
[    30.016] (II) Initializing extension XVideo-MotionCompensation
[    30.016] (II) Initializing extension SELinux
[    30.016] (II) SELinux: Disabled on system
[    30.016] (II) Initializing extension GLX
[    30.016] (II) AIGLX: Screen 0 is not DRI2 capable
[    30.713] (II) IGLX: Loaded and initialized swrast
[    30.713] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[    30.713] (II) Initializing extension XFree86-VidModeExtension
[    30.714] (II) Initializing extension XFree86-DGA
[    30.714] (II) Initializing extension XFree86-DRI
[    30.716] (II) Initializing extension DRI2
[    30.869] (II) config/udev: Adding input device ADS7846 Touchscreen (/dev/inp                                                                                                             ut/event0)
[    30.869] (**) ADS7846 Touchscreen: Applying InputClass "evdev touchscreen ca                                                                                                             tchall"
[    30.869] (**) ADS7846 Touchscreen: Applying InputClass "libinput touchscreen                                                                                                              catchall"
[    30.869] (**) ADS7846 Touchscreen: Applying InputClass "evdev touchscreen ca                                                                                                             tchall"
[    30.869] (**) ADS7846 Touchscreen: Applying InputClass "Touch rotation"
[    30.869] (**) ADS7846 Touchscreen: Applying InputClass "calibration"
[    30.869] (II) LoadModule: "evdev"
[    30.870] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[    30.874] (II) Module evdev: vendor="X.Org Foundation"
[    30.874]    compiled for 1.20.3, module version = 2.10.6
[    30.874]    Module class: X.Org XInput Driver
[    30.874]    ABI class: X.Org XInput driver, version 24.1
[    30.874] (II) Using input driver 'evdev' for 'ADS7846 Touchscreen'
[    30.874] (**) ADS7846 Touchscreen: always reports core events
[    30.874] (**) evdev: ADS7846 Touchscreen: Device: "/dev/input/event0"
[    30.874] (--) evdev: ADS7846 Touchscreen: Vendor 0 Product 0
[    30.874] (--) evdev: ADS7846 Touchscreen: Found absolute axes
[    30.874] (--) evdev: ADS7846 Touchscreen: Found x and y absolute axes
[    30.874] (--) evdev: ADS7846 Touchscreen: Found absolute touchscreen
[    30.874] (**) Option "SwapAxes" "1"
[    30.874] (II) evdev: ADS7846 Touchscreen: Configuring as touchscreen
[    30.874] (**) evdev: ADS7846 Touchscreen: YAxisMapping: buttons 4 and 5
[    30.874] (**) evdev: ADS7846 Touchscreen: EmulateWheelButton: 4, EmulateWhee                                                                                                             lInertia: 10, EmulateWheelTimeout: 200
[    30.874] (**) Option "config_info" "udev:/sys/devices/platform/soc/fe204000.                                                                                                             spi/spi_master/spi0/spi0.1/input/input0/event0"
[    30.874] (II) XINPUT: Adding extended input device "ADS7846 Touchscreen" (ty                                                                                                             pe: TOUCHSCREEN, id 6)
[    30.874] (II) evdev: ADS7846 Touchscreen: initialized for absolute axes.
[    30.875] (**) ADS7846 Touchscreen: (accel) keeping acceleration scheme 1
[    30.875] (**) ADS7846 Touchscreen: (accel) acceleration profile 0
[    30.875] (**) ADS7846 Touchscreen: (accel) acceleration factor: 2.000
[    30.875] (**) ADS7846 Touchscreen: (accel) acceleration threshold: 4
[    30.876] (II) config/udev: Adding input device ADS7846 Touchscreen (/dev/inp                                                                                                             ut/mouse0)
[    30.876] (**) ADS7846 Touchscreen: Applying InputClass "calibration"
[    30.876] (II) No input driver specified, ignoring this device.
[    30.876] (II) This device may have been added with another device file.

What Pi model are you using?

What are the results of

systemctl status -l volumio-kiosk.service

cat /boot/config.txt

cat /boot/userconfig.txt

I am using raspberry pi 4.

volumio@volumio:~$ systemctl status -l volumio-kiosk.service
● volumio-kiosk.service - Volumio Kiosk
   Loaded: loaded (/lib/systemd/system/volumio-kiosk.service; disabled; vendor p
   Active: active (running) since Mon 2022-06-13 20:16:59 UTC; 10h ago
 Main PID: 974 (startx)
    Tasks: 79 (limit: 2128)
   CGroup: /system.slice/volumio-kiosk.service
           ├─ 974 /bin/sh /usr/bin/startx /etc/X11/Xsession /opt/volumiokiosk.sh
           ├─ 997 xinit /etc/X11/Xsession /opt/volumiokiosk.sh -- /usr/bin/X :0
           ├─ 998 /usr/lib/xorg/Xorg :0 -nocursor -auth /tmp/serverauth.J0Z2LT7W
           ├─1017 /bin/bash /opt/volumiokiosk.sh
           ├─1043 /usr/bin/ssh-agent /opt/volumiokiosk.sh
           ├─1050 /usr/bin/openbox --startup /usr/lib/arm-linux-gnueabihf/openbo
           ├─1051 /usr/lib/chromium-browser/chromium-browser-v7 --enable-pinch -
           ├─1085 /usr/lib/chromium-browser/crashpad_handler --monitor-self --mo
           ├─1087 /usr/lib/chromium-browser/crashpad_handler --no-periodic-tasks
           ├─1091 /usr/lib/chromium-browser/chromium-browser-v7 --type=zygote --
           ├─1092 /usr/lib/chromium-browser/chromium-browser-v7 --type=zygote --
           ├─1094 /usr/lib/chromium-browser/chromium-browser-v7 --type=zygote --
           ├─1124 /usr/lib/chromium-browser/chromium-browser-v7 --type=utility -
           ├─1163 /usr/lib/chromium-browser/chromium-browser-v7 --type=gpu-proce
           ├─1167 /usr/lib/chromium-browser/chromium-browser-v7 --type=utility -
           ├─1168 /usr/lib/chromium-browser/chromium-browser-v7 --type=broker
           ├─1193 /usr/lib/chromium-browser/chromium-browser-v7 --type=renderer
lines 1-23...skipping...
● volumio-kiosk.service - Volumio Kiosk
   Loaded: loaded (/lib/systemd/system/volumio-kiosk.service; disabled; vendor p
   Active: active (running) since Mon 2022-06-13 20:16:59 UTC; 10h ago
 Main PID: 974 (startx)
    Tasks: 79 (limit: 2128)
   CGroup: /system.slice/volumio-kiosk.service
           ├─ 974 /bin/sh /usr/bin/startx /etc/X11/Xsession /opt/volumiokiosk.sh
           ├─ 997 xinit /etc/X11/Xsession /opt/volumiokiosk.sh -- /usr/bin/X :0
           ├─ 998 /usr/lib/xorg/Xorg :0 -nocursor -auth /tmp/serverauth.J0Z2LT7W
           ├─1017 /bin/bash /opt/volumiokiosk.sh
           ├─1043 /usr/bin/ssh-agent /opt/volumiokiosk.sh
           ├─1050 /usr/bin/openbox --startup /usr/lib/arm-linux-gnueabihf/openbo
           ├─1051 /usr/lib/chromium-browser/chromium-browser-v7 --enable-pinch -
           ├─1085 /usr/lib/chromium-browser/crashpad_handler --monitor-self --mo
           ├─1087 /usr/lib/chromium-browser/crashpad_handler --no-periodic-tasks
           ├─1091 /usr/lib/chromium-browser/chromium-browser-v7 --type=zygote --
           ├─1092 /usr/lib/chromium-browser/chromium-browser-v7 --type=zygote --
           ├─1094 /usr/lib/chromium-browser/chromium-browser-v7 --type=zygote --
           ├─1124 /usr/lib/chromium-browser/chromium-browser-v7 --type=utility -
           ├─1163 /usr/lib/chromium-browser/chromium-browser-v7 --type=gpu-proce
           ├─1167 /usr/lib/chromium-browser/chromium-browser-v7 --type=utility -
           ├─1168 /usr/lib/chromium-browser/chromium-browser-v7 --type=broker
           ├─1193 /usr/lib/chromium-browser/chromium-browser-v7 --type=renderer
           └─1615 /usr/lib/chromium-browser/chromium-browser-v7 --type=utility -

Jun 13 20:16:59 volumio startx[974]: Current version of pixman: 0.36.0
Jun 13 20:16:59 volumio startx[974]:         Before reporting problems, check ht
Jun 13 20:16:59 volumio startx[974]:         to make sure that you have the late
Jun 13 20:16:59 volumio startx[974]: Markers: (--) probed, (**) from config file
Jun 13 20:16:59 volumio startx[974]:         (++) from command line, (!!) notice
Jun 13 20:16:59 volumio startx[974]:         (WW) warning, (EE) error, (NI) not
Jun 13 20:16:59 volumio startx[974]: (==) Log file: "/var/log/Xorg.0.log", Time:
Jun 13 20:16:59 volumio startx[974]: (==) Using config directory: "/etc/X11/xorg
Jun 13 20:16:59 volumio startx[974]: (==) Using system config directory "/usr/sh
Jun 13 20:16:59 volumio startx[974]: modprobe: FATAL: Module g2d_23 not found in
~


volumio@volumio:~$ cat /boot/config.txt
initramfs volumio.initrd
gpu_mem=32
max_usb_current=1
dtparam=audio=on
audio_pwm_mode=2
dtparam=i2c_arm=on
disable_splash=1
hdmi_force_hotplug=1
force_eeprom_read=0

include userconfig.txt

#### Volumio i2s setting below: do not alter ####
dtoverlay=iqaudio-dacplus,unmute_amp


volumio@volumio:~$ cat /boot/userconfig.txt
# Add your custom config.txt options to this file, which will be preserved during updates

dtparam=spi=on
config_hdmi_boost=7
hdmi_group=2
hdmi_mode=87
hdmi_drive=2
hdmi_cvt 480 320 60 6 0 0 0
dtoverlay=ads7846
dtparam=cs=1
dtparam=penirq=25
dtparam=penirq_pull=2
dtparam=speed=50000
dtparam=swapxy=0
dtparam=pmax=255
dtparam=xohms=150
dtparam=xmin=200
dtparam=xmax=3900
dtparam=ymin=200
dtparam=ymax=3900