Pulseaudio Crossover Rack - multi-way crossover design & implementation with linux

okay speakertest under a fresh install of Raspbian Buster works. Just tested & I'm hearing white noise from all 8 channels of the HDMI extractor as expected.

After doing a dist-upgrade, everything still worked as expected.

Next, I ran a 'rpi-update'... (I just remembered that that was the last thing I did a couple nights ago and I couldn't remember if I'd ever tested sound after that). After the Rpi-update audio stopped working. Not sure why.

I'm going to put a clean Raspbian Buster install back in, install and run PaXoRack before doing any other sort of updates and I'll report back shortly.

Thanks again
 
I am glad you have found a way to make your 8ch HDMI work in alsa. As of the rpi-update problem, I would suggest to solve it in a different thread since it is not related to the main topic and is very RPi-specific (there are RPi specialists on this website, I have zero practical experience with RPi).

Does the working HDMI device appear in pulseaudio now (e.g. pacmd list-cards, or directly in PaXoRack GUI)?
 
Does the working HDMI device appear in pulseaudio now (e.g. pacmd list-cards, or directly in PaXoRack GUI)?

No sir. No such luck. PaXoRack still only see's the mono device.

Code:
pi@raspberrypi:~ $ pacmd list-cards
1 card(s) available.
    index: 0
        name: <alsa_card.platform-soc_audio>
        driver: <module-alsa-card.c>
        owner module: 6
        properties:
                alsa.card = "0"
                alsa.card_name = "bcm2835 ALSA"
                alsa.long_card_name = "bcm2835 ALSA"
                alsa.driver_name = "snd_bcm2835"
                device.bus_path = "platform-soc:audio"
                sysfs.path = "/devices/platform/soc/soc:audio/sound/card0"
                device.form_factor = "internal"
                device.string = "0"
                device.description = "Built-in Audio"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card"
        profiles:
                output:analog-mono: Analog Mono Output (priority 700, available: unknown)
                off: Off (priority 0, available: unknown)
        active profile: <output:analog-mono>
        sinks:
                alsa_output.platform-soc_audio.analog-mono/#0: Built-in Audio Analog Mono
        sources:
                alsa_output.platform-soc_audio.analog-mono.monitor/#0: Monitor of Built-in Audio Analog Mono
        ports:
                analog-output: Analog Output (priority 9900, latency offset 0 usec, available: unknown)
                        properties:

pi@raspberrypi:~ $
 
It looks like your PA somehow ignores the remaining devices. I found in your pa log this:

Code:
I: [pulseaudio] module-card-restore.c: Successfully opened database file '/home/pi/.config/pulse/8b2d0a0058324ffb97e3c1f6a3bdffa4-card-database'.

Perhpas module-card-restore Modules is causing the problem, using perhaps some corrupted config. Please remove all configs in home/pi/.config/pulse a retry.
 
It's not clear at all to me how the different devices announced by alsa match to the different configurations (profiles?) that pulseaudio will show.

here's my output of "aplay -l":
Code:
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog [ALC269VC Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: U5 [ASUS XONAR U5], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: U5 [ASUS XONAR U5], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: U5 [ASUS XONAR U5], device 2: USB Audio [USB Audio #2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

I use mate-colume-control to switch card profiles, but for this screenshot I used pavucontrol as it is available more widely:
attachment.php


How do these profiles correlate with the alsa subdevices? Maybe DarpMalone just needs to switch to a different profile with pavucontrol? Just a guess...
 

Attachments

  • pavucontrol.png
    pavucontrol.png
    107.3 KB · Views: 357
It's not clear at all to me how the different devices announced by alsa match to the different configurations (profiles?) that pulseaudio will show.
I think Profiles describes it

so there is a udev rule will maps a device to a particular config file (e.g. /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf) and that config file determines who the device to turned into a pulseaudio profile
 
It's not clear at all to me how the different devices announced by alsa match to the different configurations (profiles?) that pulseaudio will show.

PA profile definitions are part of PA in /usr/share/pulseaudio/alsa-mixer/profile-sets/ . The /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf describes the syntax and principle, plus profiles for general soundcards.

Maybe DarpMalone just needs to switch to a different profile with pavucontrol?

If you list your pacmd list-cards, you will see all your devices with all the profiles offered. The current profile should be in "active profile:" line. DarpMalone's list shows only the single mono card -> device -> profile. IMO his PA somehow detects his cards incorrectly and the detection outcome fits only the single mono profile out of the long list in /usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf

DarpMalone: please check that your /usr/share/pulseaudio/alsa-mixer/profile-sets/ contains the profiles. I have:

Code:
pavel@precision:/usr/share/pulseaudio/alsa-mixer/profile-sets$ ls -l
total 92
-rw-r--r-- 1 root root 18638 led 23  2019 default.conf
-rw-r--r-- 1 root root  1579 led 23  2019 dell-dock-tb16-usb-audio.conf
-rw-r--r-- 1 root root  5491 led 23  2019 force-speaker-and-int-mic.conf
-rw-r--r-- 1 root root  5456 led 23  2019 force-speaker.conf
-rw-r--r-- 1 root root  1284 led 23  2019 kinect-audio.conf
-rw-r--r-- 1 root root  2714 led 23  2019 maudio-fasttrack-pro.conf
-rw-r--r-- 1 root root  2769 led 23  2019 native-instruments-audio4dj.conf
-rw-r--r-- 1 root root  4999 led 23  2019 native-instruments-audio8dj.conf
-rw-r--r-- 1 root root  2713 led 23  2019 native-instruments-korecontroller.conf
-rw-r--r-- 1 root root  3778 led 23  2019 native-instruments-traktor-audio10.conf
-rw-r--r-- 1 root root  1583 led 23  2019 native-instruments-traktor-audio2.conf
-rw-r--r-- 1 root root  2741 led 23  2019 native-instruments-traktor-audio6.conf
-rw-r--r-- 1 root root  2419 led 23  2019 native-instruments-traktorkontrol-s4.conf
-rw-r--r-- 1 root root  1961 led 23  2019 sb-omni-surround-5.1.conf
-rw-r--r-- 1 root root   535 led 23  2019 steelseries-arctis-5-usb-audio.conf
-rw-r--r-- 1 root root  1637 led 23  2019 steelseries-arctis-7-usb-audio.conf
 
DarpMalone: please check that your /usr/share/pulseaudio/alsa-mixer/profile-sets/ contains the profiles. I have:

At a glance I see the following missing.

-rw-r--r-- 1 root root 535 led 23 2019 steelseries-arctis-5-usb-audio.conf
-rw-r--r-- 1 root root 1637 led 23 2019 steelseries-arctis-7-usb-audio.conf

Code:
pi@raspberrypi:/usr/share/pulseaudio/alsa-mixer/profile-sets $ ls -l
total 88
-rw-r--r-- 1 root root 18644 Feb 14 18:05 default.conf
-rw-r--r-- 1 root root  1579 Feb 14 18:05 dell-dock-tb16-usb-audio.conf
-rw-r--r-- 1 root root  5491 Feb 14 18:05 force-speaker-and-int-mic.conf
-rw-r--r-- 1 root root  5456 Feb 14 18:05 force-speaker.conf
-rw-r--r-- 1 root root  1284 Feb 14 18:05 kinect-audio.conf
-rw-r--r-- 1 root root  2714 Feb 14 18:05 maudio-fasttrack-pro.conf
-rw-r--r-- 1 root root  2769 Feb 14 18:05 native-instruments-audio4dj.conf
-rw-r--r-- 1 root root  4999 Feb 14 18:05 native-instruments-audio8dj.conf
-rw-r--r-- 1 root root  2713 Feb 14 18:05 native-instruments-korecontroller.conf
-rw-r--r-- 1 root root  3778 Feb 14 18:05 native-instruments-traktor-audio10.conf
-rw-r--r-- 1 root root  1583 Feb 14 18:05 native-instruments-traktor-audio2.conf
-rw-r--r-- 1 root root  2741 Feb 14 18:05 native-instruments-traktor-audio6.conf
-rw-r--r-- 1 root root  2419 Feb 14 18:05 native-instruments-traktorkontrol-s4.conf
-rw-r--r-- 1 root root  1961 Feb 14 18:05 sb-omni-surround-5.1.conf
-rw-r--r-- 1 root root  1631 Feb 14 18:05 steelseries-arctis-usb-audio.conf
 
That's fine, just a different version missing configs for specific soundcards.

Did removing the PA config dir make any difference?

No difference. I deleted the files, reopened PaXoverRack and there's no change.
Code:
pi@raspberrypi:~ $ pacmd list-cards
1 card(s) available.
    index: 0
	name: <alsa_card.platform-soc_audio>
	driver: <module-alsa-card.c>
	owner module: 6
	properties:
		alsa.card = "0"
		alsa.card_name = "bcm2835 ALSA"
		alsa.long_card_name = "bcm2835 ALSA"
		alsa.driver_name = "snd_bcm2835"
		device.bus_path = "platform-soc:audio"
		sysfs.path = "/devices/platform/soc/soc:audio/sound/card0"
		device.form_factor = "internal"
		device.string = "0"
		device.description = "Built-in Audio"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card"
	profiles:
		output:analog-mono: Analog Mono Output (priority 700, available: unknown)
		off: Off (priority 0, available: unknown)
	active profile: <output:analog-mono>
	sinks:
		alsa_output.platform-soc_audio.analog-mono/#0: Built-in Audio Analog Mono
	sources:
		alsa_output.platform-soc_audio.analog-mono.monitor/#0: Monitor of Built-in Audio Analog Mono
	ports:
		analog-output: Analog Output (priority 9900, latency offset 0 usec, available: unknown)
			properties:
 
I am going through your PA log. Search for "Checking for playback on" in your log. Your alsa refuses devices front:0 (used by stereo profiles), etc., only hw:0 (used by the mono profile). Therefore it takes only the mono profile as available. This is cause of the problem.

Please post output of:

aplay -L

aplay -v --dump-hw-params -D front:0 /dev/zero
 
I am going through your PA log. Search for "Checking for playback on" in your log. Your alsa refuses devices front:0 (used by stereo profiles), etc., only hw:0 (used by the mono profile). Therefore it takes only the mono profile as available. This is cause of the problem.

Please post output of:

aplay -L

aplay -v --dump-hw-params -D front:0 /dev/zero

Sure thing.

aplay -L

Code:
pi@raspberrypi:~ $ aplay -L
default
    Playback/recording through the PulseAudio sound server
null
    Discard all samples (playback) or generate zero samples (capture)
jack
    JACK Audio Connection Kit
pulse
    PulseAudio Sound Server
sysdefault:CARD=ALSA
    bcm2835 ALSA, bcm2835 ALSA
    Default Audio Device
dmix:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct sample mixing device
dmix:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct sample mixing device
dsnoop:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct sample snooping device
dsnoop:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct sample snooping device
hw:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct hardware device without any conversions
hw:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct hardware device without any conversions
plughw:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Hardware device with all software conversions
plughw:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Hardware device with all software conversions
usbstream:CARD=ALSA
    bcm2835 ALSA
    USB Stream Output

aplay -v --dump-hw-params -D front:0 /dev/zero

Code:
pi@raspberrypi:~ $ aplay -v --dump-hw-params -D front:0 /dev/zero
ALSA lib conf.c:5014:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM front:0
aplay: main:828: audio open error: Invalid argument
 
Last edited:
You have your alsa config corrupted. Every alsa comes with a default set of configuration files which define general devices like front, surround51 etc for each soundcard. PA uses from for detection whether each profile should be made available. You do not have any. Alsa configs are /usr/share/alsa

Post here:

cat /usr/share/alsa/alsa.conf

ls -l /usr/share/alsa/pcm/
 
You have your alsa config corrupted. Every alsa comes with a default set of configuration files which define general devices like front, surround51 etc for each soundcard. PA uses from for detection whether each profile should be made available. You do not have any. Alsa configs are /usr/share/alsa

Post here:

cat /usr/share/alsa/alsa.conf

ls -l /usr/share/alsa/pcm/

cat /usr/share/alsa/alsa.conf
Code:
i@raspberrypi:~ $ cat /usr/share/alsa/alsa.conf
#
#  ALSA library configuration file
#

# pre-load the configuration files

@hooks [
	{
		func load
		files [
			"/etc/alsa/conf.d"
			"/etc/asound.conf"
			"~/.asoundrc"
		]
		errors false
	}
]

# load card-specific configuration files (on request)

cards.@hooks [
	{
		func load
		files [
			{
				@func concat
				strings [
					{ @func datadir }
					"/cards/aliases.conf"
				]
			}
		]
	}
	{
		func load_for_all_cards
		files [
			{
				@func concat
				strings [
					{ @func datadir }
					"/cards/"
					{ @func private_string }
					".conf"
				]
			}
		]
		errors false
	}
]

#
# defaults
#

# show all name hints also for definitions without hint {} section
defaults.namehint.showall on
# show just basic name hints
defaults.namehint.basic on
# show extended name hints
defaults.namehint.extended on
#
defaults.ctl.card 0
defaults.pcm.card 0
defaults.pcm.device 0
defaults.pcm.subdevice -1
defaults.pcm.nonblock 1
defaults.pcm.compat 0
defaults.pcm.minperiodtime 5000		# in us
defaults.pcm.ipc_key 5678293
defaults.pcm.ipc_gid audio
defaults.pcm.ipc_perm 0660
defaults.pcm.dmix.max_periods 0
defaults.pcm.dmix.rate 48000
defaults.pcm.dmix.format "unchanged"
defaults.pcm.dmix.card defaults.pcm.card
defaults.pcm.dmix.device defaults.pcm.device
defaults.pcm.dsnoop.card defaults.pcm.card
defaults.pcm.dsnoop.device defaults.pcm.device
defaults.pcm.front.card defaults.pcm.card
defaults.pcm.front.device defaults.pcm.device
defaults.pcm.rear.card defaults.pcm.card
defaults.pcm.rear.device defaults.pcm.device
defaults.pcm.center_lfe.card defaults.pcm.card
defaults.pcm.center_lfe.device defaults.pcm.device
defaults.pcm.side.card defaults.pcm.card
defaults.pcm.side.device defaults.pcm.device
defaults.pcm.surround21.card defaults.pcm.card
defaults.pcm.surround21.device defaults.pcm.device
defaults.pcm.surround40.card defaults.pcm.card
defaults.pcm.surround40.device defaults.pcm.device
defaults.pcm.surround41.card defaults.pcm.card
defaults.pcm.surround41.device defaults.pcm.device
defaults.pcm.surround50.card defaults.pcm.card
defaults.pcm.surround50.device defaults.pcm.device
defaults.pcm.surround51.card defaults.pcm.card
defaults.pcm.surround51.device defaults.pcm.device
defaults.pcm.surround71.card defaults.pcm.card
defaults.pcm.surround71.device defaults.pcm.device
defaults.pcm.iec958.card defaults.pcm.card
defaults.pcm.iec958.device defaults.pcm.device
defaults.pcm.modem.card defaults.pcm.card
defaults.pcm.modem.device defaults.pcm.device
# truncate files via file or tee PCM
defaults.pcm.file_format	"raw"
defaults.pcm.file_truncate	true
defaults.rawmidi.card 0
defaults.rawmidi.device 0
defaults.rawmidi.subdevice -1
defaults.hwdep.card 0
defaults.hwdep.device 0
defaults.timer.class 2
defaults.timer.sclass 0
defaults.timer.card 0
defaults.timer.device 0
defaults.timer.subdevice 0

#
#  PCM interface
#

# redirect to load-on-demand extended pcm definitions
pcm.cards cards.pcm

pcm.default cards.pcm.default
pcm.sysdefault cards.pcm.default
pcm.front cards.pcm.front
pcm.rear cards.pcm.rear
pcm.center_lfe cards.pcm.center_lfe
pcm.side cards.pcm.side
pcm.surround21 cards.pcm.surround21
pcm.surround40 cards.pcm.surround40
pcm.surround41 cards.pcm.surround41
pcm.surround50 cards.pcm.surround50
pcm.surround51 cards.pcm.surround51
pcm.surround71 cards.pcm.surround71
pcm.iec958 cards.pcm.iec958
pcm.spdif iec958
pcm.hdmi cards.pcm.hdmi
pcm.dmix cards.pcm.dmix
pcm.dsnoop cards.pcm.dsnoop
pcm.modem cards.pcm.modem
pcm.phoneline cards.pcm.phoneline

pcm.hw {
	@args [ CARD DEV SUBDEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_PCM_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.pcm.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_PCM_DEVICE
			]
			default {
				@func refer
				name defaults.pcm.device
			}
		}
	}
	@args.SUBDEV {
		type integer
		default {
			@func refer
			name defaults.pcm.subdevice
		}
	}		
	type hw
	card $CARD
	device $DEV
	subdevice $SUBDEV
	hint {
		show {
			@func refer
			name defaults.namehint.extended
		}
		description "Direct hardware device without any conversions"
	}
}

pcm.plughw {
	@args [ CARD DEV SUBDEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_PCM_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.pcm.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_PCM_DEVICE
			]
			default {
				@func refer
				name defaults.pcm.device
			}
		}
	}
	@args.SUBDEV {
		type integer
		default {
			@func refer
			name defaults.pcm.subdevice
		}
	}		
	type plug
	slave.pcm {
		type hw
		card $CARD
		device $DEV
		subdevice $SUBDEV
	}
	hint {
		show {
			@func refer
			name defaults.namehint.extended
		}
		description "Hardware device with all software conversions"
	}
}

pcm.plug {
	@args [ SLAVE ]
	@args.SLAVE {
		type string
	}
	type plug
	slave.pcm $SLAVE
}

pcm.shm {
	@args [ SOCKET PCM ]
	@args.SOCKET {
		type string
	}
	@args.PCM {
		type string
	}
	type shm
	server $SOCKET
	pcm $PCM
}

pcm.tee {
	@args [ SLAVE FILE FORMAT ]
	@args.SLAVE {
		type string
	}
	@args.FILE {
		type string
	}
	@args.FORMAT {
		type string
		default {
			@func refer
			name defaults.pcm.file_format
		}
	}
	type file
	slave.pcm $SLAVE
	file $FILE
	format $FORMAT
	truncate {
		@func refer
		name defaults.pcm.file_truncate
	}
}

pcm.file {
	@args [ FILE FORMAT ]
	@args.FILE {
		type string
	}
	@args.FORMAT {
		type string
		default {
			@func refer
			name defaults.pcm.file_format
		}
	}
	type file
	slave.pcm null
	file $FILE
	format $FORMAT
	truncate {
		@func refer
		name defaults.pcm.file_truncate
	}
}

pcm.null {
	type null
	hint {
		show {
			@func refer
			name defaults.namehint.basic
		}
		description "Discard all samples (playback) or generate zero samples (capture)"
	}
}

#
#  Control interface
#
	
ctl.sysdefault {
	type hw
	card {
		@func getenv
		vars [
			ALSA_CTL_CARD
			ALSA_CARD
		]
		default {
			@func refer
			name defaults.ctl.card
		}
	}
	hint.description "Default control device"
}
ctl.default ctl.sysdefault

ctl.hw {
	@args [ CARD ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_CTL_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.ctl.card
			}
		}
	}
	type hw
	card $CARD
	hint.description "Direct control device"
}

ctl.shm {
	@args [ SOCKET CTL ]
	@args.SOCKET {
		type string
	}
	@args.CTL {
		type string
	}
	type shm
	server $SOCKET
	ctl $CTL
}

#
#  RawMidi interface
#

rawmidi.default {
	type hw
	card {
		@func getenv
		vars [
			ALSA_RAWMIDI_CARD
			ALSA_CARD
		]
		default {
			@func refer
			name defaults.rawmidi.card
		}
	}
	device {
		@func igetenv
		vars [
			ALSA_RAWMIDI_DEVICE
		]
		default {
			@func refer
			name defaults.rawmidi.device
		}
	}
	hint.description "Default raw MIDI device"
}

rawmidi.hw {
	@args [ CARD DEV SUBDEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_RAWMIDI_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.rawmidi.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_RAWMIDI_DEVICE
			]
			default {
				@func refer
				name defaults.rawmidi.device
			}
		}
	}
	@args.SUBDEV {
		type integer
		default -1
	}
	type hw
	card $CARD
	device $DEV
	subdevice $SUBDEV
	hint {
		description "Direct rawmidi driver device"
		device $DEV
	}
}

rawmidi.virtual {
	@args [ MERGE ]
	@args.MERGE {
		type string
		default 1
	}
	type virtual
	merge $MERGE
}

#
#  Sequencer interface
#

seq.default {
	type hw
	hint.description "Default sequencer device"
}

seq.hw {
	type hw
}

#
#  HwDep interface
#

hwdep.default {
	type hw
	card {
		@func getenv
		vars [
			ALSA_HWDEP_CARD
			ALSA_CARD
		]
		default {
			@func refer
			name defaults.hwdep.card
		}
	}
	device {
		@func igetenv
		vars [
			ALSA_HWDEP_DEVICE
		]
		default {
			@func refer
			name defaults.hwdep.device
		}
	}
	hint.description "Default hardware dependent device"
}

hwdep.hw {
	@args [ CARD DEV ]
	@args.CARD {
		type string
		default {
			@func getenv
			vars [
				ALSA_HWDEP_CARD
				ALSA_CARD
			]
			default {
				@func refer
				name defaults.hwdep.card
			}
		}
	}
	@args.DEV {
		type integer
		default {
			@func igetenv
			vars [
				ALSA_HWDEP_DEVICE
			]
			default {
				@func refer
				name defaults.hwdep.device
			}
		}
	}
	type hw
	card $CARD
	device $DEV
	hint {
		description "Direct hardware dependent device"
		device $DEV
	}
}

#
#  Timer interface
#

timer_query.default {
	type hw
}

timer_query.hw {
	type hw
}

timer.default {
	type hw
	class {
		@func refer
		name defaults.timer.class
	}
	sclass {
		@func refer
		name defaults.timer.sclass
	}
	card {
		@func refer
		name defaults.timer.card
	}
	device {
		@func refer
		name defaults.timer.device
	}
	subdevice {
		@func refer
		name defaults.timer.subdevice
	}
	hint.description "Default timer device"
}

timer.hw {
	@args [ CLASS SCLASS CARD DEV SUBDEV ]
	@args.CLASS {
		type integer
		default {
			@func refer
			name defaults.timer.class
		}
	}
	@args.SCLASS {
		type integer
		default {
			@func refer
			name defaults.timer.sclass
		}
	}
	@args.CARD {
		type string
		default {
			@func refer
			name defaults.timer.card
		}
	}
	@args.DEV {
		type integer
		default {
			@func refer
			name defaults.timer.device
		}
	}
	@args.SUBDEV {
		type integer
		default {
			@func refer
			name defaults.timer.subdevice
		}
	}
	type hw
	class $CLASS
	sclass $SCLASS
	card $CARD
	device $DEV
	subdevice $SUBDEV
	hint {
		description "Direct timer device"
		device $DEV
	}
}
pi@raspberrypi:~ $

ls -l /usr/share/alsa/pcm/
Code:
pi@raspberrypi:~ $ ls -l /usr/share/alsa/pcm/
total 68
-rw-r--r-- 1 root root  805 May  7 10:04 center_lfe.conf
-rw-r--r-- 1 root root  762 May  7 10:04 default.conf
-rw-r--r-- 1 root root 1524 May  7 10:04 dmix.conf
-rw-r--r-- 1 root root  645 May  7 10:04 dpl.conf
-rw-r--r-- 1 root root 1538 May  7 10:04 dsnoop.conf
-rw-r--r-- 1 root root  752 May  7 10:04 front.conf
-rw-r--r-- 1 root root 1188 May  7 10:04 hdmi.conf
-rw-r--r-- 1 root root 1213 May  7 10:04 iec958.conf
-rw-r--r-- 1 root root 1314 May  7 10:04 modem.conf
-rw-r--r-- 1 root root  744 May  7 10:04 rear.conf
-rw-r--r-- 1 root root  744 May  7 10:04 side.conf
-rw-r--r-- 1 root root  906 May  7 10:04 surround21.conf
-rw-r--r-- 1 root root  884 May  7 10:04 surround40.conf
-rw-r--r-- 1 root root  987 May  7 10:04 surround41.conf
-rw-r--r-- 1 root root  986 May  7 10:04 surround50.conf
-rw-r--r-- 1 root root  937 May  7 10:04 surround51.conf
-rw-r--r-- 1 root root  985 May  7 10:04 surround71.conf
 
I see the problem. RPi does not have a card config file for bcm2835 in /usr/share/alsa/cards/ and the advanced PCMs are not loaded. Try to include the hdmi.conf config by calling:

Code:
echo "<confdir:pcm/hdmi.conf>" > ~/.asoundrc

A again check aplay -L whether some hdmi devices (required by PA) appear.
 
I see the problem. RPi does not have a card config file for bcm2835 in /usr/share/alsa/cards/ and the advanced PCMs are not loaded. Try to include the hdmi.conf config by calling:

Code:
echo "<confdir:pcm/hdmi.conf>" > ~/.asoundrc

A again check aplay -L whether some hdmi devices (required by PA) appear.

Okay, I've done that but the output of aplay -L is unchanged.

Code:
pi@raspberrypi:~ $ aplay -L
default
    Playback/recording through the PulseAudio sound server
null
    Discard all samples (playback) or generate zero samples (capture)
jack
    JACK Audio Connection Kit
pulse
    PulseAudio Sound Server
sysdefault:CARD=ALSA
    bcm2835 ALSA, bcm2835 ALSA
    Default Audio Device
dmix:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct sample mixing device
dmix:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct sample mixing device
dsnoop:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct sample snooping device
dsnoop:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct sample snooping device
hw:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Direct hardware device without any conversions
hw:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Direct hardware device without any conversions
plughw:CARD=ALSA,DEV=0
    bcm2835 ALSA, bcm2835 ALSA
    Hardware device with all software conversions
plughw:CARD=ALSA,DEV=1
    bcm2835 ALSA, bcm2835 IEC958/HDMI
    Hardware device with all software conversions
usbstream:CARD=ALSA
    bcm2835 ALSA
    USB Stream Output
 
OK, let's create proper card file for your driver. Apparently just including hdmi.conf in .asoundrc does not work, probably requires some variables which are not set (CARD).

First we will learn what filename alsa expects (very likely bcm2835.conf, but let's be certain). Please output of:


Code:
strace -f aplay -L 2>&1 | grep -i bcm2835

If strace is not installed, please do so with

Code:
sudo aptitude install strace