fpvout / digiview-sbc Goto Github PK
View Code? Open in Web Editor NEWDigiView for Raspberry Pi
License: GNU General Public License v3.0
DigiView for Raspberry Pi
License: GNU General Public License v3.0
hi! I am using this with a pi4 and only one hdmi output is showing the feed at once, the other just shows "digiview" is there a way to have them mirrored?
Thoughts on this? I can implement but didn't get far enough to see if this was a requirement
Has anyone considered a basic dvr function? It looks like there is a spot in the (literal) pipeline where it has effectively standard mp4 video that could be diverted to a file as well as playback.
| tee /storage/dvr-2220.mp4 |
sync
to flush the write cache periodicallyAlternately:
OUTFILE=/dev/null
OUTFILE=/storage/dvr-2221.mp4
| tee ${OUTFILE} |
in the pipeline. This has a very minor performance cost for non-dvr playback, extraneously sending the stream to /dev/null
In both approaches, closing the stream will automatically close the file. The periodic sync should defend (barely) against corruption on power-off, while still allowing a reasonable write cache. Corruption risks are primarily to the DVR storage, rather than the system volume.
I might hack something together if there is any interest. Having a second screen is huge for outreach where we fly but I don't want to lose my dvr
Hi,
I'm trying to make it working on my RPi 4B with a 4" touchscreen monitor connnected with GPIO.
I'm using your .img , I need to install monitor drivers after the first power up to see something in the display but after that I cannot see any Digiview background image on screen , only the prompt of the fpvout user.
Maybe something in the drivers broke Digiview ?
My display is a 4" and the drivers I installed are here:
git clone https://github.com/goodtft/LCD-show.git
and I used :
./MHS40-show
after that and one reboot the display started working but I got only a prompt and if I try to start even manually fpvout-start.sh it says:
fpvout@FPVOut:~ $ /home/fpvout/fpvout-start.sh
unable to open device, or device not found
try running as root (with sudo)
strace:
fpvout@FPVOut:~ $ strace /home/fpvout/fpvout-start.sh
execve("/home/fpvout/fpvout-start.sh", ["/home/fpvout/fpvout-start.sh"], 0xbeef2690 /* 21 vars */) = 0
brk(NULL) = 0x1dc6000
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f30000
access("/etc/ld.so.preload", R_OK) = 0
openat(AT_FDCWD, "/etc/ld.so.preload", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
mmap2(NULL, 54, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb6f2f000
close(3) = 0
readlink("/proc/self/exe", "/usr/bin/bash", 4096) = 13
openat(AT_FDCWD, "/usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\254\3\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=17708, ...}) = 0
mmap2(NULL, 81964, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6eed000
mprotect(0xb6ef1000, 61440, PROT_NONE) = 0
mmap2(0xb6f00000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xb6f00000
close(3) = 0
munmap(0xb6f2f000, 54) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=65760, ...}) = 0
mmap2(NULL, 65760, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6edc000
close(3) = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libtinfo.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0pn\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=133216, ...}) = 0
mmap2(NULL, 198300, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6eab000
mprotect(0xb6ec9000, 65536, PROT_NONE) = 0
mmap2(0xb6ed9000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e000) = 0xb6ed9000
close(3) = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0 \n\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9768, ...}) = 0
mmap2(NULL, 73924, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e98000
mprotect(0xb6e9a000, 61440, PROT_NONE) = 0
mmap2(0xb6ea9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6ea9000
close(3) = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\274x\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1296004, ...}) = 0
mmap2(NULL, 1364764, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d4a000
mprotect(0xb6e82000, 65536, PROT_NONE) = 0
mmap2(0xb6e92000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x138000) = 0xb6e92000
mmap2(0xb6e95000, 8988, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6e95000
close(3) = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f2e000
set_tls(0xb6f2e500) = 0
mprotect(0xb6e92000, 8192, PROT_READ) = 0
mprotect(0xb6ea9000, 4096, PROT_READ) = 0
mprotect(0xb6ed9000, 8192, PROT_READ) = 0
mprotect(0xb6f00000, 4096, PROT_READ) = 0
mprotect(0xfc000, 4096, PROT_READ) = 0
mprotect(0xb6f32000, 4096, PROT_READ) = 0
munmap(0xb6edc000, 65760) = 0
openat(AT_FDCWD, "/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3
close(3) = 0
brk(NULL) = 0x1dc6000
brk(0x1de7000) = 0x1de7000
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=3031632, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6b4a000
mmap2(NULL, 2596864, PROT_READ, MAP_PRIVATE, 3, 0x6b000) = 0xb68d0000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/arm-linux-gnueabihf/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=26406, ...}) = 0
mmap2(NULL, 26406, PROT_READ, MAP_SHARED, 3, 0) = 0xb6f27000
close(3) = 0
getuid32() = 1001
getgid32() = 1001
geteuid32() = 1001
getegid32() = 1001
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
gettimeofday({tv_sec=1633702995, tv_usec=759028}, NULL) = 0
ioctl(-1, TIOCGPGRP, 0xbeeb93f0) = -1 EBADF (Bad file descriptor)
sysinfo({uptime=676, loads=[60576, 52864, 30368], totalram=4025724928, freeram=3710840832, sharedram=8851456, bufferram=26619904, totalswap=104853504, freeswap=104853504, procs=141, totalhigh=3342860288, freehigh=3103133696, mem_unit=1}) = 0
rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6d77110}, 8) = 0
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, 8) = 0
rt_sigaction(SIGTSTP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTSTP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, 8) = 0
rt_sigaction(SIGTTIN, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTTIN, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, 8) = 0
rt_sigaction(SIGTTOU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTTOU, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, 8) = 0
uname({sysname="Linux", nodename="FPVOut", ...}) = 0
stat64("/home/fpvout", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64(".", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/home/fpvout", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
getpid() = 1415
getppid() = 1412
gettimeofday({tv_sec=1633702995, tv_usec=768833}, NULL) = 0
getpid() = 1415
getpgrp() = 1412
ioctl(2, TIOCGPGRP, [1412]) = 0
rt_sigaction(SIGCHLD, {sa_handler=0x55a6c, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6d77110}, 8) = 0
ugetrlimit(RLIMIT_NPROC, {rlim_cur=30185, rlim_max=30185}) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
openat(AT_FDCWD, "/home/fpvout/fpvout-start.sh", O_RDONLY|O_LARGEFILE) = 3
stat64("/home/fpvout/fpvout-start.sh", {st_mode=S_IFREG|0775, st_size=126, ...}) = 0
ioctl(3, TCGETS, 0xbeeb9390) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(3, 0, [0], SEEK_CUR) = 0
read(3, "#!/bin/bash \n\nexport DISPLAY=:0;"..., 80) = 80
_llseek(3, 0, [0], SEEK_SET) = 0
ugetrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024*1024}) = 0
fcntl64(255, F_GETFD) = -1 EBADF (Bad file descriptor)
dup2(3, 255) = 255
close(3) = 0
fcntl64(255, F_SETFD, FD_CLOEXEC) = 0
fcntl64(255, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
fstat64(255, {st_mode=S_IFREG|0775, st_size=126, ...}) = 0
_llseek(255, 0, [0], SEEK_CUR) = 0
read(255, "#!/bin/bash \n\nexport DISPLAY=:0;"..., 126) = 126
stat64("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/home/fpvout", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat64("/home/fpvout/fpv-c", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
chdir("/home/fpvout/fpv-c") = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
pipe([3, 4]) = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6f2e0a8) = 1416
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(4) = 0
close(4) = -1 EBADF (Bad file descriptor)
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6f2e0a8) = 1417
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(3) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigaction(SIGINT, {sa_handler=0x526b4, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, 8) = 0
wait4(-1, unable to open device, or device not found
try running as root (with sudo)
[{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 1416
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 1417
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, {sa_handler=0x526b4, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6d77110}, 8) = 0
ioctl(2, TIOCGWINSZ, {ws_row=30, ws_col=191, ws_xpixel=2101, ws_ypixel=690}) = 0
ioctl(1, TCGETS, {B9600 opost isig icanon echo ...}) = 0
stat64("/home/fpvout/.terminfo", 0x1dcfa90) = -1 ENOENT (No such file or directory)
stat64("/etc/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/lib/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/usr/share/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
gettimeofday({tv_sec=1633703015, tv_usec=821832}, NULL) = 0
access("/etc/terminfo/x/xterm", R_OK) = -1 ENOENT (No such file or directory)
access("/lib/terminfo/x/xterm", R_OK) = 0
openat(AT_FDCWD, "/lib/terminfo/x/xterm", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=3435, ...}) = 0
read(3, "\32\1)\0&\0\17\0\235\1\244\5xterm|xterm-debian|X"..., 32768) = 3435
read(3, "", 28672) = 0
close(3) = 0
gettimeofday({tv_sec=1633703015, tv_usec=824613}, NULL) = 0
ioctl(1, TCGETS, {B9600 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B9600 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B9600 opost isig icanon echo ...}) = 0
ioctl(1, TCGETS, {B9600 opost isig icanon echo ...}) = 0
ioctl(1, TIOCGWINSZ, {ws_row=30, ws_col=191, ws_xpixel=2101, ws_ypixel=690}) = 0
ioctl(0, TIOCGWINSZ, {ws_row=30, ws_col=191, ws_xpixel=2101, ws_ypixel=690}) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(3) = -1 EBADF (Bad file descriptor)
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1416, si_uid=1001, si_status=1, si_utime=0, si_stime=1} ---
wait4(-1, 0xbeeb8dec, WNOHANG, NULL) = -1 ECHILD (No child processes)
sigreturn({mask=[]}) = 0
read(255, "", 126) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
exit_group(0) = ?
+++ exited with 0 +++
And this is what GitHub display installation script MHS40-show is doing :
#!/bin/bash
sudo ./system_backup.sh
if [ -f /etc/X11/xorg.conf.d/40-libinput.conf ]; then
sudo rm -rf /etc/X11/xorg.conf.d/40-libinput.conf
fi
if [ ! -d /etc/X11/xorg.conf.d ]; then
sudo mkdir -p /etc/X11/xorg.conf.d
fi
sudo cp ./usr/mhs395-overlay.dtb /boot/overlays/
sudo cp ./usr/mhs395-overlay.dtb /boot/overlays/mhs395.dtbo
root_dev=`grep -oPr "root=[^\s]*" /boot/cmdline.txt | awk -F= '{printf $NF}'`
if test "$root_dev" = "/dev/mmcblk0p7";then
sudo cp -rf ./boot/config-noobs-nomal.txt ./boot/config.txt.bak
else
sudo cp -rf ./boot/config-nomal.txt ./boot/config.txt.bak
sudo echo "hdmi_force_hotplug=1" >> ./boot/config.txt.bak
fi
sudo echo "dtparam=i2c_arm=on" >> ./boot/config.txt.bak
sudo echo "dtparam=spi=on" >> ./boot/config.txt.bak
sudo echo "enable_uart=1" >> ./boot/config.txt.bak
sudo echo "dtoverlay=mhs395:rotate=90" >> ./boot/config.txt.bak
sudo echo "hdmi_group=2" >> ./boot/config.txt.bak
sudo echo "hdmi_mode=1" >> ./boot/config.txt.bak
sudo echo "hdmi_mode=87" >> ./boot/config.txt.bak
sudo echo "hdmi_cvt 480 320 60 6 0 0 0" >> ./boot/config.txt.bak
sudo echo "hdmi_drive=2" >> ./boot/config.txt.bak
sudo cp -rf ./boot/config.txt.bak /boot/config.txt
sudo cp -rf ./usr/99-calibration.conf-mhs395-90 /etc/X11/xorg.conf.d/99-calibration.conf
sudo cp -rf ./usr/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf
#if test "$root_dev" = "/dev/mmcblk0p7";then
#sudo cp ./usr/cmdline.txt-noobs /boot/cmdline.txt
#else
#sudo cp ./usr/cmdline.txt /boot/
#fi
sudo cp ./usr/inittab /etc/
#sudo cp ./boot/config-mhs395.txt /boot/config.txt
sudo touch ./.have_installed
echo "gpio:resistance:mhs395:90:480:320" > ./.have_installed
#FBCP install
wget --spider -q -o /dev/null --tries=1 -T 10 https://github.com
if [ $? -eq 0 ]; then
sudo apt-get install git cmake -y 2> error_output.txt
result=`cat ./error_output.txt`
echo -e "\033[31m$result\033[0m"
grep -q "^E:" ./error_output.txt && exit
sudo rm -rf rpi-fbcp
sudo git clone https://github.com/tasanakorn/rpi-fbcp
sudo mkdir ./rpi-fbcp/build
cd ./rpi-fbcp/build/
sudo cmake ..
sudo make
sudo install fbcp /usr/local/bin/fbcp
cd - > /dev/null
type fbcp > /dev/null 2>&1
if [ $? -eq 0 ]; then
sudo cp -rf ./usr/99-fbturbo-fbcp.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf
sudo cp -rf ./etc/rc.local /etc/rc.local
fi
fi
#evdev install
#nodeplatform=`uname -n`
#kernel=`uname -r`
version=`uname -v`
#if test "$nodeplatform" = "raspberrypi";then
#echo "this is raspberrypi kernel"
version=${version##* }
#version=${version#*#}
echo $version
if test $version -lt 2017;then
echo "reboot"
else
echo "need to update touch configuration"
sudo dpkg -i -B ./xserver-xorg-input-evdev_1%3a2.10.6-1+b1_armhf.deb 2> error_output.txt
#sudo apt-get install xserver-xorg-input-evdev 2> error_output.txt
result=`cat ./error_output.txt`
echo -e "\033[31m$result\033[0m"
grep -q "error:" ./error_output.txt && exit
sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
#echo "reboot"
fi
#else
#echo "this is not raspberrypi kernel, no need to update touch configure, reboot"
#fi
sudo sync
sudo sync
sleep 1
if [ $# -eq 1 ]; then
sudo ./rotate.sh $1
elif [ $# -gt 1 ]; then
echo "Too many parameters"
fi
echo "reboot now"
sudo reboot
Since the DJI goggle do not support sending OSD data live while using video out, telemetry data from an Open TX could be used instead to get this information. The transmitter would either be plugged in or connected with Bluetooth.
I had enabled composite video out (via 2.5mm jack) on Raspberry Pi OS and it worked just well
After installation of DigiView-SBC image I can't enable the composite video out now.
Please tell me is it in theory possible to use raspberry as a digital to analogue converter using composite video out or there is some limitation?
Hello,
first of all, thank you for your work it's great. on the other hand I have a problem: when I turn off the Pie with the mouse, or with a command, the sd card and the image are corrupted. I have to redo the image. however I turn off the Pie well, only the red LED remains lit when I cut the power. I don't understand why, I tried everything, and I have to redo the image every time I turn off.. please help me!
thank you in advance,
AureL
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.