How to set up a new jetson for working within the LIFE camera system.

Finishing Factory Install of Jetson TK1

  1. DO NOT CONNECT TO ETHERNET YET!!

  2. Connect an HDMI monitor, and a usb-hub with keyboard and mouse. (follow the cardboard printed guide in packaging).
  3. Connect power supply to socket, then (once everything else is connected), connect power to jetson (it auto-boots).
  4. login with ubuntu/ubuntu
  5. cd ${HOME}/NVIDIA_INSTALLER
  6. sudo ./installer.sh
  7. When done, sudo reboot Now it's safe to proceed as with a normal Ubuntu installation.

Ubuntu Setup for Jetson TK1

  1. Usability basics:

    • hold Xorg from being updated and broken (nvidia-specific thing) sudo apt-mark hold xserver-xorg-core
    • fix keyboard and location (use UI)
    • change timezone/location to sundsvall
    • disable screen lock, dimming (for convenient headed mode)
    • enable USB 3.0 sudo gedit /boot/extlinux/extlinux.conf change "usb_port_owner_info=0" to "usb_port_owner_info=2" add "usbcore.usbfs_memory_mb=1000" to the same file/line
    • disable usb autosuspend sudo gedit /etc/rc.local add echo -1 > /sys/module/usbcore/parameters/autosuspend before "exit 0"
  2. Security basics:

    • Change password (check with Martin/Elijs for psw) sudo passwd
    • Change Hostname ('tegra-ubuntuN' where N is the sequential number in jetson stack) sudo gedit /etc/hostname sudo gedit /etc/hosts
  3. Log into the router controlling jetsons, connect the new jetson in the LAN, and add a static IP address for the jetson. (verify on the new jetson with ifconfig - its ok to have dhcp on the jetson interface).

    • Setup port forwarding in the router for incoming ssh connections
  4. Package config

    • Config UI updater to not notify/upgrade to new distro versions, to not do any auto-updating
    • install basic software updates sudo apt-get update && sudo apt-get upgrade
    • install required packages sudo apt-add repository universe sudo apt-get update sudo apt-get install bash-completion command-not-found sudo apt-file update &>/dev/null sudo update-command-not-found &>/dev/null sudo apt-get install build-essential make cmake cmake-curses-gui g++ sudo apt-get install nano sudo apt-get install subversion ssh keygen ssh-copy-id ver.miun.se sudo apt-get install gparted sudo install libglibm-2.4-dev libgtkmm-3.0-dev

    • reboot sudo reboot
  5. add camera port [PORTNUMBER] to the ssh-ports-tegra-list (e.g. 10035), make sure it's one increment higher than existing ports (and same as in router settings).

  6. from a local device with 3DLab reporsitory installed, run preliminary build scripts: cd .../3DLab/code/scripts
    ./send-to jetson-scripts/build-asio-lib [PORTNUMBER] ./send-to jetson-scripts/build-base64-lib [PORTNUMBER]

  7. Install and test-make the camera-specific libraries (basler, fotonic, kinect, etc.) according to the specific jetson's purpose. (Check with Elijs for this in detail).

  8. Setup virtual disk for recording videos

    • Make sure that there's at least 5 or 6 GB free in the jetson filesystem df -h
    • Run setup script from remote device ./send-to jetson-scripts/create-virtual-media-filesystem [PORTNUMBER]
    • Verify in headed or ssh mode that you can enter and see stuff in ~/StreamData
    • Check that StreamData is mounted and is approx 5GB in size dh -h
  9. Develop and/or build applets to run on cameras (Ping, CameraSettings, GrabImage). Send the MessageHost and MessageListener apps to the jetson (use build scripts in the jetson-scripts directory).

Running applets on the camera

  1. Verify that the applets you build are running correctly when launched from the commandline on jetson (e.g. through ssh).
  2. Launch the message listener on the new jetson ./send-to jetson-scripts/nohup-jetson-message-listener [PORTNUMBER]

  3. If something breaks, kill the message listener process ./send-to jetson-scripts/kill-jetson-message-listener [PORTNUMBER]