VC4 and Hifiberry: Stable way to set ALSA card ordering

Open
#2,853 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
20/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
c, linux

Research direction

Start by reproducing the changing ALSA card order across boots and inspect /etc/modprobe.d/alsa-base.conf alongside alsa-restore.service. Trace how the snd_rpi_hifiberry_dacplus and vc4 modules are initialized and how restore selects cards; done means a documented, reliable ordering or disabling method that survives reboot.

Written by the indexing model from the issue text.

Description

Waiting for internal comment

Hi there!

I'be been trying for a year to fix this issue.
Thing is, I have an Hifiberry card on my Pi setup, where I use the open source VC4 driver stack. That gives me two ALSA cards: snd_rpi_hifiberry_dacplus and vc4-hdmi. It works almost fine, but sometimes alsa-restore.service fails on boot because card ordering changes between boots, so it tries to apply control states to the wrong card, thus failing.

So, I need a way to stabilize alsa card ordering among boots.
I tried creating /etc/modprobe.d/alsa-base.conf with these contents:

options snd_soc_hifiberry_dacplus index=0
options vc4 index=1

Alternatively I also tried:

options vc4 index=-2

(It's supposed to tell modprobe to NEVER allow a card to be the first ALSA one).

However, none of those seem to work. From boot to boot, I get different cards as the first ALSA card...
Can you guys tell me of a working way to get the Hifiberry to ALWAYS be the first ALSA card?
Disabling the vc4-hdmi card entirely would be an option, but there seems to be no way either.

Thanks!

Dominant language
C
Stars
13.2k
Forks
5.5k
Avg merge
2d 21h
Merged PRs (30d)
21

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from raspberrypi/linux

All issues in raspberrypi/linux

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.