Tôi đang dùng thử Bonnet Loa âm thanh nổi Adaf nhung I2S 3W cho Raspberry Pi - Mini Kit , được chế tạo khoảng hai MAX98357 (datasheet: adafbean , maxim ), trên Raspberry Pi Zero W với Raspbian Stretch (được nâng cấp ngày hôm qua).
Vấn đề là tôi có "bật" khi bắt đầu / thay đổi bản nhạc, ngay cả với cùng tốc độ âm thanh. Hướng dẫn của họ để "sửa chữa" những thứ này thêm phần lớn các thiết lập dự phòng vào các tệp cấu hình alsa /etc/asound.conf
và ~/.asoundrc
.
Tôi hiện chỉ có asound.conf, như thế này:
$ cat /etc/asound.conf
pcm.speakerbonnet {
type hw card 0
}
pcm.dmixer {
type dmix
ipc_key 1024
ipc_perm 0666
slave {
pcm "speakerbonnet"
period_time 0
period_size 1024
buffer_size 8192
rate 44100
channels 2
}
}
ctl.dmixer {
type hw card 0
}
pcm.softvol {
type softvol
slave.pcm "dmixer"
control.name "PCM"
control.card 0
}
ctl.softvol {
type hw card 0
}
pcm.!default {
type plug
slave.pcm "softvol"
# slave.pcm "dmixer"
}
softvol
tồn tại để có thể kiểm soát âm lượng trên toàn cầu (trong phần mềm, lãng phí độ phân giải), do DAC không có điều khiển phần cứng. Nhưng rõ ràng một số người chơi cũng có thể tự làm điều này, vì vậy hoặc là đủ.
Về trình điều khiển, các hướng dẫn của họ được thêm dtoverlay=hifiberry-dac
vào /boot/config.txt
, nhưng Hifiberry DAC (lỗi thời) dựa trên một chip (đơn) khác nhau, PCM5102.
pi@raspberry:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
Hifiberry liệt kê cấu hình cho các sản phẩm của họ tại https://www.hifiberry.com/build/documentation/configuring-linux-3-18-x/ .
Tôi muốn biết sự khác biệt là gì và liệu đề xuất có phù hợp với IC không. Trình điều khiển có thể gửi dữ liệu bổ sung gây ra "pop" hoặc "crackle" không?
Thật thú vị, kiểm tra loa không bao giờ xuất hiện để tạo ra tiếng ồn ban đầu khi phát lại
$ speaker-test -c2 --test=wav -w /usr/share/sounds/alsa/Front_Center.wav
, trong khi mpg123 làm (với MP3 đơn âm 16kHz), cũng giữa các bản nhạc:
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.23.8; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Decoder: generic
Trying output module: alsa, device: <nil>
Using default module dir: /usr/lib/arm-linux-gnueabihf/mpg123
Module dir: /usr/lib/arm-linux-gnueabihf/mpg123
Module path: ./output_alsa.so
Chosen output module: alsa
...
Audio driver: alsa
Audio device: (null)
Audio capabilities:
(matrix of [S]tereo or [M]ono support for sample format and rate in Hz)
| s16 | u16 | s32 | u32 | s24 | u24 | f32 | s8 | u8 | ulaw | alaw |
------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
8000 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
11025 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
12000 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
16000 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
22050 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
24000 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
32000 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
44100 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
48000 | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S | M/S |
(chỉ định alsa hoạt động, chỉ định thiết bị không thành công)
Nó không có trong tập tin, tôi đã kiểm tra. Ngoài ra, mplayer bắt đầu phát tệp giống hệt OK, nhưng có "bật" giữa các bản nhạc, mặc dù đầu ra âm thanh của trình phát âm thanh cụ thể dường như gần như loại bỏ popping khi thay đổi bản nhạc.
mplayer -msglevel all=6 -ao alsa file.mp3
MPlayer 1.3.0 (Debian), built with gcc-6.2.1 (C) 2000-2016 MPlayer Team
CPU: ARM
AUDIO: 16000 Hz, 2 ch, s16le, 24.0 kbit/4.69% (ratio: 3000->64000)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
Building audio filter chain for 16000Hz/2ch/s16le -> 0Hz/0ch/??...
[libaf] Adding filter dummy
[dummy] Was reinitialized: 16000Hz/2ch/s16le
[dummy] Was reinitialized: 16000Hz/2ch/s16le
Trying preferred audio driver 'alsa', options '[none]'
alsa-init: requested format: 16000 Hz, 2 channels, 9
alsa-init: using ALSA 1.1.3
alsa-init: setup for 1/2 channel(s)
alsa-init: using device default
alsa-init: opening device in blocking mode
alsa-init: device reopened in blocking mode
alsa-init: got buffersize=32768
alsa-init: got period size 1024
alsa: 44100 Hz/2 channels/4 bpf/32768 bytes buffer/Signed 16 bit Little Endian
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
AO: Description: ALSA-0.9.x-1.x audio output
AO: Author: Alex Beregszaszi, Zsolt Barat <joy@***.de>
AO: Comment: under development
Building audio filter chain for 16000Hz/2ch/s16le -> 44100Hz/2ch/s16le...
[dummy] Was reinitialized: 16000Hz/2ch/s16le
[libaf] Adding filter lavcresample
[SWR @ 0xb6841020]Using s16p internally between filters
[dummy] Was reinitialized: 44100Hz/2ch/s16le
[dummy] Was reinitialized: 44100Hz/2ch/s16le
Video: no video
Freeing 0 unused video chunks.
Starting playback...
alsa buffersize không khớp với cấu hình.
MPD (được điều khiển bởi mpc) nhấp / bật một lần khi bắt đầu phát, nhưng sau đó rõ ràng "phát" liên tục để thay đổi bản nhạc không gây ra bất kỳ tiếng ồn nào.
Vì vậy, bất cứ điều gì gây ra pops ở vị trí đầu tiên (phần cứng? Trình điều khiển?), Một số người chơi dường như tốt hơn trong việc tránh tình huống đó (mở / cấu hình lại thiết bị).
Bất kỳ đầu vào về làm thế nào để đi đến nguyên nhân gốc và sửa chữa nó đánh giá cao nhiều!
Đào thêm
Định cấu hình các plugin ALSA trong trình cắm thứ tự -> dmix -> softvol -> pcm, dẫn đến lỗi mplayer gây ra lỗi:
[AO_ALSA] alsa-lib: pcm_dmix.c:1057:(snd_pcm_dmix_open) dmix plugin can be only connected to hw plugin
Vì vậy, quay lại: plug -> softvol -> dmix -> I2S DAC (kernel PCM).
Tệp cấu hình có thể được viết theo thứ bậc như sau:
pcm.!default
{
type plug
slave
{
pcm
{
type softvol
slave
{
pcm
{
type dmix
ipc_key 1024
ipc_perm 0666
slave
{
pcm
{
type hw
card 0
}
#format "S16"
rate 32000
channels 2
period_size 2048 # bytes
buffer_size 32768 # usec
}
bindings
{
0 0
1 1
}
}
}
control
{
name "PCM"
card 0
}
}
}
}
Softvol control
là những gì hiển thị như thiết bị trộn trong ví dụ alsamixer
. Tôi vẫn chưa rõ những gì ctl làm. Alsa thường lưu trữ cấu hình / cài đặt liên tục. Điều này có thể gây ra các thiết bị trộn cũ xuất hiện.
Điều này làm việc để loại bỏ chúng (sử dụng sudo):
rm /var/lib/alsa/asound.state # remove the state file
chmod -x /usr/sbin/alsactl # make alsactl non-executable to prevent settings being written on shutdown
<REBOOT>
chmod +x /usr/sbin/alsactl
Với mplayer và âm thanh 32kHz chỉ thỉnh thoảng bật lên khi thay đổi bản nhạc. Việc tăng kích thước bộ đệm dường như đã giải quyết được việc phát lại "nói lắp / tiếng vang" thỉnh thoảng.
dmix là plugin loại bỏ hầu hết các cửa sổ bật lên khi phát / dừng. Nó [thỉnh thoảng bật các bản nhạc thay đổi bằng mplayer] không tạo ra sự khác biệt đáng chú ý cho dù các nguồn hoặc tỷ lệ mặc định được đặt theo tỷ lệ của nô lệ dmix.
Lớp phủ cây thiết bị (liên kết đến tài liệu bên dưới):
$ ls /boot/overlays
adau1977-adc.dtbo fe-pi-audio.dtbo iqaudio-dacplus.dtbo pitft28-capacitive.dtbo sdtweak.dtbo
adau7002-simple.dtbo goodix.dtbo iqaudio-digi-wm8804-audio.dtbo pitft28-resistive.dtbo smi-dev.dtbo
ads1015.dtbo googlevoicehat-soundcard.dtbo justboom-dac.dtbo pitft35-resistive.dtbo smi.dtbo
ads1115.dtbo gpio-ir.dtbo justboom-digi.dtbo pps-gpio.dtbo smi-nand.dtbo
ads7846.dtbo gpio-poweroff.dtbo lirc-rpi.dtbo pwm-2chan.dtbo spi0-cs.dtbo
akkordion-iqdacplus.dtbo gpio-shutdown.dtbo mcp23017.dtbo pwm.dtbo spi0-hw-cs.dtbo
allo-boss-dac-pcm512x-audio.dtbo hifiberry-amp.dtbo mcp23s17.dtbo qca7000.dtbo spi1-1cs.dtbo
allo-digione.dtbo hifiberry-dac.dtbo mcp2515-can0.dtbo raspidac3.dtbo spi1-2cs.dtbo
allo-piano-dac-pcm512x-audio.dtbo hifiberry-dacplus.dtbo mcp2515-can1.dtbo README spi1-3cs.dtbo
allo-piano-dac-plus-pcm512x-audio.dtbo hifiberry-digi.dtbo mcp3008.dtbo rotary-encoder.dtbo spi2-1cs.dtbo
at86rf233.dtbo hifiberry-digi-pro.dtbo midi-uart0.dtbo rpi-backlight.dtbo spi2-2cs.dtbo
audioinjector-addons.dtbo hy28a.dtbo midi-uart1.dtbo rpi-cirrus-wm5102.dtbo spi2-3cs.dtbo
audioinjector-wm8731-audio.dtbo hy28b.dtbo mmc.dtbo rpi-dac.dtbo spi-gpio35-39.dtbo
audremap.dtbo i2c0-bcm2708.dtbo mpu6050.dtbo rpi-display.dtbo spi-rtc.dtbo
bmp085_i2c-sensor.dtbo i2c1-bcm2708.dtbo mz61581.dtbo rpi-ft5406.dtbo tinylcd35.dtbo
dht11.dtbo i2c-bcm2708.dtbo papirus.dtbo rpi-proto.dtbo uart1.dtbo
dionaudio-loco.dtbo i2c-gpio.dtbo pi3-act-led.dtbo rpi-sense.dtbo vc4-fkms-v3d.dtbo
dionaudio-loco-v2.dtbo i2c-mux.dtbo pi3-disable-bt.dtbo rpi-tv.dtbo vc4-kms-v3d.dtbo
dpi18.dtbo i2c-pwm-pca9685a.dtbo pi3-disable-wifi.dtbo rra-digidac1-wm8741-audio.dtbo vga666.dtbo
dpi24.dtbo i2c-rtc.dtbo pi3-miniuart-bt.dtbo sc16is750-i2c.dtbo w1-gpio.dtbo
dwc2.dtbo i2c-rtc-gpio.dtbo piscreen2r.dtbo sc16is752-spi1.dtbo w1-gpio-pullup.dtbo
dwc-otg.dtbo i2c-sensor.dtbo piscreen.dtbo sdhost.dtbo wittypi.dtbo
enc28j60.dtbo i2s-gpio28-31.dtbo pisound.dtbo sdio-1bit.dtbo
enc28j60-spi2.dtbo iqaudio-dac.dtbo pitft22.dtbo sdio.dtbo
Các tệp lớp phủ là nhị phân, nhưng tìm kiếm các nguồn tại https://github.com/raspberrypi/linux/search?utf8=%E2%9C%93&q=hifiberry&type=
kết quả trong một vài lần truy cập:
- https://github.com/raspberrypi/linux/tree/rpi-4.9.y/arch/arm/boot/dts/overlays
- https://github.com/raspberrypi/linux/blob/rpi-4.9.y/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
và xa hơn
- https://github.com/raspberrypi/linux/search?utf8=%E2%9C%93&q=pcm5102a&type=
- https://github.com/raspberrypi/linux/tree/rpi-4.9.y/Documentation/devicetree/bindings/sound
- https://github.com/raspberrypi/linux/search?utf8=%E2%9C%93&q=MAX98357A+&type=
- https://github.com/raspberrypi/linux/blob/rpi-4.9.y/sound/soc/codecs/max98357a.c
- https://github.com/raspberrypi/linux/blob/rpi-4.9.y/sound/soc/codecs/pcm5102a.c
Vì vậy, một trình điều khiển cụ thể tồn tại. Nó có sẵn trong Raspbian?
$ find /lib/modules/$(uname -r) -type f -name \*.ko | grep sound
/lib/modules/4.9.59+/kernel/sound/ac97_bus.ko
/lib/modules/4.9.59+/kernel/sound/drivers/mpu401/snd-mpu401.ko
/lib/modules/4.9.59+/kernel/sound/drivers/mpu401/snd-mpu401-uart.ko
/lib/modules/4.9.59+/kernel/sound/drivers/snd-virmidi.ko
/lib/modules/4.9.59+/kernel/sound/drivers/snd-dummy.ko
/lib/modules/4.9.59+/kernel/sound/drivers/snd-aloop.ko
/lib/modules/4.9.59+/kernel/sound/drivers/snd-mtpav.ko
/lib/modules/4.9.59+/kernel/sound/drivers/snd-serial-u16550.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-wm5102.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-adau7002.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-spdif-tx.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-sigmadsp-i2c.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-spdif-rx.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-wm8731.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-adau1701.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-cs42xx8-i2c.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-adau1977-i2c.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-ak4554.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-wm8804-i2c.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-pcm512x.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-sgtl5000.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-wm8741.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-pcm1794a.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-wm8804.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-arizona.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-tas5713.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-sigmadsp.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-adau1977.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-tpa6130a2.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-wm-adsp.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-cs42xx8.ko
/lib/modules/4.9.59+/kernel/sound/soc/codecs/snd-soc-pcm5102a.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-googlevoicehat-soundcard.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-rpi-cirrus.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-hifiberry-dacplus.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-hifiberry-amp.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-hifiberry-dac.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-allo-piano-dac-plus.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-raspidac3.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-digidac1-soundcard.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-adau1977-adc.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-rpi-dac.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-audioinjector-pi-soundcard.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-allo-piano-dac.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-fe-pi-audio.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-allo-digione.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-dionaudio-loco.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-bcm2835-i2s.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-rpi-proto.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-allo-boss-dac.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-hifiberry-digi.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-iqaudio-digi.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-pisound.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-iqaudio-dac.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-justboom-digi.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-audioinjector-octo-soundcard.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-dionaudio-loco-v2.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-justboom-dac.ko
/lib/modules/4.9.59+/kernel/sound/soc/bcm/snd-soc-googlevoicehat-codec.ko
/lib/modules/4.9.59+/kernel/sound/soc/snd-soc-core.ko
/lib/modules/4.9.59+/kernel/sound/soc/generic/snd-soc-simple-card.ko
/lib/modules/4.9.59+/kernel/sound/soc/generic/snd-soc-simple-card-utils.ko
/lib/modules/4.9.59+/kernel/sound/core/snd-hwdep.ko
/lib/modules/4.9.59+/kernel/sound/core/oss/snd-mixer-oss.ko
/lib/modules/4.9.59+/kernel/sound/core/oss/snd-pcm-oss.ko
/lib/modules/4.9.59+/kernel/sound/core/snd-pcm.ko
/lib/modules/4.9.59+/kernel/sound/core/snd-compress.ko
/lib/modules/4.9.59+/kernel/sound/core/snd-timer.ko
/lib/modules/4.9.59+/kernel/sound/core/snd-rawmidi.ko
/lib/modules/4.9.59+/kernel/sound/core/snd-hrtimer.ko
/lib/modules/4.9.59+/kernel/sound/core/seq/snd-seq-virmidi.ko
/lib/modules/4.9.59+/kernel/sound/core/seq/oss/snd-seq-oss.ko
/lib/modules/4.9.59+/kernel/sound/core/seq/snd-seq-midi-event.ko
/lib/modules/4.9.59+/kernel/sound/core/seq/snd-seq-device.ko
/lib/modules/4.9.59+/kernel/sound/core/seq/snd-seq.ko
/lib/modules/4.9.59+/kernel/sound/core/seq/snd-seq-midi.ko
/lib/modules/4.9.59+/kernel/sound/core/seq/snd-seq-dummy.ko
/lib/modules/4.9.59+/kernel/sound/core/snd.ko
/lib/modules/4.9.59+/kernel/sound/core/snd-pcm-dmaengine.ko
/lib/modules/4.9.59+/kernel/sound/arm/snd-bcm2835.ko
/lib/modules/4.9.59+/kernel/sound/usb/snd-usb-audio.ko
/lib/modules/4.9.59+/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
/lib/modules/4.9.59+/kernel/sound/usb/misc/snd-ua101.ko
/lib/modules/4.9.59+/kernel/sound/usb/6fire/snd-usb-6fire.ko
/lib/modules/4.9.59+/kernel/sound/usb/snd-usbmidi-lib.ko
/lib/modules/4.9.59+/kernel/sound/pci/ac97/snd-ac97-codec.ko
Không.
Nỗ lực cũ hơn để đưa tài xế đi cho bảng khác nhau: http://community.onion.io/topic/1761/resolve-attaching-pcm5102-to-omega2-i2s/13
Điều này có khả năng cho thấy cách tạo lớp phủ cây thiết bị phù hợp và chỉ định trình điều khiển (cần biên dịch?):
https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=8496&start=750#p1216305
Cập nhật 2
Nó phải được gây ra bởi (mở lại) thiết bị. Với $ aplay -D default -c 2 -f S16 -r 48000 /dev/zero &
các pops đã biến mất với bất kỳ người chơi. Nhưng chơi số không và trộn phần mềm có vẻ hơi tốn CPU:
$ w
18:21:38 up 1:17, 1 user, load average: 0.11, 0.15, 0.12
...
Giết nó bằng
pi@raspberry:~ $ ps | grep aplay
16697 pts/0 00:00:28 aplay
pi@raspberry:~ $ ps aux | grep aplay
pi 16697 2.6 0.6 5828 2996 pts/0 SL 18:08 0:29 aplay -D default -c 2 -f S16 -r 48000 /dev/zero
pi 21159 0.0 0.3 4364 1764 pts/0 S+ 18:26 0:00 grep --color=auto aplay
pi@raspberry:~ $ kill 16697
pi@raspberry:~ $ Aborted by signal Terminated...
aplay: pcm_write:2011: write error: Interrupted system call
^C
[1]+ Exit 1 aplay -D default -c 2 -f S16 -r 48000 /dev/zero
pi@raspberry:~ $
(Người ta có thể "tự động khởi động" điều này thông qua một mục trong /etc/rc.local .)
Cập nhật 3
MPD dường như có một tùy chọn để "giữ đầu ra âm thanh này luôn mở": https://www.musicpd.org/doc/user/config_audioDefputs.html Nhưng dường như nó chỉ dành cho phát trực tuyến, vì nó không ảnh hưởng đến phát lại khi phát lại khởi đầu:
sudo nano /etc/mpd.conf
audio_output {
type "alsa"
name "default"
# device "hw:0,0" # optional
# mixer_type "hardware" # optional
# mixer_device "default" # optional
mixer_control "PCM" # optional
# mixer_index "0" # optional
always_on "yes"
}
sudo service mpd restart
mpc play
mpc stop
Đo lường và so sánh với chương trình ghi âm thanh:
- NẾU sự cố / pop / crack âm thanh xảy ra khi bắt đầu phát lại (bắt đầu I2S), nó có thể nhìn thấy trên cả hai đầu ra loa dưới dạng tăng đột biến
- Tôi nghi ngờ nó có thể gây ra bởi LRCLK bắt đầu khoảng. 500 chúng tôi sau BCLK
- biểu dữ liệu hiển thị thứ tự khác nhau trong "TACK-ON RESPONSE (CHẾ ĐỘ STANDBY)"
Quay lại giao diện và trình điều khiển I2S
- https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/README.md
- https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/BCM2835-ARM-Perodesals.pdf
- https://elinux.org/BCM2835_datasheet_errata
- https://github.com/arisena-com/rpi_src
Xây dựng và chạy (cảnh báo: dừng chương trình ngay cả thông qua desetup_io () không dừng I2S) ...
~ $ git clone https://github.com/arisena-com/rpi_src
...
~/rpi_src/apps/i2s_test/src $ make
...
~/rpi_src/apps/i2s_test/src $ sudo ./i2s_test -t 2
bắt đầu LRCLK trên cạnh tăng thứ ba của BCLK và dẫn đến kết quả tốt đẹp như được hiển thị trong biểu dữ liệu, mặc dù BLCK bắt đầu trước.
Với _i2s_test_ . Đồng hồ (màu vàng) bắt đầu hai xung trước LRCLK (màu lục lam). Âm thanh phát ra tăng vọt trên cả hai kênh ( không có pop hoặc crackle):
Chơi âm thanh. Lưu ý trục trặc / khoảng cách trong đồng hồ (màu vàng, khoảng 30 us đồng hồ theo sau là 150 us cao). Đầu ra (màu hồng / xanh) dường như không được xác định trước khi pop xuất hiện (lúc kích hoạt) khi bắt đầu LRCLK, khoảng 30 ms trước khi dữ liệu bắt đầu (không hiển thị):
Đôi khi pop không đáng chú ý, nhưng dấu vết trông rất giống nhau.
Vì vậy, đó có phải là trục trặc BLCK (nguyên nhân gây ra điều này, có thể không cố ý) hoặc phân cực (i2s_test bắt đầu từ cấp thấp) trong khi hoạt động thường xuyên có mức độ cao?
Vì vậy, hãy thử sử dụng trình điều khiển thích hợp như được nêu trong https://raspberrypi.stackexchange.com/a/74804/75483
[việc xây dựng kernel có thể mất một ngày hoặc lâu hơn, có lẽ đáng để xem xét biên dịch chéo ..]
Mặc dù có vẻ như xây dựng OK (âm thanh / soc / codec / snd-soc-max98357a.ko), pi0w dường như không khởi động đúng sau đó, ít nhất là nó không kết nối với wifi. Tôi sẽ phải nối nó với màn hình và HID.
Tôi cũng không thể làm cho bàn phím hoạt động được và không phải vì tôi đã sử dụng bộ chuyển đổi A-micro B đơn giản thay vì bộ chuyển đổi OTG thích hợp trước tiên.
Bây giờ tôi có thể gắn nó qua cổng nối tiếp ...
Kết thúc đầu ra của quá trình khởi động (kernel lite default kernel) trên serial trông giống như
[ 0.000000] Linux version 4.9.41+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #1023 Tue Aug 8 15:47:12 BST 2017
[ OK ] Started Configure Bluetooth Modems connected by UART.
[ OK ] Started Load/Save RF Kill Switch Status.
[ OK ] Started LSB: Resize the root filesystem to fill partition.
[ OK ] Started dhcpcd on all interfaces.
[ OK ] Reached target Network.
[ OK ] Reached target Network is Online.
[ OK ] Started Daily apt download activities.
[ OK ] Started Daily apt upgrade and clean activities.
[ OK ] Reached target Timers.
Starting OpenBSD Secure Shell server...
Starting Permit User Sessions...
Starting /etc/rc.local Compatibility...
My IP address is xxxx:xx:xxxx:xxxx:xxxx:xxxx:xxx:xxxx
[ OK ] Started OpenBSD Secure Shell server.
[ OK ] Started Permit User Sessions.
[ OK ] Started /etc/rc.local Compatibility.
Starting Daily apt download activities...
Starting Hold until boot process finishes up...
Starting Terminate Plymouth Boot Screen...
Hình ảnh với kernel tùy chỉnh (không có wifi, không có bàn phím) dẫn đến
[ 0.000000] Linux version 4.9.61+ (pi@raspberry) (gcc version 6.3.0 20170516 (Raspbian 6.3.0-18+rpi1) ) #1 Mon Nov 13 03:14:02 CET 2017
[FAILED] Failed to start Configure Bluetooth Modems connected by UART.
See 'systemctl status hciuart.service' for details.
[ OK ] Started dhcpcd on all interfaces.
[ OK ] Reached target Network.
Starting OpenBSD Secure Shell server...
[ OK ] Reached target Network is Online.
Starting LSB: Start NTP daemon...
[ OK ] Started Music Player Daemon.
Starting Permit User Sessions...
Starting /etc/rc.local Compatibility...
[ OK ] Started /etc/rc.local Compatibility.
[ OK ] Started Permit User Sessions.
Starting Terminate Plymouth Boot Screen...
Starting Hold until boot process finishes up...
[ OK ] Created slice User Slice of root.
[ OK ] Started Session c1 of user root.
Starting User Manager for UID 0...
Không phải WIFI và bluetooth trên cùng một con chip sao? Không có thông tin phần cứng hoặc sơ đồ thực tế có sẵn từ RPi Foundation.
pi@raspberry:~$ ifconfig wlan0
wlan0: error fetching interface information: Device not found
Vì vậy, tôi đã phá vỡ Wifi. Bất kỳ cơ hội nào để trở lại kernel / cấu hình hoạt động mà không làm mất các thay đổi / tệp của tôi? Thay thế tập tin kernel từ SD làm việc? Không , thay thế mọi thứ trong / boot / ngoại trừ kết quả config.txt trong khởi động treo tại
[ 2.930955] mmc1: new high speed SDIO card at address 0001
[ 22.411095] random: crng init done
Vì vậy, bây giờ tôi thực sự phải bắt đầu mới. Tôi có thể đọc dữ liệu của mình từ thư mục gia đình bằng cách gắn hệ thống bị hỏng qua USB OTG và đầu đọc thẻ, đại loại như
sudo mkdir /media/usb
sudo chown -R pi:pi /media/usb
sudo mount /dev/sda2 /media/usb
/media/usb/home/pi$ cp -r * ~
Có lẽ tôi nên cập nhật trước:
pi@raspberrypi:~ $ sudo rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
...
*** Backing up modules 4.9.41+
...
*** depmod 4.9.62-v7+
*** depmod 4.9.62+
...
*** If no errors appeared, your firmware was successfully updated to 23b1614bb794dfce586f1300da75198befa4951d
*** A reboot is needed to activate the new firmware
pi@raspberrypi:~ $ sudo reboot
- Tôi có thể thử lại vào ngày mai (sau khi tạo bản sao lưu).
Không có Wifi / IP sau khi cập nhật (nhưng wlan0 hiển thị
ifconfig
)- đặt quốc gia wifi với
sudp raspi-config
(4> I4)
- đặt quốc gia wifi với
Không cần phải bật
i2s-mmap
cũng khôngi2s
,hifiberry-dac
lớp phủ thực hiện điều này tự động và mmap có sẵn hoàn toàn kể từ ngày 4.9 (tháng 4 năm 2017).
Xem https://github.com/raspberrypi/linux/issues/2212 về vấn đề chính xác này và một số chi tiết trình điều khiển I2S
Tài nguyên: