3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Jetson Nano JetPack 4.6.4 (L4T 32.7.4) のカーネルビルド

Posted at

はじめに

Jetson Nanoの最終プロダクトリリースJetPack 4.6.4 (L4T 32.7.4)でMIDIデバイスをサポートするため、カーネルビルドを行ってみました。

前提条件

SDカードは32GB以上を使用する必要があります。

JetPack 4.6.4はSDカードイメージファイルが配布されていないため、SDK Managerを使用してJetson Nanoへ書き込む必要があります。

Virtualbox + Ubuntu 18.04 LTSでSDK Managerを使用する

USBの設定を変更します。

  • USB 3.0 (xHCI) コントローラーを選択する
    • デフォルトのUSB 2.0 (OHCI+EHCI) コントローラーだと、途中で書き込みが止まってしまいます
  • USBデバイスフィルターにNVIDIA Corp. APX [0102]を追加する
    • 書き込み途中でデバイスがデタッチされて書き込みが失敗するため、自動でアタッチされるようにします

jp_image_010.jpg

buildKernelAndModulesツール

JetsonHacksのbuildKernelAndModulesツールはJetPack4.6.3 (L4T 32.7.3)までしか対応していないため、ファイルを修正する必要があります。

  • scripts/jetson_variables
  • scripts/getKernelSources.sh

カーネルソースのリンクはこちらです。

image_001.jpg

修正済のファイルをこちらに置きました。

事前準備

ビルドを開始すると、OpenSSLライブラリのヘッダーファイルが見つからないというエラーが出力されるため、OpenSSLライブラリをインストールします。

sudo apt install libssl-dev

buildKernelAndModulesツールのダウンロード

git clone https://github.com/kitazaki/buildKernelAndModules/

本家のGitレポジトリはこちら。(プルリクがマージされたら)

git clone https://github.com/JetsonHacksNano/buildKernelAndModules

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

cd buildKernelAndModules/
./getKernelSources.sh

カーネルコンフィグの編集

editConfig.shコマンドを使用してCUIでカーネルコンフィグを編集します。

./editConfig.sh

編集する箇所はこちら。

Device Driversを選択します。

jp_image_002.jpg

Sound card supportを選択します。

jp_image_003.jpg

Open Sound System (DEPRECATED)にチェックを入れます。
Advanced Linux Sound Architectureを選択します。

jp_image_020.jpg

Sequencer support、OSS Mixer API、OSS PCM API、PCM timer interface、OSS Sequencer APIにチェックを入れます。
Generic sound devicesを選択します。

jp_image_021.jpg

jp_image_022.jpg

カーネルビルド

$ ./makeKernel.sh 

掛かった時間

real 30m21.065s
user 76m10.324s
sys 7m44.704s

モジュールのビルド

$ ./makeModules.sh

ビルド中に以下のエラーが表示されました。

  CC [M]  sound/core/seq/seq_ports.o
sound/core/seq/seq_ports.c:572:13: error: redefinition of ‘delete_and_unsubscribe_port’
 static void delete_and_unsubscribe_port(struct snd_seq_client *client,

seq_ports.cファイルの中で、delete_and_unsubscribe_port関数が複数回宣言されているというエラーです。
以下のファイルを編集して、1つのdelete_and_unsubscribe_port関数を削除します。

/usr/src/kernel/kernel-4.9/sound/core/seq/seq_ports.c

jp_image_011.jpg

掛かった時間

(エラー修正前)
real 38m57.338s
user 95m10.828s
sys 10m31.592s

(エラー修正後)
real 9m56.872s
user 17m46.132s
sys 3m10.724s

イメージのコピー

$ ./copyImage.sh

再起動

$ sudo reboot

動作確認

MIDIデバイス(NSX-39)をUSBに接続し、認識されることを確認します。

sudo dmesg

[   68.028970] usb 1-2.1: USB disconnect, device number 3
[   71.835810] usb 1-2.1: new high-speed USB device number 7 using tegra-xusb
[   71.856903] usb 1-2.1: config 1 interface 1 altsetting 0 bulk endpoint 0x2 has invalid maxpacket 64
[   71.866243] usb 1-2.1: config 1 interface 1 altsetting 0 bulk endpoint 0x81 has invalid maxpacket 64
[   71.876477] usb 1-2.1: New USB device found, idVendor=1b3f, idProduct=8001
[   71.876487] usb 1-2.1: New USB device strings: Mfr=1, Product=1, SerialNumber=1
[   71.876494] usb 1-2.1: Product: NSX-39 
[   71.876501] usb 1-2.1: Manufacturer: NSX-39 
[   71.876507] usb 1-2.1: SerialNumber: NSX-39 
$ amidi -l
Dir Device    Name
IO  hw:2,0    Virtual Raw MIDI (16 subdevices)
IO  hw:2,1    Virtual Raw MIDI (16 subdevices)
IO  hw:2,2    Virtual Raw MIDI (16 subdevices)
IO  hw:2,3    Virtual Raw MIDI (16 subdevices)
IO  hw:5,0,0  NSX-39 MIDI 1

書籍「Jetson Nano 超入門」の Part 6-3 のサンプルスクリプトを実行して MIDI が鳴れば正常です。

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

sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev libfreetype6-dev libjpeg-dev libportmidi-dev python3-pip

sudo -H pip3 install pygame

python3 pocket_miku_test.py
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?