Skip to content

Open source game controller firmware, with support for PS3, PS4 and Switch

License

Notifications You must be signed in to change notification settings

Project-Alpaca/passinglink

 
 

Repository files navigation

Passing Link

build

Passing Link is an open source game controller firmware implementation focused on minimizing latency and supporting inexpensive development boards. Currently, the latency as measured by WydD's usblag project is around 0.95ms.

Features

  • USB output
  • Razer Panthera touchpad support
  • USB firmware upgrade support

Future Goals

  • Unimplemented hardware support
    • PS4 audio output
  • Act as a USB decoder/converter
    • Input/output over SPI
    • USB input

Compiling

# Install tool dependencies
apt-get -y install --no-install-recommends build-essential cmake git ninja-build python3-pip python3-setuptools python3-pyelftools wget

# Install the Zephyr SDK
ZEPHYR_SDK_VERSION=0.11.1
export ZEPHYR_SDK_INSTALL_DIR=~/zephyr-sdk
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v${ZEPHYR_SDK_VERSION}/zephyr-sdk-${ZEPHYR_SDK_VERSION}-setup.run
sh zephyr-sdk-${ZEPHYR_SDK_VERSION}-setup.run -- -d $ZEPHYR_SDK_INSTALL_DIR

# Install west, Zephyr's source management tool
pip3 install west

# Checkout the source
west init -m https://github.com/passinglink/passinglink passinglink
cd passinglink
west update

# Build and flash
cd passinglink
export BOARD=pl_bluepill
./scripts/build.sh
# `ninja -C build/$BOARD menuconfig` to configure
./scripts/flash.sh

# If you have an extracted PS4 authentication key:
./scripts/provision.sh "arbitrary name string" ds4.der ds4.serial ds4.sig

# See also: https://github.com/passinglink/zephyr-docker/blob/master/Dockerfile

Supported hardware

Passing Link is based on the widely supported Zephyr RTOS with no specific hardware requirements, so it should be portable to a wide variety of microcontrollers. The following is a list of microcontrollers/development boards that are actively used for development:

  • Custom PCB with NRF52840 (aka pl_e73)
    • 64MHz, 256kB RAM, 1MB flash
    • Primary development target
    • Bluetooth LE support (but not useful for implementing a wireless controller, because of missing Bluetooth Classic support)
  • Various nRF development boards
  • Generic STM32F103 Bluepill boards (aka pl_bluepill)
    • 72MHz, 20kB RAM, 64kB flash
    • Recommended against due to resource constraints, but will be supported for as long as is feasible
    • $3 from RobotDyn
  • STM32F4 Discovery board (STM32F407VG) (aka stm32f4_disco)
    • 168MHz, 128kB RAM + 64kB CCM, 1MB flash
    • 2 USB controllers (currently only 1 can be used).
    • ~$22 from Digi-Key. Cheaper option should be available elsewhere.

Copying

Passing Link is open source software licensed under the MIT license.

Passing Link depends on and makes modifications to Zephyr and mbedTLS, both of which are licensed under the Apache-2.0 license. The modified sources can be found in the GitHub organization.

About

Open source game controller firmware, with support for PS3, PS4 and Switch

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 85.2%
  • C 8.0%
  • Shell 4.6%
  • CMake 2.0%
  • Nix 0.2%