J'essaie un Bonnet de haut-parleur stéréo Adafruit I2S 3W pour Raspberry Pi - Mini Kit, qui est construit autour de deux MAX98357 (fiche technique: adafruit, maxim), sur un Raspberry Pi Zero W avec Raspbian Stretch (mis à jour hier).
Le problème est que j'ai des «pops» lors du démarrage / changement de pistes, même avec le même débit audio. Leurs instructions pour «corriger» ceux-ci ajoutent principalement des paramètres redondants aux fichiers de configuration alsa /etc/asound.conf
et ~/.asoundrc
.
I actuellement seulement asound.conf, comme ceci:
$ cat /etc/asound.confpcm.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 canaux 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
existe pour pouvoir contrôler le volume globalement (dans le logiciel, perte de résolution), car le DAC n'a pas de contrôle matériel. Mais apparemment, certains joueurs peuvent aussi le faire eux-mêmes, donc l'un ou l'autre devrait suffire.
Concernant le pilote, leurs instructions ajoutent dtoverlay = hifiberry-dac
à /boot/config.txt
, mais le Hifiberry DAC (obsolète) est basé sur une (unique) puce différente, la PCM5102.
pi @ raspberry: ~ $ aplay -l **** Liste des périphériques matériels de PLAYBACK **** carte 0: sndrpihifiberry [snd_rpi_hifiberry_dac], périphérique 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [] Sous-périphériques: 1/1 Sous-périphérique # 0: sous-périphérique # 0
Hifiberry répertorie la configuration de ses produits sur https://www.hifiberry.com/build/documentation/configuring-linux-3-18-x /.
Je voudrais savoir quelles sont les différences et si la suggestion correspond bien au CI. Le pilote pourrait-il envoyer des données supplémentaires qui provoquent un «pop» ou un «crépitement»?
Fait intéressant, le test du haut-parleur ne semble jamais produire le bruit initial à la lecture
$ speaker-test -c2 --test = wav -w /usr/share/sounds/alsa/Front_Center.wav
, tandis que mpg123 fait (avec un MP3 mono 16 kHz), également entre les pistes:
Lecteur audio MPEG 1.0 / 2.0 / 2.5 haute performance pour les couches 1, 2 et 3 version 1.23.8; écrit et copyright par Michael Hipp et autres logiciels libres (LGPL) sans aucune garantie mais avec mes meilleurs vœux Décodeur: genericTrying module de sortie: alsa, périphérique: <nil>Using default module dir: / usr / lib / arm-linux-gnueabihf / mpg123Module dir: / usr / lib / arm-linux-gnueabihf / mpg123 Chemin du module: ./output_alsa.soModule de sortie choisi: alsa ... Pilote audio: alsaPériphérique audio: (null) Capacités audio: (matrice de [S] tereo ou [M] ono support pour format d'échantillonnage et fréquence en 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 |
(spécifier alsa fonctionne, spécifier l'index de l'appareil échoue)
Ce n'est pas dans le fichier, j'ai vérifié. Et aussi, mplayer commence à lire le fichier identique OK, mais a des "pops" entre les pistes, bien que la spécification de la sortie audio mplayers semble presque éliminer le popping lors du changement de piste.
mplayer -msglevel all = 6 -ao alsa file.mp3MPlayer 1.3.0 (Debian), construit avec gcc-6.2.1 (C) 2000-2016 MPlayer TeamCPU: ARMAUDIO: 16000 Hz, 2 canaux, s16le, 24,0 kbit / 4,69 % (ratio: 3000->64000) Codec audio sélectionné: [mpg123] afm: mpg123 (MPEG 1.0 / 2.0 / 2.5 couches I, II, III) =================== =================================================== ====== Construction d'une chaîne de filtres audio pour 16000Hz / 2ch / s16le -> 0Hz / 0ch / ?? ... [libaf] Ajout d'un filtre factice [factice] A été réinitialisé: 16000Hz / 2ch / s16le [factice] A été réinitialisé: 16000Hz / 2ch / s16leEssai du pilote audio préféré 'alsa', options '[aucun]' alsa-init: format demandé: 16000 Hz, 2 canaux, 9alsa-init: en utilisant ALSA 1.1.3alsa-init: configuration pour 1/2 canal ( s) alsa-init: utilisation du périphérique defaultalsa-init: ouverture du périphérique en blocage modealsa-init: périphérique rouvert en bloquant modealsa-init: got buffersize = 32768alsa-init: taille de période obtenue 1024alsa: 44100 Hz / 2 canaux / 4 bpf / 32768 octets buffer / Signé 16 bits Little EndianAO: [alsa] 44100Hz 2ch s16le ( 2 octets par échantillon) AO: Description: Sortie audio ALSA-0.9.x-1.xAO: Auteur: Alex Beregszaszi, Zsolt Barat <joy@***.de>AO: Commentaire: en cours de développementConstruction d'une chaîne de filtres audio pour 16000Hz / 2ch / s16le - > 44100Hz / 2ch / s16le ... [factice] A été réinitialisé: 16000Hz / 2ch / s16le [libaf] Ajout de filtre lavcresample [SWR @ 0xb6841020] Utilisation de s16p en interne entre les filtres [factice] A été réinitialisé: 44100Hz / 2ch / s16le [factice] A été réinitialisé: 44100Hz / 2ch / s16le
Vidéo: pas de vidéo Libération de 0 blocs vidéo inutilisés Démarrage de la lecture ...
La taille de la mémoire tampon ne correspond pas à celle de la configuration.
MPD (contrôlé par mpc) clique / saute une fois au début de la lecture, mais apparemment "diffuse" en continu pour que le changement de piste ne cause aucun bruit.
Alors, quelle que soit la cause des pops en premier lieu (matériel? pilote? ), certains joueurs semblent mieux éviter cette situation (ouverture / reconfiguration de l'appareil).
Toute information sur la façon de trouver la cause première et de la corriger est très appréciée!
Recherche plus approfondie
La configuration des plugins ALSA dans le plug-in de commande -> dmix -> softvol -> pcm, entraîne mplayer donnant une erreur:
[AO_ALSA] alsa-lib: pcm_dmix.c: 1057: (snd_pcm_dmix_open) le plugin dmix ne peut être connecté qu'au plugin hw
Donc, retour à: plug -> softvol -> dmix - > I2S DAC (noyau PCM).
Le fichier de configuration peut être écrit hiérarchiquement comme suit:
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 canaux 2 period_size 2048 # bytes buffer_size 32768 # usec} liaisons {0 0 1 1}}} control {name "PCM" card 0}}}}
Le control
de Softvol est ce qui apparaît comme appareil de mixage par exemple alsamixer
. Je ne sais toujours pas ce que fait ctl.Alsa stocke généralement sa configuration / ses paramètres de manière persistante. Cela peut provoquer l'apparition de périphériques de mixage obsolètes.
Ceci a fonctionné pour les supprimer (utilisez sudo):
rm /var/lib/alsa/asound.state # supprimer le fichier d'état
chmod -x / usr / sbin / alsactl # rend alsactl non exécutable pour empêcher l'écriture des paramètres lors de l'arrêt<REBOOT>chmod + x / usr / sbin / alsactl
Avec mplayer et l'audio à 32 kHz seulement pops occasionnels lorsque changer de piste. L'augmentation de la taille de la mémoire tampon semble avoir résolu la lecture occasionnelle de "bégaiement / écho".
dmix est le plugin supprimant la plupart des pops lors de la lecture / arrêt. Il [les pop occasionnels changeant de piste avec mplayer] ne fait pas de différence notable si les sources ou le taux par défaut sont définis dans le taux de l'esclave dmix.
Superpositions de l'arborescence des périphériques (lien vers la documentation ci-dessous):
$ ls / boot / overlaysadau1977- adc.dtbo fe-pi-audio.dtbo iqaudio-dacplus.dtbo pitft28-capacitive.dtbo sdtweak.dtboadau7002-simple.dtbo goodix.dtbo iqaudio-digi-wm8804-audio.dtbo pitft28-resistive.dtbo smi-dev.dtboads1015. dtbo googlevoicehat-soundcard.dtbo justboom-dac.dtbo pitft35-resistive.dtbo smi.dtboads1115.dtbo gpio-ir.dtbo justboom-digi.dtbo pps-gpio.dtbo smi-nand.dtboads7846.dtbo gpio-poweroff.dtbo lirc-rpi.dtbo pwm-2chan.dtbo spi0-cs.dtboakkordion-iqdacplus.dtbo gpio-shutdown.dtbo mcp23017.dtbo pwm.dtbo spi0-hw-cs.dtboallo-boss-dac-audio-pcm512 .dtbo hifiberry-amp.dtbo mcp23s17.dtbo qca7000.dtbo spi1-1cs.dtboallo-digione.dtbo hifiberry-dac.dtbo mcp2515-can0.dtbo raspidac3.dtbo spi1-2cs.dtboallo-piano-dac-audio.dtcm512 hifiberry-dacplus.dtbo mcp2515-can1.dtbo README spi1-3cs.dtbo
allo-piano-dac-plus-pcm512x-audio.dtbo hifiberry-digi.dtbo mcp3008.dtbo encodeur-rotatif.dtbo spi2-1cs.dtboat86rf233.dtbo hifiberry-digi-pro.dtbo midi-uart0.dtbo rpi-backlight.dtbo spi2-2cs.dtboaudioinjector-addons.dtbo hy28a.dtbo midi-uart1.dtbo rpi-cirrus-wm5102.dtbo spi2-3cs.dtboaudioinjector-wm8731-audio.dtbo hy28b.dtbo mmc.dtbo rpi-dac.dtbo spi- 39.dtboaudremap.dtbo i2c0-bcm2708.dtbo mpu6050.dtbo rpi-display.dtbo spi-rtc.dtbobmp085_i2c-sensor.dtbo i2c1-bcm2708.dtbo mz61581.dtbo rpi-ft5406.dtbo tinylcd35 papirus.dtbo rpi- proto.dtbo uart1.dtbodionaudio-loco.dtbo i2c-gpio.dtbo pi3-act-led.dtbo rpi-sense.dtbo vc4-fkms-v3d.dtbodionaudio-loco-v2.dtbo i2c-mux.dtbo pi3-disable-bt .dtbo rpi-tv.dtbo vc4-kms-v3d.dtbodpi18.dtbo i2c-pwm-pca9685a.dtbo pi3-disable-wifi.dtbo rra-digidac1-wm8741-audio.dtbo vga666.dtbodpi24.dtbo i2c-rtc.dtbo -miniuart-bt.dtbo sc16is750-i2c.dtbo w1-gpio.dtbodwc2.dtbo i2c-rtc-gpio.dtbo piscreen2r.dtbo sc16is752-spi1.dtbo w1-gpio-pullup.dtbodwc-otg.dt.dtbo2c .dtbo sdhost.dtbo wittypi.dtbo
enc28j60.dtbo i2s-gpio28-31.dtbo pisound.dtbo sdio-1bit.dtboenc28j60-spi2.dtbo iqaudio-dac.dtbo pitft22.dtbo sdio.dtbo
Les fichiers de superposition sont binaires, mais la recherche des sources sur https://github.com/raspberrypi/linux/search?utf8=%E2%9C%93&q=hifiberry&type=
donne quelques résultats:
- 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
et plus
- 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
Il existe donc un pilote spécifique. Est-il disponible dans Raspbian?
$ find / lib / modules / $ (uname -r) -type f -name \ *. Ko | grep son / lib / modules / 4.9.59 + / noyau / son / ac97_bus.ko / lib / modules / 4.9.59 + / noyau / son / 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 + / noyau / son / 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 / son / 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
Non.
Un effort plus ancien pour faire fonctionner le pilote pour une carte différente: http://community.onion.io/topic/1761/resolved-attaching-pcm5102-to-omega2-i2s/13
Cela montre potentiellement comment créer une arborescence d'appareils correspondante overlay et spécifiez le pilote (doit être compilé?):
https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=8496&start=750#p1216305
Mise à jour 2
Elle doit être causée par la (ré) ouverture de l'appareil. Avec $ aplay -D default -c 2 -f S16 -r 48000 / dev / zero &
les pops sont partis avec n'importe quel joueur. Mais jouer des zéros et les mélanger par logiciel semble un peu gourmand en CPU:
$ w 18:21:38 jusqu'à 1:17, 1 utilisateur, moyenne de charge: 0.11, 0.15, 0.12 ...
Tuez-le avec
pi @ raspberry: ~ $ ps | grep aplay16697 pts / 0 00:00:28 aplaypi @ framboise: ~ $ ps aux | grep aplaypi 16697 2,6 0,6 5828 2996 pts / 0 SL 18:08 0:29 aplay -D par défaut -c 2 -f S16 -r 48000 / dev / zéro
pi 21159 0.0 0.3 4364 1764 pts / 0 S + 18:26 0:00 grep --color = auto aplaypi @ raspberry: ~ $ kill 16697pi @ raspberry: ~ $ Aborted by signal Terminé ... aplay: pcm_write: 2011: erreur d'écriture : Appel système interrompu ^ C [1] + Exit 1 aplay -D default -c 2 -f S16 -r 48000 / dev / zeropi @ raspberry: ~ $
(On pourrait "démarrer automatiquement "ceci via une entrée dans /etc/rc.local.)
Mise à jour 3
MPD semble pour avoir une option pour "garder cette sortie audio toujours ouverte": https://www.musicpd.org/doc/user/config_audio_outputs.html Mais cela semble être pour le streaming uniquement, car il le fait n'affecte pas les pops au démarrage de la lecture:
sudo nano /etc/mpd.conf
audio_output {type "alsa" nom "par défaut" # device "hw: 0,0" # optional # mixer_type "hardware" # optional # mixer_device "default" # optional mixer_control "PCM" # optional # mixer_index "0" # facultatif always_on "yes"}
sudo service mpd restart
mpc play
mpc stop
Autres mesures et comparaison avec l'enregistrement audio montrent:
- SI le pépin / pop / fissure audible se produit au début de la lecture (démarrage I2S), il est visible sur les deux sorties haut-parleurs comme un pic positif
- Je suppose que cela pourrait être causé par le LRCLK commençant env. 500 us après BCLK
- la fiche technique montre un ordre différent dans "TURN-ON RESPONSE (STANDBY MODE)"
Revenons donc à l'interface et au pilote I2S
- https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/README.md
- https: //www.raspberrypi .org / documentation / hardware / raspberrypi / bcm2835 / BCM2835-ARM-Peripherals.pdf
- https://elinux.org/BCM2835_datasheet_errata
- https://github.com/arisena-com/rpi_src
Construire et exécuter (attention: arrêter le programme même via desetup_io () n'arrête pas l'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
démarre le LRCLK sur le troisième front montant de BCLK et entraîne une belle montée en puissance comme indiqué dans la fiche technique, bien que BLCK démarre en premier.
Avec _i2s_test_. L'horloge (jaune) démarre deux impulsions avant LRCLK (cyan). Accélération de la sortie audio visible sur les deux canaux ( pas de pop ni de grésillement):
Lecture audio. Remarque glitch / gap dans l'horloge (jaune, environ 30 heures US suivi de 150 US haut). La sortie (rose / bleu) semble indéfinie avant le pop (au déclenchement) lorsque LRCLK démarre, environ 30 ms avant le début des données (non affiché):
Parfois le pop n'est pas perceptible, mais la trace semble très similaire.
Est-ce donc le problème BLCK (ce qui cause cela, ce n'est probablement pas intentionnel) ou la polarité (i2s_test commence à bas niveau) tandis le fonctionnement normal a un niveau élevé?
Alors, essayons d'utiliser le pilote approprié comme indiqué dans https://raspberrypi.stackexchange.com/a/74804/75483
[la construction du noyau prend probablement un jour ou deux, cela vaut probablement la peine de se pencher sur la compilation croisée ..]
Bien que la construction semble correcte (son / soc / codecs / snd- soc-max98357a.ko), le pi0w ne semble pas démarrer correctement après, au moins il ne se connecte pas au wifi. Je vais devoir le brancher sur un écran et un HID.
Je n'ai pas pu faire fonctionner un clavier non plus, et ce n'est pas parce que j'ai utilisé un simple adaptateur A-micro B au lieu de d'abord un adaptateur OTG approprié.
Maintenant, je pourrais probablement m'y attacher via le port série ...
La fin de la sortie du processus de démarrage (Stretch lite default kernel) sur les looks série comme
[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 Mar 8 août 15:47:12 BST 2017 [OK] Démarré Configurez les modems Bluetooth connectés par UART. [OK] Démarré Charger / Enregistrer l'état du commutateur RF Kill. [OK] Démarré LSB: Redimensionne le système de fichiers racine pour remplir la partition. [OK] Démarré dhcpcd sur toutes les interfaces. [OK] Réseau cible atteint. [OK] Le réseau cible atteint est en ligne. [OK] Démarré Activités quotidiennes de téléchargement apt. [OK] Démarré Mise à jour quotidienne d'apt et activités de nettoyage. [OK] Minuteurs cible atteints. Démarrage du serveur OpenBSD Secure Shell ... Démarrage des sessions utilisateur autorisées ... Démarrage de la compatibilité /etc/rc.local ... Mon adresse IP est xxxx: xx: xxxx: xxxx: xxxx: xxxx: xxx: xxxx [OK] Démarrage d'OpenBSD Serveur Secure Shell. [OK] Démarré Autoriser les sessions utilisateur. [OK] Démarrage de la compatibilité /etc/rc.local. Démarrage des activités de téléchargement quotidiennes d'apt ... Démarrage de Hold jusqu'à la fin du processus de démarrage ... Démarrage de l'écran de démarrage Terminate Plymouth ...
L'image avec un noyau personnalisé (pas de wifi, pas de clavier) en résulte dans
[0.000000] Linux version 4.9.61+ (pi @ raspberry) (gcc version 6.3.0 20170516 (Raspbian 6.3.0-18 + rpi1)) # 1 Mon 13 novembre 03: 14:02 CET 2017 [ÉCHEC] Échec du démarrage de la configuration des modems Bluetooth connectés par UART. Voir «systemctl status hciuart.service» pour plus de détails. [OK] Démarrage de dhcpcd sur toutes les interfaces. [OK] Réseau cible atteint. Démarrage du serveur OpenBSD Secure Shell ... [OK] Le réseau cible atteint est en ligne. Démarrage de LSB: Démarrez le démon NTP ... [OK] Démarrez le lecteur de musique. Démarrage des sessions utilisateur autorisées ... Démarrage de la compatibilité /etc/rc.local ... [OK] Démarrage de la compatibilité /etc/rc.local. [OK] Démarrage des sessions utilisateur autorisées. Démarrage de l'écran de démarrage Terminate Plymouth ... Démarrage de la mise en attente jusqu'à la fin du processus de démarrage ... [OK] Tranche créée User Slice of root.
[OK] Démarrage de la session c1 de l'utilisateur root. Démarrage du Gestionnaire des utilisateurs pour l'UID 0 ...
Le WIFI et le Bluetooth ne sont-ils pas sur la même puce? Aucune information matérielle ni aucun schéma réel disponible auprès de RPi Foundation.
pi @ raspberry: ~ $ ifconfig wlan0wlan0: erreur lors de la récupération des informations d'interface: appareil non trouvé
J'ai donc cassé le Wifi. Y a-t-il une chance de revenir au noyau / configuration de travail sans perdre mes modifications / fichiers? Remplacer les fichiers du noyau de la SD en état de marche? Non , le remplacement de tout ce qui se trouve dans / boot / sauf config.txt entraîne un démarrage suspendu à
[2.930955] mmc1: nouveau haut speed SDIO card à l'adresse 0001 [22.411095] random: crng init done
Alors maintenant, je vais vraiment devoir repartir à zéro. Je pourrais peut-être lire mes données à partir du répertoire personnel en attachant le système endommagé via USB OTG et lecteur de carte, quelque chose comme
sudo mkdir / media / usbsudo chown -R pi: pi / media / usbsudo mount / dev / sda2 / media / usb / media / usb / home / pi $ cp -r * ~
J'aurais peut-être dû mettre à jour d'abord:
pi @ raspberrypi: ~ $ sudo rpi-update *** Mise à jour du micrologiciel Raspberry Pi par Hexxeh, amélioré par AndrewS et Dom ... *** Sauvegarde des modules 4.9.41 + ... *** depmod 4.9.62-v7 + *** depmod 4.9.62 + ... *** Si aucune erreur n'est apparue, votre firmware a été mis à jour avec succès vers 23b1614bb794dfce586f1300da75198befa4951d *** Un redémarrage est nécessaire pour activer le nouveau firmwarepi @ raspberrypi: ~ $ sudo redémarrer
- Je pourrais réessayer demain (après avoir effectué une sauvegarde).
-
Pas de Wifi / IP après la mise à jour (mais wlan0 affiché dans
ifconfig
)- définir le pays du wifi avec
sudp raspi-config
(4> I4)
- définir le pays du wifi avec
-
Pas besoin d'activer
i2s-mmap
nii2s co de>, la superposition
hifiberry-dac
le fait automatiquement et mmap est disponible implicitement depuis la version 4.9 (avril 2017).
Ressources:
-
Raspberry Pi
-
https: //www.alsa-project. org / main / index.php / Documentation
- Wiki non officiel: https://alsa.opensrc.org/
- http://www.volkerschatz.com/noise/alsa.html
- https://en.wikipedia.org/wiki/I%C2%B2S
- http: // nairobi-embedded. org / alsa_framework.html
-
https://www.kernel.org/doc/html/v4.10/sound/soc/overview.html