mirror of https://github.com/OpenIPC/wiki.git
Merge pull request #324 from JohnDGodwin/master
Create FPV-orange-pi-5-groundstation.mdpull/329/head
commit
1942329b06
|
@ -0,0 +1,323 @@
|
|||
Download Ubuntu Server ISO and flash to device -- https://github.com/Joshua-Riek/ubuntu-rockchip
|
||||
|
||||
`sudo apt update`
|
||||
|
||||
`sudo apt upgrade`
|
||||
|
||||
Go ahead and pull some packages we will need, too.
|
||||
|
||||
`sudo apt install dkms python3-all-dev fakeroot network-manager`
|
||||
|
||||
|
||||
***
|
||||
|
||||
Gsteamer setup with MPP
|
||||
|
||||
|
||||
Download and install gstreamer
|
||||
|
||||
`sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5`
|
||||
|
||||
|
||||
|
||||
Download and install rockchip mpp, rga, and gstreamer plugin from an included custom PPA, for hardware accelerated decoding.
|
||||
|
||||
`sudo apt install gstreamer1.0-rockchip1 librga-dev librga2 librockchip-mpp-dev librockchip-mpp1 librockchip-vpu0 libv4l-rkmpp rockchip-multimedia-config libgl4es libgl4es-dev libdri2to3`
|
||||
|
||||
|
||||
|
||||
test with:
|
||||
|
||||
`gst-inspect-1.0 | grep 265`
|
||||
|
||||
`gst-inspect-1.0 | grep mpp`
|
||||
|
||||
|
||||
|
||||
***
|
||||
|
||||
rtl8812au drivers installation
|
||||
|
||||
|
||||
enter the following line-by-line
|
||||
|
||||
sudo bash -c "cat > /etc/modprobe.d/wfb.conf <<EOF
|
||||
# blacklist stock module
|
||||
blacklist 88XXau
|
||||
blacklist 8812au
|
||||
blacklist rtl8812au
|
||||
blacklist rtl88x2bs
|
||||
EOF"
|
||||
|
||||
|
||||
|
||||
`git clone -b v5.2.20 https://github.com/svpcom/rtl8812au.git`
|
||||
|
||||
``cd rtl8812au/``
|
||||
|
||||
`sudo ./dkms-install.sh`
|
||||
|
||||
|
||||
***
|
||||
|
||||
|
||||
reboot device
|
||||
|
||||
TODO: or figure out how to load the driver without a full reboot. Try "modprobe 88xxau"
|
||||
|
||||
|
||||
***
|
||||
|
||||
WFB-ng installation
|
||||
|
||||
|
||||
find wifi device name using iwconfig and substitute it for $WLAN in the script install
|
||||
|
||||
`git clone -b stable https://github.com/svpcom/wfb-ng.git`
|
||||
|
||||
`cd wfb-ng`
|
||||
|
||||
`sudo ./scripts/install_gs.sh $WLAN`
|
||||
|
||||
|
||||
after install:
|
||||
|
||||
|
||||
`sudo systemctl enable wifibroadcast`
|
||||
|
||||
|
||||
then
|
||||
|
||||
|
||||
`sudo nano /etc/wifibroadcast.cfg`
|
||||
|
||||
|
||||
change the channel to match the vtx
|
||||
|
||||
change the region from 'BO' to '00'
|
||||
|
||||
|
||||
|
||||
|
||||
Copy drone.key from the wfb-ng directory to the vtx's /etc directory
|
||||
|
||||
example using scp, replace x.x.x.x with the camera's ip address
|
||||
|
||||
`scp drone.key root@x.x.x.x:/etc`
|
||||
|
||||
|
||||
Make sure gs.key was automatically put in /etc on the VRX side
|
||||
|
||||
`ls /etc/gs.key`
|
||||
|
||||
|
||||
|
||||
***
|
||||
|
||||
|
||||
reboot device again
|
||||
|
||||
|
||||
***
|
||||
|
||||
test the connection:
|
||||
|
||||
on the groundstation run
|
||||
|
||||
`sudo systemctl enable wifibroadcast@gs`
|
||||
|
||||
`sudo systemctl start wifibroadcast@gs`
|
||||
|
||||
`wfb-cli gs`
|
||||
|
||||
|
||||
Plug in the camera and watch the packets come in, xlost should stay near zero while xrecv should go up
|
||||
|
||||
|
||||
***
|
||||
|
||||
|
||||
graphical environment for gstreamer playback
|
||||
|
||||
|
||||
`sudo apt install xorg`
|
||||
|
||||
`sudo apt install --no-install-recommends lightdm-gtk-greeter lightdm openbox`
|
||||
|
||||
Then edit
|
||||
|
||||
`sudo nano /etc/lightdm/lightdm.conf`
|
||||
|
||||
|
||||
insert:
|
||||
|
||||
[Seat:*]
|
||||
autologin-user=ubuntu
|
||||
xserver-command = X -nocursor
|
||||
|
||||
|
||||
|
||||
***
|
||||
|
||||
TODO:
|
||||
At this point, reboot and you will have to login with a keyboard at least once, but after it will auto login the ubuntu user to an openbox session with no cursor
|
||||
|
||||
|
||||
***
|
||||
|
||||
|
||||
|
||||
let's set the desktop wallpaper and write some startup scripts
|
||||
|
||||
|
||||
`sudo apt install libimlib2-dev libx11-dev libxinerama-dev pkg-config make`
|
||||
|
||||
`git clone https://github.com/himdel/hsetroot.git`
|
||||
|
||||
`cd hsetroot`
|
||||
|
||||
`make`
|
||||
|
||||
`sudo make install`
|
||||
|
||||
|
||||
|
||||
Save your desired background image to /home/ubuntu/desktop.png
|
||||
|
||||
|
||||
a script to set the display resolution to 1280x720
|
||||
|
||||
|
||||
`sudo nano /home/ubuntu/setdisplay.sh`
|
||||
|
||||
|
||||
insert:
|
||||
|
||||
#/bin/bash
|
||||
export DISPLAY=:0
|
||||
|
||||
if [[ $(xrandr | awk '/HDMI-1/ {print $2}') == "connected" ]]; then
|
||||
xrandr --output HDMI-1 --mode 1280x720
|
||||
fi
|
||||
if [[ $(xrandr | awk '/HDMI-2/ {print $2}') == "connected" ]]; then
|
||||
xrandr --output HDMI-2 --mode 1280x720
|
||||
fi
|
||||
exit 0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
a script to start/stop the video stream and save DVR to the ~/Videos directory
|
||||
|
||||
note: This script relies on a push button connected between pin 5 and GND. You will have to install one for this to work.
|
||||
|
||||
Make Videos directory
|
||||
|
||||
`sudo mkdir /home/ubuntu/Videos`
|
||||
|
||||
Make the script
|
||||
|
||||
`sudo nano /home/ubuntu/dvr.sh`
|
||||
|
||||
insert:
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
export DISPLAY=:0
|
||||
|
||||
xset s off -dpms
|
||||
|
||||
GPIO_PIN=5
|
||||
RUNNING=0
|
||||
gpio mode $GPIO_PIN up
|
||||
|
||||
cd /home/ubuntu/Videos
|
||||
|
||||
while true; do
|
||||
if [ $(gpio read $GPIO_PIN) -eq 0 ]; then
|
||||
if [ $RUNNING -eq 0 ]; then
|
||||
current_date=$(date +'%m-%d-%Y_%H-%M-%S')
|
||||
|
||||
gst-launch-1.0 -e \
|
||||
udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H265' ! \
|
||||
rtph265depay ! \
|
||||
h265parse ! \
|
||||
tee name=t ! \
|
||||
queue ! \
|
||||
mppvideodec ! \
|
||||
videoconvert ! \
|
||||
autovideosink sync=false t. ! \
|
||||
queue ! \
|
||||
matroskamux ! \
|
||||
filesink location=record_${current_date}.mkv &
|
||||
|
||||
RUNNING=$!
|
||||
else
|
||||
kill $RUNNING
|
||||
RUNNING=0
|
||||
fi
|
||||
sleep 0.2
|
||||
fi
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
|
||||
Make the scripts executable with chmod +x.
|
||||
|
||||
Finally:
|
||||
|
||||
`sudo nano /etc/xdg/openbox/autostart`
|
||||
|
||||
add:
|
||||
|
||||
bash /home/ubuntu/setdisplay.sh
|
||||
|
||||
hsetroot -cover /home/ubuntu/desktop.png &
|
||||
|
||||
sudo /home/ubuntu/dvr.sh &
|
||||
|
||||
|
||||
|
||||
***
|
||||
|
||||
Pulling the DVR over IP -- a basic media server using nginx
|
||||
|
||||
|
||||
`sudo apt install nginx-light`
|
||||
|
||||
|
||||
give permissions up the file tree to our video directory
|
||||
|
||||
|
||||
`sudo chmod o+x /home /home/ubuntu /home/ubuntu/Videos`
|
||||
|
||||
|
||||
|
||||
backup the default loading page and replace it with our own
|
||||
|
||||
`sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.old`
|
||||
|
||||
`sudo nano /etc/nginx/sites-available/default`
|
||||
|
||||
Add the following, but replace x.x.x.x with your system's network IP address:
|
||||
|
||||
|
||||
server {
|
||||
listen 8080;
|
||||
listen [::]:8080;
|
||||
|
||||
server_name x.x.x.x;
|
||||
|
||||
root /home/ubuntu/Videos;
|
||||
autoindex on;
|
||||
}
|
||||
|
||||
|
||||
restart nginx to initate the changes
|
||||
|
||||
`sudo systemctl restart nginx`
|
||||
|
||||
|
||||
|
||||
Your DVR is now available for download at x.x.x.x:8080 in a browser
|
Loading…
Reference in New Issue