# Meeting Minutes (2023-08-18)
* sdk - ros - realsense firmware ver 要對應
* D435i FW: https://dev.intelrealsense.com/docs/firmware-releases
* The T265 does not have a firmware updater tool. Instead, new firmware files are included in the RealSense SDK software. [[Ref]](https://support.intelrealsense.com/hc/en-us/community/posts/360042627134-Firmware-upgrade-T265)
* realsense-ros: https://github.com/IntelRealSense/realsense-ros/tree/ros1-legacy
* librealsense installation:
* https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md
* https://github.com/IntelRealSense/librealsense/blob/master/scripts/libuvc_installation.sh (不能全部照跑,要確認firmware版本,所有版本要正確)
* https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md#building-from-source-using-native-backend
* mavros
* the requested device with device name containing... -> realsense一直要port,導致飛控port"被搶" (衝突)
# (Success) Building from Source using RSUSB Backend [[Ref]](https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md#building-from-source-using-rsusb-backend)
### Step 1: Remove all RS devices from NX
### Step 2: Preliminary
Save as `libuvc_installation.sh` and run it. (This is a modified version of original libuvc_installation.sh)
```
#!/bin/bash -xe
#Locally suppress stderr to avoid raising not relevant messages
exec 3>&2
exec 2> /dev/null
con_dev=$(ls /dev/video* | wc -l)
exec 2>&3
if [ $con_dev -ne 0 ];
then
echo -e "\e[32m"
read -p "Remove all RealSense cameras attached. Hit any key when ready"
echo -e "\e[0m"
fi
lsb_release -a
echo "Kernel version $(uname -r)"
sudo apt-get update
cd ~/
sudo rm -rf ./librealsense_build
mkdir librealsense_build && cd librealsense_build
if [ $(sudo swapon --show | wc -l) -eq 0 ];
then
echo "No swapon - setting up 1Gb swap file"
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
fi
echo Installing Librealsense-required dev packages
sudo apt-get install git cmake libssl-dev freeglut3-dev libusb-1.0-0-dev pkg-config libgtk-3-dev unzip -y
rm -f ./master.zip
```
Step 3:
```
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense/
git checkout v2.52.1
echo Install udev-rules
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo cp config/99-realsense-d4xx-mipi-dfu.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
mkdir build && cd build
#cmake ../ -DFORCE_LIBUVC=true -DCMAKE_BUILD_TYPE=release -DBUILD_WITH_CUDA=true
cmake ../ -DFORCE_RSUSB_BACKEND=false -DCMAKE_BUILD_TYPE=release -DBUILD_WITH_CUDA=true
make -j2
sudo make install
echo -e "\e[92m\n\e[1mLibrealsense script completed.\n\e[0m"
```
Note that we set `-DFORCE_RSUSB_BACKEND=false` in order to prevent "(messenger-libusb.cpp:42) control_transfer returned error, index: 768, error: Resource temporarily unavailable, number: 11"
The reference is from [here](https://github.com/IntelRealSense/realsense-ros/issues/2386#issuecomment-1189297091).
[Build configuration parameters](https://dev.intelrealsense.com/docs/build-configuration)
Step 4:
Re-build realsense-ros
# Building from Source using Native Backend [[Ref]](https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md#building-from-source-using-native-backend)
The method was verified with Jetson AGX boards with JetPack 4.2.3[L4T 32.2.1,32.2.3], 4.3[L4T 32.3.1], 4.4[L4T 32.4.3], 4.5.1[L4T 32.5.1] and 5.0.2[L4T 35.1.0].
With Jetpack 5.1.1, the error occured:

Orin NX support at least Jetpack 5.1.1.
Reference
* https://github.com/IntelRealSense/librealsense/blob/master/scripts/patch-realsense-ubuntu-L4T.sh
* https://github.com/IntelRealSense/librealsense/issues/12012
* https://github.com/IntelRealSense/librealsense/issues/10722#issuecomment-1230250762
* https://github.com/IntelRealSense/librealsense/blob/master/doc/libuvc_installation.md