This is a better version of a Raspberry Pi Police Radio as we are using OP25 alone, in lieu of DSD paired with GQRX. The DSD/GQRX combo was initally chosen because of its visual impression, however OP25 works much better, it doesnt suffer from having to reconfigure the RTL-SDR every time should it loose parity on the device. Also It can be just turned off if needed but (not recommended), or if loss of power occurs, it doesnt need any configuration data from the user, it just starts (zero touch). OP25 doesnt have the choppy audio issues. It decodes P25 phase 2 as well as phase 1, unlike DSD, it auto-corrects frequency offsets, and it trunk tracks. This is a much more simplified aproach and is also more reliable.

Steps:
1- Get a Raspberry pi3b+, power supply, and an enclosure:
https://www.microcenter.com/product/601561/raspberry-pi-3-model-b

https://www.newegg.com/p/177-068X-00005?item=9SIAYG4FBP3864
(you can get these in many places)

https://www.ebay.com/itm/282900641404?chn=ps&mkevt=1&mkcid=28
I used this exact style of case, however I dont think micro center carries them any longer.
I did modify it to accomodate the lcd screen by using a dremil and taking most of the top off.

2. Purchase an RTL-SDR dongle, I have tried a few, they are all prety good:
https://www.walmart.com/ip/Magazine-Blue-RTL-SDR-RTL2832U-1PPM-TCXO-HF-BiasT-SMA-Software-Radio-Receiver-Antenna-Kit/384628563

You can also get them in alot of different places.

3- Install Raspian OS:

You can use raspberry pi imager to download and install the OS

https://www.raspberrypi.org/blog/raspberry-pi-imager-imaging-utility/

4- Obtain the 3.5 inch touchscreen display:
https://www.waveshare.com/3.5inch-rpi-lcd-a.htm
Note: the newer drivers on this are real slow and slicy a better driver for these which is normal:
Install them like this:
----------------------------------------------------
sudo rm -rf LCD-show-retropie
git clone https://github.com/lcdwiki/LCD-show-retropie.git
chmod -R 755 LCD-show-retropie
cd LCD-show-retropie/
----------------------------------------------------

LCDON.sh:

-----------------------------------------

#! /usr/bin/sh

cd /home/pi/OCD-show-retropie/

sudo ./LCD35-show 180

-----------------------------------------

LCDOFF.sh

-----------------------------------------

#! /usr/bin/sh

cd /home/pi/OCD-show-retropie/

sudo ./LCD-hdmi

-----------------------------------------

5- Install  Libreoffice:
---------------------
sudo apt update
sudo apt upgrade
sudo apt install libreoffice
---------------------
6- Install Onboard: (On Screen Keyboard)
---------------------
Open the main menu.
Go to Preferences > Add/Remove Software.
In the search field, type “matchbox” and press Enter.
In the results, find the “on-screen keyboard” package. The package name is something like matchbox-keyboard. ...
Click on “Apply” to install it
---------------------
7- Install OP25:
---------------------
git clone https://github.com/boatbod/op25.git
cd op25
./install.sh

8- Set it up:
  a. I created an op.sh file in the /home/pi/ folder:
 -----------------------------------
 #! /usr/bin/sh
 cd /home/op25/op25/gr-op25_repeater/apps/
 lxterminal -e ./op25.sh --geometry=77x20
 ----------------------------------- 
  b. I created a desktop file to point to the op.sh script file:
------------------------------------
[Desktop Entry]
Name=OP25
Comment=Run OP25
Terminal=false
Exec=lxterminal -e /home/pi/op.sh
Type=Application
Encoding=UTF-8
Catagories=None;  
------------------------------------
 
 9-Using Libreoffice, open and edit /home/op25/op25/gr-op25_repeater/apps/trunk.tsv to reflect the frequency that you have chosen to listen to directly or trunk from.
------------------------------------
If you wish to start the program up on boot up, I simply copied op25.desktop into /etc/xdg/autostart

You can also make the folder:

mkdir /home/pi/.config/autostart

and place the desktop file in there

--------------------------------------------


To get your scope to show up on boot, then edit the /home/op25/op25/gr-op25_repeater/apps/op25.sh file and add -P fft
Example:
./tx.py --nocrypt --args "rtl" --gains 'lna:36' -S 960000 -X -P fft -q -1 -v 1 -2 -V -U -T trunk.tsv 2> stderr.2

If you want to install a fan, they are easily obtained along with heatsinks at Microcenter - No I dont work there, I cite them alot because they are close by and support alot of raspi stuff.
The fan im using, I soldered directly to the usb power from the motherboard and epoxy'd it to the side of the case. I did that because the 3.5" screen takes up all of the gpio lines and the usb power is the same voltage anyway. I works just fine, not just because of an observation of a few days, an observation of about a year with multiple devices plugged in parallel to the port its using.
Remeber to chmod +x or 755 your files so you can run them, sometimes I have to sudo su root to get things done. Check permissions make sure you set everything to (Anyone).
One more thing, the little hamburger speaker is plugged into the analog output, so in raspi-config, make sure that analog out is selected, and if you install pauvcontrol, that its ramped up if its not loud enough
Speaker:
www.walmart.com/ip/Manunclaims-Music-Speaker-Mini-Hamburger-Shape-Rechargeable-Travel-Aux-Speaker-Wired-3-5mm-Headphone-Jack-for-iPad-Laptop-iPhone-Tablet-PC/767814234

Install volume control for pulse audio:
--------------------------
sudo apt-get install pavucontrol paprefs
--------------------------
PulseAudio should already be installed in the current version of Rasbpian.

This video is marginal, however it shows it in operation, forgive me for using my big bulky tablet to record it:
Video:
https://odysee.com/@Nothoro:1/RaspiOP25:2
Or

One issue that you may encounter, the program quits immediately after it starts. There are two reasons this happens, the first one is that it is not seeing your RTL-SDR dongle, and the other most common reason is the font in the terminal is too large. To reduce the font, you probably want to do that on your monitor as opposed to your lcd screen. Start the program on your monitor, and click on the Edit/Preferences/Terminal Font, and reduce it to about 7. Then it should be fine.

This whole process is ephemeral, all you need to do from there is copy/backup your image.

Update - Sometimes thermal dynamics play a role when the unit is started, usually about 20~40 seconds within a cold start. The op25 software does auto-correct however this auto-correction doesn't always work as anticipated. To fix this, its very simple. After the device has been on for about a minute, just exit op25 and restart it, then it should be good.