diff --git a/projects/IoT/IoTServices/SingalDemo/SingalDemo.csproj b/projects/IoT/IoTServices/SingalDemo/SingalDemo.csproj
index 60c148c4..0a160d35 100644
--- a/projects/IoT/IoTServices/SingalDemo/SingalDemo.csproj
+++ b/projects/IoT/IoTServices/SingalDemo/SingalDemo.csproj
@@ -15,10 +15,4 @@
-
-
-
- PreserveNewest
-
-
\ No newline at end of file
diff --git a/projects/IoT/IoTServices/SingalDemo/home-pi-dotconfig-autostart-start.desktop.txt b/projects/IoT/IoTServices/SingalDemo/home-pi-dotconfig-autostart-start.desktop.txt
deleted file mode 100644
index 30e818e5..00000000
--- a/projects/IoT/IoTServices/SingalDemo/home-pi-dotconfig-autostart-start.desktop.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Name=python
-Comment=My Python Program
-#Exec=bash -c "sudo python /root/publish/apps/RPi/app.py"
-Exec=bash -c "sleep 10 && chromium-browser -kiosk --disable-session-crashed-bubble --disable-infobars -app=http://127.0.0.1:5000/index.html"
-Icon=/root/RPi/icon.jpg
-Terminal=false
-MultipleArgs=false
-Type=Application
-Categories=Application;Development;
-StartupNotify=true
\ No newline at end of file
diff --git a/projects/IoT/IoTServices/SingalDemo/wwwroot/killomx.sh b/projects/IoT/IoTServices/SingalDemo/wwwroot/killomx.sh
new file mode 100644
index 00000000..a02ee20a
--- /dev/null
+++ b/projects/IoT/IoTServices/SingalDemo/wwwroot/killomx.sh
@@ -0,0 +1,4 @@
+while read input
+do
+ killall omxplayer.bin
+done < /dev/input/mouse0
\ No newline at end of file
diff --git a/publish/build32.cmd b/publish/build32.cmd
index da021b5b..fe69ee6f 100644
--- a/publish/build32.cmd
+++ b/publish/build32.cmd
@@ -6,18 +6,16 @@ rd /q/s "./dist/"
echo d|xcopy "./src/linux-x64/publish" "./dist/linux-x64/publish" /s /e /y /f
echo d|xcopy "./src/linux-arm64/publish" "./dist/linux-arm64/publish" /s /e /y /f
-dotnet publish ../projects/UserCenter/UserCenter.csproj -c Release -r linux-x64 -o ../../publish/dist/linux-x64/publish/apps/UserCenter
-dotnet publish ../projects/IoTCenter/IoTCenter.csproj -c Release -r linux-x64 -o ../../publish/dist/linux-x64/publish/apps/IoTCenter
+dotnet publish ../projects/UserCenter/UserCenter.csproj -c Release -o ../../publish/dist/linux-x64/publish/apps/UserCenter
+dotnet publish ../projects/IoTCenter/IoTCenter.csproj -c Release -o ../../publish/dist/linux-x64/publish/apps/IoTCenter
-dotnet publish ../projects/UserCenter/UserCenter.csproj -c Release -r linux-arm -o ../../publish/dist/linux-arm64/publish/apps/UserCenter
-dotnet publish ../projects/IoTCenter/IoTCenter.csproj -c Release -r linux-arm -o ../../publish/dist/linux-arm64/publish/apps/IoTCenter
-dotnet publish ../projects/IoT/IoTNode/IoTNode.csproj -c Release -r linux-arm -o ../../../publish/dist/linux-arm64/publish/apps/IoTNode
+dotnet publish ../projects/IoT/IoTNode/IoTNode.csproj -c Release -o ../../../publish/dist/linux-arm64/publish/apps/IoTNode
dotnet publish ../projects/IoT/IoTServices/WinService/WinService.csproj -c Release -r win-x86 -o "../../../../publish/dist/win-x86/Program Files (x86)/WinService"
-dotnet publish ../projects/IoT/IoTServices/APService/APService.csproj -c Release -r linux-arm -o ../../../../publish/dist/linux-arm64/publish/apps/APService
-dotnet publish ../projects/IoT/IoTServices/ONVIFService/ONVIFService.csproj -c Release -r linux-x64 -o ../../../../publish/dist/linux-x64/publish/apps/ONVIFService
-dotnet publish ../projects/IoT/IoTServices/ONVIFService/ONVIFService.csproj -c Release -r linux-arm -o ../../../../publish/dist/linux-arm64/publish/apps/ONVIFService
-dotnet publish ../projects/IoT/IoTServices/SerialPortService/SerialPortService.csproj -c Release -r linux-arm -o ../../../../publish/dist/linux-arm64/publish/apps/SerialPortService
-dotnet publish ../projects/IoT/IoTServices/LiChuangService/LiChuangService.csproj -c Release -r linux-arm -o ../../../../publish/dist/linux-arm64/publish/apps/LiChuangService
+dotnet publish ../projects/IoT/IoTServices/APService/APService.csproj -c Release -o ../../../../publish/dist/linux-arm64/publish/apps/APService
+dotnet publish ../projects/IoT/IoTServices/ONVIFService/ONVIFService.csproj -c Release -o ../../../../publish/dist/linux-x64/publish/apps/ONVIFService
+dotnet publish ../projects/IoT/IoTServices/ONVIFService/ONVIFService.csproj -c Release -o ../../../../publish/dist/linux-arm64/publish/apps/ONVIFService
+dotnet publish ../projects/IoT/IoTServices/SerialPortService/SerialPortService.csproj -c Release -o ../../../../publish/dist/linux-arm64/publish/apps/SerialPortService
+dotnet publish ../projects/IoT/IoTServices/LiChuangService/LiChuangService.csproj -c Release -o ../../../../publish/dist/linux-arm64/publish/apps/LiChuangService
gradle build -p ../projects/IoT/IoTServices/NJWLService
set endtime=%time%
diff --git a/publish/src/linux-arm64/publish/apps/qtbrowser/config.ini b/publish/src/linux-arm64/publish/apps/qtbrowser/config.ini
deleted file mode 100644
index cad5f929..00000000
--- a/publish/src/linux-arm64/publish/apps/qtbrowser/config.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[root]
-url=http://127.0.0.1:8002/index.html
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/apps/qtbrowser/main.cpp b/publish/src/linux-arm64/publish/apps/qtbrowser/main.cpp
deleted file mode 100644
index 32a3a1a5..00000000
--- a/publish/src/linux-arm64/publish/apps/qtbrowser/main.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "browser.h"
-#include "browserwindow.h"
-#include "webview.h"
-#include
-#include
-#include
-
-QUrl commandLineUrlArgument()
-{
- const QStringList args = QCoreApplication::arguments();
- for (const QString &arg : args.mid(1)) {
- if (!arg.startsWith(QLatin1Char('-')))
- return QUrl::fromUserInput(arg);
- }
- return QUrl(QStringLiteral("http://127.0.0.1:8002/index.html"));
-}
-
-int main(int argc, char **argv)
-{
- /*
- QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
- QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
-
- QApplication app(argc, argv);
- app.setWindowIcon(QIcon(QStringLiteral(":AppLogoColor.png")));
-
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::WebGLEnabled, true);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, false);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::ShowScrollBars, false);
-
- QUrl url = commandLineUrlArgument();
-
- Browser browser;
- BrowserWindow *window = browser.createWindow();
- window->currentTab()->setUrl(url);
-
- return app.exec();
- */
- QApplication app(argc, argv);
-
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::WebGLEnabled, true);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, false);
- QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::ShowScrollBars, false);
-
- QSettings settings("./config.ini", QSettings::IniFormat);
- settings.setIniCodec("UTF8");
- QString url = settings.value("/root/url").toString();
-
- QWebEngineView *view = new QWebEngineView();
- view->setUrl(QUrl(url));
- view->show();
- return app.exec();
-}
diff --git a/publish/src/linux-arm64/publish/apps/qtbrowser/run.sh b/publish/src/linux-arm64/publish/apps/qtbrowser/run.sh
deleted file mode 100644
index ab0e41d0..00000000
--- a/publish/src/linux-arm64/publish/apps/qtbrowser/run.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-. /usr/bin/setqt5env-xcb
-cd /opt/qt5-browser
-
-GEOMETRY=800x1280
-HDMISTATUS=`cat /sys/class/drm/card0-HDMI-A-1/status`
-if [ x$HDMISTATUS = x"disconnected" ]; then
- GEOMETRY=`cat /sys/class/drm/card0-eDP-1/mode | cut -d'p' -f1`
-else
- GEOMETRY=`cat /sys/class/drm/card0-HDMI-A-1/mode | cut -d'p' -f1`
-fi
-
-startx ./simplebrowser --no-sandbox -geometry $GEOMETRY
diff --git a/publish/src/linux-arm64/publish/apps/qtbrowser/simplebrowser b/publish/src/linux-arm64/publish/apps/qtbrowser/simplebrowser
deleted file mode 100644
index 70a12161..00000000
Binary files a/publish/src/linux-arm64/publish/apps/qtbrowser/simplebrowser and /dev/null differ
diff --git a/publish/src/linux-arm64/publish/files/bellsoft-jdk11.0.3-linux-arm32-vfp-hflt.deb.REMOVED.git-id b/publish/src/linux-arm64/publish/files/bellsoft-jdk11.0.3-linux-arm32-vfp-hflt.deb.REMOVED.git-id
new file mode 100644
index 00000000..b51ca6b4
--- /dev/null
+++ b/publish/src/linux-arm64/publish/files/bellsoft-jdk11.0.3-linux-arm32-vfp-hflt.deb.REMOVED.git-id
@@ -0,0 +1 @@
+9ddd066bb9fc45cfee5b35a1f49c9107f405435b
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/files/dotnet-sdk-2.2.204-linux-arm.tar.gz b/publish/src/linux-arm64/publish/files/dotnet-sdk-2.2.204-linux-arm.tar.gz
new file mode 100644
index 00000000..17be5eb8
Binary files /dev/null and b/publish/src/linux-arm64/publish/files/dotnet-sdk-2.2.204-linux-arm.tar.gz differ
diff --git a/publish/src/linux-arm64/publish/files/fonts-wqy-zenhei_0.9.45-7_all.deb b/publish/src/linux-arm64/publish/files/fonts-wqy-zenhei_0.9.45-7_all.deb
new file mode 100644
index 00000000..eb86d062
Binary files /dev/null and b/publish/src/linux-arm64/publish/files/fonts-wqy-zenhei_0.9.45-7_all.deb differ
diff --git a/publish/src/linux-arm64/publish/files/openntpd_6.0p1-2_armhf.deb b/publish/src/linux-arm64/publish/files/openntpd_6.0p1-2_armhf.deb
new file mode 100644
index 00000000..5e55b182
Binary files /dev/null and b/publish/src/linux-arm64/publish/files/openntpd_6.0p1-2_armhf.deb differ
diff --git a/publish/src/linux-arm64/publish/files/python-meld3_1.0.2-2_all.deb b/publish/src/linux-arm64/publish/files/python-meld3_1.0.2-2_all.deb
new file mode 100644
index 00000000..da408e82
Binary files /dev/null and b/publish/src/linux-arm64/publish/files/python-meld3_1.0.2-2_all.deb differ
diff --git a/publish/src/linux-arm64/publish/files/supervisor_3.3.5-1_all.deb b/publish/src/linux-arm64/publish/files/supervisor_3.3.5-1_all.deb
new file mode 100644
index 00000000..05b2dd4f
Binary files /dev/null and b/publish/src/linux-arm64/publish/files/supervisor_3.3.5-1_all.deb differ
diff --git a/publish/src/linux-arm64/publish/install.sh b/publish/src/linux-arm64/publish/install.sh
index 0682deae..a08f1ac0 100644
--- a/publish/src/linux-arm64/publish/install.sh
+++ b/publish/src/linux-arm64/publish/install.sh
@@ -1,16 +1,49 @@
-sudo add-apt-repository ppa:openjdk-r/ppa
-sudo apt-get -y install openjdk-8-jdk
-sudo apt-get -y install supervisor
-sudo mkdir -p /home/pi/publish/logs
-sudo mv /etc/supervisor/supervisord.conf /etc/supervisor/supervisord.conf.bk
-sudo mv /home/pi/publish/supervisord.conf /etc/supervisor/supervisord.conf
-sudo chmod 777 /home/pi/publish/apps/IoTNode/IoTNode
-sudo chmod 777 /home/pi/publish/apps/NJWLService/start.sh
-sudo chmod 777 /home/pi/publish/apps/NJWLService/NJWLService.jar
-sudo chmod 777 /home/pi/publish/apps/APService/APService
-sudo chmod 777 /home/pi/publish/apps/ONVIFService/ONVIFService
-sudo chmod 777 /home/pi/publish/apps/ONVIFService/wwwroot/ffmpeg-linux-arm64
-sudo chmod 777 /home/pi/publish/apps/SerialPortService/SerialPortService
-sudo chmod 777 /home/pi/publish/apps/LiChuangService/LiChuangService
-sudo chmod 777 /home/pi/publish/apps/srs/objs/srs
-sudo service supervisor restart
\ No newline at end of file
+#!/bin/bash
+#set root password
+sudo passwd root<>~/.bashrc
+ echo 'export DOTNET_ROOT=/home/pi/dotnet'>>~/.bashrc
+fi
+#sudo dpkg --purge oracle-java8-jdk
+#sudo dpkg -i ~/publish/files/bellsoft-jdk11.0.3-linux-arm32-vfp-hflt.deb
+
+config system
+sudo systemctl enable ssh
+sudo timedatectl set-timezone 'Asia/Shanghai'
+sudo timedatectl set-ntp true
+
+#config autostart
+mkdir -p ~/.config/autostart
+touch ~/.config/autostart/chromium.desktop
+echo ''>~/.config/autostart/chromium.desktop
+echo '[Desktop Entry]'>>~/.config/autostart/chromium.desktop
+echo 'Exec=bash -c "chromium-browser -kiosk --disable-session-crashed-bubble --disable-infobars -app=file:///home/pi/publish/apps/IoTNode/wwwroot/index.html"'>>~/.config/autostart/chromium.desktop
+
+#config apps
+sudo cp -f ~/publish/supervisord.conf /etc/supervisor/supervisord.conf
+sudo chmod 755 ~/publish/apps/IoTNode/IoTNode.dll
+sudo chmod 755 ~/publish/apps/NJWLService/start.sh
+sudo chmod 755 ~/publish/apps/NJWLService/NJWLService.jar
+sudo chmod 755 ~/publish/apps/APService/APService.dll
+sudo chmod 755 ~/publish/apps/ONVIFService/ONVIFService.dll
+sudo chmod 755 ~/publish/apps/ONVIFService/wwwroot/ffmpeg-linux-arm64
+sudo chmod 755 ~/publish/apps/SerialPortService/SerialPortService.dll
+sudo chmod 755 ~/publish/apps/LiChuangService/LiChuangService.dll
+sudo chmod 755 ~/publish/apps/srs/objs/srs
+
+#restart
+sudo reboot
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/supervisor/apservice.conf b/publish/src/linux-arm64/publish/supervisor/apservice.conf
index 78e9f8cf..eb010623 100644
--- a/publish/src/linux-arm64/publish/supervisor/apservice.conf
+++ b/publish/src/linux-arm64/publish/supervisor/apservice.conf
@@ -1,8 +1,6 @@
[program:apservice]
-command=/home/pi/publish/apps/APService/APService
directory=/home/pi/publish/apps/APService/
+command=bash -c "~/dotnet/dotnet APService.dll"
autostart=true
autorestart=true
-user=pi
-stdout_logfile=/home/pi/publish/logs/apservice.log
-stderr_logfile=/home/pi/publish/logs/apservice.err
\ No newline at end of file
+user=pi
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/supervisor/iotnode.conf b/publish/src/linux-arm64/publish/supervisor/iotnode.conf
index 7e4d4f6d..c79d7316 100644
--- a/publish/src/linux-arm64/publish/supervisor/iotnode.conf
+++ b/publish/src/linux-arm64/publish/supervisor/iotnode.conf
@@ -1,8 +1,6 @@
[program:iotnode]
-command=/home/pi/publish/apps/IoTNode/IoTNode
directory=/home/pi/publish/apps/IoTNode/
+command=bash -c "~/dotnet/dotnet IoTNode.dll"
autostart=true
autorestart=true
-user=pi
-stdout_logfile=/home/pi/publish/logs/iotnode.log
-stderr_logfile=/home/pi/publish/logs/iotnode.err
\ No newline at end of file
+user=pi
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/supervisor/lichuang.conf b/publish/src/linux-arm64/publish/supervisor/lichuang.conf
index 483c737b..584c680a 100644
--- a/publish/src/linux-arm64/publish/supervisor/lichuang.conf
+++ b/publish/src/linux-arm64/publish/supervisor/lichuang.conf
@@ -1,8 +1,6 @@
[program:lichangservice]
-command=/home/pi/publish/apps/LiChuangService/LiChuangService
directory=/home/pi/publish/apps/LiChuangService/
+command=bash -c "~/dotnet/dotnet LiChuangService.dll"
autostart=true
autorestart=true
-user=pi
-stdout_logfile=/home/pi/publish/logs/lichangservice.log
-stderr_logfile=/home/pi/publish/logs/lichangservice.err
\ No newline at end of file
+user=pi
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/supervisor/njwlservice.conf b/publish/src/linux-arm64/publish/supervisor/njwlservice.conf
index 786891ba..7c82e3bd 100644
--- a/publish/src/linux-arm64/publish/supervisor/njwlservice.conf
+++ b/publish/src/linux-arm64/publish/supervisor/njwlservice.conf
@@ -1,10 +1,8 @@
[program:njwlservice]
directory=/home/pi/publish/apps/NJWLService/
-command=bash /home/pi/publish/apps/NJWLService/start.sh
+command=bash -C "start.sh"
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
-user=pi
-stdout_logfile=/home/pi/publish/logs/njwlservice.log
-stderr_logfile=/home/pi/publish/logs/njwlservice.err
\ No newline at end of file
+user=pi
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/supervisor/onvifservice.conf b/publish/src/linux-arm64/publish/supervisor/onvifservice.conf
index 149df733..a30f6800 100644
--- a/publish/src/linux-arm64/publish/supervisor/onvifservice.conf
+++ b/publish/src/linux-arm64/publish/supervisor/onvifservice.conf
@@ -1,10 +1,8 @@
[program:onvifservice]
-command=/home/pi/publish/apps/ONVIFService/ONVIFService
directory=/home/pi/publish/apps/ONVIFService/
+command=bash -c "~/dotnet/dotnet ONVIFService.dll"
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
-user=pi
-stdout_logfile=/home/pi/publish/logs/onvifservice.log
-stderr_logfile=/home/pi/publish/logs/onvifservice.err
\ No newline at end of file
+user=pi
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/supervisor/spservice.conf b/publish/src/linux-arm64/publish/supervisor/spservice.conf
index c551546a..c9e41456 100644
--- a/publish/src/linux-arm64/publish/supervisor/spservice.conf
+++ b/publish/src/linux-arm64/publish/supervisor/spservice.conf
@@ -1,8 +1,6 @@
[program:spservice]
-command=/home/pi/publish/apps/SerialPortService/SerialPortService
directory=/home/pi/publish/apps/SerialPortService/
+command=bash -c "~/dotnet/dotnet SerialPortService.dll"
autostart=true
autorestart=true
-user=pi
-stdout_logfile=/home/pi/publish/logs/spservice.log
-stderr_logfile=/home/pi/publish/logs/spservice.err
\ No newline at end of file
+user=pi
\ No newline at end of file
diff --git a/publish/src/linux-arm64/publish/supervisor/srs.conf b/publish/src/linux-arm64/publish/supervisor/srs.conf
index 7bd43b68..2e369aeb 100644
--- a/publish/src/linux-arm64/publish/supervisor/srs.conf
+++ b/publish/src/linux-arm64/publish/supervisor/srs.conf
@@ -3,6 +3,4 @@ directory=/home/pi/publish/apps/srs
command=/home/pi/publish/apps/srs/objs/srs -c /home/pi/publish/apps/srs/conf/srs.conf
autostart=true
autorestart=true
-user=pi
-stdout_logfile=/home/pi/publish/logs/srs.log
-stderr_logfile=/home/pi/publish/logs/srs.err
+user=pi
\ No newline at end of file
diff --git a/tools/pi-gen/2019-05-23-Raspbian.img.REMOVED.git-id b/tools/pi-gen/2019-05-23-Raspbian.img.REMOVED.git-id
new file mode 100644
index 00000000..0f88f8a6
--- /dev/null
+++ b/tools/pi-gen/2019-05-23-Raspbian.img.REMOVED.git-id
@@ -0,0 +1 @@
+36e1c847d50f4a8b392ac6924fd208db056c59f6
\ No newline at end of file
diff --git a/tools/pi-gen/export-noobs/00-release/files/marketing/slides_vga/A.png b/tools/pi-gen/export-noobs/00-release/files/marketing/slides_vga/A.png
new file mode 100644
index 00000000..4c0d5a5c
Binary files /dev/null and b/tools/pi-gen/export-noobs/00-release/files/marketing/slides_vga/A.png differ
diff --git a/tools/pi-gen/stage1/00-boot-files/files/config.txt b/tools/pi-gen/stage1/00-boot-files/files/config.txt
new file mode 100644
index 00000000..d9475f4d
--- /dev/null
+++ b/tools/pi-gen/stage1/00-boot-files/files/config.txt
@@ -0,0 +1,58 @@
+# For more options and information see
+# http://rpf.io/configtxt
+# Some settings may impact device functionality. See link above for details
+
+# uncomment if you get no picture on HDMI for a default "safe" mode
+#hdmi_safe=1
+
+# uncomment this if your display has a black border of unused pixels visible
+# and your display can output without overscan
+#disable_overscan=1
+
+# uncomment the following to adjust overscan. Use positive numbers if console
+# goes off screen, and negative if there is too much border
+#overscan_left=16
+#overscan_right=16
+#overscan_top=16
+#overscan_bottom=16
+
+# uncomment to force a console size. By default it will be display's size minus
+# overscan.
+#framebuffer_width=1280
+#framebuffer_height=720
+
+# uncomment if hdmi display is not detected and composite is being output
+#hdmi_force_hotplug=1
+
+# uncomment to force a specific HDMI mode (this will force VGA)
+#hdmi_group=1
+#hdmi_mode=1
+
+# uncomment to force a HDMI mode rather than DVI. This can make audio work in
+# DMT (computer monitor) modes
+#hdmi_drive=2
+
+# uncomment to increase signal to HDMI, if you have interference, blanking, or
+# no display
+#config_hdmi_boost=4
+
+# uncomment for composite PAL
+#sdtv_mode=2
+
+#uncomment to overclock the arm. 700 MHz is the default.
+#arm_freq=800
+
+# Uncomment some or all of these to enable the optional hardware interfaces
+#dtparam=i2c_arm=on
+#dtparam=i2s=on
+#dtparam=spi=on
+
+# Uncomment this to enable the lirc-rpi module
+#dtoverlay=lirc-rpi
+
+# Additional overlays and parameters are documented /boot/overlays/README
+
+# Enable audio (loads snd_bcm2835)
+dtparam=audio=on
+disable_splash=1
+gpu_mem=512
\ No newline at end of file
diff --git a/tools/pi-gen/stage2/01-sys-tweaks/00-patches/02-swap.diff b/tools/pi-gen/stage2/01-sys-tweaks/00-patches/02-swap.diff
new file mode 100644
index 00000000..eaea07ca
--- /dev/null
+++ b/tools/pi-gen/stage2/01-sys-tweaks/00-patches/02-swap.diff
@@ -0,0 +1,13 @@
+Index: jessie-stage2/rootfs/etc/dphys-swapfile
+===================================================================
+--- jessie-stage2.orig/rootfs/etc/dphys-swapfile
++++ jessie-stage2/rootfs/etc/dphys-swapfile
+@@ -13,7 +13,7 @@
+
+ # set size to absolute value, leaving empty (default) then uses computed value
+ # you most likely don't want this, unless you have an special disk situation
+-#CONF_SWAPSIZE=
++CONF_SWAPSIZE=1024
+
+ # set size to computed value, this times RAM size, dynamically adapts,
+ # guarantees that there is enough swap without wasting disk space on excess
diff --git a/tools/pi-gen/stage2/01-sys-tweaks/00-patches/07-resize-init.diff b/tools/pi-gen/stage2/01-sys-tweaks/00-patches/07-resize-init.diff
new file mode 100644
index 00000000..8673c4a2
--- /dev/null
+++ b/tools/pi-gen/stage2/01-sys-tweaks/00-patches/07-resize-init.diff
@@ -0,0 +1,5 @@
+--- a/rootfs/boot/cmdline.txt
++++ b/rootfs/boot/cmdline.txt
+@@ -1 +1 @@
+-dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
++dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait logo.nologo quiet init=/usr/lib/raspi-config/init_resize.sh
diff --git a/tools/pi-gen/stage2/03-set-timezone/02-run.sh b/tools/pi-gen/stage2/03-set-timezone/02-run.sh
new file mode 100644
index 00000000..2eccf4f9
--- /dev/null
+++ b/tools/pi-gen/stage2/03-set-timezone/02-run.sh
@@ -0,0 +1,8 @@
+#!/bin/bash -e
+
+echo "Asia/Shanghai" > "${ROOTFS_DIR}/etc/timezone"
+rm "${ROOTFS_DIR}/etc/localtime"
+
+on_chroot << EOF
+dpkg-reconfigure -f noninteractive tzdata
+EOF
diff --git a/tools/pi-gen/stage3/00-install-packages/00-packages b/tools/pi-gen/stage3/00-install-packages/00-packages
new file mode 100644
index 00000000..4f486124
--- /dev/null
+++ b/tools/pi-gen/stage3/00-install-packages/00-packages
@@ -0,0 +1,17 @@
+gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
+qpdfview gtk2-engines alsa-utils
+desktop-base
+git
+omxplayer
+raspberrypi-artwork
+policykit-1
+gvfs
+rfkill
+chromium-browser rpi-chromium-mods
+gldriver-test
+fonts-droid-fallback
+fonts-liberation2
+obconf
+supervisor
+openntpd
+ttf-wqy-zenhei
\ No newline at end of file
diff --git a/tools/pi-gen/stage3/00-install-packages/01-run.sh b/tools/pi-gen/stage3/00-install-packages/01-run.sh
new file mode 100644
index 00000000..d7687472
--- /dev/null
+++ b/tools/pi-gen/stage3/00-install-packages/01-run.sh
@@ -0,0 +1,8 @@
+#!/bin/bash -e
+
+on_chroot << EOF
+update-alternatives --install /usr/bin/x-www-browser \
+ x-www-browser /usr/bin/chromium-browser 86
+update-alternatives --install /usr/bin/gnome-www-browser \
+ gnome-www-browser /usr/bin/chromium-browser 86
+EOF