[Résolu] Adafruit Microphone en i2s - Plantage

Salut, j’ai reçu mon microphone et j’ai tenté de l’utiliser. Je suis le guide de la pièce, sur cette page; Raspberry Pi Wiring & Test | Adafruit I2S MEMS Microphone Breakout | Adafruit Learning System

Bon, je suis sous Raspberry Pi Zero, Raspbian Lite à jour et j’ai réussi le processus d’installation.

Pour preuve;

pi@PICAM:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: sndrpii2scard [snd_rpi_i2s_card], device 0: simple-card_codec_link snd-soc-dummy-dai-0 [simple-card_codec_link snd-soc-dummy-dai-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Sans l’installation j’avais une erreur pour aucun « audio device » détecté.

Les problèmes vient durant les tests.

  1. J’ai tenté d’utiliser « alsamixer », j’arrive à l’ouvrir mais il trouve aucun « Playback », normal sous RPi0, comme dans le guide, je fais le F6, je vois mon « device », sélectionne, rien qui change. J’appuie sur F5 (ALL), J’ai « Boost », je change haut et bas, ça marche. Si j’appuie sur F3 (Playback) ou F4 (Capture) Alsamixer ce ferme. Alors … Est-ce normal ? Et j’ai tu que le « Boost » ou je dois avoir un « Volume » un peu comme sous Windows ?
  2. Lorsque je tente un enregistrement avec « arecord », tout semble ce lancer, la barre reste à 0% j’imagine que c’est le timer restant et non le volume d’entrée. Alors là, j’ai deux choses qui ce produits; le wave est vide (même si pour 15s il pèse ~5Mo). La seconde chose est que si j’annule l’application (CTRL+C) et bien c’est tout le Raspberry Pi qui plante (pas un reboot ou shutdown). Mais étrangement il redémarre de lui-même. Mais le problème ne semble pas venir de mon interaction mais du micro, car si je défini une durée à « arecord » avec « -d 10 » par exemple, après 10s, l’enregistrement ce coupe et le raspberry plante (et redémarre).

Voici le output;

pi@PICAM:~ $ arecord -D plughw:0 -c1 -r 48000 -f S32_LE -t wav -V mono -v /home/pi/saves/file.wav -d 10
Recording WAVE '/home/pi/saves/file.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Mono
Plug PCM: Route conversion PCM (sformat=S32_LE)
  Transformation table:
    0 <- 0*0.5 + 1*0.5
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 1
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 24000
  period_size  : 6000
  period_time  : 125000
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 6000
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 24000
  silence_threshold: 0
  silence_size : 0
  boundary     : 1572864000
Slave: Hardware PCM card 0 'snd_rpi_i2s_card' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 24000
  period_size  : 6000
  period_time  : 125000
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 6000
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 24000
  silence_threshold: 0
  silence_size : 0
  boundary     : 1572864000
  appl_ptr     : 0
  hw_ptr       : 0
#+                                                 | 00%pi@PICAM:~ $

Je m’en viens à aimer le USB de plus en plus. Juste que tant qu’à avoir un RPi, aussi bien tenter d’utiliser des modules et etc… pour rendre la chose plus « techno » et « custom ». Mais plus je tente des choses, moins je le trouve pratique, mais bon, c’est du à mes choix de projets. :stuck_out_tongue:

Alors quelqu’un y comprend quelque chose ?

Bon j’ai résolu ce bug. C’est que j’ai l’un de mes boutons qui utilisait ce même GPIO pour la commande Reboot (pin 38, GPIO #20), sans « shift », même si elle n’est pas utilisé dans le projet, mon script Python l’écoutait.


Le 0% est bien le VU Meter, alors si il est a 0% c’est qu’il retourne aucune valeur, confirmé par le fichier vide de donnée audio. Mais je ne sais pas si le module marche réellement (pas) ou que le module chargé répond « présent » même sans l’existence d’un lien avec le module i2s.

Pas pire, je me répond tout seul, lol.

Alors la j’ai réussi à avoir mon son, et je vais donner la solution…

sudo

J’en reviens pas. Le guide ne fait pas mention du besoin de « sudo » pour le « arecord ». Dès que j’ai passé la commande avec « sudo », j’ai eu mon son capté et tout marche. Alors tout ce temps perdu …

Il y avais vraiment aucun moyen de savoir que le bug était du à ça, surtout que je ne penserais pas que le signal audio soit réservé aux Super Utilisateurs, mais que l’interroger ne le demande pas.

Je met en résolu. :stuck_out_tongue: