/picade-hat

Picade HAT input daemon and setup script

Primary LanguagePythonMIT LicenseMIT

Picade HAT

This repository contains the software you need to get started with your Picade HAT.

Before you continue, you should make sure that you're running the latest RetroPie, have your Pi connected to the internet and have a keyboard ready to run through the setup steps.

Preparing RetroPie

Create yourself a new RetroPie SD card with the image found here: https://retropie.org.uk/download/

If you're using a Pi 3, or a Pi with a wireless adaptor, you can also drop a wpa_supplicant.conf into the BOOT folder.

On first boot, at the control config screen hit F4 to exit to the command-line.

WiFi

If you dropped a wpa_supplicant.conf into /boot, it wont be installed by default, yet, but now it's easy to set up your WiFi like so:

sudo cp /boot/wpa_supplicant.conf /etc/wpa_supplicant/
sudo ifdown wlan0
sudo ifup wlan0

One-line Installation (Recommended)

Before setting up your RetroPie config, just hit F4 and then type:

curl -sS https://get.pimoroni.com/picadehat | bash

Setup will continue automatically. When it's finished you can return to EmulationStation by typing:

emulationstation

And bind your input as normal!

Automatic Installation

  • Clone this GitHub repository somewhere onto your Pi: git clone https://github.com/pimoroni/picade-hat

  • Enter the new directory: cd picade-hat

  • Run the installer: sudo ./setup.sh

  • Enjoy!

Manual Installation

Use one of the methods above unless you really know what you're doing. The below steps let you pick and choose/customise the install to your needs.

Required Software

You'll need to install evdev first:

sudo dpkg -i dependencies/python-evdev_0.6.4-1_armhf.deb

Input Daemon

You will need to install the Picade HAT "daemon", (picadehatd), this involves three files; the init script, a udev rule and the daemon itself:

sudo cp daemon/etc/init.d/picadehatd /etc/init.d/
sudo cp daemon/etc/udev/rules.d/10-picadehatd.rules /etc/udev/rules.d/
sudo cp daemon/usr/bin/picadehatd /usr/bin/
sudo systemctl daemon-reload
sudo systemctl enable picadehatd
sudo service picadehatd start

Power-off Script

The shutdown daemon will watch Picade HAT's power button and call sudo shutdown -h now if it is held for 3 seconds.

In order for your Pi to fully power down, you will need to add a script into /lib/systemd/system-shutdown/

This script is provided for you, so you can just:

sudo cp daemon/lib/systemd/system-shutdown/picade-hat-poweroff /lib/systemd/system-shutdown/

And make sure it's executable with:

sudo chmod +x /lib/systemd/system-shutdown/picade-hat-poweroff

Sound & Volume Control

You will need to configure some things to get functioning sound and volume control with Picade HAT. We're going to trick EmulationStation into thinking our new software mixer, needed to control the volume of the i2s audio, is the old "PCM" sound device your Pi would normally have.

First you need to edit /boot/config.txt so that regular audio is disabled and i2s is enabled, like so:

#dtparam=audio=on
dtoverlay=i2s-mmap
dtoverlay=hifiberry-dac

(Note, that's i2s-mmap, not i2c-mmap!)

Next, for volume control to work you need to edit /etc/asound.conf:

(Note: you can find this file in daemon/etc/asound.conf)

pcm.real {
  type hw
  card 0
  device 0
}

pcm.dmixer {
  type dmix
  ipc_key 1024
  ipc_perm 0666
  slave.pcm "real"
  slave {
    period_time 0
    period_size 1024
    buffer_size 8192
    rate 44100
  }
  bindings {
    0 0
    1 1
  }
}

ctl.dmixer {
  type hw
  card 0
}

pcm.softvol {
  type softvol
  slave.pcm "dmixer"
  control {
    name "PCM" # Masquerade as the default "PCM" sound device on Pi (for EmulationStation)
    card 0
   }
}

pcm.!default {
   type plug
   slave.pcm "softvol"
}

Although optional, it is also possible to control the volume in-game via dedicated buttons wired to bcm13 (decrease volume) and bcm26 (increase volume). If you opt to do so, you will need to copy over the picade-mixvolume script provided in this repository:

sudo cp daemon/usr/bin/picade-mixvolume /usr/bin/

And make sure it's executable with:

sudo chmod +x /usr/bin/picade-mixvolume

What this script does is passing commands to amixer and increase/decrease the volume in 10% increments. As such you will need to make sure alsa-utils is installed on your system (it should be by default in Retropie).

And, finally, reboot and configure your controls!