Skip to content

pcat manager web ipk

HackingGate edited this page Jun 13, 2026 · 2 revisions

pcat-manager-web IPK Inspection

pcat-manager-web is now open source at github.com/photonicat/pcat-manager-web. Prefer reading the source directly for code-level questions.

This page covers downloading the shipped IPK to understand its install layout and its socket protocol with pcat-manager.

Source Code

The web management interface source (Python Flask backend, Tailwind CSS + Alpine.js frontend) is at:

https://github.com/photonicat/pcat-manager-web

Key paths in the source tree for PMU/MCU-related logic:

Source file What it covers
app/pcat_manager_web.py Flask routes: MCU version checks, MCU update, package management
app/pc_socket_client.py Unix socket client: pmu-fw-version-get, query_stm32_version
app/app.py Core application logic, system monitoring
app/pcat_config.py URL configuration (MCU manifest, package version endpoints)

Discover Package Filenames

Use the Photonicat 2 package manifest as the source for current filenames:

BASE_URL=https://dl.photonicat.com/repos/photonicatwrt/photonicat2
curl -fL -o /tmp/packages-volatile.txt "$BASE_URL/packages-volatile.txt"

WEB_PKG=$(awk '/^pcat-manager-web_.*\.ipk$/ { print; exit }' /tmp/packages-volatile.txt)
MANAGER_PKG=$(awk '/^pcat-manager_.*\.ipk$/ { print; exit }' /tmp/packages-volatile.txt)

printf 'web package: %s\n' "$WEB_PKG"
printf 'manager package: %s\n' "$MANAGER_PKG"

Download pcat-manager-web and pcat-manager from the manifest:

curl -fL -o /tmp/pcat-manager-web.ipk "$BASE_URL/volatile/$WEB_PKG"
curl -fL -o /tmp/pcat-manager.ipk "$BASE_URL/volatile/$MANAGER_PKG"

Extract The Web Package

The inspected pcat-manager-web package is a tar-format IPK containing debian-binary, data.tar.gz, and control.tar.gz.

mkdir -p /tmp/pcat-manager-web-ipk /tmp/pcat-manager-web-root
tar xf /tmp/pcat-manager-web.ipk -C /tmp/pcat-manager-web-ipk
tar xzf /tmp/pcat-manager-web-ipk/data.tar.gz -C /tmp/pcat-manager-web-root
find /tmp/pcat-manager-web-root/usr/share/pcat-manager-web -maxdepth 2 -type f | sort

The Python application is installed under:

/usr/share/pcat-manager-web/

Expected files include:

app.pyc
cmd_tool.pyc
opkg-install.pyc
pc_socket_client.pyc
pcat-manager-web-main.pyc
pcat_manager_web.pyc
pcat_util/*.pyc
templates/*.html
static/*

The init script is:

/etc/init.d/pcat-manager-web

It launches:

python3 /usr/share/pcat-manager-web/pcat-manager-web-main.pyc

The shipped IPK contains compiled .pyc bytecode. The corresponding .py source is at github.com/photonicat/pcat-manager-web.

Inspect pcat-manager Socket Commands

The web app talks to the local pcat-manager daemon over /tmp/pcat-manager.sock. See app/pc_socket_client.py in the source for the Python side of this protocol. Inspect the pcat-manager package to verify the daemon-side socket and command strings:

mkdir -p /tmp/pcat-manager-ipk /tmp/pcat-manager-root
tar xf /tmp/pcat-manager.ipk -C /tmp/pcat-manager-ipk
tar xzf /tmp/pcat-manager-ipk/data.tar.gz -C /tmp/pcat-manager-root
find /tmp/pcat-manager-root -type f | sort

Expected files include:

/etc/init.d/pcat-manager
/etc/pcat-manager.conf
/usr/bin/pcat-manager

For quick command discovery:

strings /tmp/pcat-manager-root/usr/bin/pcat-manager |
  rg -i 'pmu|firmware|fw-version|status|socket|update'

The socket commands used for MCU interaction include pmu-status and pmu-fw-version-get. The web package's /update, /pkg_upload, and /pkg_update routes are for package upload/install, not MCU firmware flashing.

Remote Package Version Check

The public manifest listed pcat-manager-web_2.0.1-27_aarch64_generic.ipk, while the full OpenWrt image shipped pcat-manager-web 2.2.1-116.

The version-check and update logic is in app/pcat_manager_web.py (see pcat_package_version_info and remote_pcat_package_version_info functions) and configured via app/pcat_config.py:

  • package_version_url defaults to https://dl.photonicat.com/repos/openwrt/r2304/packages-volatile.txt
  • volatile_packages_url is the base URL for remote package installation
  • The update flow invokes opkg-install.pyc on the device

This path discovers and installs IPK package updates. It is separate from the MCU production manifest and MCU update endpoint. Use OpenWrt Image Inspection and MCU Version Check for the MCU firmware path.

Clone this wiki locally