RPI4B, Volumio 3, can't get the DSI Waveshare 4.3 display to rotate

Hi all, I’m new to volumio but it rocks! I’m building a custom stereo for my daughter in a beautifully carved old wooden small chest. All is going well but for one minor thing: I can’t get the display to rotate the image by 180°, which would lead to much better cable management.

My setup:

reading through this forum for other display (I couldn’t find anything for this one) I noticed you usually can get the display to rotate, but then need to fix the touchscreen.
Problem is, I can’t even get it to rotate, so I have not bothered with touch screen yet.

What I tried:

  • add display_rotate = 2, as per wiki linked above (I tried as well display_lcd_rotate =2 without success)
    in the userconfig.txt file
  • changing settings in the touch display plugin

I can’t get it to rotate. Any hint? What could I try?

but every time it reboots with the default rotation.

Does rotating by 90 or 270 deg. work?

Please post the output of

cat /boot/userconfig.txt

cat /boot/config.txt

and

lsmod

hi, thanks for replying.

I never tested 90 and 270 form the “Touch Display” plugin, and lo and behold: those work! Both display rotation AND touchscreen rotation, so they work fine.

It’s only 180 that does not work :frowning: which is the one I need. here the output from ORIGINAL file, no changes, without adding any lcd_rotate etc

config.txt

DO NOT EDIT THIS FILE

APPLY CUSTOM PARAMETERS TO userconfig.txt

initramfs volumio.initrd
gpu_mem=128
gpu_mem_256=32
gpu_mem_512=32
gpu_mem_1024=128
max_usb_current=1
[pi5]
usb_max_current_enable=1
[all]
include volumioconfig.txt
include userconfig.txt

userconfig.txt: nothing, just this comment.

Add your custom config.txt options to this file, which will be preserved during updates

NB: Here is where I tried to put display_rotate = 2 when the touch display plugin didn’t work as I hoped. That did not work either

finally lsmod:

volumio@volumio:~$ lsmod
Module Size Used by
nls_utf8 16384 1
sg 28672 0
hid_logitech_hidpp 40960 0
hid_logitech_dj 32768 0
cmac 16384 1
bnep 20480 2
nft_chain_nat 16384 4
xt_REDIRECT 16384 1
nf_nat 49152 2 nft_chain_nat,xt_REDIRECT
nf_conntrack 135168 2 xt_REDIRECT,nf_nat
nf_defrag_ipv6 20480 1 nf_conntrack
nf_defrag_ipv4 16384 1 nf_conntrack
xt_tcpudp 16384 1
nft_compat 20480 2
nf_tables 237568 5 nft_compat,nft_chain_nat
nfnetlink 20480 2 nft_compat,nf_tables
8021q 32768 0
garp 16384 1 8021q
stp 16384 1 garp
llc 16384 2 garp,stp
joydev 20480 0
brcmfmac 331776 0
hci_uart 40960 0
btbcm 20480 1 hci_uart
bluetooth 507904 24 hci_uart,bnep,btbcm
snd_bcm2835 24576 2
brcmutil 20480 1 brcmfmac
bcm2835_codec 45056 0
cfg80211 815104 1 brcmfmac
snd_pcm 122880 1 snd_bcm2835
bcm2835_isp 32768 0
rpivid_hevc 45056 0
snd_seq 69632 0
bcm2835_v4l2 45056 0
v4l2_mem2mem 40960 2 rpivid_hevc,bcm2835_codec
ecdh_generic 16384 2 bluetooth
snd_seq_device 16384 1 snd_seq
ecc 40960 1 ecdh_generic
bcm2835_mmal_vchiq 36864 3 bcm2835_isp,bcm2835_codec,bcm2835_v4l2
videobuf2_vmalloc 16384 1 bcm2835_v4l2
videobuf2_dma_contig 20480 3 rpivid_hevc,bcm2835_isp,bcm2835_codec
videobuf2_memops 16384 2 videobuf2_dma_contig,videobuf2_vmalloc
snd_timer 36864 2 snd_seq,snd_pcm
raspberrypi_ts 16384 0
raspberrypi_hwmon 16384 0
rfkill 32768 6 bluetooth,cfg80211
videobuf2_v4l2 32768 5 rpivid_hevc,bcm2835_isp,bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem
videobuf2_common 65536 9 rpivid_hevc,bcm2835_isp,bcm2835_codec,videobuf2_dma_contig,videobuf2_vmalloc,videobuf2_memops,bcm2835_v4l2,v4l2_mem2mem,videobuf2_v4l2
videodev 266240 7 rpivid_hevc,bcm2835_isp,bcm2835_codec,videobuf2_common,bcm2835_v4l2,v4l2_mem2mem,videobuf2_v4l2
snd 94208 9 snd_seq,snd_timer,snd_seq_device,snd_bcm2835,snd_pcm
i2c_bcm2835 16384 0
vc_sm_cma 32768 2 bcm2835_isp,bcm2835_mmal_vchiq
rpi_backlight 16384 0
raspberrypi_gpiomem 16384 0
mc 57344 7 rpivid_hevc,bcm2835_isp,bcm2835_codec,videobuf2_common,videodev,v4l2_mem2mem,videobuf2_v4l2
backlight 20480 1 rpi_backlight
nvmem_rmem 16384 0
uio_pdrv_genirq 16384 0
uio 24576 1 uio_pdrv_genirq
i2c_dev 16384 0
ip_tables 28672 0
x_tables 36864 4 ip_tables,nft_compat,xt_tcpudp,xt_REDIRECT
ipv6 520192 70
squashfs 53248 1
overlay 118784 1
volumio@volumio:~$ exit
exit

Please check if adding

display_lcd_rotate=0x30000

to “/boot/userconfig.txt” would rotate the display (it will not rotate touch).

Thanks!! This works, but it does not rotate touch as expected.
So I did the rotation with “CalibrationMatrix” as per 4.3 DSI waveshare wiki, and now all works as desired!

Many many thanks @gvolt , really appreciate it!

Just for my understanding, what does 0x30000 does? Because I google it but couldn’t find any indication.

It combines flipping the display horizontally (0x10000) and vertically (0x20000) which has the same effect as rotating by 180 deg.

What you could also try instead is adding

dtoverlay=vc4-kms-v3d
dtoverlay=vc4-kms-dsi-7inch

to “/boot/userconfig.txt” and set rotation from the plugin’s config page. Beforehand you would have to remove your own “CalibrationMatrix” modification, too.