Add a 3.5 inch display

pCP Team 23 April 2022 pCP 8.2.0 Projects

piCoreplayer by default supports the official Raspberry Pi 7" Touch Display . However, there are dozens of screens available for Raspberry Pi. These instructions are for a generic RPi 3.5" Display but may also give clues how to support other displays. A big thanks to nowhinjing for his Waveshare 4.1 TFT + piCorePlayer + Jivelite tutorial which was used as a starting point.

What was used #

Hardware #

Software #

Steps #

Step 1 - Setup piCorePlayer
  Warning
Before continuing, ensure piCorePlayer is connecting to LMS and playing music.
Step 2 - Edit cmdline.txt
  • Access piCorePlayer via ssh—see Access piCorePlayer via ssh .
  • Edit the file cmdline.txt.
  • Add fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo to the end of the first line in cmdline.txt.
[email protected]:~$ m1
[email protected]:~$ c1
[email protected]:/mnt/mmcblk0p1$ vicmd
  Danger
cmdline.txt must be just one long line of boot codes. Adding extra lines will cause boot failure.
[email protected]:/mnt/mmcblk0p1$ cat cmdline.txt

tz=EST-10EST,M10.1.0,M4.1.0/3 dwc_otg.fiq_fsm_mask=0xF host=piCorePlayer dwc_otg.lpm_enable=0 console=tty1 root=/dev/ram0 elevator=deadline rootwait quiet nortc loglevel=3 noembed smsc95xx.turbo_mode=N noswap consoleblank=0 waitusb=2 fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo
  Info

These 3 options may not really be required. Try removing them one at a time. Let us know.

  • fbcon=map:10
  • fbcon=font:ProFont6x11
  • logo.nologo
Step 3 - Edit config.txt
  • Access piCorePlayer via ssh—see Access piCorePlayer via ssh .
  • Edit the file config.txt—see Edit config.txt .
  • Add dtoverlay=piscreen,speed=24000000,rotate=90 between the lines starting with #—Begin-Custom and #—End-Custom in config.txt.
[email protected]:~$ m1
[email protected]:~$ c1
[email protected]:/mnt/mmcblk0p1$ vicfg

The bottom part of config.txt should end up looking like the following.

#Custom Configuration Area, for config settings that are not managed by pCP.
#pCP will retain these settings during insitu-update
#---Begin-Custom-(Do not alter Begin or End Tags)-----

dtoverlay=piscreen,speed=24000000,rotate=90

#---End-Custom-----------------------------------------

piscreen overlay description:

Name:   piscreen
Info:   PiScreen display by OzzMaker.com
Load:   dtoverlay=piscreen,<param>=<val>
Params: speed                   Display SPI bus speed

        rotate                  Display rotation {0,90,180,270}

        fps                     Delay between frame updates

        debug                   Debug output level {0-7}

        xohms                   Touchpanel sensitivity (X-plate resistance)
Step 4 - Resize root partition

Resize the root partition to give extra space to download extensions required by Jivelite.

  • From the [Main Page] click the [Resize FS] button and choose to increase the size to at least 100 MB.
Step 5 - Load Jivelite extensions

The default skin and all its dependencies will be automatically loaded.

  • From the [Main Page] and click the [Extensions] button at the end of the “Additional functions” section.
  • Click the [Available] tab.
  • Select the “pcp-jivelite_default-wav35skin.tcz” extension from the piCorePlayer main repository.
  • Click the [Load] button.

This loads the following extensions.

-----pcp-jivelite_default-wav35skin.tcz
     |-----pcp-jivelite_wav35skin.tcz
     |     |-----pcp-jivelite.tcz
     |     |     |-----touchscreen-xxxxx.tcz
     |     |     |-----libts.tcz
     |     |     |-----pcp-lua.tcz
     |     |     |-----pcp-jivelite_hdskins.tcz
Step 6 - Backup and shutdown
  • Backup and shutdown the Raspberry Pi.

$ pcp bs

Step 7 - Add display
  • Add the display on the Raspberry Pi.
Step 8 - Boot piCorePlayer
  • Power on
  Info
At this stage the touch screen should be working as just a console window, without Jivelite.
Step 9 - Create jivelite.sh script
  • Create a file jivelite.sh in directory /mnt/mmcblk0p2/tce/

$ ce

$ vi jivelite.sh

  • Copy and paste the code below into jivelite.sh

#!/bin/sh

EVENTNO=$(cat /proc/bus/input/devices | awk '/ADS7846 Touchscreen/{for(a=0;a>=0;a++){getline;{if(/mouse/==1){ print $NF;exit 0;}}}}')

export JIVE_NOCURSOR=1
export SDL_VIDEODRIVER=fbcon
export SDL_FBDEV=/dev/fb1
export TSLIB_TSDEVICE=/dev/input/$EVENTNO
export SDL_MOUSEDRV=TSLIB

while true; do
    /opt/jivelite/bin/jivelite
    sleep 3
done
  • Set jivelite.sh as executable.

$ chmod 755 jivelite.sh

  Warning
The script above is assuming the device name is ADS7846 Touchscreen. To determine device name use the command below.
[email protected]:~$ cat /proc/bus/input/devices | grep N:

N: Name="ADS7846 Touchscreen"
Step 10 - Calibrate Touch Display

$ sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/event0 /usr/local/bin/ts_calibrate

You should see the following 2 lines on the screen.

Touchscreen calibration utility
Touch crosshair to calibrate
  • Touch the 5 crosshairs, 4 corners plus center.
xres = 480, yres = 320
Took 10 samples...
Top left : X = 3858 Y =  342
Took 12 samples...
Top right : X =  321 Y =  344
Took 3 samples...
Bot right : X =  315 Y = 3814
Took 12 samples...
Bot left : X = 3841 Y = 3734
Took 8 samples...
Center : X = 2078 Y = 2026
512.168335 -0.130261 -0.000433
-21.502014 0.001012 0.087424
Calibration constants: 33565464 -8536 -28 -1409156 66 5729 65536
Step 11 - Check calibration was successful

$ sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/event0 /usr/local/bin/ts_test

You should see the following 2 lines on the screen.

Touchscreen test program
Touch screen to move crosshair
  • Move the stylus around the screen and the crosshair should follow.
  • Touch [Quit] button on the top right to exit test.
1599049890.101942:    246    164      6
1599049890.121943:    246    164     19
1599049890.142008:    246    164     28
1599049890.161937:    246    164     31
1599049890.181949:    246    165     37
1599049890.207568:    247    165     40
1599049890.221956:    248    165     42
1599049890.242051:    249    165     43
1599049890.261960:    251    165     43
1599049890.281957:    252    165     42
1599049890.304261:    253    165     43
1599049890.321945:    255    165     42
[email protected]:~$
Step 12 - Set Jivelite to Autostart
  • Go to the [Tweaks] > “Jivelite Setup” page.
  • Set “Set Autostart” to “Yes”.
  • Click [Set Autostart] to save.
  • Click [Main Page] > [Reboot].
Step 13 - Setup Jivelite
  • Select language.
Step 14 - Backup
  • Click [Main Page] > [Backup] to save Jivelite settings.

More information #

The Software is provided "as is" without warranty of any kind, either express or implied, including without limitation any implied warranties of condition, uninterrupted use, merchantability, fitness for a particular purpose, or non-infringement.
Raspberry Pi is a trademark of the Raspberry Pi Foundation.