Pajoniiir
User Manual · Stable M2.5 & Shared P4 Beta

Standalone DJ System

Operating guide for the ESP32-P4 dual-deck player with Rekordbox USB media, supported USB DJ controllers, on-device display, MAIN and headphone cue, web control and signed updates. Choose your board and controller configuration before connecting or installing firmware.

JC4880 · JC1060 · M3One shared P4 coreRekordbox USBSupported DJ controllersMAIN & headphone cueWeb controlSigned board-specific OTA
Stable and beta are separate. M2.5 remains the stable JC4880/DDJ-FLX4 release. shared-p4-beta.2 is a contributor prerelease with separate JC4880, JC1060 and M3 packages. It retains the exact accepted M3/JC4880 images; JC1060 is software-verified and awaits physical testing. Public OTA channels are unchanged; see beta identity and limits.

Standalone engine

The ESP32-P4 owns playback, mixer state, DSP and the UI. No performance computer is required.

Web Remote

Control decks, mixer, library and maintenance functions from a phone, tablet or laptop.

Dual USB roles

Separate USB hosts serve music storage and controller MIDI/audio. Connector numbers depend on the board and experiment.

Signed OTA

Local browser upload and service-network pull updates both validate signed firmware packages.

Board & port selectionSupported DJ controllers01 · Quick start02 · Connections03 · On-device display04 · DDJ-FLX4 controls05 · Rekordbox media06 · Embedded Web Controller07 · Wi-Fi AP & STA modes08 · Updates & service09 · Power & handling10 · Troubleshooting11 · Release status
Configuration

Choose your board

JC4880, JC1060 and M3 share the playback, library, controller, UI, web and OTA core. Their peripherals, USB connector labels, audio outputs and network providers differ.

BoardDisplayOrdinary controller / music portsMAIN / cueNetwork / signed OTA package
JC4880P443C_I_W800 × 480Controller USB1 / music USB0PCM5102A RCA MAIN / controller headphonesWi-Fi Pajoniiir
main-deck-p4.ddjota
JC1060P470C_I_W_Y1024 × 600Controller USB0 / music USB1Controller USB MAIN / headphones; no PCM5102AEthernet provider; no Wi-Fi
main-deck-jc1060.ddjota
JC-ESP32P4-M3-DEVEYOYO DSI506 5-inch, 800 × 480 / FT5426 touchController USB2 FS / music USB3 HS; USB1 supply/debugPCM5102A GPIO1/2/3 MAIN at 48 kHz / controller headphonesWi-Fi Pajoniiir-M3, default ON
main-deck-m3.ddjota
M3 Hercules/S2 experiment: the tested configuration places the controller on USB3 and music on USB2, using a matching experimental image. The ordinary beta M3 download retains the FLX4 port policy above; it cannot be assumed to preserve that swap. Stop both decks before changing controller/media connections.

JC1060 physical acceptance is NOT RUN, deferred to contributor Kayrosen. Its beta kit and first-test handoff define the bring-up scope. JC4880's later short Hercules checks are accepted on their recorded image; its long soak was explicitly waived, not passed. Historical M3/controller campaigns remain tied to exact images. See board policies and electrical/wiring instructions.

Compatibility

Supported DJ controllers

Use the matching compiled controller profile and firmware configuration. A profile being available does not establish complete physical support on every board.

ControllerSupport statusAudio and setupCoverage and limits
Pioneer DDJ-FLX4Reference controller; stable JC4880 and accepted historical M3 configurationsUSB MIDI/LED + UAC1 headphone cue; ordinary board port policyTransport, mixer, jogs, pads, loops and effects. Mapping and evidence.
Hercules DJControl Inpulse 500Beta support; tested on M3 and JC4880UAC1 headphones with native Mix/Volume; M3 requires the matching USB3-controller experimentM3 exact-image hour and JC4880 short functional blocks accepted. Individual pad/FX/LED coverage is partial; controller RCA MAIN is unqualified. Control mapping.
Native Instruments Traktor Kontrol S2 MK3Experimental M3 support; operator-closed with waiversMIDI mode and HS UAC2 headphones; USB3 controller / USB2 musicHistorical 48/44.1-kHz hours accepted on exact images. Remaining checks were waived; other boards are unqualified. Support scope.
Pioneer DDJ-400Software profile; hardware NOT RUNShared MIDI/LED and USB audio implementationLocal MIDI/LED/audio/reconnect qualification is pending; eight memory-call/store/delete inputs are omitted. Profile limits.

Controller setup

  1. Choose the appropriate board image and port policy. Keep the reference FLX4 arrangement unless using a documented experiment.
  2. For S2 MK3, hold the left FLX button while connecting USB to enter MIDI mode; release after the green flash. Hercules connects normally without holding buttons.
  3. Install only a matching compiled profile.s3bin through the profile service, then confirm the active profile and MIDI/audio availability. The beta includes profiles separately from firmware.
  4. Raise headphone volume gradually. Enable D1/D2 PFL before judging cue sound; native Hercules headphone Mix/Volume controls act on the controller itself.

A limited S2 basic profile and generic MIDI-CI fixture are also supplied for development; these are not additional hardware-qualified DJ models. Full support and historical acceptance are detailed in the repository's controller records.

01 · Start

Quick start · JC4880 / FLX4 reference

The ESP32-P4 is the sole runtime authority. It plays the tracks, owns deck and mixer state, drives the display and communicates directly with the FLX4. The physical controller, touch UI and browser Remote Control all operate the same P4-owned state; no performance computer is required.

For M3 or JC1060, substitute the ports, audio and network provider in the board table; the steps below retain the JC4880 reference setup.

Connect audio. Connect the Pajoniiir MAIN RCA output to your amplifier or mixer. Connect headphones to the DDJ-FLX4 for cue/monitor.
Connect the controller. Connect the Pioneer DDJ-FLX4 to USB1.
Insert music. Insert the Rekordbox-exported USB storage medium into USB0.
Power on. Use the approved regulated power arrangement and wait until the display and both USB roots are ready.
Open Library. Rotate the FLX4 Browse encoder to select a track, then press LOAD 1 or LOAD 2.
Play. Use PLAY/CUE, jogs, tempo, mixer and headphone-cue controls normally. Confirm MAIN and cue levels before raising the PA.
Optional remote control. In Settings enable Wi-Fi Remote, connect a phone/tablet/laptop to Pajoniiir, then open http://pajoniiir.local or http://192.168.4.1.
02 · I/O

Connections and signal roles · JC4880 reference

FunctionConnectionUse
Music libraryUSB0 hostRekordbox storage / MSC medium
DJ controllerUSB1 hostDDJ-FLX4 MIDI IN/OUT + 4-channel USB Audio
MAIN programPCM5102A / RCAMain stereo output to amplifier/mixer
Headphone cueDDJ-FLX4 headphonesUAC channels 3/4 monitor/cue
Local user interfaceP4 display / touchOverview, Library, Hot Cues and Settings
Remote user interfaceWi-Fi Web ControllerBrowser-based deck, mixer, library and maintenance controls
Service / recoveryWi-Fi or P4 service connectorDiagnostics, profile service, signed OTA and wired recovery

Power note: downstream USB VBUS must be protected and current-limited. Do not join independent supplies with a passive Y-cable and do not inject raw 5 V into USB-C pins.

03 · UI

On-device display

The P4 LVGL interface provides the primary stand-alone visual surface. It remains independent of whether Wi-Fi Remote is enabled.

Pajoniiir Overview screen, Deck 1
Overview · Deck 1
Pajoniiir Library screen
Library
Pajoniiir Hot Cues screen
Hot Cues
Pajoniiir Settings screen
Settings
Pajoniiir idle screensaver
Idle screensaver · default 2-minute timeout

Overview

The previous waveform and transport layout is retained, with key, bounded artwork, memory-cue markers and load/error state.

Library

Browse the USB collection and ordered Rekordbox playlists/folders. The FLX4 encoder selects a track; LOAD 1 / LOAD 2 requests the destination. LOAD LOCK normally rejects replacement while that deck is playing. Pause it first.

Hot Cues

Eight effective hot-cue slots merge source cues with persistent local edits/deletions. Up to 16 separate memory points/loops are shown with truncation status. Hold HOLD RESTORE only when you intend to restore source cues; a short tap preserves edits. Exhaustive source-import/touch comparison is not physically qualified.

Settings

Contains device/service controls including P4 Remote / Wi-Fi Remote, load lock and jog mode. Wi-Fi startup is asynchronous. Network Link and recorder controls are hidden when the build does not support them.

Browse rotate / press

Rotate to move the Library selection. Press toggles Library and Overview; it does not load a deck. Navigation preserves the current location and selection.

Idle screensaver

The default timeout is 2 minutes. The first touch or controller action restores the previous screen and is consumed. A first PLAY wakes only; press PLAY again to start. Touch wake does not activate the control underneath. Playback inhibits idle sleep. Screensaver/restore software regression remains covered separately from physical panel acceptance.

04 · FLX4

DDJ-FLX4 core controls

The DDJ-FLX4 is the main physical performance surface while the P4 owns playback, mixer state and DSP. Controller LEDs are driven from P4-owned state.

PLAY / PAUSE

Starts or pauses the selected deck. If the screensaver is active, the first press only wakes the screen; the next press performs PLAY.

CUE

Paused cue setting, held preview and release-to-cue share the deck transport rules. PLAY while CUE is held can continue playback; advanced touch/held-disconnect variants remain outside focused v91 acceptance.

JOG

VINYL platter touch scratches; CDJ mode bends. SHIFT+jog search is implemented. Focused both-deck scratch listening passed.

TEMPO / MASTER TEMPO

SHIFT+Beat Sync cycles ±6%, ±10% and ±16% (default ±10%). Focused CUE/PLAY/MT and combined scratch/MT sound passed on v91.

BEAT SYNC

JC4880 matches the other local deck BPM and performs one-shot beat-phase alignment when grids are available. Ethernet continuous following belongs to the unqualified JC1060 Link configuration.

LOOPS

IN, OUT, halve, double and RELOOP/EXIT are implemented. Focused MP3/WAV/FLAC operator tests passed after the manual-FLAC-loop correction. Advanced shifted/adjust and other deck/format combinations require separate acceptance.

Mixer and monitoring

ControlCurrent behavior
Channel faders / CrossfaderImplemented and hardware verified
Master Level / TrimImplemented; hardware-smoked / verified
EQ High / Mid / LowImplemented in P4 DSP
CH1 / CH2 CUEPFL toggle to headphone cue path
Headphones Mix / LevelImplemented; FLX4 USB headphone path hardware-smoked
Master CueImplemented with P4-owned state and LED feedback
Smart CFXP4 filter-DSP macro with LED state
Smart FaderP4 transition-assist behavior with LED state

Performance pads and effects

Hot Cues

Hot Cue pads 1–8 are implemented on both decks for set/recall. SHIFT + Hot Cue pad clears the corresponding cue. The normal pad LED state is P4-owned and restored after reconnect.

Beat Jump / Beat Loop

Beat Jump pads and normal/shifted Beat Loop pads are implemented; the core pad behavior has hardware acceptance on both decks. Shifted Beat Jump size-page controls remain outside the inherited M2.1 control subset.

Pad FX

Pad FX1 and Pad FX2 input ranges are implemented in the P4 DSP path. Filter/Echo pad behavior and Echo release-tail operation have hardware smoke coverage; use those as the inherited M2.1 Pad FX evidence.

Beat FX

Beat FX target, depth and ON/OFF are P4-owned. FILTER and ECHO have hardware acceptance. FLANGER and DELAY are implemented in DSP but remain outside the inherited fully qualified M2.1 effect subset.

Intentionally out of scope

Keyboard/Stems, Sampler and Key Shift pad modes are intentionally ignored in the standalone product. Some additional shifted FLX4 functions are mapped for compatibility or testing but are not part of the accepted standalone workflow.

Standalone behavior

Pajoniiir does not attempt to clone every rekordbox-on-PC behavior printed on the FLX4. The supported behavior is the P4-owned standalone mapping described in this manual and the project MIDI map.

05 · Media

Rekordbox USB library

Use the music port assigned to your board (USB0 on the JC4880 reference build). The P4 reads the exported library and analysis data, exposes tracks in Library, and uses available BPM, beatgrid, waveform and cue information.

Accepted focused audio formats

Real MP3, PCM16 RIFF/WAV and FLAC playback passed on v91 with normal speed and clean MAIN/cue, including 96 kHz/24-bit FLAC. WAV float, 24/32-bit PCM and extensible WAV are unsupported.

Metadata and browsing

Rekordbox title/key, beat number 1 as downbeat, ordered playlists, artwork and PWV4 color preview are implemented. Missing optional images/waveforms do not block audio. Exhaustive real-export comparison remains NOT RUN; software coverage is not physical acceptance.

Local browsing

Use Library or FLX4 Browse/LOAD. Load lock protects a playing destination; local cue edits persist across reload/reboot.

Remote browsing

The Web Controller searches the same USB library by title/artist and requests D1/D2 loads through the same admission rule.

For best results, prepare the medium with Rekordbox export before use. Do not remove USB0 while a track is loading unless you are intentionally testing recovery behavior.

06 · Browser control

Embedded Web Controller

Pajoniiir contains its own HTTP web server and browser-based remote interface. The page is served directly by the P4; it is not a cloud service and does not require an external web server. A phone, tablet or laptop connected to the device AP can become an additional operator surface.

Important: the Web Controller does not run a second DJ engine. Commands from the browser are applied to the same P4-owned deck and mixer state used by the DDJ-FLX4 and on-device UI. A change made on one surface is therefore a change to the live system state.

Open the Web Controller

On the Pajoniiir display open Settings and enable Wi-Fi Remote.
On the phone/tablet/laptop join Wi-Fi network Pajoniiir.
Use the shared service password Pajoniiir.
Open http://pajoniiir.local. If mDNS is unavailable on the client, use http://192.168.4.1.
Confirm the Web Controller status indicator is online and that deck state matches the physical unit before issuing live commands.

What the browser can control

Deck 1 / Deck 2

  • Track title and artist
  • Playback state
  • Elapsed / remaining time
  • BPM and pitch
  • PLAY / PAUSE and CUE
  • 4-beat loop and loop clear
  • Tempo/pitch control
  • Tap/click progress to seek

Mixer

  • CH1 and CH2 channel faders
  • CH1 / CH2 PFL cue
  • Crossfader
  • Master level indication based on the real master limiter peak

USB Browser

  • Reads the active board music library
  • Searches title and artist
  • Shows BPM
  • Loads tracks to D1 or D2
  • Refreshes if the underlying library generation changes

Controller Profile

  • Reads available controller profiles
  • Accepts compiled profile.s3bin
  • Profile ID / SD directory selection
  • Optional overwrite
  • Format and CRC are validated before replacement

P4 Firmware Update

  • Reads firmware status
  • Uploads signed .ddjota bundles
  • Shows transfer progress
  • Stops playback during update

Update Server

  • Stores service-network SSID
  • Stores passphrase locally
  • Stores update base URL
  • Tests STA connectivity
  • Checks for a newer release
  • Downloads and installs an offered signed release

The browser polls live status frequently and continuous sliders are rate-limited before commands are sent to the embedded HTTP server. If the connection indicator goes offline, stop issuing commands and verify the Wi-Fi state before continuing.

Board network policy: JC4880 uses Pajoniiir with WPA2/WPA3 transition mode; M3 uses Pajoniiir-M3 with WPA2 and Wi-Fi enabled by default. Both use the AP address 192.168.4.1 and default password Pajoniiir. JC1060 has no Wi-Fi; use its Ethernet-assigned address and separately qualify network readiness.
07 · Network

Wi-Fi AP and STA modes

The AP provides local browser control; the STA uplink reaches a service network. JC4880 temporarily leaves its AP during service visits. M3 keeps AP services alive while adding the STA uplink (AP+STA); clients may briefly reconnect when the radio changes channel.

AP / SoftAP

Normal Remote Control

Pajoniiir creates its own local Wi-Fi network. This is the normal browser-control state.

192.168.4.1pajoniiir.localWeb Remote available
STA

Temporary Service Visit

The deck joins an external service network. JC4880 restores its AP afterward; M3 retains AP services during the uplink and removes STA afterward.

DHCP clientJC4880: AP temporarily offlineM3: AP retained
ModePurposeWeb ControllerAddressingWhat happens next
AP / SoftAPNormal Remote Control mode. Pajoniiir creates its own local Wi-Fi network.AvailableDevice: 192.168.4.1/24
mDNS: pajoniiir.local
JC4880 leaves AP for service visits; M3 retains it during the STA uplink.
STATemporary maintenance/update visit. Pajoniiir joins a configured external service network.JC4880: unavailable during STA
M3: AP retained; brief reconnect possible
Receives an IPv4 address by DHCP from the external network.After service, JC4880 restores AP/web; M3 removes its uplink while retaining AP/web.

AP / SoftAP — normal remote operation

Network identity

SSID: Pajoniiir (JC4880) / Pajoniiir-M3 (M3)
Default password: Pajoniiir
Security: JC4880 WPA2/WPA3 transition; M3 WPA2
AP IPv4: 192.168.4.1
Netmask: 255.255.255.0
Wi-Fi channel: 6

Client capacity and local-only behavior

The firmware allows up to four associated AP clients. This is a local service network; Pajoniiir intentionally does not present itself as the client's Internet router. A browser and a second service device can therefore coexist without the deck pretending to provide Internet access.

“No Internet” is expected. A phone or computer may warn that the Pajoniiir network has no Internet connection. That does not mean the Remote Control is broken. Stay connected and open http://192.168.4.1 manually. The design intentionally avoids installing a useless default Internet route through the deck.

The firmware also advertises the mDNS hostname pajoniiir.local. mDNS support varies by operating system and client configuration, so the fixed AP address 192.168.4.1 is the recovery/fallback address.

STA — temporary service/update network

STA exists so the deck can temporarily reach an external network, primarily for update-server connectivity. It is not the normal browser-remote mode. JC4880 stops its AP web/DNS services for the visit, waits for service-network DHCP, performs the operation and restores AP/web afterward. M3 retains its AP netif, lease and HTTP/DNS services during the added STA uplink; a radio channel change can briefly interrupt a client. Neither behavior makes the AP an Internet router.

Pajoniiir AP
Web Remote available
→service STA uplink
JC4880 leaves AP; M3 retains AP
→service action
probe / check / download
→service visit ends
check/reconnect board AP

TEST CONNECTION

On JC4880 the deck may leave its AP for up to approximately 25 seconds; M3 retains AP services, with a possible brief client reconnect. It verifies saved service-network association and DHCP, then ends the uplink; no firmware is installed. The test itself does not install firmware.

CHECK FOR UPDATE

JC4880 may leave its AP for up to approximately 30 seconds while checking the server. M3 retains AP services during its uplink. Nothing is installed during the check; the AP is restored afterward.

08 · Maintenance

Updates, beta installation and controller profiles

The current P4-only product has two signed firmware-update workflows: local browser upload while connected to the Pajoniiir AP, and a pull-update flow that temporarily joins a configured service network.

1

Connect

Join the Pajoniiir AP for local OTA, or save the external service-network settings for pull OTA.

2

Verify

The update path validates the signed package, target metadata and image integrity before activation.

3

Restart & check

After restart, reconnect and verify firmware status, USB library, FLX4 control, MAIN audio and cue.

Before installing a beta

Download shared-p4-beta.2 from GitHub. The jc4880-beta-kit.zip, jc1060-beta-kit.zip and m3-beta-kit.zip include board identity, signed OTA, recovery files, configuration and SHA-256 inventories. Select by board/project, verify the signed manifest and checksums, and keep the matching debug archive. Beta2 retains the exact M3/JC4880 images with their recorded acceptance; JC1060 physical testing is still NOT RUN. After updating FLX4 firmware, start headphone LEVEL low and raise gradually: beta2 restores the cue level lost in the previous transport.

BoardSigned local OTA fileBeta embedded version
JC4880main-deck-p4.ddjotaM2.5-215-g40e72fcb
JC1060main-deck-jc1060.ddjotaM2.5-215-g40e72fcb
M3main-deck-m3.ddjotaM3-dev-g40e72fcbf403
Manual beta installation: stable M2.5 and public OTA channels remain unchanged. The M3 development version has no automatic pull discovery. Ordinary M3 beta firmware restores FLX4 USB2 / music USB3 policy, so do not install it expecting the Hercules/S2 experiment to persist.

Historical M3 firmware named main-deck-p4 needs the preserving wired identity migration before main-deck-m3 OTA. Application OTA cannot change a partition table; verify board/layout before wired recovery and never perform an indiscriminate full-chip erase.

A. Local signed OTA upload

On JC4880/M3 enable Wi-Fi Remote and connect to the board AP. On JC1060 use the Ethernet web address after confirmed network startup.
Open the Web Controller and expand P4 FIRMWARE UPDATE.
Select only the signed .ddjota for your board/project from the table above; cross-board packages are rejected.
Stop normal performance use and keep power stable. The update path stops playback during the upload.
Start the update and do not disconnect power while the image is being verified/written.
After restart, reconnect to the board network and verify exact board/project/source/version/ELF and running image state VALID, then library, controller MIDI/LED, MAIN and headphone cue. HTTP upload success alone does not prove startup confirmation.
Do not upload a raw .bin through the signed web-update path. Raw images are reserved for wired recovery or explicitly defined transition procedures. Normal browser OTA uses the signed .ddjota bundle.

The P4 validates the signed package before activating the inactive OTA slot. The update design checks the embedded ECDSA signature and signed image metadata including image size/hash, chip, project and version. Wrong-target or tampered bundles are intentionally rejected.

B. Update Server / pull OTA

The UPDATE SERVER panel in the Web Controller configures the external network that the P4 may visit temporarily. It is separate from the normal Pajoniiir AP credentials.

Web Controller field/actionMeaning
Wi-Fi network (SSID)External service/update network that the P4 will temporarily join in STA mode.
PassphraseCredential for that external network. The stored passphrase is not returned to the browser page.
Update base URLBase location used by the pull-update service to discover/download releases.
SAVEStores the entered service-network/update configuration on the deck.
TEST CONNECTIONTemporary AP→STA→AP round trip. Verifies association and DHCP without installing firmware.
CHECK FOR UPDATETemporarily joins the service network and checks whether a newer valid release is offered.
INSTALLDownloads the selected offered release, verifies it and restarts into the update flow.
CLEAR WI-FIForgets the saved update network, passphrase and update URL.
Pull OTA is still signed OTA. The external update server is used for discovery/download; authenticity is not delegated to the network. The firmware verifies the downloaded signed bundle before activation. An offered pull release must be newer according to the project's release ordering.

C. Controller profile service

Upload only compiled profile.s3bin: M2.5 accepts S3CP v2/v3/v4. The compiler chooses the oldest representable version; bare historical M2.4 accepts v2 only. Never convert a profile by editing version bytes. Choose the SD profile ID and enable overwrite only intentionally. Length/CRC and binding epoch are validated; v4 initialization precedes LED feedback. Successful installation does not qualify a non-FLX4 controller.

D. API and remote-control safeguards

The embedded API accepts the canonical Pajoniiir host identity / active AP address and state-changing browser requests use a dedicated control-request marker. These checks are part of the current protection against accidental cross-site mutations and DNS-rebinding-style access. The AP is a local service surface. The shared service-password risk remains explicitly accepted for this deployment; firmware authenticity remains protected by signed OTA. Revisit per-device credentials before wider deployment if the exposure model changes.

09 · Care

Power, shutdown and handling

Before power-up

Use the accepted common-5 V / protected dual-VBUS wiring and enclosure arrangement. The inherited M2.1 bench electrical gate remains valid for the unchanged JC4880 topology; repeat and record the qualification after any wiring, supply, USB-power or enclosure change.

Before power-off

Stop playback and make sure no OTA, profile upload or service write is active. Avoid removing media during a load/write operation.

During OTA

Keep power stable until the update completes and the controller restarts. Do not use the unit for performance while firmware is being written.

During STA service

A JC4880 AP disappearance during service is expected; M3 retains AP services but may briefly change radio channel. Do not power-cycle merely because the browser loses contact during this controlled transition.

Transport

Disconnect USB and RCA cables before moving the unit. Protect connectors from lateral load and keep ventilation paths clear.

Recovery access

Keep the confirmed wired P4 service/recovery path accessible for current and future signed-release validation. Wired recovery remains the fallback for bootloader/partition/signing-baseline changes.

10 · Support

Troubleshooting

The Pajoniiir Wi-Fi network is not visible

Open Settings on the device and confirm Wi-Fi Remote is enabled. Allow the ESP-Hosted/C6 radio link time to start. If the feature was rapidly toggled, leave it enabled and allow the asynchronous worker to settle on the requested state.

My phone says “No Internet” after joining Pajoniiir

This is expected. The AP is a local control/service network and intentionally does not act as an Internet router. Stay connected and open http://192.168.4.1.

pajoniiir.local does not open

mDNS is not guaranteed on every client. Use the fixed AP address http://192.168.4.1. Also confirm you are actually connected to the Pajoniiir SSID.

The Web Controller status indicator is offline

Confirm the client is still on the Pajoniiir AP, then reload the page. If you just started TEST CONNECTION, CHECK FOR UPDATE or an update download, the AP may be intentionally unavailable while the P4 is in temporary STA mode.

The browser disconnects when I test the update network

On JC4880 this is normal: TEST CONNECTION leaves AP for STA association/DHCP and restores it. M3 retains AP services, though a radio channel change can briefly require client reconnection. The page can be unreachable for up to roughly 25 seconds. Reconnect to Pajoniiir when it returns.

CHECK FOR UPDATE makes the web page disappear

JC4880 can leave its AP for up to roughly 30 seconds while checking the external service; M3 retains AP services during its STA uplink. The check does not install anything. When the AP returns, reconnect/reload and read the resulting status.

The STA connection test fails

Verify the saved service SSID and passphrase, confirm that network is in range, and confirm its DHCP server can issue an IPv4 address. A Wi-Fi association without an assigned IP is not considered a successful service connection.

The Library is empty or USB0 is not detected

Confirm the Rekordbox medium is in the music port shown in the board table; USB0 applies only to the JC4880 reference setup. Re-seat the medium once, wait for the mount/library refresh, and confirm the device has a valid Rekordbox export. If the problem follows the medium, test another known-good export.

The first PLAY only wakes the screen

This is expected screensaver behavior. The first controller event wakes the GUI without executing the control; press PLAY again to start. Touch wake also consumes the initial touch.

The FLX4 controls do not respond

Verify the FLX4 is on the controller port for your board; USB1 applies to JC4880, USB2 to ordinary M3 and USB0 to JC1060. Confirm the controller is powered/enumerated and that the display/system is otherwise responsive. The current firmware has validated reconnect recovery, so a controlled disconnect/reconnect can be used after stopping playback if needed.

There is no MAIN audio

Check Deck PLAY state, channel fader, crossfader, Trim and Master Level. JC4880/M3 MAIN uses PCM5102A/RCA; JC1060 MAIN uses the controller USB audio path. Follow the board audio table.

There is no headphone cue

Headphones belong on the active controller. Enable CH1/CH2 CUE (PFL), then check headphone Mix and Level. Hercules uses its native headphone controls. The cue/monitor path uses FLX4 USB-audio channels 3/4.

A local OTA package is rejected

Use the signed OTA package matching your board/project in the update table. Wrong target, chip/project, key, signature, size, image hash, modified manifest or trailing data are intentionally rejected. Do not work around signature failures with a raw web upload.

The controller does not come back after an update

Allow normal startup and reconnect to the Pajoniiir AP. v91 returned AP/API and both USB roots automatically in its recorded OTA/reboot/rollback checks; a routine power cycle is not required by the current procedure. If a pending image cannot meet critical startup readiness within 60 seconds, it requests rollback. Check the restored version and save diagnostics before retrying. Wired recovery is available for boot/partition/trust failures and must target only the identified Pajoniiir board.

11 · Release status

Stable M2.5 and shared P4 beta

Frozen release identity

Tag M2.5 identifies 20f1c3f04a615209ae25e9bbdae649d0f5b44e8d. The exact ESP-IDF v6.0.2 image is published; later documentation commits do not replace it. Previous tags remain immutable.

Accepted focused checks

Final M2.5 passed signed OTA, startup readiness, USB/FLX4 availability and 62.622211 seconds of dual playback with zero strict faults and operator-confirmed Overview/MAIN/D1/D2 cue. Real-cover/logo/page and normal media-return checks passed on the artwork candidate. Earlier format, transport, cue, reconnect and diagnostic rollback results remain tied to v91.

Published artifacts

Public OTA channel advertises M2.5. The signed bundle is 2,576,620 bytes, SHA-256 44db191c1785168781e9b2893cac6dda1b92a20a5342c328d7fbfdbbd8707e27. GitHub release and HTTPS assets were independently downloaded and verified.

Accepted exception and limits

A new final M2.5 180-minute soak was explicitly waived because audio code is unchanged. No M2.5 long-soak PASS is claimed. Older v91 segmented evidence remains image-specific. Advanced touch/shift, source-cue reimport/cross-media and active-removal variants remain unrun. Shared credentials and deferred Secure Boot/Flash Encryption/eFuses retain controlled physical access and signed-OTA requirements. See the release record.

Development configurations and collaboration

A-L integration is merged into master. Modules, fixes and ideas from collaborator kayrozen include richer metadata, seek/cue/loop handling, DDJ-400/JC1060 work and Pro DJ Link. Provenance and software evidence retain his frozen donor revision. JC1060 physical testing is deferred to Kayrosen; DDJ-400/real Link hardware remains NOT RUN; JC4880 has no Link provider. Preview, recorder and SD experiments stay off in production. APTA remains separate.

Shared P4 beta 1 is published. Source 40e72fcbf403a1650185a4c64509dd11bba9f73f, three fresh ESP-IDF 6.0.2 builds, signed packages and all fifteen downloaded asset hashes verify. These exact beta images are not installed or physically accepted. Earlier M3/Hercules/S2 hours retain their exact image/configuration; S2 is operator-closed. JC4880 long soak is explicitly waived, NOT RUN; JC1060 physical checks await Kayrosen. Hosted CI and wider real-media/controller gates retain explicit limits. Beta delivery record · Final support handoff.