Help us understand the problem. What is going on with this article?

Jetson NanoでMIDIを使うためにカーネルビルド

20190625224408.jpg

Jetson NanoでMIDIを使いたいがためにカーネルビルドすることになった

 Jetson NanoでMIDIで演奏をしたいなと思い、頑張ってPygameをインストールするところまではできたのですが、MIDIを使うためには、更にカーネルビルドが必要なことが判明してしまいました。

 若干絶望したのですが、以前ラズパイのカーネルビルドやったことあるから、できないことは無いだろうとビルドしようとしたら全然ダメで絶望していました。

 そこで助けられたのは @yamamo-to さんの以下記事です。

Jetson Nanoのカーネル再コンパイル

 この記事が無かったら、Jetson Nanoでカーネルビルドできませんでした。めちゃ感謝です。というわけで、ほとんど上記記事のままなのですが、MIDI使えるようにコンフィグファイルを弄ったのと、MIDI出力のサンプルスクリプトを用意したので、そちらを中心にメモを残しておこうと思います。

Jetson Nano初期セットアップ

 Jetson NanoのSDカードをNVIDIAの開発者向けページからダウンロードして、SDを作成してJetson Nanoを起動します。

 イメージは「jetson-nano-sd-r32.1.1-2019-05-31.zip」を使用しました。対象のイメージ見つからない時は、以下の記事を参考にして下さい。

Jetson Nanoで使えるSDカードのイメージファイルまとめとイメージ書き込み方法

 起動したら、スワップファイルの増大とパフォーマンスの最大化を行います。

 スワップファイルの増大は、以下コマンドで実施します。

$ git clone https://github.com/JetsonHacksNano/installSwapfile
$ cd installSwapfile
$ ./installSwapfile.sh

 パフォーマンスの最大化は、以下のコマンドを実行します。

$ sudo jetson_clocks

カーネルソースのダウンロード

 以下コマンドで、ホームディレクトリ以下にkernelというディレクトリ作成して、その中で作業します。

$ cd && mkdir kernel && cd kernel

 ここからは、冒頭の参考サイトのままです。

 Jetson Nanoのカーネルのソースは、NVIDIAのサイトのJetson NanoのBSP Sourcesというものになります。

 以下コマンドで、カーネルのソースをダウンロードして解凍します。

$ wget https://developer.nvidia.com/embedded/dlc/l4t-sources-32-1-jetson-nano -O l4t-sources-32-1-jetson-nano.tar.gz
$ tar xvf l4t-sources-32-1-jetson-nano.tar.gz
$ cd public_sources
$ tar xvf kernel_src.tbz2
$ cd kernel/kernel-4.9

コンフィグファイル編集

 現在使用しているカーネルのコンフィグファイルを書き出します。

$ zcat /proc/config.gz  > .config

 コンフィグファイル(.config)を編集します。

$ vim .config

 ここでMIDIを有効にするために、コンフィグファイルに以下の項目を追記・修正します。

CONFIG_SOUND_OSS_CORE=y
CONFIG_SOUND_OSS_CORE_PRECLAIM=y
CONFIG_SND_SEQUENCER=y 
CONFIG_SND_SEQ_DUMMY=y 
CONFIG_SND_OSSEMUL=y 
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_RAWMIDI_SEQ=y

 編集済みのコンフィグファイルも用意しましたので、編集が大変でしたら以下コマンドでダウンロードしてもOKです。

$ wget -O .config https://raw.githubusercontent.com/karaage0703/jetson-nano-tools/master/kernel_config/config_midi

カーネルビルド

 ビルドに関しても、冒頭の参考サイトのままです。

 以下コマンドでカーネルをビルドしてインストールします。必要に応じて /boot/Imageのバックアップをとっておきましょう。

$ 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

 一番時間かかるのは、make -j4 Image && make -j4 modulesです(1時間以上かかります)。ゆっくりコーヒーでも飲みながら待つか、寝て待ちましょう。

 最初の3行は現状の設定を流用するためのお作法のようです(詳細分かっていません…)。後半3行は、ビルドしてできたイメージを、実際に使用するブートイメージに入れ替えている(のだと思います)。

menuconfigを使用してGUIでコンフィグファイルを作成する場合

GUIでコンフィグファイルを作成する場合は、以下コマンドで必要なインストールします。

$ sudo apt-get update
$ sudo apt-get install -y libncurses5-dev

 あとは、kernel/kernel-4.9以下で、以下menuconfigコマンド実行すれば、GUIでConfigを行います。

$ make menuconfig

menuconfig.jpg
menuconfigの画面

 ラズパイではmenuconfigを使ってコンフィグファイルを作成しましたが、今回Jetson Nanoでは使いませんでした(というか使えませんでした)。参考までにメモとして残して置きます。

Jetson NanoでのMIDIのテスト

 MIDI出力を確認します。お手元のMIDI機器(この記事を読んでいるということは、持っていると思っています)とJetson Nanoを接続してMIDIのテストを行いましょう。

 この記事の通りにカーネルビルドをした上で、以下の記事を参考にPygameを入れて下さい

Jetson Nanoにpygameをインストールする方法(Python2/Python3)

 今回は、MIDI機器としてポケット・ミクを使用しました。

20190625224408.jpg

 テストプログラムを用意しました。以下コマンドでテストできます。

$ wget https://raw.githubusercontent.com/karaage0703/jetson-nano-tools/master/scripts/pocket_miku_test.py
$ python3 pocket_miku_test.py

 うまくいけば、ポケット・ミクが「変デジ研究所」と歌ってくれるはずです。

参考リンク

Jetson Nanoのカーネル再コンパイル

nVidia Jetson Nano: Desktop Use, Kernel Builds, and Deeper Analysis

/dev/snd/seq failed: no such file or directory

Jetson JetPack4.4 DP のカーネルビルド

関連ページ

Jetson Nano関係のTIPSまとめ
Jetson Nano関係の情報は、上記ページにまとめていますのでよければ参照下さい。

変更履歴

  • 2020/11/04 参考リンク追記
karaage0703
闇のエンジニア/変なデジカメ開発中/ディープラーニング芸人/Raspberry Piとからあげ大好き/はてなブログ書いてます
https://karaage.hatenadiary.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away