Skip to the content
PCBKitNew board
2 layers30 × 52 mmRaspi ir, the printed circuit board in 3D

Build a universal remote control using a Raspberry Pi with the LIRC library

Size
30 × 52 mm
Copper layers
2
Thickness
1.6 mm
Parts
32
Nets
52
Pads
115
Tracks, vias
208, 40
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
5 Nov 2025
Updated
21 Dec 2025

Overview

Raspi ir is an open-source printed circuit board by custom-ds, from the custom-ds/Universal-Remote-LIRC repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 30 × 52 mm with 32 parts on 52 nets, routed with 208 tracks and 40 vias.

It is built around the PCF8523T, TSOP38238 and HR3P-N4EC-00000, with the MMBT2222A and 1N4007FL among its other parts. Its parts include 10 resistors, 8 connectors, 4 diodes, 4 transistors and 2 capacitors.

Main components

5

README

readme.md

Pi Remote

Hardware

Display is based on the Raspberry Pi Touch Display 2, which is a 720x1280 pixels.

Installing on a Pi

There is an installation script that handles most of the setup on the Raspberry Pi.

Use the Raspberry Pi Imager to install the base load of Raspberry Pi OS. This has been tested on a Pi 3 and Pi 4.

  • Install the 64 bit version of the operating system.
  • Set the time zone and keyboard layout as appropriate.
  • Set a hostname
  • Add a username, and set a password on it.
  • Configure the Wifi network.
  • Enable SSH access with password authentication.

Write out the image to the MicroSD card. Insert the card into the Raspberry Pi, then complete the assembly of the screen to the Pi. Attach the Pi daughter board to interface off to the

Be sure to include the power cable as well as the ribbon cable. Attach the

Once assembly is completed, boot the Pi up

SSH into the new Pi computer using another PC. Update the core operating system before proceeding.

  • sudo apt update
  • sudo apt upgrade -y

RUN THE PACKAGE.PS1

COPY package.zip to the /home/{username}

text
unzip package.zip
chmod u+x install.sh
sudo .\install.sh

Rasperry Pi Configuration

These are the manual steps required. If you use the install.sh, then these steps are generally taken care of for you, and you can skip this section.

Install the required packages

text
sudo apt install xprintidle brightnessctl
sudo apt install python3-pillow
sudo apt install lirc
sudo apt install vim

Configure the Pi to use the GPIO port to send and receive IR signals

sudo vi /boot/firmware/config.txt

Add these two lines to the bottom of the config.txt file

text
dtoverlay=gpio-ir-tx,gpio_pin=17
dtoverlay=gpio-ir,gpio_pin=18

Save the file, then reboot the Raspberry Pi.

sudo shutdown -r now

You should be able to test the IR receiver. The basic form of that is to use the mode2 program to read in the gaps between the pulses and spaces.

mode2 -d /dev/lirc0

Note that it is possible that the devices have been created in other orders, and you may need to modify the device with something like mode2 -d /dev/lirc1. Check the /dev/ directory for possible options.

ls /dev/lirc*

Screen Configuration

Resolution will automatically set, but the rotation angle needs to be corrected for the portrait mode.

Inside of the Raspbian GUI, go to Preferences -> Screen Configuration. Select DSI-1 from the screens list, and drill into Orientation and select Right.

Click the Apply button, and the confirm the change.

LIRC Configurations

LIRC Remote repositories:

wget https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/philips/TIVO34.lircd.conf?format=raw -Otivo34.lircd.conf

Installing the Daemon

The GUI runs as a daemon that will automatically start when the Pi boots up. If the script crashes for any reason, the daemon will automatically restart itself.

Copy the remote.service file into /etc/systemd/system/ folder.

Configure the daemon to start on boot up.

text
sudo systemctl daemon-reload
sudo systemctl enable remote.service

You can start and stop the daemon by running:

text
systemctl start remote
systemctl stop remote

Recording Unknown Remotes

Most of the mainstream remotes can be found in the LIRC repositories around the Internet, but certain less-known remotes either aren't there, or are hidden among random names of companies that might not even be around anymore.

To record, you'll use the Infrared Receiver, along with the irrecord program. irrecord will guide you through the process, which basically involves starting the recording, then pushing the buttons on the remote enough times that it generates templates of the various sequences.

Before you get started though, you should be aware of the standard naming convention for the key presses. It's possible to rename these outstand of the standards, but that requires an extra switch. To get the full list of possible buttons, type:

irrecord --list-namespace

To start recording, type irrecord -d /dev/lirc0 myRemote.conf and follow the prompts, where myRemote is a descriptive name of the specific remote or product that you are recording for.

Once it is finished recording, move the resulting .conf file into /etc/lirc/lircd.conf.d/, then restart the lirc services.

systemctl restart lircd

You should be able to see the new remote when you list the remotes.

irsend LIST "" ""

Then you can list the specific buttons available for the new remote, by listing that configuration.

irsend LIST "myRemote" ""

Parts

32
QtyValueFootprintReferences
41kResistor_SMD:R_0805_2012MetricR6, R7, R9, R10
447Resistor_SMD:R_0805_2012MetricR1, R2, R3, R4
4HR3P-N4EC-00000Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ1, J2, J3, J4
4MMBT2222APackage_TO_SOT_SMD:SOT-23Q1, Q2, Q3, Q4
210nFCapacitor_SMD:C_0805_2012MetricC1, C2
21N4007FLDiode_SMD:D_SOD-123D3, D4
2470Resistor_SMD:R_0805_2012MetricR5, R8
2LEDDiode_SMD:D_0805_2012MetricD1, D2
2~Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ5, J6
1Battery_CellBattery:BatteryHolder_Keystone_3000_1x12mmBT1
1Conn_02x20_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ8
1CrystalCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY1
1LCD PowerConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_HorizontalJ7
1PCF8523TPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1TSOP38238OptoDevice:Vishay_MINICAST-3PinU1

Questions

How big is the Raspi ir PCB?

It measures 30 × 52 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Raspi ir use?

32 parts, built around the PCF8523T, TSOP38238, HR3P-N4EC-00000 and MMBT2222A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Raspi ir KiCad files?

From the custom-ds/Universal-Remote-LIRC repository on GitHub, at the commit this page was made from: the board is PCB/raspi-ir/raspi-ir.kicad_pcb and its schematic PCB/raspi-ir/raspi-ir.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Raspi ir design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers62 × 83 mmVehicle Power Switch, the printed circuit board in 3D

    Vehicle Power Switch

    custom-ds/Vehicle-Auto-On

    With the Arduion programmer board loaded with the jtag2updi software, and the Pin 6 from the Arduino connected to the Reset line on the ATTiny404, you can Build and Program directly inside of the Visual Studio Code.

    49 partsGPL-3.0
  • 2 layers76.2 × 114.3 mmMMTR AFE 00 04 TORELEASE, the printed circuit board in 3D

    MMTR AFE 00 04 TORELEASE

    jduffy105/HydraMeter_0.4

    Open source multimeter

    312 parts178CERN-OHL-S-2.0
  • 4 layers80 × 100 mmHarp treadmill, the printed circuit board in 3D

    Harp treadmill

    AllenNeuralDynamics/harp.device.treadmill-driver

    0326: a Harp-compatible device for controlling an instrumented mouse treadmill

    173 parts4
  • 2 layers50.1 × 88.2 mmPtFlex, the printed circuit board in 3D

    PtFlex

    custom-ds/ptFlex

    ptFlex tracker board starting with version 2.0 of the hardware, which is based on the improvements found in the ptSolar tracker.

    76 parts3GPL-3.0
  • 2 layers143.2 × 85.8 mmDongle, the printed circuit board in 3D

    Dongle

    marx-merten/zmk-macropad

    35 parts3
  • 4 layers71.1 × 149.9 mmLCMTR 01 01, the printed circuit board in 3D

    LCMTR 01 01

    jduffy105/HydraMeter_L_DesignReview_0.1.1

    337 parts1
  • 2 layers130 × 105 mmDistributeur, the printed circuit board in 3D

    Distributeur

    jmolas42/Cat-Feeder

    automatic cat feeder

    90 parts1
  • 4 layers70 × 168 mmValve controller, the printed circuit board in 3D

    Valve controller

    AllenNeuralDynamics/harp.device.valve-controller

    0368: a 16-channel valve controller

    224 parts