HQPlayer Embedded v5.15 (Ubuntu 25.04) — playback loops EOS/STOPPED immediately

:police_car_light: Summary

After upgrading to HQPlayer Embedded v5.15.1 on Ubuntu 25.04 (“plucky”), Roon hands off playback but HQPlayer never enters PLAYING. Logs show track id … then state -> STOPPED / EOS. Control ports 4321 / 43210 are listening. Need help diagnosing handshake or config issue.


1. System & Setup

  • OS / Kernel: Ubuntu 25.04 “plucky”, Linux 6.14.0-32-generic
  • HQPlayer version: v5.15.1 Embedded
  • Binary: ELF 64-bit x86_64, dynamically linked, supports AVX2
  • Network / DAC: HQPlayer → Holo Red (Network Audio) → Pass Labs amplifier
  • Network type: Gigabit Ethernet, stable LAN

2. Listening Ports & Service Status

ss -ltnp | grep -E '(:4321|:43210)'

Output:

LISTEN 0      3     0.0.0.0:43210
LISTEN 0      8     0.0.0.0:4321

Service status:

Active: active (running)
Main PID: <pid> /usr/bin/hqplayerd
…  
Sep 27 … state -> STOPPED  
Sep 27 … metadata: … song='Roon' uri=''  
Sep 27 … state -> EOS  
Sep 27 … state -> STOPPED  

So HQPlayer receives the track command but never transitions to PLAYING.


3. Configuration (key settings)

From Web UI / XML screenshot:

  • Backend: Network Audio
  • Output mode: PCM
  • PCM Gain Compensation: –6 dB
  • Filters: 1× = poly-sinc-gauss-long, Nx = poly-sinc-gauss-hires-lp
  • Dither: shaped
  • FFT filter length: 4096
  • DSP pipelines: 2
  • Bit rate / Rate limit: 384 000 (Auto fallback)
  • Buffer times: Network = 100 ms, ALSA = 50 ms
  • Device: Red: Holo Audio UAC2.0 Gen2 (USB Audio)

4. What I’ve tried so far

  • Restarting hqplayerd service
  • Verifying no missing dependencies (libgupnp & libgmpris installed)
  • Checking ports & firewall
  • Setting simpler config (PCM, safer rates) but same symptom
  • Ensured binary is correct (supports AVX2, no missing libs)
  • Confirmed web UI is reachable
  • Confirmed license is valid and no startup errors

5. Symptoms

  • Upon starting playback from Roon, HQPlayer logs:
track id …  
metadata: … song='Roon'  
state -> EOS  
state -> STOPPED  
  • No PLAYING state ever appears
  • Roon shows HQPlayer as reachable, but audio never starts
  • MPRIS “OnNameLost” log lines appear (but expected in headless setup)

6. Questions & requests

  1. Could the PCM / buffer / rate limit mismatch cause HQPlayer to abort playback right after track start?
  2. Were there breaking changes in v5.15 re: handshake or default config (vs v5.14)?
  3. What is a safe “minimal working config” I can revert to, that should almost certainly allow playback, so I can isolate the fault?
  4. Any enhanced logging or diagnostic mode I can turn on to capture where the internal playback pipeline fails?

Thank you to anyone who can help — I’m happy to post the full XML, logs (with redactions), or try suggested configs.

Officially supported are LTS versions and 25.04 is not LTS version (24.04 is LTS)

What does the HQPlayer log file say about the incident?

The HQPlayer log shows the following around the incident:

NAA output network engine starting…
NAA output network format: 384000/24/2 [pcm]
NAA output network PCM streaming
NAA output network engine started at: 384000
End of track at 289.56/0/-289.56
Playlist clear
Playlist add URI: http://127.0.0.1:30000
Play (-1/0)
Engine reinit, rate or blocksize change triggered
Rate: 44100, block size: 2352
Initialization complete, starting audio engine
Server stopping…
Control ended from 127.0.0.1:42660
Playback engine stopped

Setup:
• HQPlayer Embedded v5.15.1
• Ubuntu 25.04 (non-LTS, upgraded from 24.04 for NVIDIA RTX 4060 Ti driver support)
• Backend: Network Audio → Holo Red (NAA)
• Output mode: PCM
• Control: Roon (same host, 127.0.0.1)

Issue: playback starts, then within about a minute HQP logs “Server stopping / Control ended from 127.0.0.1” and playback halts.

Would you like me to rerun with --verbose enabled and share a full trace?

Appreciate any help as had to upgrade beyond 24.04 due to other dependencies.

I would actually expect to have something else too here. But is your license key shown valid on /about page (not showing Trial)?

Thanks Jussi — you’re right, it was showing as Trial. That explains the EOS/STOPPED loop. I’ve just re-applied the license key and playback is now working again.

Is it expected that the key needs to be re-entered after each version upgrade, or should it normally persist across updates?

This one had me going a bit loopy, so I really appreciate your support and clarification.

1 Like

If you install over the old version with “dpkg -i”, then the key is retained, as the packaging system understands that you are updating existing software installation. If you remove a package first and then reinstall, then settings, license key, etc are not preserved (since uninstallation cleans up these).

Thanks, Jussi. In my case the issue wasn’t the upgrade path—my fingerprint changed and after a quick test adding a USB NIC showed plugging/unplugging that adapter alters the fingerprint, so my key falls back to Trial even though the install kept the file.

I’ve emailed support with my current fingerprint to reissue the license, and wonder if buying the USB dongle as a medium-term fix would resolve this so future hardware swaps don’t break activation.

If there’s any way to avoid USB NICs influencing the fingerprint, let me know—but the dongle sounds like the right solution for me.

I have the dongle. You can plug it in to any machine and you are good to go. The fingerprint is the dongle, no worry at all about hardware changes or machine changes.

2 Likes

Yes, that’s the case. So if you’d like to freely experiment with different hardware, then the USB dongle is a good option.

Thanks, Jussi — understood. For now my priority is to get the license reissued against the new fingerprint I’ve already sent to support, so I can get HQPlayer back out of Trial mode quickly. Longer term, I’ll go ahead with the USB dongle so future hardware swaps don’t cause the same problem.

Yes, we will typically do this within 48 hours. We usually work seven days a week, but there are sometimes few exceptions where it can take more than 24 hours.