Skip to content

Releases: Enigmahack/KronosScreenRemoteDaemon

KSCR Daemon 3.1.3

Choose a tag to compare

@Enigmahack Enigmahack released this 05 Oct 03:10

Simple update - added IP range for 169.254 addresses, so crossover cables/self-assigned IP addresses can also be used.

KSCR Daemon 3.1.2

Choose a tag to compare

@Enigmahack Enigmahack released this 02 Oct 19:59

Major updates:
2.1.0 to 3.1.2

  • Nautilus support (the big one). Version 3.0.1 added the first Nautilus support. Version 3.0.2 added the v3 stream protocol, a native RGB565 stream with rectangle updates, per-frame raw, PackBits or deflate encoding, and a pull-mode delta poll.
  • Handshake and identification. New failure codes 0x03 and 0x04 say the client version is wrong, where before it looked like a bad login. MODEL, SYSINFO and discovery now report board, CPU, sensors and stream format.
  • Nautilus panel state. A new kernel module and mode_page_hook track the MODE/PAGE LEDs. Version 3.1.1 detects them from the on-screen popup, so they no longer drift. The hook patching was rewritten to be atomic and safe on the real-time (RTAI) kernel.
  • Server tuning. New config keys stream_max_kbps, stream_height and cpu_affinity, plus RTAI-aware CPU placement.
  • Input and calibration (3.1.2). BTN, BTN_DOWN and BTN_UP take raw button codes 0–127, so they work on any model. BUTTON and CHORD still work but are deprecated. CAL_GET and CAL_SET store touch calibration on the unit itself instead of the PC.
  • Smaller changes. The screensaver now wakes on MIDI or EVA activity, the boot screen no longer gets stuck on production hardware, and MIRROR_ON returns ERR MIRROR_UNSUPPORTED on Nautilus.

KSCR Daemon 2.1.0

Choose a tag to compare

@Enigmahack Enigmahack released this 19 Aug 14:39

Some simplicity refactoring, handling and validation, and bug prevention:
midi_bridge: fault-safe OA reads, wrap-split payload copy, mask validation
midi_bridge, nks4_inject: hold a mutex across calls into OA
vkbd: fix unload-vs-setup ordering; add test-only setup_delay_ms
eva_mode: distinguish alloc failure from "Eva not found"
screenremote: fix SysEx tail timeout, EINTR drop, and silent failures
screenremote: factor out due() throttle and rtf5 writer; bump to 2.1.0
docs: correct RT_chord_trigger, STATE, and .boot notes

KSCR Daemon 2.0.9

Choose a tag to compare

@Enigmahack Enigmahack released this 10 Aug 13:13

Additional support for MIDI control with several bug fixes related to OA.ko's handling of memory buffers.
Added some more guardrails and validated code fall-through to address some potential minor memory buffering with MIDI.

KSCR Daemon 2.0.6

Choose a tag to compare

@Enigmahack Enigmahack released this 25 Jul 03:11

v2.0.6 — Korg OS 3.2.3 support, boot screen reliability

Adds support for the latest Korg Kronos OS (3.2.3) and fixes a real issue
where the boot screen could hang indefinitely on some units. No client
changes required — drop-in replacement.

Korg OS 3.2.3 support

Mode/edit-context detection now auto-adapts to whatever Kronos OS version is
actually installed, instead of relying on a value hardcoded for one specific
build. Previously, updating to a newer Korg OS (like 3.2.3) could silently
break accurate mode detection until the daemon was updated to match. The
daemon now reads the correct value directly from Eva at boot, so this keeps
working automatically across future Korg OS updates too — verified against
both 3.2.2 and 3.2.3.

Boot screen reliability

The boot screen could get stuck showing indefinitely on some units, caused
by the same underlying issue above. Fixed with an additional, independent
check the daemon already uses elsewhere to safely detect when Eva has
finished loading — confirmed on real hardware to clear the boot screen
reliably even in cases where the old check alone would have stayed stuck.

Also fixed

  • The optional on-device boot splash image override (boot_splash.bin via
    FTP) had a latent bug that silently kept it from ever loading on real
    hardware. Fixed.
  • Mode detection is now more accurate in one specific case (editing a
    Program reached from Sequence mode) that pixel-based fallback detection
    could never handle correctly.
  • Added remote diagnostics (MODE_DETAIL command) for troubleshooting mode
    detection or boot issues without needing console access to the unit.

Verified end-to-end on real production Kronos hardware

KSCR Daemon 1.13.0

Choose a tag to compare

@Enigmahack Enigmahack released this 19 Jul 17:31

Major fixes to vkbd and allocation with existing keyboards, moved boot animation from client to daemon with accurate status updates, minor refactoring for readability.

KSCR Daemon 1.9.2

Choose a tag to compare

@Enigmahack Enigmahack released this 10 Jul 14:38

midi: fix boot freeze via CPU affinity; harden midi_bridge (v1.9.2)

Fixes EVA/OA boot-window freeze caused by CPU contention on Core 1.
Pin screenremote and midi_tcp to Core 0 to prevent starving the RT engine.

Hardening & Improvements:

Claim reader slots on demand to avoid collisions with OA codec reconfig.
Gate codec memory access via jiffies-based drain windows.
Use plain spin_locks for better IRQ handling.
Implement adaptive midi_tcp polling (1ms/20ms).
Fix broadcast() to drop stalled clients instead of corrupting streams.
Atomicize extract_ko writes to prevent truncated binaries.
Add SysEx parser aborts on non-RT status bytes.
Use SO_SNDBUFFORCE for larger 256KB send buffers.

KSCR Daemon 1.9.1

Choose a tag to compare

@Enigmahack Enigmahack released this 09 Jul 22:42

Core Changes

Rename: midi_inject to midi_bridge.
Mechanism: Replaced the invasive inline trampoline hook with a non-invasive multi-queue reader.
Implementation: Claims spare slots in OA's transmit queues via atomic increments; drains them from its own cursors without patching .text.

Data Stream & Performance

Generic Tap: Produces one destination-agnostic stream (Shared performance + all per-port data).
Efficiency: Captures everything the Kronos transmits once; excludes q0 (active-sensing/realtime).
Best-Effort: Reader skips forward if lagging, ensuring a slow TCP client never throttles OA's hardware output.
Throughput: 64 KB drain ring served directly to userspace (no bounce buffer) for multi-MB dumps.

Technical Improvements

Reduced Overhead: Removes JMP patches, relocated trampolines, x86 length decoders, and producer-side spinlock hazards.
Context: Runs in midi_tcp process context on /proc/.midi_ring read (no timers or shared workqueues).
Robustness: Dynamic address resolution with safe fallback for uncatalogued builds; hardware-validated on Kronos 2.

Updates & Maintenance

SysEx Fix: kscr_client.recv_sysex now skips real-time bytes ($\ge$0xF8) to prevent clock/sensing interference during reassembly.
Documentation: Updated api.md (Section 8.2) to reflect the single generic feed and removed old de-duplication logic requirements.
Version Bump: Suite version 1.8.1 to 1.9.0/1.9.1; renamed throughout all build files, source, and docs.

KSCR Daemon 1.8.0

Choose a tag to compare

@Enigmahack Enigmahack released this 07 Jul 13:31

Overhauled the MIDI grabbing from inside the Kronos, ensured is a passive-only monitoring and sends well-formatted MIDI information via TCP in real-time.

KSCR Daemon 1.7.14

Choose a tag to compare

@Enigmahack Enigmahack released this 03 Jul 23:52

Overhauled the majority of the installation after uncovering a major kernel GRUB configuration issue that was causing the system not to boot correctly. Also implemented a MIDI hook which works on 3.2.2, but haven't tested below 3.2.2. (Unknown results on 3.2.1, 3.1.4, etc.)