Interface requests for oxitide: mpris slot + auto-connect alsa and raw-usb

Hello,

I’m the publisher of oxitide (https://snapcraft.io/oxitide), a high-resolution music player for TIDAL on Linux (proprietary freeware, strict confinement, core24). Revision 1 is currently held in the manual review queue due to the mpris slot, and I’d like to request the following:

1. mpris slot declaration (name: oxitide)

The snap declares:

slots:
  mpris:
    interface: mpris
    name: oxitide

This is the standard media-player integration: media keys, now-playing metadata, and desktop playback controls (playerctl, GNOME/KDE media widgets). Same usage as other media player snaps. Please approve the slot declaration so revision 1 can clear manual review.

2. Auto-connect alsa

OxiTide’s core feature is bit-perfect audio output. It talks to ALSA hardware devices directly (hw:X) and intentionally has no PulseAudio/PipeWire backend — resampling or mixing by a sound server would defeat the purpose of the app. Without alsa connected, the app cannot output audio at all, so the interface is essential to core functionality, not an optional enhancement.

3. Auto-connect raw-usb

The app also ships a userspace USB Audio Class 2 driver (“USB Rawlink”) that claims the DAC via libusb for exclusive bit-perfect playback and hardware volume control. This requires raw-usb. It is one of the two output paths of the app (the other being direct ALSA), and a primary reason users install it.

Currently users must run snap connect oxitide:alsa and snap connect oxitide:raw-usb manually (documented in the store description), which is a poor first-run experience for a music player whose whole point is audio output.

Links:

Thank you!

This request has been added to the queue for review by the @reviewers team.

Hello @Eason :slight_smile:

I have already granted the mpris slot as it does not requires votes.

Considering the other two interfaces, given the reasoning provided, your request makes sense to me, so +1 from my side for granting auto-connection of the alsa and raw-usb interfaces to the oxitidesnap!

1 Like

Hey folks!

  • mpris is fine
  • regarding raw-usb, it allows raw access to ALL USB devices. Thus, granting auto-connection to this interface requires significant trust in the application and its publisher. Because of this reason I don’t believe we should grant it to oxitide right now
  • I’m not too convinced about auto-connection to alsa either. The use of this interface, by design, may block audio (see alsa interface - Snap documentation). Could you please clarify how funcitonal is the application only with alsa interface (without raw-usb)

Thanks

I completely understand your concerns. ALSA and USB-RAW do indeed require relatively high levels of access. However, these capabilities are necessary for a player specifically designed for audiophiles.

The player needs to access the audio device exclusively through the ALSA driver, preventing other applications from using the device while bypassing PipeWire and other system mixers to achieve true bit-perfect playback.

USB-RAW provides an even more direct audio output path. I developed it as a userspace libusb-based driver specifically to bypass the ALSA output layer. In our listening tests, the USB Rawlink output driver produced a cleaner sound, which is particularly exciting for audiophile users, even though both ALSA exclusive mode and USB Rawlink provide bit-perfect playback.

Thank you for considering my explanation. I hope this helps clarify why these permissions are necessary, and perhaps one day OxiTide could be allowed to use these two permissions through auto-connect.

Whilst I agree that both alsa and raw-usb may be needed to get the most out of the oxitide, granting auto-connection to these interfaces requires a significant level of trust. As of now, oxitide looks like a very fresh project and I believe manual-connection is more appropriate for now. -1 from side for the time being. I’ll be happy to reconsider once the project is more mature and has more traction in the community.

Hello again @Eason :slight_smile:

Would you like to procees with manual-connection for the requested interfaces?

Hi @yomonokio, yes, manual-connection works for me for now — the app already detects the missing permission and shows users the exact snap connect commands to run, so the manual flow is well supported. I’ll come back to request auto-connect once the project has more traction. Thanks @jslarraz for the review!

2 Likes