Jetson nano をセットアップする
本稿はJetoack4.4での手順です。
Jetpack4.6のときのメモはJetson nano をセットアップする(Jetpack4.6) にあります。
NvidiaのJetson nanoをセットアップしたときのメモ
参照先の通り。
ただし、参照先のSDカードイメージへのリンクは古いので、は以下から最新版をダウンロードする(古いのも下の方を探せば出てくる)
SDカード書き込みは記事に書かれた balenaEtcher でなく WIN32DiskImager でも大丈夫だが、
balenaEtcher は zipファイルを解凍せずにSDカードに書き込めるので便利。
ちなみに、balena はイタリア語で 鯨 の意味らしい…全然関係ないけど…
[!NOTE] インストール先のSDカードは32GB必須みたい。
16GBだとインストールしただけで「残り少ない」と言われてしまう。
[!NOTE] SDカードスロットが分かりにくいところにある(開発ボード側ではなく、モジュール側の裏側)。
シリアルコンソール繋いでるとケーブルが邪魔で特に挿抜しにくい…
[!WARNING] 一度このイメージを書き込んだSDカードは、以後Windowsから認識されなくなる。
よって、SDフォーマッタやディスクイメージ書き込みツールから新たに書き込みできなくなってしまう。 これは書き込んだSDカードにFATのパーティションが存在しないためのよう。
(RaspberryPiはbootパーティションとしてFATパーティションを持っているので認識されるようだ)コントロールパネル→管理ツール→コンピュータの管理を起動して、
記憶域の下のディスクの管理からSDカード上の不明なパーティションを解放し、
そこに新たにFATパーティションを作成すればWindowsから認識されるようになる。
もちろん、他のUbuntuマシンで書き換えちゃうのもアリだけど。。。
シリアルコンソールが必要なら接続できる。
特に設定等は必要ない。
接続端子は以下を参照
シリアルポートの設定は115200bps/8bit/none/1bit/none
[!WARNING] J41(RaspberryPi互換の40pinヘッダ)のUART端子はコンソールとして動作していないみたい。
gettyが動いてないみたいなので。
たぶん、/etc/systemd/nvgetty.sh
にttyTHS2
の設定を追加すればできるようになる感じだけど、試してないので詳細不明。
J41のUARTを汎用UARTとして使用するには、以下を参照。
その他、コネクタ類の配置が分かりにくい場合は、 JETSON NANO DEVELOPER KIT のP22 にDeveloper kit module and carrier board: rev B01 top viewとして配置図が掲載されているので参照のこと。
最初のブートでUbuntuのセットアップを行う。
これも参照先の通り。
終わったら、何はともあれ最新版にアップデート。
sudo apt update
sudo apt upgrade
ここで一旦リブートしておく。
その他こまごました設定はこちらが参考になるかも。
インストールしたパッケージ gnome-tweaks dconf-editor samba
[!NOTE] min/max/closeボタンがウィンドウ右側に移動できない… ちょっとストレス…
Unityは使いにくくて嫌(個人の見解デス)なので、Ubuntuに変更する(変更しなくても良い)。
自動ログインしている場合は、一旦ログアウトして、
再ログインする際に、「サインイン」ボタンの左にある歯車アイコンをクリック→Ubuntuを選択してから
ログインすると、ウィンドウマネージャがUbuntuに変更されている。
次回ログイン(自動ログインでも)は何もしなくても前回のウィンドウマネージャが選択される。
[!NOTE] Ubuntuに変えると min/max/closeボタンがウィンドウ右側に移動できてる。
結果オーライ😅
特に設定などは必要ない。
TeraTermなどで接続すれば良い。
UbuntuではmDNSが動いているので、«マシン名».localでアクセスできる。
コマンドは以下の通り。
"C:\Program Files (x86)\teraterm\ttermpro.exe" /auth=password /user=«ユーザ名» /passwd=«パスワード» «JetsonのIPアドレス or マシン名.local»
[!NOTE] SSHやmDNSは立ち上がるまで少し時間がかかるみたいなので、
起動後数十秒程度待ってから接続した方が良い。
SSH接続したターミナルを触らずにしばらく置いておくと、タイムアウトしてクローズされてしまう。 これを防ぐにはクライアント側からkeep-aliveパケットを定期的に送信してやれば良いらしい。
Teratermの場合、「設定」→「SSH」→「ハートビート(keep-alive)」を「8」とかに設定し、保存。 次回接続時はこの保存した設定ファイルを読み込む
シリアルコンソール/SSH接続でGUIウィンドウを表示できるようにするには、
WindowsPCなどでX-Serverを動作させておき、
そこに出力するようにすればよい。
Jetson側は~/.bashrc
に以下を追加しておく。
ここのIPアドレスはX-Serverが動作しているマシンのIPアドレスに変更すること。
if [ "$XDG_SESSION_TYPE" != "x11" ]; then
export DISPLAY=192.168.XX.XX:0.0
fi
TigerVNC はちょっと動作があやしいので、やめておいて、Desktop Sharing(Vino)を使うことにする。
参考:
この手順はウィンドウマネージャがUnityで実行しています。 ウィンドウマネージャをUbuntuに変更していると少し手順が違うかもしれませんので、
ウィンドウマネージャをUbuntuに変更している場合はUnityに戻してから設定してください。
設定完了後はUbuntuに再変更しても問題ありません。
以下手順の再掲。
/usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
に以下のパッチを当てる--- org.gnome.Vino.gschema.xml.org 2020-10-19 06:21:32.034728957 +0900
+++ org.gnome.Vino.gschema.xml 2020-10-19 06:22:30.887994965 +0900
@@ -154,5 +154,14 @@
</description>
<default>true</default>
</key>
+ <key name='enabled' type='b'>
+ <summary>Enable remote access to the desktop</summary>
+ <description>
+ If true, allows remote access to the desktop via the RFB
+ protocol. Users on remote machines may then connect to the
+ desktop using a VNC viewer.
+ </description>
+ <default>false</default>
+ </key>
</schema>
</schemalist>
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
[!NOTE] ウィンドウマネージャがUbuntuの時は「設定」で設定する。 左側の「共有」カテゴリを選択、「画面共有」をクリック
- 「このスクリーンの操作する接続を許可する」をチェック
- 「アクセスオプション」で「パスワードを要求する」を選択し、パスワード設定
- 「ネットワーク」で「有線接続1」のスライドスイッチで「オン」を選択 左上のスライドスイッチで「オン」を選択 で出来ると思うけど、出来なかったらUnityで上の方法で設定した後、再度Ubuntuに切り替えてちょ。
[!NOTE] 「コンピュータを検索」で「自動」または「session」と入力すると出てくる 日本語環境だと「startup」で出てこないみたい…
gsettings set org.gnome.Vino require-encryption false
gsettings set org.gnome.Vino prompt-enabled false
[!NOTE] これはVinoの暗号化方式がWindowsと互換性がないための措置で、
暗号化を無効化しているらしい。
dconf-editorでも設定できる。
[!WARNING] VNC使う場合は自動ログインをONしておかないといけない
設定箇所はぐぐってちゃぶだい…😅
[!WARNING] VNCは反応速度が鈍いので、ちょっと使いにくい。
普段はSSHとsambaとホスト側のX-Serverで動かすのが良いかも…
ipv6を無効にしたい(ネットワーク環境によっては無効にした方が良い)場合は、
ubuntu 小ネタ集の
「ubuntu 18.04 で IPv6を無効にする方法」 にしたがって設定する。