!!################################ !!ALSA Information Script v 0.4.65 !!################################ !!Script ran on: Thu Mar 7 23:04:54 UTC 2024 !!Linux Distribution !!------------------ ID_LIKE=debian !!DMI Information !!--------------- Manufacturer: Product Name: Product Version: Firmware Version: System SKU: Board Vendor: Board Name: !!ACPI Device Status Information !!--------------- !!Kernel Information !!------------------ Kernel release: 6.1.21-v7 Operating System: GNU/Linux Architecture: armv7l Processor: unknown SMP Enabled: Yes !!ALSA Version !!------------ Driver version: k6.1.21-v7 Library version: 1.2.4 Utilities version: 1.2.4 !!Loaded ALSA modules !!------------------- snd_bcm2835 snd_bcm2835 !!Sound Servers on this system !!---------------------------- Pulseaudio: Installed - Yes (/usr/bin/pulseaudio) Running - Yes !!Soundcards recognised by ALSA !!----------------------------- 0 [b1 ]: bcm2835_hdmi - bcm2835 HDMI 1 bcm2835 HDMI 1 1 [Headphones ]: bcm2835_headpho - bcm2835 Headphones bcm2835 Headphones !!PCI Soundcards installed in the system !!-------------------------------------- !!Modprobe options (Sound related) !!-------------------------------- snd_pcsp: index=-2 snd_usb_audio: index=-2 snd_atiixp_modem: index=-2 snd_intel8x0m: index=-2 snd_via82xx_modem: index=-2 snd_bcm2835: enable_headphones=0 snd_bcm2835: enable_headphones=1 snd_bcm2835: enable_hdmi=1 !!Loaded sound module options !!--------------------------- !!Module: snd_bcm2835 enable_hdmi : Y enable_headphones : Y force_bulk : N num_channels : 8 !!Module: snd_bcm2835 enable_hdmi : Y enable_headphones : Y force_bulk : N num_channels : 8 !!ALSA Device nodes !!----------------- crw-rw---- 1 root audio 116, 0 Mar 7 17:44 /dev/snd/controlC0 crw-rw---- 1 root audio 116, 32 Mar 7 17:44 /dev/snd/controlC1 crw-rw---- 1 root audio 116, 16 Mar 7 17:44 /dev/snd/pcmC0D0p crw-rw---- 1 root audio 116, 17 Mar 7 17:44 /dev/snd/pcmC0D1p crw-rw---- 1 root audio 116, 48 Mar 7 17:44 /dev/snd/pcmC1D0p crw-rw---- 1 root audio 116, 1 Mar 7 17:44 /dev/snd/seq crw-rw---- 1 root audio 116, 33 Mar 7 17:44 /dev/snd/timer /dev/snd/by-path: total 0 drwxr-xr-x 2 root root 60 Mar 7 17:44 . drwxr-xr-x 3 root root 200 Mar 7 17:44 .. lrwxrwxrwx 1 root root 12 Mar 7 17:44 platform-bcm2835_audio -> ../controlC0 !!ALSA configuration files !!------------------------ !!System wide config file (/etc/asound.conf) #asound rc new version jrubinstein - experimental with charlie Laubs plugins #edits Tuesday Mar 5th, 2024 by Karl Fiebich. ACDf v3.0 plugins. #this sets the speakers for Klipsch KSF10.5 to 2.5-way #the lower woofer has low pass filter at 300hz #the mid has an all pass filter to maintain polarity #the mid has a low pass filter at 2600hz. #the tweeter has a high pass filter at 2200hz to match as-built crossover. #the as-built tweeter is left in place for protection. #it is not possible to cross over the tweeter below 2200hz unless the as-built #capacitor is replaced. #next step in the speaker mod should be to replace the existing tweeter crossover #with a polycap DC blocking capacitor. #the tweeter high pass filter is two 1st order to better blend with the as-built crossover. # # #The following table lists which parameters should be specified for each filter #type: # #ACDf filter types and their required parameters: #TYPE DESCRIPTION REQUIRED PARAMETERS # 0 gain block db, polarity # 0 corrected gain block is polarity, db # 1 1st order LP db, polarity, fp # 2 1st order HP db, polarity, fp # 3 1st order AP polarity, fp # 4 1st low shelf fp, db # 5 1st high shelf fp, db #21 2nd order LP db, polarity, fp, qp, #22 2nd order HP db, polarity, fp, qp #23 2nd order AP polarity, fp, qp #24 2nd order low shelf db, polarity, fp, qp #25 2nd order high shelf db, polarity, fp, qp #26 parametric EQ db, fp, qp # [filtertype polarity db fp qp] # #27 2nd order notch db, polarity, fp, qp, fz #28 biquadratic filter db, polarity, fp, qp, fz, qz # I suspect that the sequence is Type Gain Polarity defaults.pcm.rate_converter "speexrate_best" #added conversion to 96khz using the rate plugin #the idea here is to use the speexrate_best instead of mplayer upsampling pcm.!default { type plug slave { pcm filtereq # added the rate 96000 # rate 96000 # changes to the rate made here require reboot to take effect } } ctl.!default { type hw card 0 #This is the default and it works correctly. } pcm.filtereq { type ladspa slave.pcm filtercross path "/usr/lib/ladspa" channels 8 plugins { # MUST HAVE AT LEAST ONE FILTER ACTIVE OR WILL NOT WORK!!! # if adding EQ to the signal, it must be done in this section # Cut signal by -3dB to allow later boost # add 4th order low shelving filter, -0.87dB each for total -1.74dB # This should allow for better bass blending below 300hz, and # eliminate the need to boost at 500hz. 0 { #This is the source the LEFT channel. label ACDf policy none input.bindings.0 "Input" output.bindings.0 "Output" input { controls [24 1 -0.87 300 0.707 1] } # 2nd order low shelving filter } 1 { label ACDf policy none input.bindings.0 "Input" output.bindings.0 "Output" input { controls [24 1 -0.87 300 0.707 1] } # 2nd order low shelving filter } 2 { label ACDf policy none input.bindings.0 "Input" output.bindings.0 "Output" input { controls [0 0 -1.5] } #gain block -1.5db } 3 { #This is the source for the RIGHT channel. label ACDf policy none input.bindings.1 "Input" output.bindings.1 "Output" input { controls [24 1 -0.87 300 0.707 1] } # 2nd order shelving filter } 4 { label ACDf policy none input.bindings.1 "Input" output.bindings.1 "Output" input { controls [24 1 -0.87 300 0.707 1] } # 2nd order shelving filter } 5 { label ACDf policy none input.bindings.1 "Input" output.bindings.1 "Output" input { controls [0 0 -1.5] } # gain block -1.5dB } } } pcm.filtercross { #crossover at 300hz and 2600hz type ladspa slave.pcm speaker path "/usr/lib/ladspa" channels 8 plugins { # Process the woofers 300hz low pass # This takes the high frequency off the woofer to allow the mid to better match the tweeter 0 { label ACDf #lowpass for woofer output to channel2 LEFT WOOFER policy none input.bindings.0 "Input" output.bindings.2 "Output" input { controls [21 0 0 300 0.707 1 1] } #2nd order low pass 300hz } 1 { label ACDf #lowpass for woofer output to channel2 LEFT WOOFER policy none input.bindings.2 "Input" output.bindings.2 "Output" #Final output to LEFT WOOFER input { controls [21 0 0 300 0.707 1 1] } #2nd order low pass 300hz } 2 { label ACDf #lowpass for woofer output to channel3 RIGHT WOOFER policy none input.bindings.1 "Input" output.bindings.3 "Output" input { controls [21 0 0 300 0.707 1 1] } #2nd order low pass 300hz } 3 { label ACDf #low pass for woofer output to channel3 RIGHT WOOFER policy none input.bindings.3 "Input" output.bindings.3 "Output" #Final output to RIGHT WOOFER input { controls [21 0 0 300 0.707 1 1] } #2nd order low pass at 300hz } # High Pass Filter TWEETER # The as-built KSF10.5 crossover will not block all low frequency as seen in full range test # Full range to the left tweeter makes an unwanted sound # This may be a consequence of the woofers being disconnected from the crossover 4 { label ACDf #1st order high pass1 left TWEETER policy none input.bindings.0 "Input" output.bindings.4 "Output" input { controls [2 0 0 2200] } #1st order all pass } 5 { label ACDf #1st order high pass2 left TWEETER policy none input.bindings.4 "Input" output.bindings.4 "Output" #Final output to left Tweeter The polarity may need to be changed to match phase. input { controls [2 1.2 0 2200] } #1st order high pass with 1.2dB gain } 6 { label ACDf #1st order high pass1 right TWEETER policy none input.bindings.1 "Input" output.bindings.5 "Output" input { controls [2 0 0 2200] } #1st order high pass } 7 { label ACDf #1st order high pass2 right TWEETER policy none input.bindings.5 "Input" output.bindings.5 "Output" #Final output to right Tweeter input { controls [2 1.2 0 2200] } #1st order high pass with 1.2dB gain } # # MID SPEAKER SECTION # The mid does not actually need a low shelf filter to match levels # The woofers have 4th order low pass filter # It is necessary to maintain polarity on the mid low pass # This will require 2 x 2nd order all pass filters # or 0db Gain Block # the gain block does not affect phase and preserves the crossover numbering sequence # uncomment the gain block and comment out the all pass filter to test # The 4th order Low Pass filters will keep phase consistent with the Woofer 8 { label ACDf #low shelf 1 LEFT MID policy none input.bindings.0 "Input" output.bindings.6 "Output" # input { controls [24 1 -1 300 0.707 1 1] } #2nd order low shelf -1db gain # input { controls [3 1 20] } #1st order all pass filter # input { controls [23 1 0.707 1] } #2nd order all pass filter input { controls [0 0 0] } #gain block 0dB is just a placeholder } 9 { label ACDf #low shelf 2 LEFT MID policy none input.bindings.6 "Input" output.bindings.6 "Output" # input { controls [24 1 -1 300 0.707 1 1] } #2nd order low shelf -1db gain # input { controls [3 1 20] } #1st order all pass filter # input { controls [23 1 0.707 1] } #2nd order all pass filter input { controls [0 0 0] } #gain block 0dB is just a placeholder } 10 { label ACDf #low pass 1 LEFT MID policy none input.bindings.6 "Input" output.bindings.6 "Output" # input { controls [21 1 0 2200 0.707 1 1] } #2nd order low pass input { controls [21 0 0 2600 0.707 1 1] } #2nd order low pass } 11 { label ACDf #low pass2 LEFT MID policy none input.bindings.6 "Input" output.bindings.6 "Output" #Final output to left MID # input { controls [21 1 0 2200 0.707 1 1] } #2nd order low pass input { controls [21 0 0 2600 0.707 1 1] } #2nd order low pass } 12 { label ACDf #low shelf 1 RIGHT MID policy none input.bindings.1 "Input" output.bindings.7 "Output" # input { controls [24 1 -1 300 0.707 1 1] } #2nd order low shelf -1db # input { controls [3 1 20] } #1st order all pass input { controls [0 0 0] } #gain block 0dB } 13 { label ACDf #low shelf 2 RIGHT MID policy none input.bindings.7 "Input" output.bindings.7 "Output" # input { controls [24 1 -1 300 0.707 1 1] } #2nd order low shelf -1db # input { controls [3 1 20] } #1st order all pass input { controls [0 0 0] } #gain block 0dB } 14 { label ACDf #low pass1 right MID policy none input.bindings.7 "Input" output.bindings.7 "Output" # input { controls [21 1 0 2200 0.707 1 1] } #2nd order low pass input { controls [21 0 0 2600 0.707 1 1] }#2nd order low pass } 15 { label ACDf #low pass2 right MID policy none input.bindings.7 "Input" output.bindings.7 "Output" #Final output to right MID # input { controls [21 1 0 2200 0.707 1 1] } #2nd order low pass input { controls [21 0 0 2600 0.707 1 1] } #2nd order low pass } } } pcm.speaker { type plug slave { pcm "t-table" channels 8 rate "unchanged" # rate 96000 # Changing the rate to 96000 shows 96000 on mplayer, and gives Dolby Digital on the OnkyoTX-SR605 # but there is no sound. } } pcm.t-table { type route slave { # pcm "hw:0,1" #try this with the new Raspian OS # pcm "hw:CARD=b1,DEV=0" #try this with the new Raspian OS pcm "hw:0,0" #this works correctly and should not need to be changed. channels 8 } ttable { # these numbers map the inputs to the output speaker terminals. # channel in.channel out on/off 0=off 1=on. AMP TERMINAL = SPEAKER DRIVER # The filters work on the channel in. The channel out is matched to the Onkyo TX-SR605 # AV receiver. # the channel arrangement is different with 6.1.27-v7 # 0.2 0 # CENTER turned off always. # 1.3 0 # LFE turned off always. # 2.0 1 # FRONT LEFT = left woofer. # 3.1 0 # FRONT RIGHT = right woofer # 4.6 1 # REAR LEFT = left tweeter # 5.7 0 # REAR RIGHT = right tweeter # 6.4 1 # SURROUND LEFT = left mid # 7.5 0 # SURROUND RIGHT = right mid # the channel arrangement below is for 6.1.27-v7 # with all channels turned OFF I still get sound from both speakers # upsample is occurring and 96khz shows up on the Onkyo TX-SR605 0.2 0 # CENTER turned off always. # 0.2 gives sound from Left Woofer 1.3 0 # LFE turned off always. # 1.3 gives sound from Left and Right speakers 2.0 1 # FRONT LEFT = left woofer # 2.0 gives sound from Left and Right speakers high pitch. 3.1 0 # FRONT RIGHT = right woofer 4.6 1 # REAR LEFT = left tweeter 5.7 0 # REAR RIGHT = right tweeter 6.4 1 # SURROUND LEFT = left mid 7.5 0 # SURROUND RIGHT = right mid } } pcm.plughw.slave.rate = "unchanged"; # leaving as unchanged with 96000 resampling by mplayer gives dolby indication on receiver but no signal #pcm.plughw.slave.rate = 96000; !!Aplay/Arecord output !!-------------------- APLAY **** List of PLAYBACK Hardware Devices **** card 0: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1] Subdevices: 4/4 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 card 0: b1 [bcm2835 HDMI 1], device 1: bcm2835 HDMI 1 [bcm2835 HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones] Subdevices: 4/4 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 ARECORD **** List of CAPTURE Hardware Devices **** !!Amixer output !!------------- !!-------Mixer controls for card b1 Card hw:0 'b1'/'bcm2835 HDMI 1' Mixer name : 'Broadcom Mixer' Components : '' Controls : 4 Simple ctrls : 1 Simple mixer control 'PCM',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback -10239 - 400 Mono: Playback 0 [96%] [0.00dB] [on] !!-------Mixer controls for card Headphones Card hw:1 'Headphones'/'bcm2835 Headphones' Mixer name : 'Broadcom Mixer' Components : '' Controls : 2 Simple ctrls : 1 Simple mixer control 'PCM',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback -10239 - 400 Mono: Playback 0 [96%] [0.00dB] [on] !!Alsactl output !!-------------- --startcollapse-- state.b1 { control.1 { iface MIXER name 'PCM Playback Volume' value 0 comment { access 'read write' type INTEGER count 1 range '-10239 - 400' dbmin -9999999 dbmax 400 dbvalue.0 0 } } control.2 { iface MIXER name 'PCM Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.3 { iface PCM name 'IEC958 Playback Default' value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write' type IEC958 count 1 } } control.4 { iface PCM name 'IEC958 Playback Con Mask' value '0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access read type IEC958 count 1 } } } state.Headphones { control.1 { iface MIXER name 'PCM Playback Volume' value 0 comment { access 'read write' type INTEGER count 1 range '-10239 - 400' dbmin -9999999 dbmax 400 dbvalue.0 0 } } control.2 { iface MIXER name 'PCM Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } } --endcollapse-- !!All Loaded Modules !!------------------ 8021q backlight bcm2835_codec bcm2835_isp bcm2835_mmal_vchiq bcm2835_v4l2 cfg80211 drm drm_panel_orientation_quirks fixed fuse garp i2c_bcm2835 i2c_dev ip_tables ipv6 llc mc raspberrypi_hwmon rfkill sg sha256_generic snd snd_bcm2835 snd_pcm snd_pcm_oss snd_timer spi_bcm2835 spidev stp uas uio uio_pdrv_genirq v4l2_mem2mem vc_sm_cma videobuf2_common videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_vmalloc videodev x_tables !!ALSA/HDA dmesg !!-------------- [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 240555 [ 0.000000] Kernel command line: coherent_pool=1M snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=1184 bcm2708_fb.fbheight=624 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 console=ttyAMA0,115200 console=tty1 root=PARTUUID=6d86e1d0-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles [ 0.000000] Unknown kernel command line parameters "splash", will be passed to user space. -- [ 9.764949] bcm2835-isp bcm2835-isp: Loaded V4L2 bcm2835-isp [ 9.818388] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned. [ 9.820692] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned. !!Packages installed !!-------------------- ii alsa-tools 1.2.2-1 armhf Console based ALSA utilities for specific hardware ii alsa-topology-conf 1.2.4-1 all ALSA topology configuration files ii alsa-ucm-conf 1.2.4-2 all ALSA Use Case Manager configuration files ii alsa-utils 1.2.4-1 rpt1 armhf Utilities for configuring and using ALSA