PlayStation camera loader
  • C 89.8%
  • Shell 5.7%
  • Makefile 4.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ampernic d43cf74280 docs(readme): remove PS3 camera missinformation
No need to add PlayStation Eye - already in linux kernel
2026-06-01 17:27:45 +03:00
.forgejo/workflows ci: Forgejo Actions — build via gear-hshc, publish to alt registry + Release 2026-06-01 12:34:15 +03:00
.gear Initial packaging (1.0.0-alt1) 2026-06-01 12:34:15 +03:00
assets README: logo, screenshot and installation instructions 2026-06-01 14:57:05 +03:00
libexec exposure: apply once on appearance, drop self-retriggering inotify loop 2026-06-01 12:34:15 +03:00
src loader: finite USB timeout + USB3 hint; service TimeoutStartSec 2026-06-01 12:34:15 +03:00
systemd exposure: apply once on appearance, drop self-retriggering inotify loop 2026-06-01 12:34:15 +03:00
.gitignore Initial packaging (1.0.0-alt1) 2026-06-01 12:34:15 +03:00
COPYING Initial packaging (1.0.0-alt1) 2026-06-01 12:34:15 +03:00
Makefile Initial packaging (1.0.0-alt1) 2026-06-01 12:34:15 +03:00
ps-camera-firmware-loader.spec 1.1.1: - README: note current support status (PS5 verified, PS4 untested, PS3 not implemented). 2026-06-01 16:31:45 +03:00
README.md docs(readme): remove PS3 camera missinformation 2026-06-01 17:27:45 +03:00

firmware loader logo

ps-camera-firmware-loader

Plug-and-play firmware loader for the PlayStation 4/5 camera (OmniVision OV580) on Linux.


Project status: verified only on the PS5 camera so far. The PS4 camera should work the same way but is untested

The PS4/PS5 camera ships in a "USB Boot" bootloader mode (05a9:0580) and does not work as a webcam until firmware is uploaded over USB. The firmware lives in RAM, so it must be re-uploaded on every power cycle. This package automates that completely:

  • a udev rule fires when the camera appears in bootloader mode (on boot, hotplug or power cycle);
  • it starts a systemd service that uploads the firmware;
  • the camera re-enumerates as a standard UVC device (05a9:058c) and the kernel uvcvideo driver binds it automatically — /dev/videoN appears.

No manual scripts, no root, no plugdev group. Install and forget.

Hardware note: the camera must be connected to a USB 3.0 (SuperSpeed) port. Through a USB 2.0 hub the upload is unreliable and may hang.

Installation

Add the project repository (both architecture lines are needed), then install:

apt-repo add rpm https://altlinux.space/api/packages/PS-Camera/alt/alt.repo x86_64 classic
apt-repo add rpm https://altlinux.space/api/packages/PS-Camera/alt/alt.repo noarch classic
apt-get update
apt-get install ps-camera-firmware-loader

This package needs a firmware blob to upload, shipped by ps-camera-firmware. For the whole stack at once (loader + firmware + GUI) install the ps-camera meta-package instead.

Components (device-agnostic infrastructure)

File Purpose
/usr/bin/ps-camera-firmware-loader C/libusb uploader, profile-driven (no hard-coded USB IDs)
pscam-firmware-loader.service runs ps-camera-firmware-loader --auto
pscam-exposure@.service + pscam-exposure baseline exposure workaround

The loader reads device profiles from /usr/share/ps-camera/devices/*.device and, in --auto mode, programs every connected, recognised camera — so several different cameras can be attached at once.

The firmware blobs, the .device profiles and the udev rules that trigger this service are shipped by per-camera packages such as ps-camera-firmware (OV580 / PS4 / PS5). Supporting a new camera = another such package; no change here. For a settings GUI, install the tuner-pscamera Tuner module.

Credits

This loader is a C port of the protocol implemented by:

All credit for reverse-engineering the upload protocol goes to them.

License

GPL-3.0-or-later. See COPYING.