aboutsummaryrefslogtreecommitdiff
path: root/recipes-misc
diff options
context:
space:
mode:
authorWestergreen, Dalon <dalon.westergreen@intel.com>2017-03-29 15:41:36 -0700
committerWestergreen, Dalon <dalon.westergreen@intel.com>2017-03-30 16:35:30 -0700
commit9a293641b9abf9e4fca34f46a2de781f50847da9 (patch)
tree743a6aaa5f9834987a2e69881ced6eaf9efb3592 /recipes-misc
parent8abd3fefd939f796ae49191d6f5af641f2d624d0 (diff)
downloadmeta-de10-nano-9a293641b9abf9e4fca34f46a2de781f50847da9.tar.xz
Initial commit of de10-nano recipes
Please note that this is purely for development. Only superficial efforts have been made to resolve security concerns, and it should be noted that the board ships with an EMPTY ROOT PASSWORD and support for root login via ssh. This allows passwordless access to the board via ssh. recipes-bsp/u-boot: Contains the uboot 2017.03rc2 recipe and patches to support the de10-nano board recipes-connectivity/avahi: bbappend to remove unwanted packages recipes-connectivity/bluez: bbappend to add --compat to the bluetooth service to support legacy SDP APIs recipes-connectivity/openssh: bbappend to add a custom sshd_config recipes-core/base-files: bbappend to customize fstab and inputrc recipes-core/imagemagick: bbappend to change build configuration for the de10-nano board recipes-core/packagegroups: bbappend to remove an unwanted package recipes-core/webkit: bbappend to remove support for opengl recipes-demo: Various demo applications recipes-devtools: MRAA and UPM recipes recipes-images/angstrom/de10-nano-image.bb: DE10-Nano image definition recipes-kernel/de10-nano-linux-firmware: FPGA related firmware required for fpga configuration and devicetree overlay support recipes-kernel/linux: bbappend to customize configuration of linux kernel as well as patch in the de10-nano devicetree recipes-misc: various initialization and systemd scripts recipes-qt/qt5: bbappend to modify qt build options recipes-support/neon: bbappend to remove unwanted package recipes-support/upower: bbappend to remove unwanted package recipes-webserver: webserver configuration and webcontent for board hostedweb portal recipes-xfce/thunar-volman: bbappend to remove unwanted package recipes-xfce/xfce-pointers: add configuration so that xfce does not use the adxl input as a mouse recipes-xfce/xfce4-settings: bbappend to remove unwanted package Signed-off-by: Westergreen, Dalon <dalon.westergreen@intel.com>
Diffstat (limited to 'recipes-misc')
-rw-r--r--recipes-misc/de10-nano-fpga-init/de10-nano-fpga-init.bb37
-rw-r--r--recipes-misc/de10-nano-fpga-init/files/de10-nano-fpga-init.service9
-rwxr-xr-xrecipes-misc/de10-nano-fpga-init/files/de10-nano-fpga-init.sh56
-rw-r--r--recipes-misc/de10-nano-fpga-leds/de10-nano-fpga-leds.bb37
-rw-r--r--recipes-misc/de10-nano-fpga-leds/files/de10-nano-fpga-leds.service10
-rwxr-xr-xrecipes-misc/de10-nano-fpga-leds/files/de10-nano-fpga-leds.sh34
-rw-r--r--recipes-misc/de10-nano-synergy-init/de10-nano-synergy-init.bb31
-rw-r--r--recipes-misc/de10-nano-synergy-init/files/de10-nano-synergy-init.service12
-rw-r--r--recipes-misc/de10-nano-usb-gadget/de10-nano-usb-gadget.bb63
-rw-r--r--recipes-misc/de10-nano-usb-gadget/files/de10-nano-gadget-init.service10
-rw-r--r--recipes-misc/de10-nano-usb-gadget/files/de10-nano-gadget-init.sh10
-rw-r--r--recipes-misc/de10-nano-usb-gadget/files/udhcpd.conf5
-rw-r--r--recipes-misc/de10-nano-x11vnc-init/de10-nano-x11vnc-init.bb36
-rw-r--r--recipes-misc/de10-nano-x11vnc-init/files/de10-nano-x11vnc-init.service9
-rw-r--r--recipes-misc/de10-nano-x11vnc-init/files/de10-nano-x11vnc-init.sh29
-rw-r--r--recipes-misc/de10-nano-xfce-init/de10-nano-xfce-init.bb32
-rw-r--r--recipes-misc/de10-nano-xfce-init/files/de10-nano-xfce-init.service10
17 files changed, 430 insertions, 0 deletions
diff --git a/recipes-misc/de10-nano-fpga-init/de10-nano-fpga-init.bb b/recipes-misc/de10-nano-fpga-init/de10-nano-fpga-init.bb
new file mode 100644
index 0000000..d7fad4d
--- /dev/null
+++ b/recipes-misc/de10-nano-fpga-init/de10-nano-fpga-init.bb
@@ -0,0 +1,37 @@
+SUMMARY = "DE10-Nano FPGA Initialization"
+DESCRIPTION = "Scripts to initialize the FPGA and its peripherals using devicetree overlays."
+AUTHOR = "Dalon Westergreen <dwesterg@gmail.com>"
+SECTION = "DE10-Nano"
+
+PR = "r0"
+
+inherit systemd
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+PV = "1.0${PR}"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI = "file://de10-nano-fpga-init.service \
+ file://de10-nano-fpga-init.sh \
+ "
+
+do_install() {
+ install -d ${D}${base_libdir}/systemd/system
+ install -m 0644 ${WORKDIR}/*.service ${D}${base_libdir}/systemd/system
+
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/*.sh ${D}${bindir}
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+FILES_${PN}-network = "${base_libdir}/systemd/system/de10-nano-fpga-init.service \
+ ${bindir}/de10-nano-fpga-init.sh"
+
+
+NATIVE_SYSTEMD_SUPPORT = "1"
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "de10-nano-fpga-init.service"
diff --git a/recipes-misc/de10-nano-fpga-init/files/de10-nano-fpga-init.service b/recipes-misc/de10-nano-fpga-init/files/de10-nano-fpga-init.service
new file mode 100644
index 0000000..6a6b19a
--- /dev/null
+++ b/recipes-misc/de10-nano-fpga-init/files/de10-nano-fpga-init.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Start FPGA init
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/de10-nano-fpga-init.sh
+
+[Install]
+WantedBy=basic.target
diff --git a/recipes-misc/de10-nano-fpga-init/files/de10-nano-fpga-init.sh b/recipes-misc/de10-nano-fpga-init/files/de10-nano-fpga-init.sh
new file mode 100755
index 0000000..6e1a154
--- /dev/null
+++ b/recipes-misc/de10-nano-fpga-init/files/de10-nano-fpga-init.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# The MIT License (MIT)
+# Copyright (c) 2016 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+
+
+CONFIGFS_DIR=/sys/kernel/config/device-tree/overlays
+
+BOARD_MODEL=$(cat /proc/device-tree/model)
+
+# Checks to ensure that we have DT overlay support
+if [ ! -e "$CONFIGFS_DIR" ]; then
+ echo "Error: Device Tree Overlay not supported"
+ exit -1
+fi
+
+DTBO_NAME=""
+case "$BOARD_MODEL" in
+ "Terasic DE-0(Atlas)")
+ DTBO_NAME="de0-nano.dtbo"
+ ;;
+ "Terasic DE10-Nano")
+ DTBO_NAME="de10-nano.dtbo"
+ ;;
+ *)
+ echo "NO BOARD MODEL MATCH"
+ exit -1
+ ;;
+esac
+
+if [ ! -e /lib/firmware/$DTBO_NAME ]; then
+ echo "$DTBO_NAME file not found"
+ exit -1
+fi
+
+mkdir $CONFIGFS_DIR/$DTBO_NAME
+echo $DTBO_NAME > $CONFIGFS_DIR/$DTBO_NAME/path
diff --git a/recipes-misc/de10-nano-fpga-leds/de10-nano-fpga-leds.bb b/recipes-misc/de10-nano-fpga-leds/de10-nano-fpga-leds.bb
new file mode 100644
index 0000000..e38a2fa
--- /dev/null
+++ b/recipes-misc/de10-nano-fpga-leds/de10-nano-fpga-leds.bb
@@ -0,0 +1,37 @@
+SUMMARY = "DE10-Nano FPGA LED service"
+DESCRIPTION = "Script to one shot FPGA LEDs after FPGA load."
+AUTHOR = "Dalon Westergreen <dwesterg@gmail.com>"
+SECTION = "DE10-Nano"
+
+PR = "r0"
+
+inherit systemd
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+PV = "1.0${PR}"
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI = "file://de10-nano-fpga-leds.service \
+ file://de10-nano-fpga-leds.sh \
+ "
+
+do_install() {
+ install -d ${D}${base_libdir}/systemd/system
+ install -m 0644 ${WORKDIR}/*.service ${D}${base_libdir}/systemd/system
+
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/*.sh ${D}${bindir}
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+FILES_${PN} = "${base_libdir}/systemd/system/de10-nano-fpga-leds.service \
+ ${bindir}/de10-nano-fpga-leds.sh"
+
+
+NATIVE_SYSTEMD_SUPPORT = "1"
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "de10-nano-fpga-leds.service"
diff --git a/recipes-misc/de10-nano-fpga-leds/files/de10-nano-fpga-leds.service b/recipes-misc/de10-nano-fpga-leds/files/de10-nano-fpga-leds.service
new file mode 100644
index 0000000..9f4f94e
--- /dev/null
+++ b/recipes-misc/de10-nano-fpga-leds/files/de10-nano-fpga-leds.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Start FPGA LEDs
+After=de10-nano-fpga-init.service
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/de10-nano-fpga-leds.sh
+
+[Install]
+WantedBy=basic.target
diff --git a/recipes-misc/de10-nano-fpga-leds/files/de10-nano-fpga-leds.sh b/recipes-misc/de10-nano-fpga-leds/files/de10-nano-fpga-leds.sh
new file mode 100755
index 0000000..073474e
--- /dev/null
+++ b/recipes-misc/de10-nano-fpga-leds/files/de10-nano-fpga-leds.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# The MIT License (MIT)
+# Copyright (c) 2016 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+sleep 5
+CLASS_LEDS_DIR=/sys/class/leds
+
+for i in $(ls -d $CLASS_LEDS_DIR/fpga_led*); do
+ echo oneshot > $i/trigger
+done
+
+for i in $(ls -d $CLASS_LEDS_DIR/fpga_led*); do
+ echo 1 > $i/shot
+ sleep 1
+done
diff --git a/recipes-misc/de10-nano-synergy-init/de10-nano-synergy-init.bb b/recipes-misc/de10-nano-synergy-init/de10-nano-synergy-init.bb
new file mode 100644
index 0000000..c08a74d
--- /dev/null
+++ b/recipes-misc/de10-nano-synergy-init/de10-nano-synergy-init.bb
@@ -0,0 +1,31 @@
+SUMMARY = "DE-Nano initialize synergy client"
+DESCRIPTION = "Scripts to start synergy client"
+AUTHOR = "Dalon Westergreen <dwesterg@gmail.com>"
+SECTION = "DE10-Nano"
+
+PR = "r0"
+
+inherit systemd
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+PV = "1.0${PR}"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI = "file://de10-nano-synergy-init.service \
+ "
+
+do_install() {
+ install -d ${D}${base_libdir}/systemd/system
+ install -m 0644 ${WORKDIR}/*.service ${D}${base_libdir}/systemd/system
+}
+
+FILES_${PN} = "${base_libdir}/systemd/system/de10-nano-synergy-init.service \
+ ${sysconfdir}/systemd/ \
+ "
+
+NATIVE_SYSTEMD_SUPPORT = "1"
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "de10-nano-synergy-init.service"
diff --git a/recipes-misc/de10-nano-synergy-init/files/de10-nano-synergy-init.service b/recipes-misc/de10-nano-synergy-init/files/de10-nano-synergy-init.service
new file mode 100644
index 0000000..ccea7d7
--- /dev/null
+++ b/recipes-misc/de10-nano-synergy-init/files/de10-nano-synergy-init.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Start synergy client
+After=de10-nano-xfce-init.service systemd-networkd-wait-online.service
+
+[Service]
+Type=forking
+ExecStart=/usr/bin/synergyc --restart --daemon 192.168.7.5
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=basic.target
diff --git a/recipes-misc/de10-nano-usb-gadget/de10-nano-usb-gadget.bb b/recipes-misc/de10-nano-usb-gadget/de10-nano-usb-gadget.bb
new file mode 100644
index 0000000..9c09c00
--- /dev/null
+++ b/recipes-misc/de10-nano-usb-gadget/de10-nano-usb-gadget.bb
@@ -0,0 +1,63 @@
+SUMMARY = "DE-Nano Units to initialize usb gadgets"
+DESCRIPTION = "Scripts to start usb gadget for usb mass storage, ethernet, and serial interfaces"
+AUTHOR = "Dalon Westergreen <dwesterg@gmail.com>"
+SECTION = "DE10-Nano"
+
+PR = "r0"
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+inherit systemd
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+SRCREV = "e191339d28d6d26ea5a9a5aedf3c04047cc04963"
+PV = "1.0${PR}+git${SRCPV}"
+
+SRC_URI = "file://de10-nano-gadget-init.service \
+ file://udhcpd.conf \
+ file://de10-nano-gadget-init.sh \
+ git://github.com/01org/de10-nano-drivers.git;protocol=https \
+ "
+
+do_install() {
+ install -d ${D}${base_libdir}/systemd/system
+ install -m 0644 ${WORKDIR}/*.service ${D}${base_libdir}/systemd/system
+
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/*.conf ${D}${sysconfdir}
+
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/*.sh ${D}${bindir}
+
+ install -d ${D}${sysconfdir}/systemd/system/getty.target.wants
+ ( cd ${D}${sysconfdir}/systemd/system/getty.target.wants && ln -s /lib/systemd/system/serial-getty@.service serial-getty@ttyGS0.service )
+
+ install -d ${D}${datadir}/${PN}
+ tar -xzvf ${WORKDIR}/git/fat_image.img.tgz -C ${D}${datadir}/${PN}
+}
+
+PACKAGES =+ "${PN}-network ${PN}-udhcpd"
+
+ALLOW_EMPTY_${PN} = "1"
+
+FILES_${PN} = "${base_libdir}/systemd/system/de10-nano-gadget-init.service \
+ ${sysconfdir}/systemd/ \
+ ${datadir}/${PN}/ \
+ ${datadir}/${PN}/fat_image.img \
+ "
+
+FILES_${PN}-network = "${base_libdir}/systemd/system/network-gadget-init.service \
+ ${bindir}/de10-nano-gadget-init.sh \
+ ${datadir}/${PN}"
+
+FILES_${PN}-udhcpd = "${sysconfdir}/udhcpd.conf"
+
+RRECOMMENDS_${PN} = "${PN}-network ${PN}-udhcpd"
+RREPLACES_${PN} = "${PN}-storage"
+
+
+NATIVE_SYSTEMD_SUPPORT = "1"
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "de10-nano-gadget-init.service"
diff --git a/recipes-misc/de10-nano-usb-gadget/files/de10-nano-gadget-init.service b/recipes-misc/de10-nano-usb-gadget/files/de10-nano-gadget-init.service
new file mode 100644
index 0000000..4e7f7de
--- /dev/null
+++ b/recipes-misc/de10-nano-usb-gadget/files/de10-nano-gadget-init.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Start usb mass storage gadget
+After=dev-mmcblk0p1.device
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/de10-nano-gadget-init.sh
+
+[Install]
+WantedBy=basic.target
diff --git a/recipes-misc/de10-nano-usb-gadget/files/de10-nano-gadget-init.sh b/recipes-misc/de10-nano-usb-gadget/files/de10-nano-gadget-init.sh
new file mode 100644
index 0000000..4bfa204
--- /dev/null
+++ b/recipes-misc/de10-nano-usb-gadget/files/de10-nano-gadget-init.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+modprobe g_multi file=/usr/share/de10-nano-usb-gadget/fat_image.img
+
+sleep 5
+
+rm /var/lib/misc/udhcpd.leases
+/sbin/ifconfig usb0 hw ether 00:07:ed:01:02:03
+/sbin/ifconfig usb0 192.168.7.1 netmask 255.255.255.0
+/usr/sbin/udhcpd -fS -I 192.168.7.1 /etc/udhcpd.conf
diff --git a/recipes-misc/de10-nano-usb-gadget/files/udhcpd.conf b/recipes-misc/de10-nano-usb-gadget/files/udhcpd.conf
new file mode 100644
index 0000000..78102f6
--- /dev/null
+++ b/recipes-misc/de10-nano-usb-gadget/files/udhcpd.conf
@@ -0,0 +1,5 @@
+start 192.168.7.5
+end 192.168.7.6
+interface usb0
+max_leases 1
+option subnet 255.255.255.0
diff --git a/recipes-misc/de10-nano-x11vnc-init/de10-nano-x11vnc-init.bb b/recipes-misc/de10-nano-x11vnc-init/de10-nano-x11vnc-init.bb
new file mode 100644
index 0000000..47aea10
--- /dev/null
+++ b/recipes-misc/de10-nano-x11vnc-init/de10-nano-x11vnc-init.bb
@@ -0,0 +1,36 @@
+SUMMARY = "De Nano X11VNC startus"
+DESCRIPTION = "De Nano scripts to start x11vnc"
+AUTHOR = "Dalon Westergreen <dwesterg@gmail.com>"
+SECTION = "DE10-Nano"
+
+PV = "1.0"
+PR = "r0"
+
+inherit systemd
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRC_URI = "file://de10-nano-x11vnc-init.service \
+ file://de10-nano-x11vnc-init.sh \
+ "
+
+do_install() {
+ install -d ${D}${base_libdir}/systemd/system
+ install -m 0644 ${WORKDIR}/*.service ${D}${base_libdir}/systemd/system
+
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/*.sh ${D}${bindir}
+
+}
+
+FILES_${PN} = "${base_libdir}/systemd/system/de10-nano-x11vnc-init.service \
+ ${sysconfdir}/systemd/ \
+ ${bindir}/de10-nano-x11vnc-init.sh \
+ "
+
+NATIVE_SYSTEMD_SUPPORT = "1"
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "de10-nano-x11vnc-init.service"
diff --git a/recipes-misc/de10-nano-x11vnc-init/files/de10-nano-x11vnc-init.service b/recipes-misc/de10-nano-x11vnc-init/files/de10-nano-x11vnc-init.service
new file mode 100644
index 0000000..a240722
--- /dev/null
+++ b/recipes-misc/de10-nano-x11vnc-init/files/de10-nano-x11vnc-init.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=DE10-Nano X11VNC server
+Documentation=man:x11vnc
+
+[Service]
+ExecStart=/usr/bin/de10-nano-x11vnc-init.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/recipes-misc/de10-nano-x11vnc-init/files/de10-nano-x11vnc-init.sh b/recipes-misc/de10-nano-x11vnc-init/files/de10-nano-x11vnc-init.sh
new file mode 100644
index 0000000..94de046
--- /dev/null
+++ b/recipes-misc/de10-nano-x11vnc-init/files/de10-nano-x11vnc-init.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+X11VNC__SH_ENV="/home/root/.x11vnc_env"
+X11VNC_HOME="/home/root"
+
+# create this environment setup file for the shell in the x11vnc session
+[ -f "${X11VNC__SH_ENV}" ] || {
+cat <<EOF > "${X11VNC__SH_ENV}"
+
+# this file is created by the script ‘/usr/bin/de10-nano-x11vnc-init.sh’.
+#
+
+# this file is assigned to the ENV environment variable which is evaluated
+# when /bin/sh is executed. We use this to setup environment variables for
+# that shell.
+
+export PS1='\u@\h:\w$ '
+EOF
+}
+
+# then execute this command to start the x11vnc session
+FD_PROG=/usr/bin/xfce4-session \
+/usr/bin/x11vnc \
+-loop \
+-repeat \
+-env ENV="${X11VNC__SH_ENV}" \
+-env HOME="${X11VNC_HOME}" \
+-display WAIT:cmd=FINDCREATEDISPLAY-Xvfb
+
diff --git a/recipes-misc/de10-nano-xfce-init/de10-nano-xfce-init.bb b/recipes-misc/de10-nano-xfce-init/de10-nano-xfce-init.bb
new file mode 100644
index 0000000..1725af3
--- /dev/null
+++ b/recipes-misc/de10-nano-xfce-init/de10-nano-xfce-init.bb
@@ -0,0 +1,32 @@
+SUMMARY = "DE10-Nano XFCE service"
+DESCRIPTION = "Start xfce after FPGA load."
+AUTHOR = "Dalon Westergreen <dwesterg@gmail.com>"
+SECTION = "DE10-Nano"
+
+PR = "r0"
+
+inherit systemd
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+PV = "1.0${PR}"
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI = "file://de10-nano-xfce-init.service \
+ "
+
+do_install() {
+ install -d ${D}${base_libdir}/systemd/system
+ install -m 0644 ${WORKDIR}/*.service ${D}${base_libdir}/systemd/system
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+FILES_${PN} = "${base_libdir}/systemd/system/de10-nano-xfce-init.service \
+ "
+
+NATIVE_SYSTEMD_SUPPORT = "1"
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "de10-nano-xfce-init.service"
diff --git a/recipes-misc/de10-nano-xfce-init/files/de10-nano-xfce-init.service b/recipes-misc/de10-nano-xfce-init/files/de10-nano-xfce-init.service
new file mode 100644
index 0000000..e33d348
--- /dev/null
+++ b/recipes-misc/de10-nano-xfce-init/files/de10-nano-xfce-init.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Start XFCE session
+After=de10-nano-fpga-init.service
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/startxfce4
+
+[Install]
+WantedBy=basic.target