{"id":21861507,"url":"https://github.com/raleighlittles/ps5-camera-firmware-loader","last_synced_at":"2025-06-12T19:04:24.812Z","repository":{"id":41506061,"uuid":"410688161","full_name":"raleighlittles/PS5-Camera-Firmware-Loader","owner":"raleighlittles","description":"A cross-platform utility for loading custom firmware onto the PlayStation 5 camera, written in Rust ","archived":false,"fork":false,"pushed_at":"2024-10-22T06:19:04.000Z","size":10748,"stargazers_count":52,"open_issues_count":3,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-12T19:03:28.036Z","etag":null,"topics":["libusb","omnivision","ov580","ps4-camera","ps5","ps5-camera","uvc"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/ps5_camera_firmware_loader","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raleighlittles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["raleighlittles"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["paypal.me/raleighlittles"]}},"created_at":"2021-09-26T23:46:53.000Z","updated_at":"2025-06-12T06:28:09.000Z","dependencies_parsed_at":"2024-03-22T19:47:03.723Z","dependency_job_id":"66d1c015-d05d-423d-bbd3-d34201fefaf7","html_url":"https://github.com/raleighlittles/PS5-Camera-Firmware-Loader","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/raleighlittles/PS5-Camera-Firmware-Loader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FPS5-Camera-Firmware-Loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FPS5-Camera-Firmware-Loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FPS5-Camera-Firmware-Loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FPS5-Camera-Firmware-Loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raleighlittles","download_url":"https://codeload.github.com/raleighlittles/PS5-Camera-Firmware-Loader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FPS5-Camera-Firmware-Loader/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259519771,"owners_count":22870364,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["libusb","omnivision","ov580","ps4-camera","ps5","ps5-camera","uvc"],"created_at":"2024-11-28T03:11:51.026Z","updated_at":"2025-06-12T19:04:24.743Z","avatar_url":"https://github.com/raleighlittles.png","language":"HTML","funding_links":["https://github.com/sponsors/raleighlittles","paypal.me/raleighlittles","https://www.buymeacoffee.com/raleighlittles"],"categories":[],"sub_categories":[],"readme":"![build-badge](https://github.com/raleighlittles/PS5-Camera-Firmware-Loader/actions/workflows/main.yml/badge.svg)\n![crates.io](https://img.shields.io/crates/v/ps5_camera_firmware_loader.svg)\n\n\u003ca href=\"https://www.buymeacoffee.com/raleighlittles\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" alt=\"Buy Me A Coffee\" height=\"41\" width=\"174\"\u003e\u003c/a\u003e\n\n# About\n\nThis tool is used to install firmware onto a Playstation camera. Despite the name of the repository, it also works with Playstation 4 cameras. The supported models are listed below.\n\n| Model number | Console |\n|--------------|---------|\n| CUH-ZEY1     | PS4     |\n| CFI-ZEY1     | PS5     |\n\nIt does NOT work with the Playstation 2 (\"EyeToy\"/SLEH-0003x variants) camera.\n\nThe main reason why you'd want to load custom firmware onto the camera is to be able to use it as a [UVC device](https://en.wikipedia.org/wiki/USB_video_device_class), i.e. a webcam.\n\nThis is a Linux port of [OrbisEyeCam](https://github.com/psxdev/OrbisEyeCam) for Windows. Kudos to @psxdev for the initial effort of reverse-engineering.\n\n# Webcam setup\n\nTo use this as a webcam, we need to install custom firmware onto the device (the default firmware doesn't support UVC).\n\nYou can find custom firmware for the Playstation camera on Github, here's a few that I've used:\n\n* \u003chttps://github.com/prosperodev/hdcamera/blob/main/firmware/21.01-03.20.00.04-00.00.00.bin\u003e\n* \u003chttps://github.com/Hackinside/PS5_camera_files/blob/main/firmware.bin\u003e\n\n(Many more firmware versions are available [here](https://github.com/psxdev/luke_firmwares))\n\n## Connect device\n\nConnect your PS camera to a USB 3.0 port on your computer. (If you have a PS4 camera, you need to purchase an [AUX to USB adapter](https://www.amazon.com/dp/B09NTM46ND))\n\nMake sure you see the following in the dmesg log:\n\n```\n usb 2-4.4.4.4: new SuperSpeed Gen 1 USB device number 7 using xhci_hcd\n usb 2-4.4.4.4: New USB device found, idVendor=05a9, idProduct=0580, bcdDevice= 1.00\n usb 2-4.4.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0\n usb 2-4.4.4.4: Product: USB Boot\n usb 2-4.4.4.4: Manufacturer: OmniVision Technologies, Inc.\n```\n\nKeep the dmesg window open, we'll need it for later.\n\n## Setup permissions\n\n[libusb](https://libusb.info/) needs permissions to be able to write to USB devices.\n\n0. Make sure your user is part of the `plugdev` group. Easiest way to do this is to check your `/etc/group` file. If you're not in the plugdev group, run:\n\n```bash\n$ sudo usermod -a -G plugdev $USER\n```\n\n1. Copy the udev rules (`100-playstation-camera.rules`) to `/etc/udev/rules.d`\n\n2. Reload the udev rules by running:\n\n```bash\n$ sudo udevadm control --reload ; sudo udevadm trigger\n```\n\n## Run the script\n\nThis product has two \"back-ends\", one written in C++ and one written in Rust. The C++ version is deprecated, but it still works, and going forward, I will only be supporting the Rust version.\n\nTo build \u0026 run the C++ version:\n\n```bash\n$ cmake CMakeLists.txt\n$ make \n$ ./ps5_camera_firmware_loader \u003cfirmware-file-path\u003e\n```\n\nTo build \u0026 run the Rust version:\n\n```bash\n$ cargo build --manifest-path=Cargo.toml\n$ ./target/debug/ps5_camera_firmware_loader \u003cfirmware-file-path\u003e\n```\n\n## Success  :heavy_check_mark:\n\nGo back to the dmesg window from earlier. You should see the following line:\n\n```\nuvcvideo: Found UVC 1.00 device USB Camera-OV580 (05a9:058c)\n```\n\nOpen your favorite webcam program and now you're all set. Note that you must **reinstall the firmware every time the device power cycles**.\n\nTo have the firmware automatically installed at startup time, you can use this repository: https://github.com/viecili/ps5cam-firmware-loader-service\n\nHere's a test image from the PS5 camera:\n\n![test-image](./ps5-camera-test-image.jpg)\n\nIf you're using the firmware that I linked to above, then these are the formats and parameters it supports:\n\n```\nUser Controls\n\n                     brightness 0x00980900 (int)    : min=0 max=8 step=1 default=4 value=4\n                       contrast 0x00980901 (int)    : min=0 max=8 step=1 default=4 value=4\n                     saturation 0x00980902 (int)    : min=0 max=8 step=1 default=4 value=4\n                            hue 0x00980903 (int)    : min=0 max=11 step=1 default=0 value=0\n        white_balance_automatic 0x0098090c (bool)   : default=1 value=1\n                           gain 0x00980913 (int)    : min=0 max=8 step=1 default=4 value=4\n           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1 (50 Hz)\n      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=100 default=4600 value=4600 flags=inactive\n                      sharpness 0x0098091b (int)    : min=0 max=8 step=1 default=4 value=4\n\nCamera Controls\n\n                  auto_exposure 0x009a0901 (menu)   : min=0 max=3 default=2 value=2 (Shutter Priority Mode)\n         exposure_time_absolute 0x009a0902 (int)    : min=1 max=5000 step=1 default=1000 value=1000 flags=inactive\n\nioctl: VIDIOC_ENUM_FMT\n Type: Video Capture\n\n [0]: 'YUYV' (YUYV 4:2:2)\n  Size: Discrete 896x256\n   Interval: Discrete 0.008s (120.000 fps)\n  Size: Discrete 1920x1080\n   Interval: Discrete 0.033s (30.000 fps)\n   Interval: Discrete 0.067s (15.000 fps)\n   Interval: Discrete 0.125s (8.000 fps)\n  Size: Discrete 960x520\n   Interval: Discrete 0.017s (60.000 fps)\n  Size: Discrete 448x256\n   Interval: Discrete 0.008s (120.000 fps)\n  Size: Discrete 1280x800\n   Interval: Discrete 0.017s (60.000 fps)\n   Interval: Discrete 0.033s (30.000 fps)\n   Interval: Discrete 0.067s (15.000 fps)\n   Interval: Discrete 0.125s (8.000 fps)\n  Size: Discrete 640x376\n   Interval: Discrete 0.008s (120.000 fps)\n  Size: Discrete 320x184\n   Interval: Discrete 0.004s (240.004 fps)\n  Size: Discrete 5148x1088\n   Interval: Discrete 0.033s (30.000 fps)\n   Interval: Discrete 0.067s (15.000 fps)\n   Interval: Discrete 0.125s (8.000 fps)\n  Size: Discrete 3840x1080\n   Interval: Discrete 0.033s (30.000 fps)\n   Interval: Discrete 0.067s (15.000 fps)\n   Interval: Discrete 0.125s (8.000 fps)\n  Size: Discrete 1920x520\n   Interval: Discrete 0.017s (60.000 fps)\n  Size: Discrete 2560x800\n   Interval: Discrete 0.017s (60.000 fps)\n   Interval: Discrete 0.033s (30.000 fps)\n   Interval: Discrete 0.067s (15.000 fps)\n   Interval: Discrete 0.125s (8.000 fps)\n  Size: Discrete 1280x376\n   Interval: Discrete 0.008s (120.000 fps)\n  Size: Discrete 640x184\n   Interval: Discrete 0.004s (240.004 fps)\n```\n\n# Troubleshooting\n\n## The UVC device is recognized, but all I see is a black screen\n\nTry turning down the frame rate. I've noticed that sometimes the auto-exposure control doesn't seem to work.\n\n## My PS5 won't recognize my camera anymore\n\nTry doing a full reboot (not just rest mode) of your PS5, and then plugging in your camera.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraleighlittles%2Fps5-camera-firmware-loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraleighlittles%2Fps5-camera-firmware-loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraleighlittles%2Fps5-camera-firmware-loader/lists"}