Clemens - thank you!!! I have been trying for several months to fix this. I am now listening to the card via SPDIF for the first time!
My apologies over the two sends to alsa-dev - I sent the first one before my registration to the mailing list was approved and hadn't seen it appear on the list today after my registration had been complete for a day, so I assumed it had got dumped because I was not a list member when I sent it. So I resent it today. I will only send once for future problems, apologies.
Brian
On 29 February 2016 at 09:42, Clemens Ladisch clemens@ladisch.de wrote:
Brian Jones wrote:
I don't know how to get this bug to the developers
Just send it to the alsa-devel list. Once.
My USB soundcard is an Asus Xonar U7 Echelon Edition https://www.asus.com/Sound-Cards/Xonar_U7_Echelon_Edition/ which identifies itself to alsa as "Xonar U7 Echelon Ed." The card is supported by alsa and works well in analog mode but I cannot get digital output via alsa.
Attempts to change the iec958 device in USB-Audio.conf fail because of
the
period char and apparently my level of OS (Mint 17.3 based on Ubuntu
14.04,
kernel 3.19.0-32) does not have alsa supporting USB vendorid:productid naming
The vendor:product naming is used only for device that do not have a name. The newer version of alsa-lib would replace unsafe characters (like '.') with an underscore.
Try changing /usr/share/alsa/cards/USB-Audio.conf. Dont add an entry to the USB-Audio.pcm.iec958_device list near the top, but go to the bottom, to the USB-Audio.pcm.iec958.0 definition, and change this:
USB-Audio.pcm.iec958.0 { @args [ CARD AES0 AES1 AES2 AES3 ] @args.CARD { type string } @args.AES0 { type integer } @args.AES1 { type integer } @args.AES2 { type integer } @args.AES3 { type integer } @func refer name { ...(lots of stuff)... } default { ...(lots of stuff)... } }
to this:
USB-Audio.pcm.iec958.0 { @args [ CARD AES0 AES1 AES2 AES3 ] @args.CARD { type string } @args.AES0 { type integer } @args.AES1 { type integer } @args.AES2 { type integer } @args.AES3 { type integer } type hw # no @func card $CARD device 1 }
(This will break S/PDIF on all other USB devices, but who cares ...)
Regards, Clemens