# QCMA gives PS Vita owners a content manager outside Sony's desktop software

> QCMA is a GPLv3 C++ reimplementation of the PlayStation Vita's Content Manager Assistant, built on Qt 6 and a VitaMTP fork, with metadata editing, a backup browser and a headless daemon. It is a good fit for Vita owners on Linux, Windows or macOS, but its last tagged release is from 2016 and recent work lives in uncommitted-to-a-tag source.

**codestation/qcma** — Cross-platform content manager assistant for the PS Vita

- Repository: https://github.com/codestation/qcma
- Stars: 673 · Forks: 103
- Language: C++
- License: GPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/codestation-qcma

## Why a second Content Manager exists for the Vita

QCMA is a cross-platform application that provides an open source implementation of the original Content Manager Assistant bundled with the PlayStation Vita. The official tool is closed and tied to the wider PlayStation desktop software family, so owners who want to move savedata, music, video or photos off a Vita from a general-purpose Linux, Windows or macOS machine have been left without a first-party path. That is the gap QCMA fills.

The audience is narrow on purpose. This is a tool for people who still have the handheld, own a desktop that does not run PlayStation-specific software, and want to keep their Vita usable without vendor support. The stated aim is to be on par with the official CMA while adding a few things the original application leaves out.

The implementation is C++ under a GPLv3 license, and the dependency list is short enough to read in one pass: Qt 6.x for the interface, a VitaMTP fork for the device protocol, FFmpeg for media handling, and libnotify for desktop notifications. The project is not archived, and the last push to the master branch was on 2026-08-17.

## Metadata for savedata, songs, videos and photos

The implemented feature list is where QCMA goes beyond a file mover. It writes metadata for PSP savedatas, and it handles basic metadata for single songs, meaning album, artist, title and cover art. For videos it reads duration, dimensions and a thumbnail. For photos it reads dimensions and thumbnails as well.

The backup browser is the feature that most directly helps someone who no longer has a Vita in hand. The description is blunt about it: view and delete the backups stored on your PC without needing the console connected. For a device whose save data sits in containers that the official tool knows how to unpack, having a separate reader on the desktop is the difference between recoverable data and orphaned files.

Two connection details are called out separately because they are the kind of thing that only matters after an hour of use. Wireless pairing shows a PIN to the user when a Vita is detected, and the application can restart the connection if the Vita is reconnected. Neither is exotic, but both remove a step of manual work from a repetitive session of transfers. The listing also stops there, so anything beyond metadata, backups and pairing should be treated as undocumented.

## Running qcma_cli on a machine with no X session

QCMA ships a second binary, qcma_cli, that does not need an X session running. The stated reason is servers, and the daemon provides minimal interaction through unix signals. That is a deliberately thin control surface: there is no web interface and no command line flag catalogue described for it, just the ability to signal the process.

Refreshing the database is done by sending a hangup signal to the running process:

```bash
kill -HUP $(pgrep qcma_cli)
```

Stopping the daemon works the same way, with the default termination signal:

```bash
kill $(pgrep qcma_cli)
```

The pattern matters more than it looks. Both examples resolve the process id by running pgrep rather than pointing at a pid file, and the project does not document a pid file, a configuration file location, or a systemd unit that would expose the same behaviour more directly. The repository does contain a systemd directory, which suggests packaging exists, but no unit file contents are given, so anyone relying on signals in production should confirm the process naming convention on their own host before assuming pgrep will match it. The daemon is a real option for unattended transfers, but the documentation for it is two kill commands wide.

## Getting QCMA on Linux, Windows and macOS

There are three distribution paths, and the project documents all three without a single package manager command, so no install command can be copied here. On Linux, packages for Ubuntu, Fedora, Debian and openSUSE are published through the openSUSE software service, listed at the software.opensuse.org download page for the home:codestation project. On Windows and macOS, installers are attached to the project's GitHub releases, with the latest build linked from the releases page.

The source lives in the GitHub repository, and the build system is a qmake project: a top-level qcma.pro file paired with a config.pri for shared configuration, plus buildscripts for the release tooling. A version_bump.sh script sits alongside a ChangeLog, which tells you releases are cut by a script rather than by hand-editing a version file.

The build pulls in Qt 6.x, so the Qt major version is not optional. It also needs the VitaMTP fork, FFmpeg and libnotify, all of which have to be present before the project will link. The dependency list in the project documentation is not a list of optional extras, and a compile failure on a system without FFmpeg or libnotify is an expected outcome rather than a sign of a broken checkout.

## The gui, cli and common split visible in the repository

The repository layout makes the architecture legible. There is a gui directory, a cli directory and a common directory, which lines up with the two shipped binaries sharing one core rather than duplicating it. Protocol and model code belongs in common, the interactive front end in gui, and the signal-driven front end in cli. Debian packaging under debian and a systemd directory sit alongside the application code, so distribution support is part of the tree rather than an external script.

Two metadata files, dev.megpoid.Qcma.metainfo.xml and dev.megpoid.Qcma.yaml, indicate the application registers itself with the freedesktop application and AppStream metadata standards. That matters on Linux distributions, where an application without AppStream metadata is often invisible to software centres.

The protocol layer comes from a fork of VitaMTP, itself derived from the library by Yifan Lu, who is credited for both the library and the reference implementation of OpenCMA. Keeping the fork in the same organisation means protocol adjustments land in a repository that ships with the application rather than waiting on an upstream library release. It also means the version of the protocol layer you compile against is tied to the QCMA checkout you use.

## A release history that stopped in 2016 while commits continued

The version history tells a mixed story. The most recent tagged releases are v0.4.1 on 2016-11-24, v0.4.0 on 2016-11-21, and v0.3.9 on 2015-03-16. Nearly a decade has passed since that last tag. The repository itself is not archived and the last push was on 2026-08-17, so source changes have continued arriving long after the tags stopped.

For most users this means the Windows and macOS installers linked from the releases page are roughly ten years old, and they do not contain the work that produced those later pushes. Anyone who wants current code is effectively building from master, which is a different maintenance burden from installing a signed release. The project page also does not describe a rollback procedure, a compatibility statement for Vita firmware versions, or a policy for when a pushed change is considered stable.

The licence is GPLv3, so redistribution of modified binaries carries the usual source availability obligation, and any derived work you publish as a binary has to pass the licence along. That is a consideration for anyone who plans to package QCMA for an internal distribution, and it is not a legal opinion, just the point where the licence becomes relevant.

## How QCMA differs from OpenCMA and the official tool

Two alternatives exist and they differ in kind. The first is Sony's original Content Manager Assistant, closed source and bundled with PlayStation software, which offers the baseline feature set on platforms where it is installed. The second is OpenCMA, the reference implementation of the VitaMTP protocol that Yifan Lu is credited with, and which the project credits directly as the basis for its protocol handling.

OpenCMA is a reference implementation, a minimal piece of protocol code written to show how the VitaMTP interface works. QCMA is the full application built on top of a fork of that library: a Qt interface, metadata writers for savedata, songs, videos and photos, a desktop backup browser, PIN-based wireless pairing, and a separate headless daemon. So the difference is not better versus worse parsing, it is scope. OpenCMA answers how to speak the protocol, QCMA answers how to manage a device with it.

The practical reason to prefer QCMA over OpenCMA is that you do not have to write the metadata handling and file management yourself. The practical reason to prefer OpenCMA over QCMA is that it is smaller, older in a different way, and does not drag in a Qt 6 interface, FFmpeg and libnotify when you only need the protocol.

## Conclusion

QCMA is worth adopting if you own a PS Vita and want to manage it from Linux, Windows or macOS without Sony's desktop software, and it is the wrong tool if you need a maintained release pipeline, since the last tagged version dates from 2016-11-24 while the last push was on 2026-08-17. Before committing, confirm that the Qt 6.x dependency and the VitaMTP fork build on your distribution, and read the commits made since the v0.4.1 tag if you plan to use a packaged installer.

## FAQ

### What is QCMA and what does it do for a PS Vita?

QCMA is a cross-platform open source implementation of the PlayStation Vita's Content Manager Assistant. It writes metadata for PSP savedatas, songs, videos and photos, browses and deletes PC backups without a Vita, and supports wireless pairing with a displayed PIN.

### How do I install QCMA on Linux, Windows and macOS?

On Linux, packages for Ubuntu, Fedora, Debian and openSUSE are offered through the openSUSE software service project page for home:codestation. On Windows and macOS, installers are published on the project's GitHub releases page, and the source is built from the repository with a qmake project.

### Can QCMA run on a server without a desktop session?

Yes, a qcma_cli binary exists that does not need an X session and is described as useful for servers. It is controlled through unix signals, for example a HUP signal to refresh the database and the default kill signal to stop the daemon.

### What is the difference between QCMA and OpenCMA?

OpenCMA is a reference implementation of the VitaMTP protocol, credited to Yifan Lu in the project documentation. QCMA is a full Qt application built on a fork of the VitaMTP library, adding metadata editing, a backup browser, wireless pairing and a headless daemon.

### Does QCMA still receive updates?

The repository is not archived and the last push was on 2026-08-17, however the most recent tagged release, v0.4.1, dates from 2016-11-24. Packaged installers from the releases page therefore reflect code that predates the later commits.

## Sources

- [codestation/qcma on GitHub](https://github.com/codestation/qcma)
- [Issues](https://github.com/codestation/qcma/issues)
- [License: GPL-3.0](https://github.com/codestation/qcma/blob/master/LICENSE)
- [README](https://github.com/codestation/qcma/blob/master/README.md)
- [Releases](https://github.com/codestation/qcma/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/codestation-qcma
