How to setup piCorePlayer Jivelite for use with a Waveshare 5.5" AMOLED touchscreen

piCorePlayer is a high quality audio player via Squeezelite. The use of a DAC will greatly improve sound quality (up to to 384 kHz /24 bit). The player can be controlled via touch screen, phone, tablet, iPad, computer or IR/USB remote control. If you add more players you can enjoy a advanced multi-room audio system that can play in sync or play different streams in separate zones. - PiCorePlayer website

 

The challenge:

  • The Waveshare 5.5" AMOLED touchscreen is a gorgeous display, sadly with only one resolution setting 1080x1920.
  • The default 1920x1080 display setting is too big for the piCorePlayer Jivelite touch interface skins. Everything is too small and needs to scale.
  • Scaling the display or interface independently would cause the touchscreen calibration settings to be incorrect.
  • After many hours the solution is to set a custom touch display size with JL_SCREEN_WIDTH, JL_SCREEN_HEIGHT and fbset.

Notes:

  • This is a personal attempt to make it work. No in depth testing has been done, the basics seem to work very well. All feedback to improve the installation will be appreciated. If you cannot get it to work with the instructions below - do not contact us.

Setup:

  • Tested on a Raspberry Pi 3A+ with IQAudio DAC+ connected to Waveshare 5.5" AMOLED Touchscreen

1. Edit /boot/config.txt 

  • Edit the /boot/config.txt file on your piCorePlayer and add the following between #---Begin-Custom-(Do not alter Begin or End Tags)----- and #---End-Custom----------------------------------------
gpu_mem=128 # comment out the default gpu_mem=16 in config.txt
disable_splash=1
avoid_warnings=2

max_usb_current=1
config_hdmi_boost=10
disable_overscan=1

max_framebuffer_height=1920
hdmi_group=2
hdmi_mode=87
hdmi_timings=1080 1 26 4 50 1920 1 8 2 6 0 0 0 60 0 135580000 3
display_rotate=1
lcd_rotate=1 # comment out the default lcd_rotate=2 in config.txt

2. Create custom jivelite.sh startup script

  • Create a new custom jivelite.sh startup script with:
sudo vi /mnt/mmcblk0p2/tce/jivelite.sh 
  • Then add the following :
#!/bin/sh

# Disable mouse pointer
export JIVE_NOCURSOR=1
# Set touch calibration file
TSLIB_CALIBFILE=/usr/local/etc/pointercal
# Jivelite interface framerate
export JIVE_FRAMERATE=22
# Set 32bit color 
/usr/sbin/fbset -depth 32

# Set Touch input device 
export TSLIB_TSDEVICE=/dev/input/event0 # This might be event1 in some cases
export SDL_MOUSEDRV=TSLIB

# Define custom JogglerSkin/Grid Skin size
# The default 1920x1080 skin is too small - scale to 853x480. This could be any size to scale interface.
export JL_SCREEN_WIDTH=853
export JL_SCREEN_HEIGHT=480

# Set custom screen resolution
/usr/sbin/fbset -xres 853 -yres 480

# Run Jivelite
while true; do
    /opt/jivelite/bin/jivelite >> /var/log/jivelite.log 2>&1
    sleep 3
done

3. Calibrate touchscreen

  • Set Jivelite not to run on startup in the PCP web config panel or comment out the # Run Jivelite section in the jivelite.sh script above and reboot. 
  • Then run the calibration with the new custom screen width and height set:
sudo TSLIB_TSDEVICE=/dev/input/event0 /usr/local/bin/ts_calibrate 
  • When calibration is complete, save your new settings with:
sudo filetool.sh -b 
  • You will need to set Jivelite to run on startup in the PCP web config panel or add the # Run Jivelite section in the jivelite.sh script above and reboot. 
  • The new skin resolution will show in the Jivelite Skin menu and auto selected on reboot.

Tags: