Piaware LCD

What program is used to display the status on a piaware receiver with an LCD?
How is it started?
I have a receiver running piaware 6.1 with an LCD and it works okay.
I have another receiver I’m building, but I can’t get the LCD to work with piaware 7.1.


if you want to display on a small LCD like the waveshare 3.5" (or compatible) then you need the special build for the LCD. The non-LCD version of 7.1 will not display on the LCD, you just get a blank screen. I have not tried an update from the older version of the LCD. In any case the newer SD card build is best as it includes the change to debian bullseye.

@eric1tran posted links for the 7.0 version.


I found if you edit the link you can get the 7.1 directly now. The .info file indicates it has the complete set of 7.1 SW, but I did not try it yet, I only built the new SD card using the 7.0 version and upgraded.


I got the LCD working with the 7.1 LCD version of piaware.
Is there a way to make the LCD stay on all the time?
It goes blank after a short time and you have to touch the screen to make it come back on.
Is there a way to rotate the orientation of the display?


@astramechanic … I did some research and managed to disable the blanking (screen was blank but backlight was on, now the screen stays on all the time).

First I turned off blanking with raspi-config, under the ‘display options’ but this did not stop the blanking. So not sure if this step is needed. EDIT: you do need to disable blanking using raspi-config as otherwise the DPMS setting overrides the setting for the display. Set under D2 then D4. It then creates 10-blanking.conf

Then I adjusted the X11 parameters

sudo ls /etc/X11/xorg.conf.d/

returned the following files

10-blanking.conf 50-fb-tft.conf 60-fb-hdmi.conf 98-35tft-calibration.conf

I timed the blanking and it was 5 minutes which matched the value in the config file. So then after creating a backup I edited the 50-fb-tft.conf which is the file for the LCD and changed the BlankTime to 1 from 5 and then it was taking 1 minute so this seemed like the right approach. So then I changed it to 0 and so far it seems to be working, no blanking after observing the display for more than 33 minutes at time of writing.

The 50-fb-tft.conf file now contains.

Section "ServerLayout"
    Identifier "TFT32"
    Screen 0 "ScreenTFT" 0 0
    Option "BlankTime" "0"
    Option "StandbyTime" "5"
    Option "SuspendTime" "5"
    Option "OffTime" "5"

Section "ServerLayout"
    Identifier "TFT35"
    Screen 0 "ScreenTFT" 0 0
    Option "BlankTime" "0"
    Option "StandbyTime" "5"
    Option "SuspendTime" "5"
    Option "OffTime" "5"

You should not need to edit the Standby, Suspend and Offtime as these only apply to DPMS and that is disabled in the file 10-blanking.conf.

While in theory the xset command should do this at run time I could not make that work at all as it could not open the display. Something related to permissions I would guess as I an doing this via SSH.

I would love to flip my display 180 degrees as I want the power to come in from the top based on where I have the display physically located.

I tried a lot of different methods and finally came up with one that worked on my pi2 Model B v1.1.

edit /boot/config.txt
and add the rotate option to the dtoverlay command

# configure the LCD

So now my display is flipped so the power connector is at the top as desired.

Now I need to work out how to alter the touchscreen to match. :crazy_face: as the touchscreen is now configured upside down. I will play with editing 98-35tft-calibration.conf

The other methods I tried were using: xrandr (could not open the display, maybe this is needed on a pi4 though); lcd_rotate (I think may work if is is a I2C connected display but mine is SPI)
and some others.


Ok… now the touchscreen.

sudo nano /etc/X11/xorg.conf.d/98-35tft-calibration.conf

and replace the transformation matrix with

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        MatchLayout     "TFT35"
        Option "Calibration" "219 3835 3984 219"
        Option  "TransformationMatrix" "0 1 0 -1 0 1 0 0 1"
        Option  "CalibrationMatrix" "1.166  0 -0.0835 0 1.145 -0.070 0 0 1"

for reference my orginal matrix was

Option "TransformationMatrix" "0 -1 1 1 0 0 0 0 1"

The default flightaware LCD setting seems to be 90 degrees clockwise. I flipped mine to 270 degrees. Maybe other rotations should work although maybe the visuals would be affected as the screen is laid out for a landscape page.


I went thru the steps you gave, and it works. It has been 30+ minutes, and the screen hasn’t blanked.
I had been able to rotate the LCD image, but the touch wouldn’t work anymore. By following your steps, it now works.
I am hoping to rotate the display to portrait view as it will work better with the case I am making for it. If not possible, I will have to change my case.
I am attaching a picture of my setup. I am using a waveshare 3.2inch RPi LCD (B), 320×240.

Your help is greatly appreciated.


Nice setup and case. Very neat and tidy. What HW version of pi are you using ?

I tried to rotate to portrait but it appears the page itself has a fixed aspect ratio and would not render properly into the rotated display. I could see that the text was off the side of the screen, so a modification of the code for the page is required. It worked fine for the command line… The gui appears to be located here as Tcl scripts and no doubt this could be adjusted for a different screen format.



EDIT: I reviewed the scripts. It looks like a fair amount of work to rotate to portrait as the code has been nicely optimised to make the display look good on the landscape mode on the 2 small displays. It looks like that as well as adjusting the aspect ratio, the grid, font sizes and icon sizes all might need to be adjusted. Unless one gets lucky by adjusting the ratio in ‘main’.

If this were done then the parameters could be adjusted to:

and the corresponding rotation for the touch screen would be:
1 0 0 0 1 0 0 0 1

if you want a generic formula for the rotation matrix it is the formula for rotation around the Z axis

For rotation of angle θ

cos(θ) -sin(θ)  0 
sin(θ)  cos(θ)  0 
  0       0     1

I’m using a Pi 3 Model B V1.2. I don’t think trying to rotate the screen to portrait will work.
I’m going to redesign my case for landscape mode.
Thanks again for your help.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.