Jetson Nano LKV373
This page is a starting point for resources for using the Jetson Nano (with or without a Portsdown) to drive a LimeSDR to transmit DATV.
John G7JTT has written up his experiences on the BATC forum: https://forum.batc.org.uk/viewtopic.php?t=6402&p=21487#p21487
The control of the Jetson Nano from the Portsdown is an "Unsupported Feature". This means that we will make best efforts to keep it working, but it is still somewhat experimental.
G8GKQ's Installation Procedure
To start with, you need a Jetson Nano, a 32 GB SD Card (Sandisk Ultra 10 recommended), a 4A 5V PSU with a 2.1mm power plug, a 0.1 inch jumper, an HDMI monitor, a USB Mouse and a USB keyboard.
Download the Jetson Nano disk image to a PC and unzip it. Use Win32 Disk Imager or Etcher to write it to your SD Card. These instructions are based on the jetson-nano-sd-r32.1-2019-03-18 image and will not work with later images. An updated set of instructions is being prepared.
Fit the jumper link to the Nano PCB at J48 to select the use of the 2.1mm power socket, insert the SD Card, connect the monitor, keyboard and mouse. Connect the Nano to your home network and then connect the power and turn it on. Go through the NVIDIA start up routine so that you have a working Nano connected to your network. I used the username "nano" and the password "jetson". These are weak and obvious and should only be used on private networks, but make scripting easy.
Note that the process may seem to freeze on "waiting for unattended-upgr to exit" for around 30 minutes, this is expected, the system is automatically updating software in the background.
Right-click on the desktop and open a terminal window. Run the following commands. You will need to enter the password occasionally.
sudo apt-get update sudo apt-get -y dist-upgrade sudo apt-get -y install git htop nano vlc v4l-utils
You are now ready to install the DATV software.
Installing DATV Software
Download and install the software from F5OEO's repository:
git clone https://github.com/F5OEO/dvbsdr cd dvbsdr ./install.sh
Preparing the LKV373A HDMI Device
The LKV373A should be a transmitter (Sender) and of hardware version 3.0 as shown here:
This is probably the most difficult part of the software installation. More details to follow in CQ-TV, but I upgraded the firmware (not encoder) to 20160427 using the instructions here: https://www.yodeck.com/docs/display/YO/Creating+a+Video-Wall+with+Yodeck#CreatingaVideo-WallwithYodeck-J.ConfiguringtheLKV373ASenderunit . These are at the end of the very long web page. The firmware is here File:IPTV_TX_PKG_v4_0_0_0_20160427.zip
Dave also set the unit to factory defaults, but did not change any other settings. The PuTTy settings to carry out the factory reset per Yodeck.com instructions with your own device IP address look like the following:-
After the firmware upgrade, the username and password for the LKV373A is admin/123456. Then the IP address webpage of the device will look like the top right image.
If you have issues with the firmware upgrade, recovery might be possible using the IPV Tools application found here: https://drive.google.com/drive/u/0/folders/0B3mWuDyxrXyKSTZZZlRESlpBZmM.
At various times during the LKV373A set-up, it had the following IP addresses: 192.168.1.238, 10.1.0.99, 10.1.2.99, and 169.254.113.227.
The address for the stream is almost always udp://@239.255.42.42:5004 (you can paste this into VLC on a PC and watch the stream). Note that you cannot view the stream using VLC on the Jetson Nano - for some reason it does not work.
For more information about the LKV373A try this video from OpenTechLabs on YouTube.
Modifying the Scripts
To transmit using the Nano and this script, you will need to plug a LimeSDR Mini into it. If you are NOT controlling it from the Portsdown, you will also need to modify the script ~/dvbsdr/scripts/jetson_nano.sh. Note that if you are using Portsdown control, you can skip this step.
The only input devices that work with this script are the LKV373A, and the Pi Cam when connected to the Jetson board. The PiCam will not work without a USB microphone dongle connected to the Jetson board - without this it never transmits a picture.
The C920, although referenced in some of the code, does not work with this script.
The working script is here:
#!/bin/bash # ********************************************************************* # ************** ENCODE AND MODULATE FOR JETSON NANO ****************** # ************** (c)F5OEO April 2019 ****************** # ********************************************************************* CALL=G8GKQ # ------- MODULATION PARAMETERS -------- # 1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5,5/6,8/9,9/10 for DVB-S2 QPSK. # 3/5,2/3,3/4,5/6,8/9,9/10 for DVB-S2 8PSK source ./include/modulateparam.sh FREQ=2409.25 SYMBOLRATE=500 FECNUM=1 FECDEN=2 #DVBS,DVBS2 MODE=DVBS2 #QPSK,8PSK,16APSK,32APSK CONSTELLATION=QPSK GAIN=0.8 # $LONG_FRAME,$SHORT_FRAME TYPE_FRAME=$LONG_FRAME # $WITH_PILOTS,WITHOUT_PILOTS PILOTS=$WITHOUT_PILOTS # Upsample 1,2 or 4 : 4 delivers the best quality but should not be up to 500KS UPSAMPLE=2 # ------- ENCODER PARAMETERS -------- VIDEO_RESX=1280 # 16:9 or 4:3 RATIO=16:9 case "$RATIO" in "16:9") let VIDEO_RESY=VIDEO_RESX*9/16 ;; "4:3") let VIDEO_RESY=VIDEO_RESX*3/4 ;; esac #Uncomment if don't want to use ratio calculation #VIDEO_RESY=1080 #Only 25 is working well with audio VIDEO_FPS=25 #Gop Size 1..400 (in frame) VIDEO_GOP=100 PCR_PTS=200000 #VIDEO INPUT #Could be VIDEOSOURCE_PICAMERA, VIDEOSOURCE_USB_CAM , VIDEOSOURCE_IP VIDEOSOURCE=VIDEOSOURCE_IP #VIDEOSOURCE=VIDEOSOURCE_PICAMERA VIDEOSOURCE_IP_ADRESS=239.255.42.42 VIDEOSOURCE_IP_PORT=5004 # H264 or H265 CODEC=H265 #AUDIO INPUT # NO_AUDIO,USB_AUDIO,FILE_WAV,BEEP AUDIOSOURCE=USB_AUDIO AUDIO_BITRATE=20000 # Bitrate source ./include/getbitrate.sh let TS_AUDIO_BITRATE=AUDIO_BITRATE*14/10 let VIDEOBITRATE=(BITRATE_TS-12000-TS_AUDIO_BITRATE)*650/1000 let VIDEOPEAKBITRATE=VIDEOBITRATE*110/100 #OUTPUT TYPE LIME or IP OUTPUT=LIME OUTPUT_NETWORK="230.0.0.10:10000" # Launch processes echo echo VideoBitrate = $VIDEOBITRATE echo VideoPeakBitrate = $VIDEOPEAKBITRATE case "$OUTPUT" in "LIME") source ./include/nanoencode.sh | source ./include/limerf.sh ;; "IP") source ./include/nanoencode.sh ;; esac
Most of this is self-explanatory. Note that "short frames" do not work.
Transmitting using the Script
cd ~/dvbsdr/scripts ./jetson_nano.sh
To stop transmitting, simply press ctrl-c.