Allo USBridge Signature AX88179 Driver

Here I did a USB connection test for you. DSD 5.6 Mhz, 11290 Kbps, plays well without clicks or other problems, Qobuz 96/24 no problem too. I played DSD using Mconnect apps. I couldn’t connect my Synology NAS in Volumio

Thanks so much for taking the time!

If you’re playing via MConnect, I guess music will be streaming via UPnP? Even so, it must be still be using the Ethernet in the Usbridge, so it’s still a puzzler. Unless it’s buffered differently with this method, or something, total guesswork at this point!

Not sure if it helps, but to connect my NAS (Netgear ReadyNAS), I need to type ‘vers=1.0’ into the Options section under Advanced Options, otherwise Volumio won’t find it.

You’ve given me hope so I’ve just flashed a fresh Volumio install again and am currently rebuilding my NAS’s library

If I still have the same problems, I might have a play with MConnect

No luck! Immediate pops and clicks playing 24 bit / 96kHz from the NAS :face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth:

Weirdly, didn’t seem to have this problem running Moode Audio (was testing that before flashing this new Volumio), so I don’t know why the Asix driver works in that distro, but not this!

Will have a try with MConnect as a work around

MConnect doesn’t seem to have helped anything, sadly; still the same pops and clicks when playing tracks from the NAS to Volumio via UPnP!

Have you done anything special with your Volumio install?

I didn’t interfere with the system in any way, I just installed two plug-ins - Paradise radio and Music Shield. I play Qobuz directly from the volumio. From the nas server using Mconnect via upnp renderer.

Music shield seemed an interesting avenue, but I installed that and tried every conceivable combination of settings and it made little difference to the stuttering.

This is going to drive me mad. . . . . . how can you have flawless playback and myself and others have unbearable pops / clicks?! There must be something about your system that holds the key

Played a few hours today from Qobuz, Tidal (192/24) All good. No pops/clicks.

Love it!! That looks really smart, what a cool setup.

My young daughter would have her grubby fingers all over that before I had a chance to turn it on, though!

I’ve been playing with Moode Audio extensively it doesn’t miss a beat! I can play any resolution I like over Ethernet and it’s faultless. I think I need some advice from @Volumio themselves here, as Moode works perfectly with the stock ASIX driver, no reason why Volumio shouldn’t be able to do the same?

Some very interesting background info here:

https://moodeaudio.org/forum/showthread.php?tid=5667

This seems to explain an awful lot, all except for the fact that Volumio causes issues for every Usbridge Signature owner except you! Your setup is pretty special, though

Hi,
my 2 cents on this.

Raspberry PI until version 3 has a very flaky implementation of the USB Bus. This results in USB packets dropping (the clicks you hear) in case it receives a lot of data. This happens especially in one specific circumstance: big files which are received via network (both LAN and WI-FI are connected via USB) and played to an USB DAC.

This situation creates an high bandwith flow of data which the PI3 (and CM3 used in USBridge signature) cannot handle, dropping packets and resulting in noise and clicks.

This also explains why you don’t have any via I2S (USB is used only to receive data, not to play it).

I personally know very well this issue since I fought against it for years (until PI4 came out) and I managed to slightly improve it by tweaking the IRQ scheduler and other kernel parameters. However up to a certain degree, since there’s a variance in USB DACs that make them behave differently (specifically, they require different packet sizes, which have an impact on the issue). This means that with a specific USB DAC it might work very well, and with another one might be unlistenable.

In my opinion, this has been a design flaw on Allo’s part since the inception of USB Bridge. They knew about this issue, and this is why they designed it with a different NIC to not have this issue. However, for this to work they needed to include (manually) a specific driver. They could have done the right thing and ask the kernel mantainers to include it, but rather they preferred to manually apply the fix.
This could have worked if they would have actively supported all the distributions using it, but apparently they stopped doing now.

Then, why does it work on Moode and not Volumio? I believe that this is because moode uses an older kernel than us (the kernel we use now is very recent, in order to support PI5) and they maybe manually patch the driver.

Will Volumio patch the driver? NO. This is not something we should do and we want to. But if any of the community is willing to jump in and help, this is what needs to be done:

  • Check the repo where we build the OS:
    GitHub - volumio/volumio3-os
  • Checkwhich kernel we use (on a regular basis) and compile the module required and host it somewhere. We use this place to store our artifacts:
    GitHub - volumio/volumio3-os-static-assets
  • Send a PR to volumio3-os to install it at build time
  • Take the committment to mantain it, when we update the kernel

Hope this explains the whole situation and hopefully motivates someone to jump in and help on this

@volumio Thank you very much for adding your insight into this!

I just had a quick look and the Moode kernel seems fairly recent at 6.1.21-v8+; What do you think?

According to the comments in the Moode forum “We reverted to the stock ASIX driver starting with moOde 8.3.1 because the Allo modified driver sources would not compile under the 6.1 kernel in 8.3.1 and since Allo stopped maintaining their modified driver around mid-2022”

Of course, it’s totally unreasonable of anyone to expect Volumio to patch a custom driver for Usbridge Sig owners, but it seems Moode don’t need to do this, so I’m struggling to understand why it would be any different for Volumio? Sorry if I’m misunderstanding something, all fairly new to me, this!

These are the versions of the ‘stock’ ASIX drivers between Moode and Volumio (using “modinfo ax88179_178a | grep version”):

Moode Audio v8.3.7 (Kernel 6.1.21-v8+):

srcversion: 4F20279445CFFBEE8F4234B
vermagic: 6.1.21-v8+ SMP preempt mod_unload modversions aarch64

Volumio latest 3.616 (Kernel 6.1.69-v7+):

srcversion: AFFD172DBE364134CF8CB62
vermagic: 6.1.69-v7+ SMP mod_unload modversions ARMv7 p2v8

I was able to alter the ASIX driver code and have my USBridge running Volumio 3.631 with no audio issues apparent through my USB DAC. I followed a procedure pretty similar to the GitHub solution you posted previously. All you need is the updated driver file “ax88179_178a.ko.xz” on your USBridge and a simplified version of the Allo shell script to install it. Note that this updates the ethernet driver only, so I don’t think it does anything if you’re using wifi. I have done this for the past few updates of Volumio, and it has been working for me so far.

Thank you! That’s really encouraging

I couldn’t get the GitHub instructions to work before, but I’ll have another try when I’m back home in a couple of weeks time with modifying the Allo install.sh

Hey, can you explain me how you did that ? I’m stuck with 3.512 and I have no idea how to proceed to update the asix driver by myself

Here’s an outline of what I did. This requires another raspberry pi 3b+, and familiarity with enabling and using ssh on the USBridge. I have done this twice now and it still seems to work. I may get around to putting on GitHub when I get a chance. Note that it may take several hours to install the volumio development stuff.

how to add Allo’s ASIX driver to Volumio 3.631 (kernel 6.1.69-v7+):

On a new install of Volumio 3.631 on a separate raspberry pi 3b+:

get development stuff

volumio kernelsource
cd /usr/src/rpi-linux
make

after waiting a long time :

put Allo’s code and header (ax88179_178a.c & ax88179_178a.h) in a working directory /home/volumio/USBridge

edit C source code for ax88179_178a.c supplied by Allo

c source modify: see commented out line below (eliminated 3rd argument):
/* netif_napi_add(netdev, &axdev->napi, ax_poll, AX88179_NAPI_WEIGHT); */
netif_napi_add(netdev, &axdev->napi, ax_poll);

compile driver

(substitute current kernel for 6.1.69-v7+ here - get kernel name by running ‘uname -r’)

make -C /lib/modules/6.1.69-v7+/build M=/home/volumio/USBridge modules

compress resulting module file and fix permissions

xz -z ax88179_178a.ko
sudo chown root:root ax88179_178a.ko.xz
sudo chmod 644 ax88179_178a.ko.xz

transfer the module file to the USBridge running 3.631

check for layout match with installed system version

sudo modprobe --dump-modversions /lib/modules/6.1.69-v7+/kernel/drivers/net/usb/ax88179_178a.ko.xz | grep module_layout

sudo modprobe --dump-modversions ax88179_178a.ko.xz | grep module_layout

install driver if kernel names match

sudo install -p -m 644 ax88179_178a.ko.xz /lib/modules/6.1.69-v7+/kernel/drivers/net/usb/
sudo depmod 6.1.69-v7+

1 Like

I will include the patched driver in the next builds for RPi

1 Like

here the beta image with patched driver for ax88179

https://updates.volumio.org/pi/volumio/3.637/Volumio-3.637-2024-03-31-pi.zip

@inca21 @aharman could you please give it a try? I don’t have hardware to test it.

you can flash the image from the link above, or enable test mode and perform an OTA update

1 Like

From my initial testing, I’d say that’s a success! I installed this morning, I’ve been playing up to 24-bit / 196kHz and it hasn’t missed a beat yet!! I can even run my room correction filters in Fusion DSP whilst playing 24/196, this driver literally transforms the Usbridge Signature. I was getting dropouts with anything above CD quality before and I had no chance of running Fusion DSP on top.

Thank you so much Dario!! I’m so pleased to have my Usbridge running Volumio properly again

Thanks also to Skrzyp for posting the instructions above, really appreciate you taking the time to do this! I’m still going to have a try with this to see where I went wrong!

glad to hear it works good!

all the credits goes to @skrzyp, his guidelines to build the driver with newer kernel were the missing piece to have it included in Volumio images

1 Like