How to use a ILI9488 SPI display on a Raspberry Pi Zero 2W with moOde Audio.
ATTENTION! This procedure only works correctly on 32-bit systems! Unfortunately, I have not yet found a solution to use this display on a 64-bit system! If anyone has the solution, I would be happy if they would also provide it to me.
First, we need to make the hardware connections between the ILI9488 display and the Raspberry Pi Zero 2W.
These are the hardware connections I used:

After making the hardware connections and the first boot, I did this.
- Edit the file /boot/config.txt
sudo nano /boot/config.txt
- And if you find the following line:
dtparam=spi=on
- Put a # in front of that line so that the line looks like this:
#dtparam=spi=on
- Next is the installation of the FBCP driver and its configuration for the ILI9488 display.
cd ~
sudo apt update
sudo apt install libraspberrypi-dev
sudo apt install cmake git build-essential
- After installing the needed tools, clone the project:
git clone https://github.com/juj/fbcp-ili9341.git
- Enter the fbcp-ili9341 source folder.
cd fbcp-ili9341
- Create a new directory named "build".
mkdir build
- Change your current directory to the "build" directory you just created.
- This is where the compilation will happen.
cd build
- Configure the build using CMake, with specific settings tailored to your hardware.
cmake -DILI9488=ON -DGPIO_TFT_DATA_CONTROL=24 -DGPIO_TFT_RESET_PIN=25 -DSPI_BUS_CLOCK_DIVISOR=8 -DSTATISTICS=0 ..
- Explanation of options:
Option Meaning -DILI9488=ON Enables support for the ILI9488 display (default is ILI9341). -DGPIO_TFT_DATA_CONTROL=24 Uses GPIO 24 as the DC (Data/Command) pin for SPI communication. -DGPIO_TFT_RESET_PIN=25 Uses GPIO 25 as the Reset pin for the display. -DSPI_BUS_CLOCK_DIVISOR=8 Sets SPI clock divisor (base 400 MHz ÷ 8 = 50 MHz SPI speed). -DSTATISTICS=0 Disables printing performance stats to the console. .. Refers to the parent directory containing the source code.
- Build (compile) the software using the make system generated by CMake.
make -j
-
At this point we have compiled the FBCP driver for the ILI9488 SPI display.
-
If you are using moOde Audio Player, you will need to delay the driver startup so that the moOde graphical interface is already active and only then start the driver. In this case, you will not do the automatic startup from the /etc/rc.local file!
-
If you want to use the display for moOde Audio, you will first need to activate it from the moOde Audio web interface:
CONFIGURATION -> SYSTEM-> Peripherals Display -> ON Wake on play -> ON
- Create a script named:
sudo nano /home/USER/start_fbcp.sh
- Which should have the following content:
#!/bin/bash
echo "$(date): Script start" >> /home/USER/fbcp.log
sleep 40
echo "$(date): Sleep ended, starting fbcp-ili9341" >> /home/USER/fbcp.log
exec /home/USER/fbcp-ili9341/build/fbcp-ili9341 --fbdev /dev/fb0 --display-rotation=270
- This will cause the graphics driver to start 40 seconds after boot, enough time for moOde Audio to start the graphical interface.
wget https://raw.githubusercontent.com/DaradiciLevente/ILI9488-on-Raspberry-Pi-Zero-2W-with-moOde-Audio/refs/heads/main/start_fbcp.sh
- Make sure the script is executable:
chmod +x /home/USER/start_fbcp.sh
- Create the file:
sudo nano /etc/systemd/system/fbcp-ili9341.service
- Add this content to the file:
[Unit]
Description=fbcp-ili9341 copy framebuffer for ILI9486/ILI9488
After=multi-user.target
[Service]
Type=simple
ExecStart=/home/levente/start_fbcp.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
- Save the file.
https://raw.githubusercontent.com/DaradiciLevente/ILI9488-on-Raspberry-Pi-Zero-2W-with-moOde-Audio/refs/heads/main/etc/systemd/system/fbcp-ili9341.service
- And after that from the console:
sudo systemctl daemon-reload
sudo systemctl enable fbcp-ili9341.service
sudo systemctl restart fbcp-ili9341.service
- Status check:
sudo systemctl status fbcp-ili9341.service
- Check the created log:
cat /home/USER/fbcp.log
- Final test:
sudo reboot
- The PCM5102A DAC was connected to the Raspberry Pi Zero 2W the following way:

- To enable the PCM5102A DAC in the moOde Audio interface, go to:
CONFIGURE -> SYSTEM -> AUDIO
- And under
Named I2S device
- You should choose:
Generic-2 I2S(i2s-dac)
-
Then reboot Audio mode.
-
You can see more details in this video:
- If you want the music to start automatically after boot, enable autostart on boot here:
- In the /bin folder of this repository, I provide the precompiled version of the fbcp driver for the ILI9488 display.
wget https://raw.githubusercontent.com/DaradiciLevente/ILI9488-on-Raspberry-Pi-Zero-2W-with-moOde-Audio/main/bin/fbcp-ili9341
- After copying it to your system, you will need to make it executable:
sudo chmod +x fbcp-ili9341
- After that you can run the executable directly from the console to test it:
sudo ./fbcp-ili9341
sudo mv fbcp-ili9341 /usr/local/bin/
sudo fbcp-ili9341
- I have made my /boot/config.txt file available:
wget https://raw.githubusercontent.com/DaradiciLevente/ILI9488-on-Raspberry-Pi-Zero-2W-with-moOde-Audio/refs/heads/main/boot/config.txt
Edit the file and change the initial resolution in lines 17,18 and 19.
- I made a script that will auto-compile the file for you:
wget https://raw.githubusercontent.com/DaradiciLevente/ILI9488-on-Raspberry-Pi-Zero-2W-with-moOde-Audio/refs/heads/main/auto_install_fbcp.sh
chmod +x auto_install_fbcp.sh
./auto_install_fbcp.sh
- I found the material that helped me solve the problem here: