[FLaNK] Streaming EdgeAI on the new NVIDIA Jetson Nano 2GB with MiNiFi Agents To FLaNK Applications
Published: 2020-10-30 20:13:27

---
title: [FLaNK] Streaming EdgeAI on the new NVIDIA Jetson Nano 2GB with MiNiFi Agents To FLaNK Applications
published: true
date: 2020-10-30 20:13:00 UTC
tags: 
canonical_url: 
---

#  [FLaNK] Streaming EdgeAI on the new NVIDIA Jetson Nano 2GB with MiNiFi Agents To FLaNK Applications

**Unboxing** :  [https://www.youtube.com/watch?v=dVGEtWYkP2c&feature=youtu.be](https://www.youtube.com/watch?v=dVGEtWYkP2c&feature=youtu.be)

**Plug Into Community AI Apps:**   [https://youtu.be/2T8CG7lDkcU](https://youtu.be/2T8CG7lDkcU)

**Education Projects:   ** [https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-nano/education-projects/](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-nano/education-projects/)

  

I am not patient enough to shoot an unboxing video, I was too excited to get this superb machine running.   The NVIDIA Jetson Nano 2GB is now available for [purchase](https://www.arrow.com/en/products/945-13541-0000-000/nvidia) for only $ **59**!!!

  

**Source and Setup:**   [https://github.com/tspannhw/SettingUpAJetsonNano2GB/blob/main/README.md](https://github.com/tspannhw/SettingUpAJetsonNano2GB/blob/main/README.md)

  

The 2GB version of NVIDIA Jetson Nano is great, you really don't miss anything that was removed.   I have copied over my MiNiFi agent and code from other Jetson Nanos, Xavier NX and TX1 and it all works fine.   The speed is fine for most needs especially for development and prototyping.   I prefer the Xavier, but at this price you can't go wrong.   I am definitely going to be getting Jetson Nanos instead of other devices for most IoT / Edge AI use cases.   I have used my NVidia Jetson 2GB for demos for a number of events including ApacheCon, BeamSummit, Open Source Summit and AI Dev World.

  

[https://www.linkedin.com/pulse/2020-streaming-edge-ai-events-tim-spann/](https://www.linkedin.com/pulse/2020-streaming-edge-ai-events-tim-spann/)

  

I installed the **fswebcam** to capture still images and build up a directory of them to process.

  

See my first article:   [https://www.datainmotion.dev/2020/10/unveiling-nvidia-jetson-nano-2gb-and.html](https://dev.to/tspannhw/unveiling-the-nvidia-jetson-nano-2gb-and-other-nvidia-gtc-2020-announcements-34ka)

  

You must install and run:   [https://github.com/dusty-nv/jetson-inference](https://github.com/dusty-nv/jetson-inference).   You get great libraries, tutorials, documentation and examples.   I usually build my apps starting from one of these examples and use one of the excellent NVIDIA pre-built models.   This rapidly accelerates my development and deployment of **EdgeAI** applications whether they are IoT or other purposes.   This is working with standard Raspberry Pi plug in cameras and the excellent Logitech USB web cameras that I have used with all my other NVIDIA devices.

  

At this price point, there seems no reason that every developer in every company should have one.   It's a great place to test out Edge AI applications and run classifications at a decent speed.   This is a real machine despite it.

  

I was facilitating data journeys at the NetHope Global Summit today and I thought these $59 devices could be great for non-profits to use for many data collection and analytics purposes in the field.  [https://www.nethopeglobalsummit.org/agenda-2020#sz-tab-44134](https://www.nethopeglobalsummit.org/agenda-2020#sz-tab-44134) I am exploring some use cases to see if I can pre build some easy applications that an NGO could just pick up and run with.   Let's see what develops.   A $59 GPU edge device enables some new applications at an affordable cost.   $59 won't give me a lot of cloud, but I can get a powerful small data collection device that runs ML, DL, cameras, MiNiFi Agents, Python and Java.   With 2 Gigabytes of fast RAM and a GPU, one is limited by their imagination.

  

  

**Example Application**

  

[![](https://1.bp.blogspot.com/-vk0CBvv7Qn4/X5xtRcxn8AI/AAAAAAAAb0w/gX0ZDfg-PfYO4VSCS7yYuntTV4UiMxg3gCLcBGAsYHQ/w478-h637/IMG-9930.jpg)](https://1.bp.blogspot.com/-vk0CBvv7Qn4/X5xtRcxn8AI/AAAAAAAAb0w/gX0ZDfg-PfYO4VSCS7yYuntTV4UiMxg3gCLcBGAsYHQ/s2048/IMG-9930.jpg)
  

[![](https://1.bp.blogspot.com/-0v-eIz9h4po/X5xtRd5rBuI/AAAAAAAAb0s/69iSP2w7CVoGHXhsDOI6_wCHzgmrMilzwCLcBGAsYHQ/w461-h615/IMG-9931.jpg)](https://1.bp.blogspot.com/-0v-eIz9h4po/X5xtRd5rBuI/AAAAAAAAb0s/69iSP2w7CVoGHXhsDOI6_wCHzgmrMilzwCLcBGAsYHQ/s2048/IMG-9931.jpg)
  

**Output Exampl Datae:**

  

{"uuid": "nano\_uuid\_cmq\_20201026202757", "ipaddress": "192.168.1.169", "networktime": 47.7275505065918, "detectleft": 1.96746826171875, "detectconfidence": 52.86550521850586, "cputemp": "34.0", "gputemp": "30.0", "gputempf": "86", "cputempf": "93", "runtime": "169", "host": "nano5", "filename": "/opt/demo/images/out\_iue\_20201026202757.jpg", "host\_name": "nano5", "macaddress": "00:e0:4c:49:d8:b7", "end": "1603744246.924455", "te": "169.4200084209442", "systemtime": "10/26/2020 16:30:46", "cpu": 9.9, "diskusage": "37100.4 MB", "memory": 91.5, "id": "20201026202757\_64d69a82-88d8-45f8-be06-1b836cb6cc84"}

  

Below is some example output for running a Python script to classify a webcamera (a low end Logi webcam, but you can use a Raspberry Pi camera).   We would be best served by running this continuously outputting log messages and images for MiNiFi agents to scoop up and send to a server for routing, transformation and processing.

  

  

root@nano5:/opt/demo/minifi-jetson-nano# jetson\_clocks 

root@nano5:/opt/demo/minifi-jetson-nano# python3 detect.py 

[gstreamer] initialized gstreamer, version 1.14.5.0

[gstreamer] gstCamera -- attempting to create device v4l2:///dev/video0

[gstreamer] gstCamera -- found v4l2 device: HD Webcam C615

[gstreamer] v4l2-proplist, device.path=(string)/dev/video0, udev-probed=(boolean)false, device.api=(string)v4l2, v4l2.device.driver=(string)uvcvideo, v4l2.device.card=(string)"HD\ Webcam\ C615", v4l2.device.bus\_info=(string)usb-70090000.xusb-3.2, v4l2.device.version=(uint)264588, v4l2.device.capabilities=(uint)2216689665, v4l2.device.device\_caps=(uint)69206017;

[gstreamer] gstCamera -- found 30 caps for v4l2 device /dev/video0

[gstreamer] [0] video/x-raw, format=(string)YUY2, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)5/1;

[gstreamer] [1] video/x-raw, format=(string)YUY2, width=(int)1600, height=(int)896, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 15/2, 5/1 };

[gstreamer] [2] video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 10/1, 15/2, 5/1 };

[gstreamer] [3] video/x-raw, format=(string)YUY2, width=(int)960, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [4] video/x-raw, format=(string)YUY2, width=(int)1024, height=(int)576, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [5] video/x-raw, format=(string)YUY2, width=(int)800, height=(int)600, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [6] video/x-raw, format=(string)YUY2, width=(int)864, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [7] video/x-raw, format=(string)YUY2, width=(int)800, height=(int)448, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [8] video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [9] video/x-raw, format=(string)YUY2, width=(int)640, height=(int)360, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [10] video/x-raw, format=(string)YUY2, width=(int)432, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [11] video/x-raw, format=(string)YUY2, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [12] video/x-raw, format=(string)YUY2, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [13] video/x-raw, format=(string)YUY2, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [14] video/x-raw, format=(string)YUY2, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [15] image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [16] image/jpeg, width=(int)1600, height=(int)896, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [17] image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [18] image/jpeg, width=(int)960, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [19] image/jpeg, width=(int)1024, height=(int)576, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [20] image/jpeg, width=(int)800, height=(int)600, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [21] image/jpeg, width=(int)864, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [22] image/jpeg, width=(int)800, height=(int)448, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [23] image/jpeg, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [24] image/jpeg, width=(int)640, height=(int)360, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [25] image/jpeg, width=(int)432, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [26] image/jpeg, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [27] image/jpeg, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [28] image/jpeg, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] [29] image/jpeg, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 24/1, 20/1, 15/1, 10/1, 15/2, 5/1 };

[gstreamer] gstCamera -- selected device profile:  codec=mjpeg format=unknown width=1280 height=720

[gstreamer] gstCamera pipeline string:

[gstreamer] v4l2src device=/dev/video0 ! image/jpeg, width=(int)1280, height=(int)720 ! jpegdec ! video/x-raw ! appsink name=mysink

[gstreamer] gstCamera successfully created device v4l2:///dev/video0

[gstreamer] opening gstCamera for streaming, transitioning pipeline to GST\_STATE\_PLAYING

[gstreamer] gstreamer changed state from NULL to READY ==> mysink

[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter1

[gstreamer] gstreamer changed state from NULL to READY ==> jpegdec0

[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter0

[gstreamer] gstreamer changed state from NULL to READY ==> v4l2src0

[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0

[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1

[gstreamer] gstreamer changed state from READY to PAUSED ==> jpegdec0

[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter0

[gstreamer] gstreamer stream status CREATE ==> src

[gstreamer] gstreamer changed state from READY to PAUSED ==> v4l2src0

[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0

[gstreamer] gstreamer stream status ENTER ==> src

[gstreamer] gstreamer message new-clock ==> pipeline0

[gstreamer] gstreamer message stream-start ==> pipeline0

[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1

[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> jpegdec0

[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter0

[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> v4l2src0

[gstreamer] gstCamera -- onPreroll

[gstreamer] gstCamera -- map buffer size was less than max size (1382400 vs 1382407)

[gstreamer] gstCamera recieve caps:  video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)1:4:0:0, framerate=(fraction)30/1

[gstreamer] gstCamera -- recieved first frame, codec=mjpeg format=i420 width=1280 height=720 size=1382407

RingBuffer -- allocated 4 buffers (1382407 bytes each, 5529628 bytes total)

[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink

[gstreamer] gstreamer message async-done ==> pipeline0

[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink

[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0

RingBuffer -- allocated 4 buffers (14745600 bytes each, 58982400 bytes total)

jetson.inference -- detectNet loading build-in network 'ssd-mobilenet-v2'

  

detectNet -- loading detection network model from:

          -- model        networks/SSD-Mobilenet-v2/ssd\_mobilenet\_v2\_coco.uff

          -- input\_blob   'Input'

          -- output\_blob  'NMS'

          -- output\_count 'NMS\_1'

          -- class\_labels networks/SSD-Mobilenet-v2/ssd\_coco\_labels.txt

          -- threshold    0.500000

          -- batch\_size   1

  

[TRT]    TensorRT version 7.1.3

[TRT]    loading NVIDIA plugins...

[TRT]    Registered plugin creator - ::GridAnchor\_TRT version 1

[TRT]    Registered plugin creator - ::NMS\_TRT version 1

[TRT]    Registered plugin creator - ::Reorg\_TRT version 1

[TRT]    Registered plugin creator - ::Region\_TRT version 1

[TRT]    Registered plugin creator - ::Clip\_TRT version 1

[TRT]    Registered plugin creator - ::LReLU\_TRT version 1

[TRT]    Registered plugin creator - ::PriorBox\_TRT version 1

[TRT]    Registered plugin creator - ::Normalize\_TRT version 1

[TRT]    Registered plugin creator - ::RPROI\_TRT version 1

[TRT]    Registered plugin creator - ::BatchedNMS\_TRT version 1

[TRT]    Could not register plugin creator -  ::FlattenConcat\_TRT version 1

[TRT]    Registered plugin creator - ::CropAndResize version 1

[TRT]    Registered plugin creator - ::DetectionLayer\_TRT version 1

[TRT]    Registered plugin creator - ::Proposal version 1

[TRT]    Registered plugin creator - ::ProposalLayer\_TRT version 1

[TRT]    Registered plugin creator - ::PyramidROIAlign\_TRT version 1

[TRT]    Registered plugin creator - ::ResizeNearest\_TRT version 1

[TRT]    Registered plugin creator - ::Split version 1

[TRT]    Registered plugin creator - ::SpecialSlice\_TRT version 1

[TRT]    Registered plugin creator - ::InstanceNormalization\_TRT version 1

[TRT]    detected model format - UFF  (extension '.uff')

[TRT]    desired precision specified for GPU: FASTEST

[TRT]    requested fasted precision for device GPU without providing valid calibrator, disabling INT8

[TRT]    native precisions detected for GPU:  FP32, FP16

[TRT]    selecting fastest native precision for GPU:  FP16

[TRT]    attempting to open engine cache file /usr/local/bin/networks/SSD-Mobilenet-v2/ssd\_mobilenet\_v2\_coco.uff.1.1.7103.GPU.FP16.engine

[TRT]    loading network plan from engine cache... /usr/local/bin/networks/SSD-Mobilenet-v2/ssd\_mobilenet\_v2\_coco.uff.1.1.7103.GPU.FP16.engine

[TRT]    device GPU, loaded /usr/local/bin/networks/SSD-Mobilenet-v2/ssd\_mobilenet\_v2\_coco.uff

[TRT]    Deserialize required 2384046 microseconds.

[TRT]    

[TRT]    CUDA engine context initialized on device GPU:

[TRT]       -- layers       117

[TRT]       -- maxBatchSize 1

[TRT]       -- workspace    0

[TRT]       -- deviceMemory 35449344

[TRT]       -- bindings     3

[TRT]       binding 0

                -- index   0

                -- name    'Input'

                -- type    FP32

                -- in/out  INPUT

                -- # dims  3

                -- dim #0  3 (SPATIAL)

                -- dim #1  300 (SPATIAL)

                -- dim #2  300 (SPATIAL)

[TRT]       binding 1

                -- index   1

                -- name    'NMS'

                -- type    FP32

                -- in/out  OUTPUT

                -- # dims  3

                -- dim #0  1 (SPATIAL)

                -- dim #1  100 (SPATIAL)

                -- dim #2  7 (SPATIAL)

[TRT]       binding 2

                -- index   2

                -- name    'NMS\_1'

                -- type    FP32

                -- in/out  OUTPUT

                -- # dims  3

                -- dim #0  1 (SPATIAL)

                -- dim #1  1 (SPATIAL)

                -- dim #2  1 (SPATIAL)

[TRT]    

[TRT]    binding to input 0 Input  binding index:  0

[TRT]    binding to input 0 Input  dims (b=1 c=3 h=300 w=300) size=1080000

[TRT]    binding to output 0 NMS  binding index:  1

[TRT]    binding to output 0 NMS  dims (b=1 c=1 h=100 w=7) size=2800

[TRT]    binding to output 1 NMS\_1  binding index:  2

[TRT]    binding to output 1 NMS\_1  dims (b=1 c=1 h=1 w=1) size=4

[TRT]    

[TRT]    device GPU, /usr/local/bin/networks/SSD-Mobilenet-v2/ssd\_mobilenet\_v2\_coco.uff initialized.

[TRT]    W = 7  H = 100  C = 1

[TRT]    detectNet -- maximum bounding boxes:  100

[TRT]    detectNet -- loaded 91 class info entries

[TRT]    detectNet -- number of object classes:  91

detected 0 objects in image

  

[TRT]    ------------------------------------------------

[TRT]    Timing Report /usr/local/bin/networks/SSD-Mobilenet-v2/ssd\_mobilenet\_v2\_coco.uff

[TRT]    ------------------------------------------------

[TRT]    Pre-Process   CPU   0.07802ms  CUDA   0.48875ms

[TRT]    Network       CPU  45.52254ms  CUDA  44.93750ms

[TRT]    Post-Process  CPU   0.03193ms  CUDA   0.03177ms

[TRT]    Total         CPU  45.63248ms  CUDA  45.45802ms

[TRT]    ------------------------------------------------

  

[TRT]    note -- when processing a single image, run 'sudo jetson\_clocks' before

                to disable DVFS for more accurate profiling/timing measurements

  

[image] saved '/opt/demo/images/out\_kfy\_20201030195943.jpg'  (1280x720, 4 channels)

  

[TRT]    ------------------------------------------------

[TRT]    Timing Report /usr/local/bin/networks/SSD-Mobilenet-v2/ssd\_mobilenet\_v2\_coco.uff

[TRT]    ------------------------------------------------

[TRT]    Pre-Process   CPU   0.07802ms  CUDA   0.48875ms

[TRT]    Network       CPU  45.52254ms  CUDA  44.93750ms

[TRT]    Post-Process  CPU   0.03193ms  CUDA   0.03177ms

[TRT]    Total         CPU  45.63248ms  CUDA  45.45802ms

[TRT]    ------------------------------------------------

  

[gstreamer] gstCamera -- stopping pipeline, transitioning to GST\_STATE\_NULL

[gstreamer] gstCamera -- pipeline stopped

  

We are using the enhanced example script, **detect.py**.   To capture a webc amera image and classify:   camera = jetson.utils.gstCamera(width, height, camera)

  

This is plenty fast and gives us the results and data we want.

  

[![](https://1.bp.blogspot.com/-qNiR1KqXLJk/X5xzpEyTEGI/AAAAAAAAb1A/9LhWrPS-JCIzzFvDnDMaS2X6Z9jd29P7wCLcBGAsYHQ/w597-h335/out_ozy_20201030200502.jpg)](https://1.bp.blogspot.com/-qNiR1KqXLJk/X5xzpEyTEGI/AAAAAAAAb1A/9LhWrPS-JCIzzFvDnDMaS2X6Z9jd29P7wCLcBGAsYHQ/s1280/out_ozy_20201030200502.jpg)
  
  

  

  

**References:**

- [https://github.com/tspannhw/minifi-jetson-nano](https://github.com/tspannhw/minifi-jetson-nano)
- [https://youtu.be/fIESu365Sb0](https://youtu.be/fIESu365Sb0)
- [https://developer.nvidia.com/blog/ultimate-starter-ai-computer-jetson-nano-2gb-developer-kit/](https://developer.nvidia.com/blog/ultimate-starter-ai-computer-jetson-nano-2gb-developer-kit/)