rooExtend – The easy start with Roon Extensions

Hi DrCWO,
I have a feature request for rooExtend.
Recently I bought a 10" HDMI Screen including housing for the Raspi for my rooNuimo setup.

https://www.amazon.de/dp/B08P48TYTS?psc=1&ref=ppx_yo2ov_dt_b_product_details

It works quite nice with a good resolution. There’s just one drawback, when Roon is paused the screen stays always active, so I have to switch it off manually.
Would it be possible to add a “screensaver” to the rooExtend display function in order to blank the screen after a certain period of inactivity?
Thanks, Matthias

My RooDial system has stopped responding. I have rebooted it and checked for updates. Here is the status:

rooExtend release: v3.3.1
Device: Raspberry Pi 4 Model B Rev 1.2
Serial number: 10000000ef969abc
IP number: 192.168.1.72
Internet connected: Yes
CD drive: –
TV Screen: –
Uptime: 1 min
Temperature: 38.9’C
Autoupdate: 2024/04/05 02:29:00
Repository: rooextend-prod-PI

My Extensions screen shows an error:

I’m sorry but I can’t do anything for you. I deliver to HDMI only what Roon sends to the browser I started in rooExtend :cold_sweat:
So please ask Roon to blank out the screen if playback was stopped. I can’t help here.

Best DrCWO

Anything looks fine :+1:
Please check if the batteries in the Surface Dial ran out of power.

Regarding the error message in the Extension manager please ask @Jan_Koudijs.

Best DrCWO

Extension Manager tries to download this file, but fails. There are recently 2 reports of this in this thread. Not necessarily an Extension Manager problem, can be integration as well. During boot, is it ensured that internet is available before the Extension Manager is started?

1 Like

Jan I reported this some time ago and it went away when I put a new DNS server.

There did not look like there was an issue with the previous one as everything worked fine, but it went away the day after I replaced it and has worked consistently since then.

I also recently switched the DNS servers my network is resolving to. I have rebooted Roon Core and the error in Appgineer seems to be resolved.

Hi @Jan_Koudijs,
It appears to be a problem during boot up. Apparently, the RPI cannot load this file at that moment.
But the next day it can get the file and so the red line disappears. In other words, it is not really an issue, only a cosmetic problem.
I presume that during the boot phase, some network-things are not yet fully loaded when a connection to raw.githubesercontact.com is forced. The RPI cannot reach it, so it will continue with the old file it already has locally. Next time the RPI tries to make the connection to raw.githubesercontact.com, everything of the network is put in service, so the RPI can download the file and the red line disappears. Nothing to worry about.
Kind regards, Frank.

1 Like

Tonight we’ve got rooExtend release: v3.3.2
Is there a changelog or what has changed or what is new?

This is correct but there is no functional change included. I currently work with one of my customers to make rooExtend work in China behind the great firewall.

We found some issues that were fixed with v3.3.2 and I hoped all were fixed. Yesterday after releasing we found out that the western timeservers cannot be accessed from China (its UTP traffic). This means there is still an issue with OTA updates.

Me and my customer will continue working on that and hopefully v3.3.3 will have solved all issues.

Conclusion:
No change for customers outside China with this update.

Best DrCWO

1 Like

Today I received and tested a Raspberry Pi 5.

The rooExtend image I provide for Raspberry ARMv8 is NOT COMPATIBLE with Pi 5 :cold_sweat: .

I will offer an image for Pi 5 but not so soon…

Best DrCWO

3 Likes

Hi I need some help please.
I tried to get this to work on a Pi3 but it didn’t. I found no way to revoke the license and now I am trying on a Pi4 and the license code does not work. Please assist. It would be helpful for others in future if there were clear instructions on how to revoke a license. I do stll have the Pi 3 and it’s SD card if needed but I have no idea how to proceed.
Thank you very much, Glen.

@Glen_Wilson2 a Google search is helpful here.

https://www.google.com/search?q=roodial+revoke+license&oq=roodial+revoke+license&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIKCAEQABiABBiiBDIKCAIQABiABBiiBDIKCAMQABiABBiiBDIKCAQQABiABBiiBDIKCAUQABiABBiiBNIBCDg1NjNqMWo3qAIAsAIA&sourceid=chrome-mobile&ie=UTF-8#vhid=-VTI90Ii-52JHM&vssid=l

@DrCWO

I did a lot of comparisons between pc and RPI4 with Rooextend in terms of sound quality and it just isn’t the same compared to Asio on Windows.
I did now test with multiple people and also blind testing between Windows and the Rpi and all noticed a difference, so it is not just in my head.
I know I don’t have to use rooextend and can go on with the pc, so this is more for me to understand what is going on.

People on another thread asked me what software I am using, so I wanted to ask if there is any difference to using moOde, volumio, roopie, rooextend in terms of standard for sending the data to the DAC.
I see that for me specifically I get alsa via rooextend, assuming pulseaudio is worse based on what I have read.
My DAC is properly recognized, so I do get its full capabilities and options compared to Asio under windows and am sending bit-perfect (no dsp volume during testing).

Overall wondering if there is anything missing compared to other Rpi OS implementations, which could be affecting sound quality?

Thank you

rooExtend is Based on a very small Footprint Linux called DietPi. It uses ALSA and the ALSA drivers.

I did measurements using Roon, streaming to rooExtend and a USB to SPDIF interface. This data stream I recorded on a separate PC with a M-Audio Soundcard with ASIO drivers to Audacity. To the data path was:

Roon on Win11 > Ethernet > rooExtend > USB > SPDIF Interface > SPDIF > M-Audio (ASIO) on Win 10 > Audacity.

I compared the recorded WAV with the Source I played in Roon and it was EXACTLY the same which means Bit-Perfect at PCM 16/44 and 24/96. So there is no doubt that rooExtend outputs a Bit-Perfect signal via USB.

I heared about reports of different sounding Roon Servers and Audiodata even offers an “Audiophile” mode and claims it sound better.

I don’t know if you use Cinch or XRL cables but Cinch cables and grounding is the major source for what you say you encounter. So let me explain.

Often Roon servers (for Example NUC devices or other small computers use an external power supply of 19V. Trouble begins if the power supply has an “Earth” wire on the AC side. This “Earth” pin at the AC connector is normally connected to the shield of the 19V DC cable connected to the PC. If the PC has let’s say 30W you have approx. 1.5A running through the DC cable. As the DC Cable to the DC has a resistance you will get a voltage drop between the “Earth” pin at the AC plug and the shield at the DC plug connected to the PC (Ohm’s law).
The really bad thing is that the current in the DC cable is not constant but strongly varies depending on CPU load. This means between the “Earth” Pin and the ground of the PC you can measure noise that reflects the CPU work.

On the other side you have a DAC or an amplifier that also is grounded. Using Cinch Cables this CPU noise is inserted to your audio signal via the shield of the Cinch Cable.

Therefore the approach of Audiodata with their “Audiophile mode” killing all processes except the Roon Server will probably improve the situation a bit. Using XLR this effect did not happen as no audio signal ist transported via the shield.

So what can be done:

  1. Use a DAC that is not connected to AC “Earth” like the RME ADI-2/4 I use.
  2. Get a PC power supply without AC “Earth” (two pins only). This breaks the current flow and stops CPU noise.
  3. Don’t use a power supply with AC “Earth” for the Raspberry Pi

Having done this redo your comparison and you will find no more differences between the sources.

Best DrCWO

Thanks @DrCWO

Some clarifications from my side.

  1. testing with RPI4 connected directly to powerbank to avoid ground issues and dirty power.
  2. Roon server and end point are separate devices. Roon rock is used as server and a windows tablet running on battery is used as end point.

From the end point everything is going to the Ares II Dac and via cinch cables to a tube preamp and via cinch to a power amp. The tube Amp doesn’t have xlr, so no way to run balanced.

If there is a ground issue it would be after the DAC at the level of the tube preamp.
Not sure what you mean as audiophile mode under audio data, but on windows I am using fidelizer, which closes all unnessecary processes.
BTW for comparison I did try two windows machines. Both had similar if not the same sound differences compared to the pi.
I am looking at getting a LPS for the pi to test as well.

I will try removing the tube Amp from the chain and using xlr for the test and come back with results.

Thanks - I did manage to transfer (revoke and re-apply) my license code from Pi 3 to Pi 4. Now my issue is the MS Surface Dial will not pair with the Pi - doesn’t matter what i do to the Dial the light no longer lights up and its impossible to get it to pair with anything at all.

  • You compared rooExtend with powerbank to a Windows Pad with Roon GUI running on internal battery right?
  • You use ASIO on Windows? This should be Bit-Perfect as rooExtend is.
  • Checked twice that no DSP is involved at both sides?
  • Did your DAC support USB Audio Class 2 with async. data transfer?

I read that of the homepage of the DAC

  • Proprietary USB Audio Solution via STM32F446 Advanced AMR Based MCU
  • Licensed Thesycon USB Driver For Windows Platform
  • Driverless On Mac & Linux

Did you use the Thesycon USB Driver For Windows or ASIO?
Can you provide the sound interface information from rooExtend?

LPS should make no difference.

Best DrCWO

Edit:
Here results from Audiosciencereview of your ARES II DAC

Great you made it without my help :smiley:
Please download the Manual of the rooExtend-Box from the place where you got the rooExtend Image. Most of its content also fits to Raspberry Pi. There I describe procedures if pairing did not work as expected.

But in your case, if the light at the Dial did not flash any more the SurfaceDial is dead. :cold_sweat:

This happens in some few cases. Some customers reported that and also one of mine died and I had to return it to get a replacement. I got it from Microsoft and they shipped a new one. If you got your replacement unit please don’t pair it to other devices but rooExtend. This often causes some trouble that has to be fixed afterwards (see rooExtend-Box Manual).

Best DrCWO

@DrCWO

Please find my answers in line.

  • You compared rooExtend with powerbank to a Windows Pad with Roon GUI running on internal battery right?
    Yes, I compared all kinds of permurarions, rpi on smps or battery, windows tablet on battery and power, there is a difference every time
  • You use ASIO on Windows? This should be Bit-Perfect as rooExtend is.
    Yes
  • Checked twice that no DSP is involved at both sides?
    yes, purple light, no dsp active also différence is heard regardless if pcm/DSD, lossy or lossless. Windows sound is more open and wider, rpi sound has better positioning and narrower soundstage
  • Did your DAC support USB Audio Class 2 with async. data transfer?
    I assume it does, as there is a windows driver, class 1 are driverless as far as I know

Did you use the Thesycon USB Driver For Windows or ASIO?
yes, otherwise Asio is not even an option on win
Can you provide the sound interface information from rooExtend?
**
Audio Interface
**** List of CAPTURE Hardware Devices ****

DENAFRIPS DENAFRIPS USB v3.12 | E1.3 at usb-0000:01:00.0-1.4, high speed : USB Audio

Playback:
Status: Stop
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000, 1411200, 1536000
Data packet interval: 125 us
Bits: 32
Channel map: FL FR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 1
Implicit Feedback Mode: No
Interface 1
Altset 2
Format: SPECIAL DSD_U32_BE
Channels: 2
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000, 1536000
Data packet interval: 125 us
Bits: 32
DSD raw: DOP=0, bitrev=0
Channel map: FL FR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 2
Implicit Feedback Mode: No

{
“card”: 1,
“name”: “DENAFRIPS DENAFRIPS USB v3.12 | E1.3”,
“playback”: {
“interfaces”: {
“1”: {
“altsets”: {
“1”: {
“format”: “S32_LE”,
“channels”: “2”,
“endpoints”: “Sync 0x81 (1 IN)”,
“rates”: “44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000, 1411200, 1536000”,
“bits”: “32”,
“map”: “FL FR”
},
“2”: {
“format”: “SPECIAL DSD_U32_BE”,
“channels”: “2”,
“endpoints”: “Sync 0x81 (1 IN)”,
“rates”: “44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000, 1536000”,
“bits”: “32”,
“map”: “FL FR”
}
}
},
“Sync EP : 1”: {
“altsets”: {
“Sync EP : 1”: {},
“Sync EP : 2”: {}
}
}
}
},
“capture”: {
“ready”: false,
“interface”: “”,
“params”: {}
}
}
numid=4,iface=CARD,name=‘Clock Source 41 Validity’
; type=BOOLEAN,access=r-------,values=1
: values=on
numid=2,iface=MIXER,name=‘PCM Playback Switch’
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=3,iface=MIXER,name=‘PCM Playback Volume’
; type=INTEGER,access=rw—R–,values=2,min=0,max=512,step=0
: values=512,512
| dBminmax-min=-64.00dB,max=0.00dB
numid=1,iface=PCM,name=‘Playback Channel Map’
; type=INTEGER,access=r----R–,values=2,min=0,max=36,step=0
: values=0,0
| container
| chmap-fixed=FL,FR

**
LPS should make no difference
battery vs the rpi smps does make a difference, so I wouldn’t rule out a Lps making a difference