[PLUGIN] Audiophonics EVO Sabre

Hi everyone.

Olivier from Audiophonics here.

I have been working on building an official plugin for our EVO Sabre and the first version is now available in the beta plugin store.

The source code for the plugin is available here.

Once this is has been properly tested and validated, it will entirely replace our old janky system with custom prebuilt images for this device.

In this thread I hope to gather some feedback regarding user experience during (and hopefully after) beta-testing.

If you happen to have an EVO Sabre yourself but you are not sure how to do the testing, I wrote a quick walkthrough here (or here if you speak French).

If you have doubts whether you own the correct device, we are talking about this guy here :
audiophonics-evo-sabre-pack-diy-balanced-dac-2xes9038q2m-streamer-for-raspberry-pi-4

Note : I know some users also want plugins for other devices made by Audiophonics.
However this thread is about the EVO Sabre only. Please stay focused on this specific device here.
I’ll be available to discuss other devices when this one has been thoroughly tested.

Thank you for your time.

3 Likes

Well done!

Dear,
I’m using the plugin since 3 days.

  1. In the plugin the are more instructions about configuration than in your blog (the steps about Volumio config).
  2. I used the plugin for 2 days with Direct DSD mode and switched to DoP only yesterday when I found the further steps in the plugin config, but I can’t recognize any difference.
  3. I come from DietPi/LMS, where I disabled some remote action. Thanks to have put this option in the configuration, maybe could be useful add an intermediate version: leave only play/pause button and power button (I use it to start a poweroff to get a clean shutdown), ignore everything else.
  4. [BUG] on volume regulation. If you change volume from Volumio the DAC receive the variations, but if you change the volume in DAC (example through remote) Volumio doesn’t recognise it and at the next volume change made through Volumio could happen everything. In DietPi/LMS I hadn’t this problem because LMS ignored at all the volume control leaving everything to the DAC.
  5. There is any possibility about the GPIO power control? With DietPi I had correct shutdown (the system received a sigterm from the board, maybe?)
1 Like

BUG
The plugin is not compatible with IR Remote Controller, if you have both and remove one of them, the other brake because the uninstall removes lirc witch is used by both.

1 Like

First, thank you for all this feedback. This is great.

Yes, the blog just lists the basic steps to have the plugin running and the device making sound through the right output. The in-plugin documentation is meant to approach something more of an ideal configuration.

The firmware guy insisted it sounded better that way in rare occasions. However I have to admit whatever happens inside the DAC chip is way too low-level for me so I am blindly following directions here (I can’t hear a difference either).

This would actually be a really cool feature to have a drop drown menu to set / unset the purpose of each available button on the remote. I’ll see if I can add that in a future update.

I suspected weird behavior would happen when using another plugin dealing with remote control along my own. I could copy LIRC binaries in the plugin folder during installation so nothing gets broken when either gets uninstalled. But in my opinion, trying to handle the infrared receptor with multiple plugins at once will never achieve anything stable.
Actually I added the “diagnose remote” button for this kind of scenario where another plugin would try to overwrite the remote config but you are right in saying I should do more to prevent conflicts here.

Yes. The DAC listens to the Pi but the opposite is not true. So changing the volume from the front encoder / remote will result in the WebUi displaying a wrong volume while the correct value is on the DAC (left) display.
You can however achieve the same result that you had in your DietPi / Squeeze by setting the Volume mixer to “NONE” which will result in Volumio not dealing with anything regarding volume and letting the DAC handling this by itself with the remote / front encoder.
Anyway, thank you for mentioning this because this is definitely something I should detail in the in-plugin documentation. Either way, now that I wrote a plugin I am way more experienced in Volumio, I’ll see if I can use this newly found knowledge to find a better way to expose hardware volume variations in the OS because this is definitely doable.

The answer is unfortunately “yes and no, but mostly no”.
We had so much trouble implementing graceful shutdown for the EVO that this feature was added way too long after the device initial release. Basically, a few devices have the requiring wiring for this and most don’t. There is also no way to tell if it’s there from within user space… so we decided to drop this and pretend it never worked anywhere in the first place, to avoid misleading people into breaking their SD card.
I guess yours have this wired if it works in DietPi but most units will do a hard shutdown anyway, so this is not something I can add to an official plugin and the recommended solution remains : soft shutdown then hard shutdown.

Anyway I have a small update almost ready (mainly to have better support with Spotifty metadata, since 99% of the bad feedback I had was about that). I’ll do my best to take your precious observations as well while polishing this.

Thank you again.

Olivier.

1 Like

Hi Olivier.
I have the Evo Sabre since Dec 2021, I’m the italian guy who had some problem with the power supply…maybe you remember.

Probably my unit is not of the first batch, in the DAC menu there is the GPIO option but it seems not work (you or someone else told me through e-mail that was a predisposition for future development), now it is set to ON. By the way, sometimes when the PI starts the DAC display show me the filter option and I notice that is set to SLOW, when usually I set it to FAST. When it not happen, if I open the option menu the filter is corrected set to FAST.

If I use the button on the chassis the raspberry doesn’t receive anything, but through remote yes so… I configured the raspberry and I use only the remote. Strange thing is that the poweroff period vary and I think wait for something from the raspberry to complete the shutdown. If I swith off the raspberry in another way (for example through ssh) it takes a long time (maybe it wait until it reaches a timeout?).
Maybe you can release some documentation about, I think I’m not the only who bought the EVO for the many tuning options. Also some documentation about the predisposition that are on the board could be useful and open the road to many customization and new users.

Going back to my reports.

  1. I suggest to add a line at the end of the blog post suggesting users to read the documentation inside the plugin that contains important information about the config.
  2. I think copying LIRC is not a brilliant solution. I don’t know if volumio has some predisposition to manage incompatibility between two plugins or you can dialogue with the developer of other plugins to manage a common routine for the uninstall that prevent to remove LIRC if is installed the other plugin.
  3. About remote customization. Maybe is possible manage config files in cascade? You could provide a standard configuration and in LIRC’s startup routine manage to load LIRC primary with a config file “custom” and if that file is not present with the default, so if a user wants to make a custom configuration it’s possible making it a different file and everything is fine during the update.
    For example in the startup routine you can put that if it is present ~/Audiophonics/lirc.conf (for example) LIRC loads with that file, otherwise LIRC loads with your default config file. In documentation you put this information and everyone wins.
    Actually I use 2 remotes, one bluetooth (recycled from a MiTV Box) to control the Raspberry and the oem IR remote to control the DAC, LIRC only receives the on-off command from this remote.
  4. Volume regulation. Again, I don’t know if it is possible but I suggest to set the equalizer to this config during the installation routine. Anyway I suggest to remove the volume level from the Raspi oled… it’s terrible see 2 different level in the 2 displays !!!
  5. Maybe you can evaluate the possibility to provide 2 buttons on the chassis, one for the raspberry ON/OFF and one (the actual) for all the DAC leaving the GPIO available for “tuners” :slight_smile:

Thanks!
Nicola

I have put together the EVO Sabre. With the two OLED displays. It works almost perfect. After having powered up the hardware works fine. However if I use the physical volume up/down button the left display gets messed up…and seems turned upside down.

This is unfortunately not related to the plugin. Something is wrong with your particular unit and you should see with our after sale service.

Here is a short update on how this is going (end of the year means hardcore schedule so I apologize for taking that long again).

  • I am still testing various music services but most of them seem ok now.
  • Found a way around the remote conflict issue by just showing the remote as “disabled” if LIRC has been removed for whatever reason and reinstalling as needed when user tries to enable again. Also the uninstall script skips uninstalling LIRC if IR Remote Controller is installed. That should do the trick for now.
  • I’m also done rewriting the script for the right display to rearrange items after removing volume feedback from there.
  • Despite saying otherwise, I looked a bit more into the softshutdown thing and I think I have a lead but I still have tons of testing to do before I can decide whether it’s even usable. So this will remain in stand by for now or this plugin will never get out of beta.
3 Likes

Thanks!
If you share something about pinout and communication of the main hardware I think other people could help and develop something useful.
This could be a very interesting devices if it was more open.

Hi there, Salut Olivier

Although this is my third Volumio at home, congratulations on your Audiophonics installation guide for your DAC, even with video included => top.

After assembling the audiphonics DAC ( AUDIOPHONICS EVO-SABRE PACK DIY Balanced DAC 2xES9038Q2M & Streamer for Raspberry Pi 4) and finisching the setup, I have a a question.

The right screen only shows the music title for a few seconds, then the time/IP will be shown again. How can I configure it so that played music titles are displayed during playback?

THX and greetings
Philip

Hi,

this happens when volumio does not report any info about seek and/or duration, namely for “airplay” or “uPNP” streams; seek/duration is 0, so the api info for the listener are identical during the same title.
My dirty trick in the volumiolistener.js script, line 31ff …

for(d in data){
if (d == “seek” && data[d] == 0) this.data.seek = -1; //…prevent idlemode @ uPNP…
let previous_data = this.data[d];

I have 4 Volumios (PRI Zero-W/3/4), one is an Audiophonics EVO-SABRE since 12/2020, before with volumio 2 (oled python-script) and now with volumio 3 and this plugin with the “terrible” javascripting :grimacing:

But now I have adapted it to my needs again and it works quite well.

Greetings
Uwe

Hi Uwe,

THX for your response. unfortunatly there ist no such File on my Pi?

This is what I did in Putty:

volumio@jimi:/$ cd …
volumio@jimi:/$ find / volumiolistener.js

result:

find: ‘volumiolistener.js’: No such file or directory
volumio@jimi:/$

Here my Systeminformation:

  • Version of Volumio: 3.396

  • Hostname: jimi

  • Kernel: 5.10.92-v7l+

  • Governor: performance

  • Uptime: 0 days, 9 Hrs, 35 Minutes, 43 Seconds

  • Audio info

  • Hw audio configured: Audiophonics I-Sabre ES9028Q2M

  • Mixer type: Hardware

  • Number of channels: 2

  • Supported sample rate: 44100 48000 88200 96000 176400 192000

  • Board info

  • Manufacturer: Raspberry Pi Foundation

  • Model: Raspberry Pi 4 Model B Rev 1.5

  • Version: b03115

  • Firmware Version: Jan 20 2022 13:56:48 - bd88f66f8952d34e4e0613a85c7a6d3da49e13e2

Philip

Hi there,

I solved my problem by accident.
I installed the plugin “MPD OLED V1.1.1” but did not activate it. In the instalation process some packages were pulled and updated. After the subsequent restart, the displaying of the titles during playback now works. Its Magic :wink:
Cu Philip

Hi Philip,

maybe look @

/data/plugins/system_hardware/audiophonics_evo_sabre/apps/evo_oled/volumiolistener.js

Hi Uwe,
thanks, indeed I fount the File there. But as I mentioned before, the Display is now working by acident as described. ( Our Postings came nearly at the same time.) So as it works without changing the file, ill dont touch it … never change a running system ;-).

Thanks 4 Help
CU
Philip

Hi and happy New Year to all.

I have just assembled the Evo Dac and installed the plugin from Olivier. All works fine a part for the already mentioned issues (Volume on remote and phone not synchronized on left screen, Song info on the right screen only showing up for a couple of seconds, etc.).

But thanks to Olivier to bring this in form of a plug-in. I’m sure that is the way to go in the future as it permits to keep Volumio OS up to date through the mechanism provided by Volumio itself without having to reinstall a customised version of the OS each time an important upgrade becomes available.

Anyways, I have one suggestion out of the box: Please add some control on what info goes on the left screen. I would like the volume level to be the size of the bit depth (currently) so I can see it from across the room :-).

Please keep up the great work.
Thanks

[quote=“egal, post:14, topic:58140”]
for(d in data)…[/quote]

Hi Uwe,
as my “repair” disapeared as it came, I`m still strugeling.
Iff I do a frech setup, the display works fine and shows the title playing as a continius scrolling text in the right display. After a restart it´s gone, after 5 seconds the time is schown while doing playback.

So i did the folowing change to volumiolistener.js:

Line 8

this.refreshrate_ms = refreshrate_ms || 5000; // Change from 1000 to 5000 to keep the scroll allive

and Line 32 ff

for(d in data){
let previous_data = this.data[d];
if (d == “seek” && data[d] == 0) this.data.seek = -1; //prevent idlemode @ uPNP … statt auskommentierte
// if(this.data[d] === data[d] ) continue; // ne rien faire si aucun changemen

Why I changed the Line 8:
=> iff I keep the original 1000, the text twitches every second
=> iff I set it to 5000, the text restarts every 5 seconds
=> iff I if I disable the line(//), the text ist static but shows only half off the input
=> iff I set it to 50000, the time apears imediately when all the text was shown. after the time (50000) it starts again

So non off them is “the solution” and I hope Olivier will do some Work on it…

So far thanks for your help, at least I do have a semi working solution ;-).
CU
Philip