to use it as Midi Hub, with nn~ and control other devices with a Wiimote over Midi
Rebuild Kernel to allow for use of ALSA-Midi
Setup PureData with Externals for Wiimote, RAVE and nn~
To Change standard Python version (eg within conda group):
Midimanager and other autostart setup tipps:
This is how I set up my own Jetson Nano. This is not a tutorial. I know nothing. Use at your own risk. It works for me, but that might be a freak accident. I make music. But maybe this helps someone make more cool music stuff.
Rebuild Kernel to allow for use of ALSA-Midi
Normally Midi is disabled on the NVIDIA-Distributions. Here is how to fix that:
Get current SD card Image and etch it (e.g. with Balena etcher):
https://developer.nvidia.com/jetson-nano-sd-card-image
My starting version was 4.6.1. As I have tried making other combinations work (see below for Jetpack 4.5) I would not recommend doing that. I found it a disagreeable experience.
Start your Jetson Nano with it. Open Terminal
sudo apt-get update
sudo apt-get dist-upgrade -y
### This got me L4T 32.7.3 with kernel 4.9.299
sudo apt autoremove
reboot
### Speedup. Can be skipped.
git clone https://github.com/JetsonHacksNano/installSwapfile
cd installSwapfile
./installSwapfile.sh
sudo jetson_clocks
### Getting sources and changing kernel
cd && mkdir kernel && cd kernel
wget https://developer.nvidia.com/downloads/remack-sdksjetpack-463r32releasev73sourcest210publicsourcestbz2
tar -xvjf remack-sdksjetpack-463r32releasev73sourcest210publicsourcestbz2
cd Linux_for_Tegra/source/public/
tar -xvjf kernel_src.tbz2
cd kernel/kernel-4.9
### getting current config file to edit it.
zcat /proc/config.gz > .config
vim .config
In vim editor you will need the following commands:
i = insert mode. So you can write.
Esc = leave current mode
Number > Ctrl+g = o to line number
/ = Search (case-sensitive)
Use the search to activate the Midi-relevant lines. e.g:
CONFIG_SOUND_OSS_CORE=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_TIMER=y
CONFIG_SND_HRTIMER=y
# also check that these are set
CONFIG_HIGH_RES_TIMERS=y
CONFIG_NO_HZ_IDLE=y
:wq = save & exit
Now we write the new config file. Using this command we only have to confirm the changes we just made.
make oldconfig
It should now only ask you about the changes you just made to the .config file. Things like:
Sound card support (SOUND) [Y/n/m/?] y
Preclaim OSS device numbers (SOUND_OSS_CORE_PRECLAIM) Y/n/? y
Answer y. If it states first makeconfig failed and restarts the config stop and repeat from unpacking the kernel packages. Otherwise you will have to go through 8000 button prompts you cannot mess up. (If you get an error you can cill the process with ctrl+c.)
Now for the actual building of the kernel. The third step will take a LONG time.
make prepare
make modules_prepare
make -j4 Image && make -j4 modules
sudo make modules_install
sudo cp arch/arm64/boot/Image /boot/Image
reboot
You might want to consider actually going for a real-time Kernel. I did not so far find it necessary. Look it up here:
https://wiki.linuxaudio.org/wiki/system_configuration
jetsonUtilities
To find out more about the system you just installed you might like the jetsonUtilities script.
git clone https://github.com/jetsonhacks/jetsonUtilities
cd jetsonUtilities
python jetsoninfo.py
# or:
./jetsonInfo.py
Setup PureData with Externals for Wiimote, RAVE and nn~
sudo apt install puredata
# open once before installing externals.
sudo apt-get install pd-wiimote
# if it does not get detected => Preferences > Startup > add > wiimote
sudo apt autoremove
As a sidenote: Getting Rave to run on Nano for training purposes is impossible with jetpack.
setup of puredata external nn_tilde
This got a lot easier with updates. Now you just have to install curl and run the appropriate line:
sudo apt update
sudo apt install curl
curl -s https://raw.githubusercontent.com/acids-ircam/nn_tilde/master/install/raspberrypi.sh | bash
Earlier I had to do this to get it running:
sudo apt update
sudo apt install -y cmake build-essential git puredata puredata-dev python3 python3-pip
LIBTORCH=$(pwd)/.local/lib/pypy3.9/site-packages/torch
# this will be another path for you!
git clone https://github.com/acids-ircam/nn_tilde.git
cd nn_tilde
mkdir build
cd build
cmake ../src/ -DCMAKE_PREFIX_PATH=$LIBTORCH -DCMAKE_BUILD_TYPE=Release
make > /dev/null
sudo mkdir -p /usr/local/lib/pd-externals/
sudo cp frontend/puredata/nn_tilde/nn~.pd_linux /usr/local/lib/pd-externals/
cd ../../
rm -fr nn_tilde
And because everyone involved here seems just to be nice, there are some pre-trained models available for everyone to check out.
https://acids-ircam.github.io/rave_models_download
Change standard Python version (eg within conda group):
These are examples of likely python version you will have at this point. You add them to a group with the update-alternatives command and then config which one will be preferred.
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 3
sudo update-alternatives --config python
# Then just press number of wanted python version
If you don’t know where a python version is installed, start it (e.g. $ python3.9) and then go:
>>> import sys
>>> sys.executable
Groups and Priorities
You should add yourself to a group called audio to sort out priorities.
groups
sudo usermod -a -G audio benno
pip3 install --upgrade rtcqs
For me starting this tool with the terminal command rtcqs did not work However, navigating to the folder (for me /home/benno/.local/lib/python3.6/site-packages/rtcqs) and just starting it with python worked just fine.
python3 rtcqs.py
There you will find a lot of recommendations: I followed them for the most part.
Download Priority Manager rtirq:
sudo apt-get install rtirq-init
Really important:
To get puredata and other audio fun to run at top proirity: Set up limits.conf
sudo vim /etc/security/limits.conf
adding uncommented lines:
@audio - rtprio 90
@audio - memlock unlimited
Midimanager and other autostart setup tipps:
To find out what midi-devices are connected and what they are connected to:
aconnect -l
To place a script or file in Autostart on this jetson nano open the gnome-session-properties (press alt + F2 and type it). There you add e.g.
pd /home/benno/Documents/Pd/midiwii.pd
This will open Pure Data and specifies a file to do so.
To run a script just add it as well e.g.
/home/benno/Documents/Pd/midiconnect.sh
Or just navigate to any file or script you want to open at startup.
This example is my shell script for Midi-configuration. It connects my instruments together at startup. The content of this file is something like:
#!/bin/bash
aconnect -d ‚Axoloti Core‘:0 ‚HYDRASYNTH DR‘:0
aconnect ‚Pure Data‘:1 ‚HYDRASYNTH DR‘:0
The option -d disconnects. It also works with addresses:
aconnect 28:0 32:0
Then make it executable:
sudo chmod +x /home/benno/Documents/Pd/midiconnect.sh
On a raspberry to do the same you can also:
edit as sudo:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
# add → Filename in new line. Use Filename without spaces! e.g.
pd /home/benno/Documents/Pd/midiwii.pd
@sh /home/benno/Documents/Pd/midiconnect.sh
JETPACK 4.5
Following mostly Karaage0703 https://qiita.com/karaage0703/items/9bef6aeec9ad24f647c6
First: Get Jetpack 4.5
Etch it with Balena etcher
https://developer.nvidia.com/jetson-nano-sd-card-image-45
Start your Jetson Nano with it.
git clone https://github.com/JetsonHacksNano/installSwapfile
cd installSwapfile
./installSwapfile.sh
sudo jetson_clocks
cd && mkdir kernel && cd kernel
wget https://developer.nvidia.com/embedded/L4T/r32_Release_v5.0/sources/T210/public_sources.tbz2
tar -xvjf public_sources.tbz2
cd Linux_for_Tegra/source/public/
tar -xvjf kernel_src.tbz2
cd kernel/kernel-4.9
zcat /proc/config.gz > .config
vim .config
###
CONFIG_SOUND_OSS_CORE=y
CONFIG_SND_SEQUENCER=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_RAWMIDI_SEQ=y
CONFIG_SND_HRTIMER=y
CONFIG_NO_HZ_IDLE=y
CONFIG_HIGH_RES_TIMERS=y
###
make oldconfig
make prepare
make modules_prepare
make -j4 Image && make -j4 modules
sudo make modules_install
sudo cp arch/arm64/boot/Image /boot/Image
####
reboot
sudo apt-get update
sudo apt-get dist-upgrade -y
reboot