развернуть
https://agran.livejournal.com/182872.html
исходники прошивки:
http://support.wd.com/product/download.asp?groupid=904&sid=211&lang=ru
в прошивке есть файл \packages\kernel_3.2.26.28\wd\README
И там описано как откомпилировать ядро и модули.
ссылка на компилятор: https://launchpadlibrarian.net/129960680/gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux.tar.bz2
сделано для Ubuntu 12.04 x86. В 64 битной версии может потребоваться установка 32 битных модулей:
apt-get install ia32-libs
архив с уже откомпилированными необходимыми модулями ядра: http://yadi.sk/d/3Ug6EBWuH3dZL
Эти модули откомпилированы из исходников 156 прошивки, они будут работать и с более поздними прошивками (проверил на 165 прошивке - работает).
Необходимо положить папку sound в /lib/modules/3.2.26/kernel на нашем NAS.
Дописать в файл /lib/modules/3.2.26/modules.dep следующие строки:
kernel/sound/soundcore.ko:
kernel/sound/usb/snd-usb-audio.ko:
kernel/sound/usb/snd-usbmidi-lib.ko:
kernel/sound/core/snd.ko:
kernel/sound/core/snd-hwdep.ko:
kernel/sound/core/snd-page-alloc.ko:
kernel/sound/core/snd-pcm.ko:
kernel/sound/core/snd-rawmidi.ko:
kernel/sound/core/snd-timer.ko:
kernel/sound/core/seq/snd-seq.ko:
kernel/sound/core/seq/snd-seq-device.ko:
kernel/sound/core/seq/snd-seq-midi.ko:
kernel/sound/core/seq/snd-seq-midi-event.ko:
После чего выполнить команду:
depmod -a
Потом:
modprobe snd-usb-audio
Что бы звуковые модули автоматически загружались при старте NAS, в файле /etc/modules
дописываем:
snd-usb-audio
Теперь установим пакет отвечающий за работу со звуком.
apt-get update
apt-get install alsa
Подключаем свою usb-аудиокарту (у меня SB play!) и вводим
cat /proc/asound/cards
должна появится ваша аудиокарта.
Положим name.wav файл в папку Public.
И выполним команду:
aplay /shares/Public/name.wav
Если из динамиков подключённых к usb-аудиокарте послышится наша запись значит всё готово.
Если выдаст:
ALSA lib confmisc.c:768 :(parse_card) cannot find card '0'
то в файле /etc/modprobe.d/alsa-base.conf редактируем строку
options snd-usb-audio index=-2
так что бы было
options snd-usb-audio index=0
лучше изменить на index=0 в любом случае, так как иначе оно может перестать работать позже.
Перезагружаем NAS.
установка mpd: http://agran.livejournal.com/181608.html
И всё бы хорошо, но регулятор громкости не работал, что бы это исправить в файле /etc/mpd.conf разкоментируем строку:
mixer_type "software"
И перезагружаем mpd
/etc/init.d/mpd restart
Теперь звук должен регулироваться.
p.s.s.
Проигрывание mp3 320kbs отъедает 6.3% CPU и 3.5% RAM.
Проигрывание m4a - 3% CPU и 4% RAM.
---------------------------------------------------------------------------------------------------------------------------------
компиляция ядра:
https://www.kernelconfig.io/
https://wiki.gentoo.org/wiki/Kernel/Configuration/ru
https://progi.pro/chto-delaet-make-oldconfig-delat-imenno-v-make-fayle-yadra-linux-4724477
https://opensource.com/article/18/10/kbuild-and-kconfig
Поиск модулей
Внутри menuconfig можно использовать / для поиска модулей по имени.
Нажатие клавиши 1, в примере ниже, заставит make menuconfig перейти прямо к опции помеченной (1)
make ARCH=x86 menuconfig
make ARCH=mips menuconfig
make ARCH=arm64 menuconfig
yes "" | make ARCH=arm64 oldconfig
make ARCH=arm64 defconfig
make ARCH=arm64 olddefconfig
make ARCH=x86 modules_install
make defconfig сгенерируйте конфигурацию по умолчанию
make oldconfig используется для применения вашего старого файла .config к новому ядру.
make olddefconfig
make alldefconfig похоже make olddefconfig, но он также принимает фрагмент конфигурации для слияния
make silentoldconfig устарел с версии 4.19, заменён syncconfig
make syncconfig похожа на текстовый интерфейс из make config. Для новых опций она предоставляет выбор пользователю
Если новые опции должны быть оставлены как они рекомендуются (по умолчанию), то тогда используйте make olddefconfig
make allnoconfig
make allyesconfig
make tinyconfig Сконфигурируйте минимально возможное ядро
alsa pulse
aplay -D hw:CARD=PCH,DEV=3 /usr/share/sounds/alsa/Noise.wav
aplay -D default:CARD=Device /usr/share/sounds/alsa/Noise.wav
sudo -u pulse parecord -d 15 -v /tmp/123.wav - проверка телефонной трубки
sudo -u pulse paplay -d 2 -v /tmp/123.wav - вывод звука
sudo -u pulse paplay /usr/share/sounds/alsa/Noise.wav
sudo -u pulse pactl list sinks
sudo -u pulse pactl list sources
aplay -l
lspci -k | grep Audio -A2
ls -lah /dev/snd
ls -lah /sys/class/sound/card1/controlC1
cat /proc/asound/modules
cat /proc/asound/cards
cat /proc/asound/devices
проверка udev
udevadm info -a /sys/class/sound/card1/controlC1
udevadm info --query all --path /sys/class/sound/card1/controlC1
udevadm test /sys/class/sound/card1/controlC1 2>&1 | grep apply_to_event
/dev/snd/controlC0для управления аудиомикшером,
/dev/snd/pcmC0D0pи /dev/snd/pcmC0D1p для аудиовыхода, и
/dev/snd/pcmC0D0c для аудиовхода.
Также должны быть /dev/snd/seq и /dev/snd/timer для интерфейсов MIDI и таймера соответственно.
ссылки по теме:
https://sabi.co.uk/Notes/linuxSoundALSA.html
https://www.chiark.greenend.org.uk/doc/linux-doc/html/sound/alsa-configuration.html
https://tldp.org/HOWTO/Module-HOWTO/x197.html
https://unix.stackexchange.com/questions/90027/what-is-the-sequence-loading-linux-kernel-module-on-startup-how-priority-is-set
https://www.kernelconfig.io/config_snd_usb_audio?q=&kernelversion=6.13.11&arch=arm64
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/
https://www.mankier.com/1/pactl
https://uzverss.livejournal.com/tag/mpd/