Audio I2S Jetson Nano: Cara Menyiapkan Raspiaudio Audio+

Untuk menyiapkan Raspiaudio Audio+ pada Jetson Nano, aktifkan pin I2S4 di jetson-io, paksa pin tersebut ke mode audio setiap kali boot, dan arahkan I2S4 ke driver suara. Kit pengembangan Jetson Nano dirancang untuk AI dan robotika, tetapi tidak memiliki output audio analog. Papan Raspiaudio Audio+ merupakan kartu suara untuk Raspberry Pi yang juga cocok dengan header 40 pin pada Nano.

Panduan ini mencakup setiap langkah pada Jetson Nano B02 (2019). Setelah selesai, Anda akan mendengar audio dari jack headphone Audio+.

Lakukan mastering lagu Anda dalam hitungan detik
Capai -14 LUFS secara otomatis. Pertahankan karakter lagu Anda. Audio siap streaming yang mempertahankan keunikan musik Anda. Langsung dari browser Anda.

Sebelum Memulai: Model Jetson Nano dan Kompatibilitas Audio+

Siapkan Jetson Nano terlebih dahulu. Jika belum, ikuti panduan penyiapan Jetson Nano dari NVIDIA. Anda harus bisa melakukan boot Nano hingga desktop dengan monitor dan keyboard.

Yang Anda perlukan: Jetson Nano B02 dan papan Raspiaudio Audio+. Konektor Audio+ 40 pin langsung cocok dengan header Nano. Tekan dengan kuat agar setiap pin tersambung.

Panduan ini diuji pada kit pengembangan Jetson Nano B02 (2019), yang juga disebut P3450 (modul P3448 pada papan pembawa P3449). Jetson Nano dapat dikenali dari pendingin pasifnya; model Jetson lebih baru menggunakan kipas. B02 juga memiliki deretan pin yang menjorok keluar seperti tonjolan kecil, yang tidak terdapat pada model A01 lama.

Jika Anda memiliki model A01 lama atau Jetson yang lebih baru, gunakan panduan ini sebagai referensi saja karena langkahnya tidak berlaku langsung. Anda dapat berbagi kiat di komunitas Raspiaudio.

Papan I2S DAC lainnya: Audio+ dan DAC Raspberry Pi sejenis tidak memiliki antarmuka kontrol, hanya antarmuka I2S. Seperti dijelaskan dalam diskusi forum NVIDIA tentang kartu suara I2S Raspberry Pi untuk Jetson Nano, papan tersebut seharusnya bekerja setelah pin dikonfigurasi. Karena itu, langkah berikut menjadi titik awal untuk I2S DAC sejenis pada Nano B02.

Terima kasih khusus kepada jas-mx atas postingan forum NVIDIA tentang mengaktifkan output audio I2S pada konektor 40 pin yang menginspirasi panduan ini.

Langkah 1: Aktifkan Pin Audio I2S4 dengan jetson-io

Secara bawaan, Jetson Nano tidak menggunakan pin header tersebut untuk audio. Nyalakan Nano dengan monitor dan keyboard, buka terminal, lalu jalankan:

sudo /opt/nvidia/jetson-io/jetson-io.py

Perintah ini membuka alat berbasis menu:

  1. Gunakan tombol panah (atas/bawah) untuk menyorot "Configure Jetson 40pin Header" dan tekan Enter
  2. Pilih "Configure header pins manually" dan tekan Enter
  3. Dalam daftar kotak centang, cari "i2s4" (pin 12, 35, 38, 40) dan "audio_mclk" (pin 7). Tekan Space pada masing-masing untuk menandainya dengan tanda bintang [*].
  4. Pilih "Back"
  5. Pilih "Save pin changes"
  6. Pilih "Save and reboot to reconfigure pins"

Jetson Nano memulai ulang. Alat tersebut menulis pohon perangkat khusus (DTB) yang menetapkan pin ini untuk audio, disimpan di /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.dtb.

Langkah 2: Pastikan Pin Berada dalam Mode I2S

Setelah memulai ulang, periksa mode pin:

sudo cat /sys/kernel/debug/tegra_gpio | grep "J:"

Anda seharusnya melihat: J: 2:1 00 00 00 00 00 00 000000
Jika "f0" muncul di mana pun (misalnya "f0 00 00"), perbaikan di bawah diperlukan.
"00" berarti pin berada dalam mode fungsi khusus (SFIO) untuk audio I2S. "f0" berarti pin masih berada dalam mode GPIO.

Langkah 3: Perbaiki Pin dengan Layanan systemd Jika Diperlukan

Pada banyak papan B02, pin tidak beralih ke mode audio. Perintah berikut memperbaikinya:

sudo busybox devmem 0x6000d204 32 0

Perintah ini memaksa pin ke mode yang tepat, tetapi pin kembali ke mode GPIO saat Anda memulai ulang. Untuk menerapkan perbaikan setiap kali boot, buat layanan 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

Layanan yang berjalan saat sistem dimulai ini menulis ke register konfigurasi GPIO 0x6000d204, sehingga memaksa pin Port J ke mode SFIO untuk I2S4.

Aktifkan dan jalankan layanan:

sudo systemctl enable fix-i2s4-pins
sudo systemctl start fix-i2s4-pins

Kedua perintah seharusnya tidak menghasilkan kesalahan. Jika muncul "Failed to start fix-i2s4-pins.service: Unit not found", berarti file layanan belum dibuat dengan benar. Periksa log:

sudo journalctl -u fix-i2s4-pins

Langkah 4: Arahkan I2S4 ke Driver Suara

Hubungkan antarmuka I2S4 ke sistem audio:

amixer -c tegrasndt210ref cset name='I2S4 Mux' ADMAIF1

Output seharusnya diakhiri dengan values=1. Jika muncul kesalahan "Invalid card", driver audio belum dimuat. Mulai ulang dan coba lagi.

Langkah ini mengarahkan antarmuka ADMAIF1 (tempat driver suara mengirim audio) ke I2S4, yang menghubungkan driver dengan pin perangkat keras.

Langkah 5: Putar Nada Uji

Perintah ini mengirim gelombang sinus stereo dengan laju pengambilan sampel 48 kHz dan kedalaman 16 bit melalui antarmuka I2S4:

speaker-test -D hw:tegrasndt210ref,0 -r 48000 -c 2 -F S16_LE -t sine

Anda seharusnya mendengar nada terus-menerus dari headphone atau speaker. Tekan Ctrl+C untuk menghentikannya.

Cara Memastikan Papan Audio+ Berfungsi

Jika Anda mendengar nada, Raspiaudio Audio+ berfungsi pada Jetson Nano B02 Anda. Perbaikan pin tetap berlaku setelah mulai ulang berkat layanan dari Langkah 3.

Tambahan: Cara Flash Jetson Nano dengan DTB Khusus

Metode di atas bekerja untuk satu perangkat. Jika Anda perlu melakukan flash beberapa papan Jetson Nano untuk produksi, menelusuri menu jetson-io pada masing-masing akan merepotkan. Sebagai gantinya, lakukan flash tiap papan dengan file DTB (Device Tree Blob) yang dibuat dalam Langkah 1, agar konfigurasi pin sudah tersedia:

/boot/kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.dtb

Salin file ini ke komputer Anda. Saat melakukan flash ulang, salin kembali ke folder /boot/ sebelum boot pertama.

Penting: Jetson Nano Mana yang Anda Miliki?

File DTB ini hanya cocok dengan revisi papan pembawa tempat file tersebut dibuat. Revisi berada di akhir nama file (di sini b00). Melakukan flash DTB dari revisi lain dapat merusak partisi boot, dan Anda mungkin perlu melakukan flash ulang semuanya dari komputer host.

Cara termudah untuk melakukan flash Jetson Nano adalah dari komputer host Linux dengan NVIDIA SDK Manager atau NVIDIA Jetson Linux Driver Package (L4T). Saya menyarankan L4T karena bekerja pada lebih banyak distribusi Linux. Prosedur lengkap tersedia dalam diskusi forum NVIDIA tentang mengunduh dan melakukan flash L4T secara manual. Berikut versi ringkasnya.

Unduh L4T dari arsip NVIDIA Jetson Linux. Untuk Jetson Nano, gunakan seri Jetson Linux 32.7.x, bukan cabang rilis JetPack yang lebih baru. Pada halaman rilis, unduh Driver Package (BSP) dan Sample Root Filesystem. Ekstrak paket driver tanpa sudo, lalu ekstrak sistem berkas akar contoh dengan sudo ke Linux_for_Tegra/rootfs/.

Kemudian, dari folder Linux_for_Tegra, terapkan berkas biner NVIDIA:

sudo ./apply_binaries.sh

Selanjutnya, hubungkan Jetson Nano ke komputer host Anda melalui micro USB. Nano harus diberi daya oleh catu daya 5 V terpisah.

Berikut contoh perintah untuk melakukan flash Jetson Nano dengan file DTB khusus Anda. Jalankan pada komputer host setelah menyalin file DTB khusus dari Nano ke host. Ganti jalur tersebut dengan jalur file Anda.

sudo ./flash.sh -k DTB
-d /path/to/your/file/kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.dtb
jetson-nano-devkit mmcblk1p1

Untuk melakukan flash, Anda mungkin perlu menempatkan Jetson Nano dalam Recovery Mode:

  1. Beri daya Jetson Nano dari catu daya 5 V (bukan melalui micro USB).
  2. Hubungkan pin "FC RCV" (paksa pemulihan) ke pin "GND" dengan kabel jumper, penjepit kertas, atau obeng kecil.
  3. Hubungkan pin "SYS_RST" (reset sistem) ke pin "GND" untuk memulai ulang Jetson Nano.
  4. Hubungkan Nano ke komputer host Anda melalui micro USB.

Periksa koneksi pada komputer host Anda dengan:

lsusb | grep -i nvidia

Setelah melakukan flash, Anda masih perlu menambahkan layanan systemd dari Langkah 3 agar pin diatur dengan benar setiap kali boot.

Panduan Terkait

Setelah papan dapat memutar suara, panduan berikut membahas proyek audio berbasis jaringan saraf untuk komputer kecil dengan satu papan:

  • Model RAVE dari IRCAM: konfigurasi "raspberry" yang ringan dan modul eksternal nn~ ditujukan untuk papan sistem tertanam pada instalasi portabel.
  • Plugin gitar jaringan saraf gratis: ToobAmp dan Stompbox menjalankan model amplifier berbasis jaringan saraf pada pedal berbasis Raspberry Pi.
  • DDSP dari Google Magenta: mencakup Open NSynth Super, penyintesis berbasis jaringan saraf yang dibangun pada Raspberry Pi.
Lakukan mastering lagu Anda dalam hitungan detik
Capai -14 LUFS secara otomatis. Pertahankan karakter lagu Anda. Audio siap streaming yang mempertahankan keunikan musik Anda. Langsung dari browser Anda.