"To push 'Play' use slPhantomTray."

slPhantomTray pilots the Devialet Phantom speakers and accessories from your Windows desktop.

slPhantomTray 1.0 is a Windows 10 (and later) remote control APP for Devialet Phantom speakers that makes it easy to Play, Pause, change the Volume and choose your source from the Windows desktop. 

Getting started

Get the App  - R38

  1. After install look for slPhantomTray in the Start menu.
  2. Start the app and look for the D logo in the system tray.
  3. Start your favorite source playing using the Devialet APP before setting up the slPhantomTray application.
  4. Use right click on the icon and select the SystemInfo menu to set up your speakers IP address and Default Source. (its easy as 1,2,3,4. -- see steps below)
  5. Now the menu on the System Task Bar controls your Phantoms, Play|Pause, Volume.

What does it do?

The app is optimized to Play a default source from a default Phantom speaker system.   In this scenario, 99% of the time the Devialet app is only used to start 1 source, the "default" source playing. 

Instead of looking for a MOBILE device, starting it up, connecting to the WIFI network, starting the Devialet app, letting it find the systems, etc ... all just "To push "Play" ... use slPhantomTray."

Once you have selected your default system and source you can control Play, Pause, Volume from the app notification icon in the Windows desktop taskbar.

You can also explore some of the Devialet API calls and results without writing any code or If coding is your jam, the source code is provided along with some native C# classes for the Devialet web API and some examples of deserialization of the JSON return data.

Release info

How Do I use It?

After running the installer find the slPhantomTray app icon and App settings.

Launch screen

Notification Icon

slPhantomTray icon in taskbar showing right click context menu

Initial Configuration

If your phantoms are not already playing now is a good time to use the Devialet app to start your favorite default source playing. If it was already playing, then you are ready.

If you see: Check IP address -> An error occurred while sending the request. in the result box.

After Clicking 1. UpdateIP and you see something like the picture below you are ready to set this as the default IP..

Explore >>> toggles this view:

Note: The 1.UpdateIP button re-connects to the IP and makes two 'Get' API calls, One each for the "systeminfo:" and "sourceinfo"  URIs.

You can experiment by selecting other URIs using the drop-down menu or type in your own custom path, then click the Update IP button to re-run the API call.

Click 2. Set Default  -  to set this IP address as the default IP address to use when slPhantomTray is started.

Now you are ready to test sending Play commands.

The Sources drop down shows the list of sources after clicking Update IP.

Default in 'Now Playing' is the currently playing source.

  1. If there is a currently playing source after clicking update UP, it will be 'entered' into the "Now Playing" box.
  2. or after clicking UpdateIP, you can select the source you want to Play from the Source DropDown, and it will copy to the "Now Playing" box.
  3. you can also paste/enter in a 'valid' SOURCEID into the Now Playing box.

Click 3. Play Source - you should see the Result "Playing" and hear the source start playing if it was not already playing.

Click 4. Make Source Default - You are done. Close this dialog using the X upper right.

Now the context menu controls (Play, Pause, Vol Up/Down) this system/source when the app is started.

Run on startup

The Run on startup App Settings are found under the APP settings, or the Startup Applications settings.

To Uninstall:

  1. First Exit the application from the app menu so its no longer running.
  2. Goto APPs & Features / Add Remove Programs. 
  3. You can quickly find it by searching for 'SlPhantomTray'
  4. Then click the Uninstall button.
Add/Remove Programs dialog

The vision:

slcmdr = Network automation of the Devialet Phantom speakers.  A set of tools collectively known as slcmdr (pronounced slCommander rhymes with salamander).


*slPhantomTray is a Windows system tray application for Phantom remote control. This is the initial project to learn about the Devialet IP control API.


*slcmdrlib is a wrapper library for the Devialet IP Control API interface. This provides an abstraction of the Devialet APIs.  (not implemented)


*slacmdr is a command line interface wrapper for slcmdrlib to provide a CLI to Phantom remote control. This is to provide a basic CLI and test platform for the library.


using the "Devialet IP Control R1" interface described here.


Build and Test

Developed using VS 2022, .Net, and a few dependencies still in flux...

To build:

clone the repo : https://branch73.visualstudio.com/slcmdr

open the SLN file, resolve missing dependencies.

Dependencies are installed from NuGet Package Manager.

Open the solution, resolve the dependencies, and build.

You will need to have a code sign certificate or create a temporary certificate to build and install the package.

Then install/run it.

Changes/release notes

3/7 - R38: updated UX, bug fix: save IP copied saved source to IP input.

3/6 - R35: doubleclick the tray icon will open the systeminfo window. Make systeminfo single instance.  use ZeroConfig for discovery.  Discovery tab has basic start/stop functionality working. Currently just prints a list of discovered clients (IP/DisplayName) pairs responding to a "_http._tcp.local." service query. 

3/2 - R34:  add Settings tab: shows saved 'default' IP and SourceID with a link to manage startup settings.  Discovery - work in progress.  other minor improvements to the error handling, now using RESULT text box for more verbose result details on any API calls that return an error and providing Okay affirmation when using other Save,Play operations.  Still no sign of SmartScreen warnings...! take it about 2 weeks in this experience for it to learn about something new...

2/27 - R33: update all bets are on the app install package.  this provides a path forward the one-click install is install built in the download zip but is no longer going to be maintained.  The App install package provides a way to integrate with the windows app settings controls, pretty icons, and other modern features so this is the path forward.   Really though the app does not require installation, just having the files in the \Release folder from the build will work fine.    Noticed today SmartScreen was not flagging the installs, maybe a good sign.   Noticed Firefox works better to hand off to the APP installer than does Edge.  Edge seems to want to download the file first then open to run. Where Firefox will hand off to the app installer.  Mime type seems correct on the server but its not IIS. most of the docs want you to use IIS. hmm...  Need to do additional testing and troubleshoot why app install from Edge is not as nice as it is in Firefox. 

<geekery> - MSIX app packages provide the path forward for packaging and installation as of R33 the Click Once install is no longer going to be used. Its still enabled in the solution but as of R33 future of the app is in 'packaging' folders as a MSIX rather than 'publishing' as a Click-Once install.  This provides for better integration with modern (Windows 10) versions of Windows. The initial points being the start menu tile, app icon, and MORE settings with the startup controls.

2/21 - R25: update SystemInfo page layout,  use expand to show  explorer ux which is hidden by default.  Put focus on Setting the IP and Source defaults. Error codes on API calls are returned to the system tray ICON.  Current playing state is shown as the default system tray icon tool tip text.   Remove extra tabs not used , system, devices, groups, sources from systemInfo page. 

<geekery> Use native C# classes for storing API return values, classes for Device, Source, and current Playing State structures are implemented.   updated MSIX file.  Updated capabilities, Internet not really required, just Local network.  Does not really appear to make any difference for a Win32 APP, capabilities are more for UWP modern apps, vs desktop applications.  For various reasons, seems like software developers are being herded in 1 direction.  All roads seem to lead to making this an app distributed from the Windows Store to make it an easy install.

2/17 - R22: Explore tab Sources list is now a drop-down. Selecting an item from the source list updates the Source Input text box for Play/Test/ and selecting the default.  Now no need to copy and paste source IDs , just pick the desired source from the drop down , then make it the default.     Source files now includes the start of an APP Package install, published online install is still a ClickOnce...

2/11 - R21: published via ClickOnce "online" install. its all signed but SmartScreen does not like it yet...

<ISSUE> Microsoft SmartScreen hates developers. This "SmartScreen" thing sure makes installing the app seem scary.  The slPhantomTray app only accesses the local (what ever IP you tell it to use) network to act as a client to your speaker. And in the online version can check the installation location for a newer version. Does not require any special admin or elevated permissions.  My journey down the rabbit-hole to make SmartScreen happy has not yet ended.   Per the "current" smartscreen "overview" docs you are instructed to 1) sign your app, (ok, done), and 2) get a Windows logo.  But to get a logo you are sent to some "SharePoint" announcement from 2018 saying the Windows logo program is being discontinued in 2019.  Folks its 2022!  NOW WHAT?  More digging not uncover anything that is CURRENT and CLEAR about how a developer can submit something so the signing cert can be assimilated and in turn not have SmartScreen flag the app as "suspicious" or  "not commonly download".  Most of the roads eventually lead you to publishing the Desktop App to the "Windows Store".

2/10 - R20: SystemInfo:Explore source input box defaults to current playing source ID. Make it easier to set the currently playing source as the default source.

2/9 - R19: added SystemInfo:Explore:Combo boxes for System and Source API calls to provide better templates and defaults.  Default to show the currently playing source rather than all group sources. Now a little easier to find the SourceID of the currently playing source to make it the default.

2/8 - R18:added SystemInfo:Config tab checkbox option to create/delete slPhantomTray app shortcut in the current users startup folder.

Why does it exist

The app was written to replace the loss of spark in the DOS1 to DOS2 upgrade, loss of the the most basic functionality to control the System to Play, Pause, Change the Volume and change Sources from Windows.

Collaborate

If you have suggestions or want to report issues slcmdr@eltekco.com

Links