Audio I2S su Jetson Nano: come configurare Raspiaudio Audio+
Per configurare Raspiaudio Audio+ su un Jetson Nano, attiva i pin I2S4 in jetson-io, forza quei pin in modalità audio a ogni avvio e collega I2S4 al driver audio. Il kit di sviluppo Jetson Nano è pensato per IA e robotica, ma non ha un'uscita audio analogica. La scheda Raspiaudio Audio+ è una scheda audio progettata per Raspberry Pi che si adatta anche al connettore a 40 pin del Nano.
Questa guida descrive ogni passaggio sul Jetson Nano B02 (2019). Alla fine sentirai l'audio dall'uscita cuffie di Audio+.
Prima di iniziare: modello di Jetson Nano e compatibilità Audio+
Configura prima il tuo Jetson Nano. Se non l'hai ancora fatto, segui la guida NVIDIA alla configurazione di Jetson Nano. Devi poter avviare il Nano fino al desktop con un monitor e una tastiera.
Cosa serve: un Jetson Nano B02 e una scheda Raspiaudio Audio+. Il connettore a 40 pin di Audio+ si inserisce direttamente su quello del Nano. Premi con decisione affinché ogni pin faccia contatto.
Questa guida è stata provata sul kit di sviluppo Jetson Nano B02 (2019), chiamato anche P3450 (modulo P3448 su scheda portante P3449). Puoi riconoscere Jetson Nano dal dissipatore passivo (i modelli Jetson più recenti usano ventole). Il B02 ha anche una fila di pin che sporge come una piccola estensione, assente nel vecchio modello A01.
Se hai il vecchio modello A01 o un Jetson più recente, usa questa guida solo come riferimento, perché i passaggi non si applicano direttamente. Puoi condividere i tuoi consigli nella community Raspiaudio.
Altre schede DAC I2S: Audio+ e i DAC simili per Raspberry Pi non hanno un'interfaccia di controllo, ma solo un'interfaccia I2S. Come spiega questa discussione del forum NVIDIA sulle schede audio I2S Raspberry Pi per Jetson Nano, queste schede dovrebbero funzionare una volta configurati i pin. I passaggi seguenti sono quindi un buon punto di partenza per altri DAC I2S di questo tipo sul Nano B02.
Un ringraziamento speciale a jas-mx per il post del forum NVIDIA sull'attivazione dell'uscita audio I2S sul connettore a 40 pin che ha ispirato questa guida.
Passaggio 1: attiva i pin audio I2S4 con jetson-io
Per impostazione predefinita, Jetson Nano non usa quei pin del connettore per l'audio. Avvia il Nano con monitor e tastiera, apri un terminale ed esegui:
sudo /opt/nvidia/jetson-io/jetson-io.py
Si apre uno strumento a menu:
- Usa le frecce su e giù per evidenziare "Configure Jetson 40pin Header" e premi Enter
- Seleziona "Configure header pins manually" e premi Enter
- Nella lista delle caselle, trova "i2s4" (pin 12, 35, 38, 40) e "audio_mclk" (pin 7). Premi Space su ciascuna per contrassegnarla con un asterisco [*].
- Seleziona "Back"
- Seleziona "Save pin changes"
- Seleziona "Save and reboot to reconfigure pins"
Jetson Nano si riavvia. Lo strumento scrive un albero dei dispositivi personalizzato (DTB) che assegna quei pin all'audio, salvato in /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.dtb.
Passaggio 2: verifica che i pin siano in modalità I2S
Dopo il riavvio, controlla la modalità dei pin:
sudo cat /sys/kernel/debug/tegra_gpio | grep "J:"
Dovresti vedere: J: 2:1 00 00 00 00 00 00 000000
Se vedi "f0" da qualche parte (come "f0 00 00"), serve la correzione seguente.
"00" significa che i pin sono in modalità funzione speciale (SFIO) per l'audio I2S. "f0" significa che sono bloccati in modalità GPIO.
Passaggio 3: correggi i pin con un servizio systemd, se necessario
Su molte schede B02, i pin non passano in modalità audio. Questo comando risolve il problema:
sudo busybox devmem 0x6000d204 32 0
Forza i pin nella modalità corretta, ma al riavvio tornano in modalità GPIO. Per applicare la correzione a ogni avvio, crea un servizio systemd:
sudo tee /etc/systemd/system/fix-i2s4-pins.service <<EOF
[Unit]
Description=Fix I2S4 Pinmux for Jetson Nano
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/bin/busybox devmem 0x6000d204 32 0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
Questo servizio di avvio scrive nel registro di configurazione GPIO 0x6000d204, forzando i pin della porta J in modalità SFIO per I2S4.
Abilita e avvia il servizio:
sudo systemctl enable fix-i2s4-pins
sudo systemctl start fix-i2s4-pins
Entrambi i comandi dovrebbero terminare senza errori. Se vedi "Failed to start fix-i2s4-pins.service: Unit not found," il file del servizio non è stato creato correttamente. Controlla i log:
sudo journalctl -u fix-i2s4-pins
Passaggio 4: collega I2S4 al driver audio
Collega l'interfaccia I2S4 al sistema audio:
amixer -c tegrasndt210ref cset name='I2S4 Mux' ADMAIF1
L'uscita dovrebbe terminare con values=1. Se ricevi l'errore "Invalid card", il driver audio non è ancora caricato. Riavvia e riprova.
Questo instrada l'interfaccia ADMAIF1 (a cui il driver invia l'audio) verso I2S4, collegando il driver ai pin fisici.
Passaggio 5: riproduci un tono di prova
Questo comando invia un'onda sinusoidale stereo a 48 kHz e 16 bit attraverso l'interfaccia I2S4:
speaker-test -D hw:tegrasndt210ref,0 -r 48000 -c 2 -F S16_LE -t sine
Dovresti sentire un tono continuo dalle cuffie o dagli altoparlanti. Premi Ctrl+C per interromperlo.
Come confermare che la scheda Audio+ funziona
Se hai sentito il tono, Raspiaudio Audio+ funziona sul tuo Jetson Nano B02. La correzione dei pin rimane attiva dopo i riavvii grazie al servizio del passaggio 3.
Extra: come flashare il DTB personalizzato sul tuo Jetson Nano
Il metodo precedente funziona per un dispositivo. Se devi flashare più schede Jetson Nano per la produzione, percorrere i menu di jetson-io su ciascuna diventa noioso. Flasha invece ogni scheda con il file DTB (Device Tree Blob) creato nel passaggio 1, così la configurazione dei pin è già presente:
/boot/kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.dtb
Copia questo file sul computer. Quando esegui nuovamente il flash della scheda, copialo di nuovo nella cartella /boot/ prima del primo avvio.
Questo file DTB corrisponde solo alla revisione della scheda portante sulla quale è stato creato. La revisione è alla fine del nome del file (qui, b00). Flashare un DTB di una revisione diversa può danneggiare la partizione di avvio, e potresti dover riflashare tutto da un computer host.
Il modo più semplice per flashare un Jetson Nano è da un computer host Linux con NVIDIA SDK Manager o il NVIDIA Jetson Linux Driver Package (L4T). Consiglio L4T perché funziona su più distribuzioni Linux. La procedura completa è in questa discussione del forum NVIDIA su come scaricare e flashare L4T manualmente. Ecco la versione breve.
Scarica L4T dall'archivio NVIDIA Jetson Linux. Per Jetson Nano usa la serie Jetson Linux 32.7.x, non un ramo JetPack più recente. Nella pagina della versione, scarica il Driver Package (BSP) e il Sample Root Filesystem. Estrai il pacchetto driver senza sudo, poi estrai il filesystem radice di esempio con sudo in Linux_for_Tegra/rootfs/.
Poi, dalla cartella Linux_for_Tegra, applica i binari NVIDIA:
sudo ./apply_binaries.sh
Quindi collega Jetson Nano al computer host tramite micro USB. Il Nano deve essere alimentato da un alimentatore separato a 5 V.
Ecco un esempio di comando che flasha il Jetson Nano con il tuo file DTB personalizzato. Eseguilo sul computer host dopo avervi copiato il DTB personalizzato dal Nano. Sostituisci il percorso con il tuo.
sudo ./flash.sh -k DTB
-d /path/to/your/file/kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.dtb
jetson-nano-devkit mmcblk1p1
Per il flash potresti dover mettere Jetson Nano in modalità di ripristino:
- Alimenta Jetson Nano con un alimentatore a 5 V (non tramite micro USB).
- Collega il pin "FC RCV" (ripristino forzato) a un pin "GND" con un cavetto jumper, una graffetta o un piccolo cacciavite.
- Collega il pin "SYS_RST" (reset del sistema) a un pin "GND" per riavviare Jetson Nano.
- Collega il Nano al computer host tramite micro USB.
Verifica il collegamento sul computer host con:
lsusb | grep -i nvidia
Dopo il flash devi ancora aggiungere il servizio systemd del passaggio 3 per impostare correttamente i pin a ogni avvio.
Guide correlate
Quando la scheda riproduce il suono, queste guide trattano progetti di audio neurale per piccoli computer a scheda singola:
- Modello RAVE di IRCAM: la sua configurazione leggera "raspberry" e l'oggetto esterno nn~ sono destinati a schede embedded per installazioni portatili.
- Plugin di chitarra gratuiti con reti neurali: ToobAmp e Stompbox eseguono modelli neurali di amplificatori su pedali costruiti con Raspberry Pi.
- DDSP di Google Magenta: include Open NSynth Super, un sintetizzatore neurale costruito su Raspberry Pi.