Vinyl lovers : ADC I2S card as Volumio analog input - driver compiled but no ALSA mount

Hi Volumio community,

I am calling the group intelligence to help me unlock an feature of interest for people bridging old school analog with modern digital feature.

Having the opportunity to play vinyls trough Volumio would be very appealing to benefit from source selection and the DSP features allowing speaker/room correction.

I know this is achievable using the Hifiberry DAC+ADC hat, but it is also currently the only possibility. So if you want to use a more qualitative DAC hat (Audiophonics or IanCanada), you are stuck in a dead end.

Recently, a very tenacious chap unlocked the use of ADC card (master mode) on raspberry Pi running Raspian and tweaking some scripts (see here). It is recognized by ALSA as a recording device and used to save vinyls in digital format.

I could successfully reproduce the procedure on the Raspi OS, and got it to compile on Volumio OS by loading first the kernel sources (shell command : volumio kernelsource) followed by the procedure detailed for Pi OS.
Unfortunately in Volumio OS, the compiled driver does not seem to be loaded in ALSA as the arecord -L output stays empty.

So I wonder if there are some Volumio ALSA masters around that could give a hand here to unlock the last bit of the process? I am wondering if there is some ALSA environment tweak in the Volumio distro that prevent the driver to be mounted.

Thanks a lot to anyone who could provide some insight/help.

Benoit

2 Likes
sudo raspi-config    ( is not included in volumio )

sudo apt-get -y upgrade  ( never do this in volumio this will break volumio )

remove [url] and [/url] ( this is html code), all in between can stay. 

the rest should be possible so far as i understand it.

Interesting

Can you share more info on what you did to compile it?
Driver source repo link? Kind of error output by dmesg?

Side note: there is an easier method, just get a USB phone preamp :wink: This is how I do it

Hi DVO,

of course, the comments you made are fully valid and I did correct/not use the commands you highlighted :wink:

If we succeed in the implementation, I will devise a Volumio specific instruction.

Hi Michelangelo,

here is the sequence I followed

===============================

fresh Volumio install (last version)
SSH enabled
terminal connect

volumio kernelsource
sudo nano /boot/config.txt 

add/uncomment the line : dtparam=i2s=on
save
quit

sudo apt install python3-pip
cd ~
sudo pip3 install --upgrade adafruit-python-shell
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2smic.py
sudo python3 i2smic.py

Reboot

sudo nano Raspberry-Pi-Installer-Scripts/i2s_mic_module/snd-i2smic-rpi.c

change the line :
.daifmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS,
into
.daifmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM,
save
quit

sudo python3 i2smic.py

Reboot

===============================

here is the output of the second run of i2smic.py (driver compilation) :

This script downloads and installs
I2S microphone support.

RASPBERRY_PI_4B detected.

Auto load module at boot? [y/n] y

Installing…
Reading package lists…

Building dependency tree…
Reading state information…

git is already the newest version (1:2.20.1-2+deb10u8).
raspberrypi-kernel-headers is already the newest version (1:1.20220308~buster-1).
0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.
fatal: destination path ‘Raspberry-Pi-Installer-Scripts’ already exists and is not an empty directory.
make -C /lib/modules/5.10.92-v7l+/build M=/home/volumio/Raspberry-Pi-Installer-Scripts/i2s_mic_module clean
make[1]: Entering directory ‘/usr/src/rpi-linux’
CLEAN /home/volumio/Raspberry-Pi-Installer-Scripts/i2s_mic_module/Module.symvers
make[1]: Leaving directory ‘/usr/src/rpi-linux’
make -C /lib/modules/5.10.92-v7l+/build M=/home/volumio/Raspberry-Pi-Installer-Scripts/i2s_mic_module modules
make[1]: Entering directory ‘/usr/src/rpi-linux’
CC [M] /home/volumio/Raspberry-Pi-Installer-Scripts/i2s_mic_module/snd-i2smic-rpi.o
MODPOST /home/volumio/Raspberry-Pi-Installer-Scripts/i2s_mic_module/Module.symvers
CC [M] /home/volumio/Raspberry-Pi-Installer-Scripts/i2s_mic_module/snd-i2smic-rpi.mod.o
LD [M] /home/volumio/Raspberry-Pi-Installer-Scripts/i2s_mic_module/snd-i2smic-rpi.ko
make[1]: Leaving directory ‘/usr/src/rpi-linux’
rm -f /lib/modules/5.10.92-v7l+/kernel/sound/drivers/snd-i2smic-rpi.ko
install -m644 -b -D snd-i2smic-rpi.ko /lib/modules/5.10.92-v7l+/kernel/sound/drivers/snd-i2smic-rpi.ko
depmod -a
DONE.

Settings take effect on next boot.

REBOOT NOW? [Y/n]

============================

The output of the dmesg is annexed as a separate text file. volumio_dmesg_out.txt (42.7 KB)

Thanks a lot for four support.

Benoit

13.592160] pcm186x: probe of 1-004a failed with error -121
[   14.586123] snd_i2smic_rpi: disagrees about version of symbol module_layout
[   14.587358] snd_i2smic_rpi: disagrees about version of symbol module_layout
[   14.587867] snd_i2smic_rpi: disagrees about version of symbol module_layout
[   14.588344] snd_i2smic_rpi: disagrees about version of symbol module_layout
[   14.588809] snd_i2smic_rpi: disagrees about version of symbol module_layout
[   14.590462] snd_i2smic_rpi: disagrees about version of symbol module_layout
[   14.590962] snd_i2smic_rpi: disagrees about version of symbol module_layout

could not find the error code in the pdf maybe usefull for find out what’s wrong.

Potentially some info about the “snd_i2smic_rpi: disagrees about version of symbol module_layout” in the last answer of this page :

Out of my competence area, but it one can relates Volumio kernel, the way the driver is compiled and the error, it would eb appreciated.

Benoit

Hi Michelangelo,

as the implementation of the ADC via I2S seems difficult, and I even doubt that real time channeling ADC-DSP-DAC through the I2S bus will ever be doable, I am left with your proposal to use a USB ADC source.
As I already own a good phono preamp, I have found this audio capture device which seems decently priced (100€) with regards to its capabilities (192/24) : Tascam US-1x2HR | High-Resolution USB Audio Interface (2 in / 1 mic, 2 out).
There is a guy describing its full setup (Windows based) here : Multi-Channel, Multi-Amplifier Audio System Using Software Crossover and Multichannel-DAC | Page 35 | Audio Science Review (ASR) Forum

Do you thing this TASCAM USB audio interface will be recognized by Volumio?

Thanks for your advice on this piece of hardware.

Benoit

sofar as i see it’s only ios and windows, maybe this helps you …

https://wiki.linuxaudio.org/wiki/hardware_support
here is one speaking about the focusrite 2i2

Hello,

The Tascam 1x2HR is working very well as USB A/D source in Volumio! It also offers the ability to detect signal clipping (on its front panel) and consequently adjust the preamp accordingly. It is also the only USB ADC sound card I’ve found with RCA line in input. It is built like a tank and all this for for less than 100€.

Some follow up though : Volumio states (on the play screen) the source is 48kHz 32 bits whereas it is in fact 192/24.

Is it a display bug or a real thing? As I wanted to pass the turntable signal through Volumio to benefit from the DSP feature (convolution), I do not want the DSP to be fooled by a wrongly detected frequency / bit rate.

If there are some test to be done to clarify this or some Config to be made to set the frequency / bit rate manually on this Volumio input, I would be happy to know :wink:.

cross referencing other analog input issues/results/sucesses in the forum :