Personal tools

Compiling Audio Science Driver V4.20.42 on Ubuntu 22.04

From Rivendell Wiki

Jump to: navigation, search

From a recent email on the Rivendell mailing list, there is an issue getting the Audioscience HPI driver V4.20.42 working on Ubuntu 22.04. Chris Cottingham reached out to Audioscience and received the fix below.

The drivers can be downloaded here:

https://www.audioscience.com/internet/download/linux_drivers.htm

https://www.audioscience.com/internet/download/drivers/released/v4/20/42/hpklinux_4.20.42.tar.gz


Re: [Rivendell] ASI card issues - Ubuntu 22 Contact photo From Chris Cottingham on 2024-01-27 14:11

I have an update for everyone. I contacted Audioscience and Delio responded to my issue with the ASI driver and Ubuntu 22.04. He found an issue with the makefile and compiling on Ubuntu 22.04. He had me make some changes to the Makefile and the asihpi.c files in the /alsa-drv directory.

Once I made these changes, the 4.20.42 driver was made and installed by DKMS just fine. He was awesome!!

He also mentioned that they are going to release a new version with the changes in the future. He did not say when and I did not ask. I was just happy to have a working driver.

Here are the changes he had me make. They worked for me. I do not warranty them nor does Audioscience. Your mileage may vary but I hope it fixes issues for other people as well. The "-" are what you remove and the "+" are what you add. Do not add the "-" or the "+" symbols in the file. They are only here to show what is removed and added.

Once these changes are made, simply go into the hpilinux_4.20.42/alsa-drv directory and input "sudo dkms install . " command.

~/hpilinux_4.20.42/alsa-drv/ - Makefile

 -ifdef KBUILD_VERBOSE
 +ifneq ($(or $(KBUILD_MODULES),$(KBUILD_VERBOSE),$(KBUILD_EXTMOD)),)


~/hpilinux_4.20.42/alsa-drv/ - asihpi.c

 -static int snd_asihpi_card_free(struct snd_card *card)
 +static void snd_asihpi_card_free(struct snd_card *card)
 {
  -       if (!card)
  -               return 0;
  -
  -       return snd_card_free(card);
  +       if (card) {
  +               snd_card_free(card);
  +       }
 }


I hope this helps everyone!

Have a wonderful day!