- Nvidia Jetson Orin Nano
- To-Do List
- Check List
- 사양
- Hardware 사양
- Software 사양
- 설치 in Windows
- 사전 준비 사항
- JetPack 5.1.3 설치
- JetPack 6.2 설치
- Ubuntu 22.04 기본 설정
- Ollama 설치
- 설치 in Ubuntu 22.04
- 설치 : 기타 환경 설정
- NVMe에 설치
- 참고 문헌
Nvidia Jetson Orin Nano
To-Do List
| 작업 | 담당자 | 기한 | 완료일 |
|---|---|---|---|
| OS 설치 5.1.2 in MicroSD | 김계현 | 2024.01.19 | 2024.01.25 |
| 한글 입력 설정 | 김계현 | 2024.01.25 | |
| Network 설정 | 김계현 | 2024.01.22 | 2024.01.25 |
| 방화벽 설정 | 김계현 | 2024.01.19 | 2024.01.25 |
| SSH 연동 설정 | 김계현 | 2024.01.25 | |
| XRDP 연동 설정 | 김계현 | 2024.01.25 |
공유기 설정
XRDP 사용시 방화벽에서 열어야하는 port
NVMe 구성 후 부팅 설정
OS 설치 in NVMe
8GB Memory 중 6680MB만 인식되는 오류 처리
VNC 연동 설정
개발 환경 구성
Git Server, Python, Node.js, Jetson 등
NVIDIA SDK Manager 구성
JetPack 6.0 DP 설치 오류 처리
'L4TLauncher: Attempting Direct Boot' 이후 멈춤
Case 구입과 구성
Web 환경 구성
Job 제출과 실행 환경 구성
Check List
XRDP 사용시 공유기의 방화벽에서 열어야하는 port는 ?
NVIDIA Jetson Orin Nano에 모니터, 키보드, 마우스를 연결하지 않아도 XRDP가 동작하게 하는 방법은 ?
NVIDIA Jetson Orin Nano를 원격으로 Booting 하는 방법은 ?
사양
Hardware 사양
Nvidia Jetson Orin Nano Super Developer Kit
CPU : 6-core Arm Cortex-A78AE v8.2, 64 bits
GPU : 1012-core NVIDIA Ampere architecture GPU with 32 Tensor Cores
Memory : 8 GB 128 bit LPDDR5
Disk
부팅 순서 : microSD, usb, NVMe, emmc, net
microSD card slot
64 GB UHS-1 microSD 이상 권장
Samsung PRO Plus microSD : 512 GB
M.2 Slot (Key-M, Type 2280)
NVMe : 2 TB
M.2 Slot (Key-M, Type 2230)
M.2 Slot (Key-E, Type 2230)
Network
802.11 WLAN : CC474055647D
AW-CB375NF
S/N: M16Z040379
Bluetooth :CC474055647C
Gigabit Ethernet
Monitor
DP(Display Port)
외부 연결
USB Type-C
USB Mass Storage Device
USB Serial
USB Ethernet (RNDIS) : 192.168.55.1
USB 3.2 Gen2 Type-A * 4
40-pin Expansion Header
MIPI CSI Camera Connector * 2
Power Indicator LED
DC Power Jack (5.5mm * 2.5mm) : 9~10V * 5A
약 시간당 26W 사용
참고 문헌
40-pin Expansion Header
전원 : 3.3V * 2, 5.0V * 2, GND (Ground, 접지) * 8
SPI (Serial Peripheral Interface) * 2
SPI0_SCK, SPI0_MOSI, SPI0_MISO, SPI0_CS0, SPI0_CS1
SPI1_SCK, SPI1_MOSI, SPI1_MISO, SPI1_CS0, SPI1_CS1
I2C (Inter-Integrated Circuit) * 2
I2C0_SCL, I2C_SDA
I2C1_SDA, I2C1_SCL
UART (Universal Asynchronous Receiver/Transmitter) * 1
UART1_TXD, UART1_RXD
UART1_RTS, UART1_CTS
I2S (Inter-IC Sound Bus)
I2S0_SCLK, I2S0_FS, I2S0_DIN, I2S0_DOUT
GPIO * 6
GPIO01, GPIO07, GPIO09, GPIO11, GPIO12, GPIO13

SPI (Serial Peripheral Interface) : 3~4개 선 필요
Master, Slave 구조로 동기식 직렬 버스 방식으로 통신
독립적인 송수신
동기화 가능
단거리 통신 (2m 이내)
SCK (Serial Clock) : SCK와 연결
SCLK (직렬 클럭)
MOSI (Master Out Slave In) : SIMO, SDI와 연결
SDI (Serial Data Input, 직렬 데이터 입력)
MISO (Master In Slave Out) : SOMI, SDO와 연결
SDO (Serial Data Output, 직렬 데이터 출력)
SS (Slave Select, 옵션) : CS와 연결
CS (Chip Select, 칩 선택 신호)
I2C (Inter-Integrated Circuit) : 2개의 선 필요
다중 Master 버스 방식
Master, Slave 구조
각 장치는 고유한 주소를 가짐
중거리 통신 (2m 이상도 가능)
SCL (Serial Clock Line)
SDA (Serial Data Line)
UART (Universal Asynchronous Receiver/Transmitter)
범용 비동기 직렬 포트
장거리 통신 가능 (10m)
최대 100K 속도
USB로 대체중
TXD (Transmitted Data, 송신 데이터)
RXD (Received Data, 수신 데이터)
RTS (Request To Send, 송신 요청)
CTS (Clear To Send, 송신 허가)
I2S (Inter-IC Sound Bus)
디지털 오디오 장치간에 오디오 데이터 전송
보통 16~48kHz x 16bit x 2CH의 고속 데이터신호
SCLK (Serial Clock)
FS
DIN (Serial Data Input)
DOUT (Serial Data Output)
GPIO (General-Purpose Input/Output)
Software 사양
JetPack 6.0 DP(Developer Preview)
Jetson Linux 36.2
Ubunto 22.04
TensorRT 8.6.2
DLA 3.14
cuDNN 8.9.4
CUDA 12.2.12
설치 in Windows
사전 준비 사항
구입할 물품
Nvidia Jetson Orin Nano Super Developer Kit 구입
DP(Display Port) 케이블 구입
USB 연결 키보드 구입
USB 연결 마우스 구입
512GB microSD 구입
옵션
2TB NVMe M.2 SSD 구입
DP(Display Port) to HDMI 구입
모니터 with HDMI or DP 준비
Nvidia 사이트에 회원 가입
기타 도구 in Window
SD Memory Card Formatter 다운로드 후 설치 한다.
이 프로그램으로 microSD card를 포맷 한다.
exFAT 또는 FAT32 format
balenaEtcher 다운로드 후 설치 한다.
이 프로그램으로 이미지를 microSD card로 복사 한다.
sd-blob.img, 18.7GB
Nano의 firware UEFI setup 확인
Nano를 켠 뒤 esc를 눌러 UEFI setup 메뉴로 접속 한다.
아래 메시지가 보이면 JetPack 5.1.3을 설치 한다.
VIDIA Orin NX Developer Kit
Not Specified
3.0-32616947
36보다 작으니 JetPack 5.1.3을 설치한 후 JetPack 6.2로 업그레이드 하여야 한다.
JetPack 5.1.3 설치
JetPack 5.1.3 이미지가 저장된 microSD card를 준비 한다.
JetPack 5.1.3 파일을 다운로드 한다.
SD Memory Card Formatter로 microSD card를 포맷 한다.
balenaEtcher로 이미지를 microSD에 저장 한다.
Nano를 부팅하면서 Ubuntu 기본 설정을 한다.
Booting mode
ESC : to enter Setup.
F11 : to enter Boot Manager Menu.
Enter : to continue boot.
System Configuration
I accept the terms of these license : 체크
언어 설정 : "한국어" 선택
키보드 설정 : "Korean"과 "Korean-Korean (101/104 key compatible)" 선택
네트워크 설정 : 무선 네트워크 선택 후 로그인
시간대 설정 : "Seoul" 선택
컴퓨터 접속 설정
이름 : obcon
컴퓨터 이름 : obcon-desktop
사용자 이를 선택 : obcon
암호 선택 : 생략
암호 확인 : 생략
로그인할 때 암호 입력 : 체크
APP Partition Size : nnnnn (microSD card의 용량만크 자동 설정됨)
Install Chromium Browser : 선택 않음
Nano를 리부팅 한다.
부팅시 Update Progress가 진행 된다.
부팅후 5분정도 기다리면 다음 메시지가 표시 된다.
nvidia-l4t-bootloader Post Install Notification
#--- 다음 명령어로 버전을 확인 한다.
sudo nvbootctrl dump-slots-info
# Current version: 35.5.0
#--- QSPI updater 설치
sudo apt update
sudo apt-get install nvidia-l4t-jetson-orin-nano-qspi-updater
sudo reboot
# Firmware 버전 : 5.0-36585864
# Firmware 버전 : 36.3.0
Nano가 리부팅 되는 동안 다음을 확인 한다.
부팅시 Update Progress가 진행 된다.
업그레이드 후 부팅이 되지 않고 멈춘다.
JetPack 6.2로만 이후 진행이 가능 하다.
JetPack 6.2 설치
JetPack 6.2 이미지가 저장된 microSD card를 준비 한다.
JetPack 6.2 파일을 다운로드 한다.
SD Memory Card Formatter로 microSD card를 포맷 한다.
balenaEtcher로 이미지를 microSD에 저장 한다.
Nano를 부팅하면서 Ubuntu 기본 설정을 한다.
Booting mode
ESC : to enter Setup.
F11 : to enter Boot Manager Menu.
Enter : to continue boot.
System Configuration
I accept the terms of these license : 체크
언어 설정 : "한국어" 선택
키보드 설정 : "Korean"과 "Korean-Korean (101/104 key compatible)" 선택
네트워크 설정 : 무선 네트워크 선택 후 로그인
시간대 설정 : "Seoul" 선택
컴퓨터 접속 설정
이름 : obcon
컴퓨터 이름 : obcon-desktop
사용자 이를 선택 : obcon
암호 선택 : 생략
암호 확인 : 생략
로그인할 때 암호 입력 : 체크
APP Partition Size : nnnnn (microSD card의 용량만크 자동 설정됨)
Install Chromium Browser : 선택
Nano를 리부팅 한다.
부팅시 Update Progress가 진행 된다.
부팅후 5분정도 기다리면 다음 메시지가 표시 된다.
nvidia-l4t-bootloader Post Install Notification
#--- 다음 명령어로 버전을 확인 한다.
sudo nvbootctrl dump-slots-info
# Current version: 36.4.3
#--- 업그레이드
sudo apt update
sudo reboot
# 부팅시 Update Progress가 진행 된다.
Ubuntu 22.04 기본 설정
6 cores * ARMv8 Processor rev 1 (v8l)
8 GB memory
Storage
469 GB disk (mmcblk0)
1.8 TB disk (nvme0n1)
Ubuntu 22.04.5 LTS
#--- 유선 또는 무선으로 접속
#--- GUI 환경에서 Network 설정
#--- "설정 > Wi-Fi" 메뉴에서 무선 네트워크 지정
#--- 지정한 무선 네트네트 설정에서 고정 IP 설정
#--- IPv4 선택
#--- IPv4 방식 : 수동
#--- 주소
#--- 192.168.0.782
#--- 255.255.255.0
#--- 192.168.0.1
#--- 네트워크를 재접속하여 수정 사항 반영
ip a #--- IP Address 확인
ssh obcon@192.168.0.782
# shutdown -h now
# reboot
#--- OS 등 업데이트
apt update
apt-get update
apt-get upgrade -y
#--- 사양 확인
cat /proc/cpuinfo #--- CPU
free -m #--- Memory
df -h #--- Disk
lsblk -l #--- Storage
fdisk -l #--- Storage
cat /etc/*-release | uniq
lsb_release -a
#--- Network 설정
# apt list openssh*
# apt install openssh-server
nmcli g #--- 라인 상태 확인
nmcli n #--- 상태 확인
# nmcli n on #--- 상태를 enable로 변경
nmcli d #--- 장치 확인
ifconfig #--- Ethernet 이름 확인
ip address #--- IP 주소 확인
ip route
ss -nlt #--- Listen Port 확인
netstat -an | grep 'LISTEN '
#--- 보안 설정
#--- 길고 복잡한 형태의 비밀번호 설정
passwd
passwd obcon
#--- obcon 사용자로 다음 작업 진행
cd ~
mkdir .ssh
chmod 700 .ssh
cd ~/.ssh
vi authorized_keys
chmod 600 authorized_keys
vi /etc/ssh/sshd_config
Port 3322
ListenAddress 0.0.0.0
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ClientAliveInterval 600 #--- 600초 (10분)
ClientAliveCountMax 3 #--- 3번
MaxAuthTries 6 #--- 6회 로그인 실패시 종료
LoginGraceTime 2m #--- 2분 이내 미로그인시 종료
systemctl status sshd
systemctl restart sshd
# systemctl enable sshd
#--- 방화벽 설정
apt install ufw
ufw status
vi /etc/ufw/ufw.conf
ENABLED=yes #--- 부팅시 자동 실행
iptables -nL
ufw enable
ufw allow 3322/tcp #--- Port 허용
# ufw deny 22/tcp #--- Port 차단
# ufw delete 5 #--- 5번째 정책 삭제
ufw status
#--- 다음 명령어를 사용하여 Nano에 접속
ssh obcon@192.168.0.782 -p 3322
Ollama 설치
#--- Olloma 설치
curl -fsSL https://ollama.com/install.sh | sh
vi /etc/systemd/system/ollama.service
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_MAX_LOADED_MODELS=4"
systemctl daemon-reload
systemctl restart ollama.service
systemctl enable ollama.service
# export OLLAMA_HOST="0.0.0.0:11434"
# export OLLAMA_KEEP_ALIVE=-1 #--- 24h, 60m, 60s
# export OLLAMA_MAX_LOADED_MODELS=4
# ollama serve
vi ~/.ollama/config #--- For MacOS
OLLAMA_HOST=0.0.0.0:11434
vi ~/.ollama/history #--- 지금까지 실행한 질의 목록
systemctl restart ollama.service
netstat -an | grep ' LISTEN ' | grep 11434
ollama ps
iptables -nL
ufw enable
ufw allow 11434/tcp #--- Port 허용
ufw status
#--- API로 접속
# http://192.168.0.81:11434/
# "Ollama is running" 이라고 표시됨
curl http://192.168.0.81:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt":"Why is the sky blue?"
}'
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2-vision",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'
#--- To-Do: llama.cpp를 사용하여 구현할 것
설치 in Ubuntu 22.04
Reserved
SDK Manager를 사용하여 펌웨버 업그레이드와 JetPack 6.2 설치를 동시에 진행 한다.
https://jetsonhacks.com/2023/05/30/jetson-orin-nano-tutorial-ssd-install-boot-and-jetpack-setup/
systemctl stop udisks2.service
apt install libxml2-utils simg2img network-manager
apt install abootimg sshpass device-tree-compiler
참고 문헌
설치 : 기타 환경 설정
필요한 경우에만 진행 한다.
#--- 한글 설정
apt upgrade ibus-hangul
shutdown -h now #--- 재기동 한다.
#--- 접속 키 생성
ssh-keygen -t rsa -f ~/.ssh/id_rsa
#--- XRDP (Remote Desktop Protocol) 설정
#--- Port : 3939/tcp
#--- 대안 : VNC
apt list xrdp*
apt install xrdp
apt install xfce4
adduser xrdp ssl-cert
vi /etc/xrdp/xrdp.ini
[Globals]
# port=3389
port=9999
[Xorg]
# ip=127.0.0.1
ip=0.0.0.0
vi /etc/xrdp/startwm.sh
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession
# test -x /usr/bin/startxfce4 && /usr/bin/startxfce4
# exec /bin/sh /usr/bin/startxfce4
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
vi /etc/xrdp/sesman.ini
[Globals]
ListenAddress=0.0.0.0
ListenPort=3350
vi ~bluestone/.xsessionrc
# remove_apps=("thunderbird" "rhythmbox" "libreoffice-writer")
remove_apps="$(thunderbird rhythmbox libreoffice-writer)"
ufw allow 9999/tcp
ufw allow 9999/udp
ufw allow 3350/tcp
ufw allow 3350/udp
ufw allow from any to any port 9999 proto tcp
ufw reload
ufw status
systemctl restart xrdp
systemctl enable xrdp
# Window에서 원 격 데스크톱으로 연결 한다.
# Session : Xorg
# username : bluestone
# password :
# 주의: 모니터, Keyboard, mouse가 연결되어 있어야 XRDP 연결이 된다.
# "Error connecting to sesman: 127.0.0.1 port: 3350" 오류 발생시
apt remove xrdp
apt install tightvncserver
apt install xrdp
systemctl restart xrdp
systemctl enable xrdp
# 오류 로그 확인
cd ~bluestone
tail -f ~bluestone/.xsession-errors
NVMe에 설치
NVMe drive를 포맷 한다.
Etcher 프로그램으로 다운로드한 JETSON Orin Nano DEVELOPER KIT zip 파일을 NVMe로 복사 한다.
apt install nano
lsusb
ls -alF /dev/disk/by-partuuid/
#--- nvme0n1p1 (Partition 1)의 UUID(UUID_001)를 복사 한다.
#--- Partition 1을 mount 한다.
cd /
mkdir nvme
mount /dev/nvme0n1p1 /nvme
vi /media/${UserName}/${MountPoint}/boot/extlinux/extlinux.conf
LABEL primary
......
APPEND ${cbootargs} root=PARTUUID=UUID_001 rw rootwait rootfstype=ext...
#--- NVIDIA Jetpack 설치
apt update
apt upgrade
apt install nvidia-jetpack
