Здравствуйте! Купил звуковую плату расширения PiFi DAC+ v2.0. Поставил ее, настраивал по инструкции: https://compacttool.ru/pifi-dac-v20-pcm5122 . Информации по настройке этой платы на OS Raspbian больше не нашел (у меня стоит Raspbian от Амперки). Сделал все по инструкции. Но OS не видит плату расширения: На команду Код (C++): aplay -l отвечает: Код (C++): aplay: device_list:272: no soundcards found... Может мне кто-нибудь помочь?
Вывод 1-ой команды: (#=========My================ мои изменения) Код (C++): pi@raspberrypi:~ $ cat /boot/config.txt # For more options and information see # http://www.raspberrypi.org/documentation/configuration/config-txt.md # Some settings may impact device functionality. See link above for details # uncomment if you get no picture on HDMI for a default "safe" mode #hdmi_safe=1 # uncomment this if your display has a black border of unused pixels visible # and your display can output without overscan #disable_overscan=1 # uncomment the following to adjust overscan. Use positive numbers if console # goes off screen, and negative if there is too much border #overscan_left=16 #overscan_right=16 #overscan_top=16 #overscan_bottom=16 # uncomment to force a console size. By default it will be display's size minus # overscan. #framebuffer_width=1280 #framebuffer_height=720 # uncomment if hdmi display is not detected and composite is being output #hdmi_force_hotplug=1 # uncomment to force a specific HDMI mode (this will force VGA) #hdmi_group=1 #hdmi_mode=1 # uncomment to force a HDMI mode rather than DVI. This can make audio work in # DMT (computer monitor) modes #hdmi_drive=2 # uncomment to increase signal to HDMI, if you have interference, blanking, or # no display #config_hdmi_boost=4 # uncomment for composite PAL #sdtv_mode=2 #uncomment to overclock the arm. 700 MHz is the default. #arm_freq=800 # Uncomment some or all of these to enable the optional hardware interfaces # ==================================== My ============================================== dtparam=i2c_arm=on dtparam=i2s=on dtoverlay=iqaudio-dacplus #====================================================================================== #dtparam=spi=on enable_uart=1 # Uncomment this to enable the lirc-rpi module #dtoverlay=lirc-rpi # Additional overlays and parameters are documented /boot/overlays/README # Enable audio (loads snd_bcm2835) # ==================================== My ============================================== dtparam=audio=off #====================================================================================== dtoverlay=waveshare32b:rotate=270 #dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=0,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900 #hdmi_force_hotplug=1 #max_usb_current=1 #hdmi_group=2 #hdmi_mode=1 #hdmi_mode=87 #hdmi_cvt 480 320 60 6 0 0 0 #hdmi_drive=2 start_x=1 gpu_mem=128 dtoverlay=w1-gpio #dtparam=audio=on #hdmi_ignore_edid_audio=1 #hdmi_force_edid_audio=0 Вывод 2-ой команды: (#=========My================ мои изменения) Код (C++): pi@raspberrypi:~ $ cat /etc/modules # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. i2c-dev #=========================================== My ======================================== bcm2708_dmaengine snd_soc_pcm512x snd_soc_hifiberry_dacplus snd_soc_bcm2708_i2s #snd-bcm2835 #======================================================================================= Перезагрузку делал!
Хотя Дельфийский оракул всё ещё в отпуске, вот что могу посоветовать: Заменить '_' на '-' в /etc/modules в изменениях, после чего перезагрузка. поискать кое-что в логах загрузки ядра: Код (Bash): dmseg | grep pcm512 и показать, что выдало. Сначала нужно выполнить этот пункт.
Заменил в /etc/modules "_" на "-" - после перезагрузки ничего не изменилось Но я порылся в англоязычных сайтах, нашел кое-что и по совету оттуда: В Код (C++): /boot/config.txt добавил: Код (C++): dtoverlay=vc4-fkms-v3d max_framebuffers=2 dtoverlay=hifiberry-dac dtdebug=1 И теперь на команду Код (C++): aplay -l Отвечает: Код (C++): **** List of PLAYBACK Hardware Devices **** card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [HifiBerry DAC HiFi pcm5102a-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0 Не знаю правильно ли система определила устройство, т.к. если верить мануалу по ссылке в самом первом моем сообщении, устройство должно было определиться так: Код (C++): card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 [HifiBerry DAC+ HiFi pcm5102x-hifi-0] Subdevices: 0/1 Subdevice #0: subdevice #0 По команде в логах загрузки ядра: Код (C++): pi@raspberrypi:~ $ dmesg | grep pcm512 [ 11.122856] pcm512x 1-004c: Failed to reset device: -121 [ 11.123317] pcm512x: probe of 1-004c failed with error -121 В загруженной ОС значок звука перечеркнут с сообщением; No volume control on this device Т.е. как бы устройство нашлось, но воспроизводить звуки не хочет!
Добавил в config.txt строку dtoverlay=hifiberry-dacplus ЦАП стал включаться. В VLC media player приходиться выбирать Audio Device: snd_rpi_hifiberry_dacplus, HiFiBerry DAC+ HiFI pcm512x-hifi 0 Direct sample mixing device. Только при этой выборке идет звук, но плохой (хрипит и свистит). Я бы грешил на колонки, но в системе LibreELECT (Kodi) колонки работают нормально! Кто-то скажет что используй Kodi, но там программировать на Python-е невозможно. Поэтому пытаюсь заставить Raspbian (от Амперки) включать HiFi-модуль. При выборе устройств в VLC там есть устройство: snd_rpi_hifiberry_dacplus, HiFiBerry DAC+ HiFI pcm512x-hifi 0 Default Audio Device. При выборе его ЦАП включается (зеленый светодиод загорается), но звука нет. По идее именно оно должно работать нормально, а не mixing device, что описан выше. Еще хотелось бы чтоб HiFI-устройство выбиралось автоматически. По умолчанию Audio выставляется в default (без HiFi-модуля).
А вывод команды Код (Bash): aplay -l поменялся? В файле всё как в инструкции? Код (Bash): cat /etc/asound.conf
Команда: Код (C++): aplay -l вроде стала правильное устройство выдавать: Код (C++): **** List of PLAYBACK Hardware Devices **** card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 [HiFiBerry DAC+ HiFi pcm512x-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0 А вот Код (C++): cat /etc/asound.conf Код (C++): pcm.!default { type hw card 0 } ctl.!default { type hw card 0 }
А вот команда: Код (C++): dmesg | grep pcm512 выдает ошибки: Код (C++): [ 11.056598] pcm512x 1-004c: Failed to reset device: -121 [ 11.057294] pcm512x: probe of 1-004c failed with error -121
Модель: Raspberry Pi 3 Model B Код (C++): pi@raspberrypi:~ $ uname -a Linux raspberrypi 5.10.52-v7+ #1441 SMP Tue Aug 3 18:10:09 BST 2021 armv7l GNU/Linux
Это видел, но там из всего разговора я понял что надо попробовать в /boot/config.txt добавить: Код (C++): kernel=vmlinuz-3.18.0-trunk-rpi initramfs initrd.img-3.18.0-trunk-rpi followkernel # to enable DeviceTree, comment out the next line device_tree= gpu_mem=16 arm_freq=950 core_freq=450 sdram_freq=450 over_voltage=6 arm_freq_min=700 core_freq_min=250 sdram_freq_min=400 over_voltage_min=0 force_turbo=0 Попробую!
Экспериментировал над настройками. Ничего не помогло! Вернее помогло что при команде: Код (C++): dmesg | grep pcm512 стала выдаваться другое сообщение: Код (C++): pcm512x 1-004d: No SCLK, using BCLK: -2 Это сообщение выдается тогда когда я проигрываю аудио! Звука нет! Я думаю это лучше, чем не обнаруживать плату: Код (C++): pcm512x 1-004c: Failed to reset device: -121 pcm512x: probe of 1-004c failed with error -121 На этом я застрял. Куда двигаться дальше - не знаю!
Еще я заметил вот это: устройство bcm2835 в конфигурации отключено, но оно по прежнему аппаратно подключено. На команду: Код (C++): i2cdetect -l выдает Код (C++): i2c-1 i2c bcm2835 (i2c@7e804000) I2C adapter Хотя по идее должно было что-то вроде hifi dac+
Модуль по i²C должен определяться. В выводе должен быть хотя бы один адрес: Код (Bash): i2cdetect -y 1 Может вам это в конфиге /boot/config.txt мешает? Попробуйте закоментировать данные строки и привести конфиги к виду как в инструкции.
Комментировал данные строки и привел конфиги так как в инструкции. После танцев с бубном по инструкциям в англоязычных инструкций у меня получилось следующее. 1. Файла блеклиста Код (C++): /etc/modprobe.d/blacklist в системе не было, но я его создал, добавил в блэклист родной драйвер snd_bcm2835. 2. Команда Код (C++): dmesg| grep pcm512 после загрузки ничего не выводит. 3. При проигрывании аудиофайла включается ЦАП (зеленый светодиод на плате), звука нет. Но команда Код (C++): dmesg| grep pcm512 дает следующий ответ: Код (C++): pcm512x 1-004d: No SCLK, using BCLK: -2 4. Пытался гуглить эту ошибку, но ответа не нашел. Жду ваших рекомендаций по колдовству над PiFi DAC+ 2.0
А вывод адресов I²C Код (Bash): i2cdetect -y 1 Значит что-то его использовало или в каких-то других конфигах он был упомянут. Мне вот интересно на что-нибудь из этого в логах загрузки ядра ругани нет? Код (Bash): dmseg | grep bcm2708 Или вообще: Код (Bash): dmseg | grep bcm2708 | grep Fail Код (Bash): dmseg | grep hifiberry
Команда Код (C++): dmseg | grep bcm2708 возвращает ответ: Код (C++): [ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 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 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo [ 1.959249] bcm2708_fb soc:fb: FB found 1 display(s) [ 1.999445] bcm2708_fb soc:fb: Registered framebuffer for display 0, size 118 На команды Код (C++): dmesg | grep bcm2708 | grep Fail dmesg | grep hifiberry ответа нет. К сожаленью я пока не знаю, что это все значит!
Код (Bash): dmesg | grep bcm2708 | grep Fail Эта команда ищет в выводе команды Код (Bash): dmesg Текст "bcm2708", а потом в найдено ищет текст "Fail".