diff --git a/.build/images/Quartz64/quartz64_defconfig b/.build/images/Quartz64/quartz64_defconfig
index 3b4c3bb652..5f4572bda7 100644
--- a/.build/images/Quartz64/quartz64_defconfig
+++ b/.build/images/Quartz64/quartz64_defconfig
@@ -1,3 +1,4 @@
+CONFIG_DEFAULT_HOSTNAME="DietPi"
CONFIG_WIREGUARD=m
# CONFIG_WIREGUARD_DEBUG is not set
CONFIG_BPF_SYSCALL=y
@@ -13,6 +14,9 @@ CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZSTD=y
CONFIG_CAN_GS_USB=m
+CONFIG_USB_NET_QMI_WWAN=m
+CONFIG_USB_NET_CDC_MBIM=m
+CONFIG_MHI_WWAN_MBIM=m
CONFIG_CFS_BANDWIDTH=y
CONFIG_ISCSI_TCP=m
CONFIG_IPV6_SIT=n
@@ -322,7 +326,7 @@ CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_LL=y
CONFIG_BT_HCIUART_BCM=y
CONFIG_BT_HCIUART_RTL=y
-CONFIG_CFG80211=y
+CONFIG_CFG80211=m
CONFIG_MAC80211=y
CONFIG_MAC80211_LEDS=y
CONFIG_RFKILL=y
diff --git a/.build/images/dietpi-build b/.build/images/dietpi-build
index 081edc729a..c1261385ba 100755
--- a/.build/images/dietpi-build
+++ b/.build/images/dietpi-build
@@ -14,7 +14,7 @@ else
G_EXEC_NOHALT=1 G_EXEC rm /tmp/dietpi-globals
export G_GITOWNER G_GITBRANCH G_HW_ARCH_NAME=$(uname -m)
# shellcheck disable=SC2015
- [[ $( /dev/null 2>&1 || export TERM=dumb'\'' > rootfs/etc/bashrc.d/00-dietpi-build.sh'
- # Workaround for network connection checks
+ # Workaround for failing IPv4 network connectivity check as GitHub Actions runners do not receive external ICMP echo replies.
G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=127.0.0.1' rootfs/boot/dietpi.txt
- G_CONFIG_INJECT 'CONFIG_CHECK_DNS_DOMAIN=' 'CONFIG_CHECK_DNS_DOMAIN=localhost' rootfs/boot/dietpi.txt
# Generate automation custom script for first boot and cleanup steps
cat << '_EOF_' > rootfs/boot/Automation_Custom_Script.sh
@@ -563,12 +562,6 @@ then
/boot/dietpi/func/dietpi-set_hardware serialconsole 1 serial0
G_CONFIG_INJECT 'temp_limit=' 'temp_limit=75' /boot/config.txt # since most RPis are now RPi 4 and Allo ships the CM3 with USBridge Sig and Allo GUI image
G_EXEC sed -Ei 's/^(arm_freq|over_voltage)=/#\1=/' /boot/config.txt
-
-# Sparky SBC: Fix Roon Bridge: https://dietpi.com/forum/t/allogui-not-working-apache-service-doesnt-start/15708/13
-elif (( $G_HW_MODEL == 70 ))
-then
- mkdir /etc/systemd/system/roonbridge.service.d
- echo -e '[Service]\nAmbientCapabilities=' > /etc/systemd/system/roonbridge.service.d/dietpi-no-caps.conf
fi
# FirstBoot
@@ -612,9 +605,8 @@ _EOF_
fi
systemd-nspawn -bD rootfs "${abind[@]}" || exit 1
- # Reset network connection check settings
+ # Reset IPv4 network connectivity check setting
G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=9.9.9.9' rootfs/boot/dietpi.txt
- G_CONFIG_INJECT 'CONFIG_CHECK_DNS_DOMAIN=' 'CONFIG_CHECK_DNS_DOMAIN=dns9.quad9.net' rootfs/boot/dietpi.txt
[[ -f 'rootfs/success' ]] || { G_DIETPI-NOTIFY 1 'The container setup did not finish successfully, aborting...'; exit 1; }
G_EXEC rm rootfs/success
@@ -642,7 +634,7 @@ limit_threads=()
G_EXEC qemu-img resize "$OUTPUT_IMG_NAME.img" 8G
####### VMX/VMware/Parallels #############
-if [[ $VMTYPE =~ ^vmx|all$ ]]
+if [[ $VMTYPE =~ ^(vmx|all)$ ]]
then
image_name=${OUTPUT_IMG_NAME/_VM-/_VMX-}
# Convert raw image to VMDK
@@ -713,7 +705,7 @@ _EOF_
fi
####### ESXi #############################
-if [[ $VMTYPE =~ ^esxi|all$ ]]
+if [[ $VMTYPE =~ ^(esxi|all)$ ]]
then
image_name=${OUTPUT_IMG_NAME/_VM-/_ESXi-}
# Convert raw image to VMDK
@@ -848,7 +840,7 @@ _EOF_
fi
####### VirtualBox #######################
-if [[ $VMTYPE =~ ^vbox|all$ ]]
+if [[ $VMTYPE =~ ^(vbox|all)$ ]]
then
image_name=${OUTPUT_IMG_NAME/_VM-/_VirtualBox-}
# Reuse or convert raw image to VMDK
@@ -1006,7 +998,7 @@ _EOF_
fi
####### Hyper-V ##########################
-if [[ $VMTYPE =~ ^hyperv|all$ ]]
+if [[ $VMTYPE =~ ^(hyperv|all)$ ]]
then
image_name=${OUTPUT_IMG_NAME/_VM-/_Hyper-V-}
# Convert raw image to VHDX
@@ -1027,7 +1019,7 @@ _EOF_
fi
####### Proxmox ############################
-if [[ $VMTYPE =~ ^proxmox|all$ ]]
+if [[ $VMTYPE =~ ^(proxmox|all)$ ]]
then
image_name=${OUTPUT_IMG_NAME/_VM-/_Proxmox-}
# Convert raw image to QCOW2
@@ -1048,7 +1040,7 @@ _EOF_
fi
####### UTM ##############################
-if [[ $VMTYPE =~ ^utm|all$ ]]
+if [[ $VMTYPE =~ ^(utm|all)$ ]]
then
image_name=${OUTPUT_IMG_NAME/_VM-/_UTM-}
# Create directory which is interpreted as VM appliance file on macOS
diff --git a/.build/images/dietpi-installer b/.build/images/dietpi-installer
index 94898b29a9..7e825d230d 100755
--- a/.build/images/dietpi-installer
+++ b/.build/images/dietpi-installer
@@ -65,10 +65,8 @@
cd /tmp || exit 1
# APT pre-configuration
- # - Remove unwanted APT configs
- # RPi: Allow PDiffs since the "slow implementation" argument is outdated and PDiffs allow lower download size and less disk I/O
- [[ -f '/etc/apt/apt.conf.d/50raspi' ]] && rm -v /etc/apt/apt.conf.d/50raspi
- # https://github.com/MichaIng/DietPi/issues/4083
+ # - Remove unwanted sources
+ # RPi: https://github.com/MichaIng/DietPi/issues/4083
rm -fv /etc/apt/sources.list.d/vscode.list /etc/apt/trusted.gpg.d/microsoft.gpg /etc/apt/preferences.d/3rd_parties.pref
# Meveric: https://github.com/MichaIng/DietPi/issues/1285#issuecomment-355759321
[[ -f '/etc/apt/sources.list.d/deb-multimedia.list' ]] && rm -v /etc/apt/sources.list.d/deb-multimedia.list
@@ -76,10 +74,10 @@
[[ -f '/etc/apt/preferences.d/backports' ]] && rm -v /etc/apt/preferences.d/backports
# OMV: https://dietpi.com/phpbb/viewtopic.php?t=2772
[[ -f '/etc/apt/sources.list.d/openmediavault.list' ]] && rm -v /etc/apt/sources.list.d/openmediavault.list
- # Conflicting configs
- rm -fv /etc/apt/apt.conf.d/*{recommends,armbian}*
- # - Apply wanted APT configs: Overwritten by DietPi code archive
- cat << '_EOF_' > /etc/apt/apt.conf.d/97dietpi # https://raw.githubusercontent.com/MichaIng/DietPi/dev/rootfs/etc/apt/apt.conf.d/97dietpi
+ # - Remove all configs except debconf pre-configuration: It does not work until apt-utils is installed but shall work as fast as it is.
+ find /etc/apt/apt.conf.d -type f ! -name '70debconf' -exec rm -v {} +
+ # - Apply wanted APT configs: Overwritten by DietPi code archive: https://raw.githubusercontent.com/MichaIng/DietPi/dev/rootfs/etc/apt/apt.conf.d/97dietpi
+ cat << '_EOF_' > /etc/apt/apt.conf.d/97dietpi
APT::Install-Recommends "false";
APT::Install-Suggests "false";
APT::AutoRemove::RecommendsImportant "false";
@@ -241,25 +239,20 @@ _EOF_
# Stop services
[[ -f '/boot/dietpi/dietpi-services' ]] && /boot/dietpi/dietpi-services stop
- [[ -f '/etc/systemd/system/dietpi-ramlog.service' ]] && systemctl stop dietpi-ramlog
- [[ -f '/etc/systemd/system/dietpi-ramdisk.service' ]] && systemctl stop dietpi-ramdisk # Includes (Pre|Post)Boot on pre-v6.29 systems
- [[ -f '/etc/systemd/system/dietpi-preboot.service' ]] && systemctl stop dietpi-preboot # Includes PostBoot on post-v6.28 systems
- # Disable DietPi services
+ # Stop, disable and remove DietPi services
for i in /etc/systemd/system/dietpi-*
do
- [[ -f $i ]] && systemctl disable --now "${i##*/}"
- rm -Rfv "$i"
+ [[ -f $i ]] && G_EXEC systemctl disable --now "${i##*/}"
+ G_EXEC rm -Rf "$i"
done
# Delete any previous existing data
# - Pre-v6.29: /DietPi mount point
- findmnt /DietPi > /dev/null && umount -R /DietPi
+ findmnt /DietPi > /dev/null && G_EXEC umount -R /DietPi
[[ -d '/DietPi' ]] && rm -R /DietPi
- rm -Rfv /{boot,mnt,etc,var/lib,var/tmp,run}/*dietpi*
- rm -fv /etc{,/cron.*,/{bashrc,profile,sysctl,network/if-up,udev/rules}.d}/{,.}*dietpi*
- rm -fv /etc/apt/apt.conf.d/{99-dietpi-norecommends,98-dietpi-no_translations,99-dietpi-forceconf} # Pre-v6.32
- [[ -f '/boot/Automation_Format_My_Usb_Drive' ]] && rm -v /boot/Automation_Format_My_Usb_Drive
+ G_EXEC rm -Rf /{boot,mnt,etc,var/lib,var/tmp,run}/*dietpi*
+ G_EXEC rm -f /etc{,/cron.*,/{bashrc,profile,sysctl,network/if-up,udev/rules}.d}/{,.}*dietpi*
else
G_DIETPI-NOTIFY 2 'No DietPi system found, skipping old instance uninstall...'
fi
@@ -384,8 +377,8 @@ _EOF_
'55' ': NanoPi R2S'
'47' ': NanoPi R4S'
'76' ': NanoPi R5S/R5C'
- '79' ': NanoPi R6S'
- '72' ': ROCK Pi 4'
+ '79' ': NanoPi R6S/R6C'
+ '72' ': ROCK 4'
'73' ': ROCK Pi S'
'74' ': Radxa Zero'
'77' ': ROCK 3A'
@@ -551,7 +544,7 @@ _EOF_
# Boot in 64-bit mode if this is a 64-bit image
[[ $G_HW_ARCH == 3 ]] && G_CONFIG_INJECT 'arm_64bit=' 'arm_64bit=1' /boot/config.txt
- elif [[ $G_HW_MODEL =~ ^10|11$ ]]
+ elif [[ $G_HW_MODEL =~ ^(10|11)$ ]]
then
armbian_repo=1
local model='OdroidC1'
@@ -565,7 +558,7 @@ _EOF_
G_EXEC mv "DietPi-$G_GITBRANCH/.build/images/U-Boot/99-dietpi-uboot" /etc/initramfs/post-update.d/99-dietpi-uboot
G_EXEC sed -i 's/arm64/arm/' /etc/initramfs/post-update.d/99-dietpi-uboot
- elif [[ $G_HW_MODEL =~ ^12|15|16|40|42|43|44|45|46|47|48|52|54|55|56|57|58|59|60|62|63|64|65|66|67|68|72|73|74|77|78|80$ ]]
+ elif [[ $G_HW_MODEL =~ ^(12|15|16|40|42|43|44|45|46|47|48|52|54|55|56|57|58|59|60|62|63|64|65|66|67|68|72|73|74|77|78|80)$ ]]
then
armbian_repo=1
G_EXEC mv "DietPi-$G_GITBRANCH/.build/images/U-Boot/boot.cmd" /boot/boot.cmd
@@ -582,7 +575,7 @@ _EOF_
G_EXEC sed -i 's/coherent_pool=2M/coherent_pool=2M usbcore.autosuspend=-1/' /boot/boot.cmd
# Odroid N2/HC4: Enable USB boot via petitboot support: https://github.com/MichaIng/DietPi/issues/5634
- elif [[ $G_HW_MODEL =~ ^15|16$ ]]
+ elif [[ $G_HW_MODEL =~ ^(15|16)$ ]]
then
G_EXEC sed -i '1i[main]' /boot/dietpiEnv.txt
# shellcheck disable=SC2016
@@ -602,7 +595,7 @@ setenv rootuuid "true"' /boot/boot.cmd
G_EXEC sed -i '/test -e/s/fixup.scr;/fixup.scr || test "${petitboot_active}" = "1";/' /boot/boot.cmd
# Rockchip 64-bit (configs work with Amlogic OOTB)
- elif [[ $G_HW_MODEL =~ ^42|43|46|47|55|56|58|68|72|73|77|78|80$ ]]
+ elif [[ $G_HW_MODEL =~ ^(42|43|46|47|55|56|58|68|72|73|77|78|80)$ ]]
then
G_EXEC sed -Ei '/^setenv (kernel|fdt)_addr_r/d' /boot/boot.cmd
G_CONFIG_INJECT 'setenv scriptaddr ' 'setenv scriptaddr "0x9000000"' /boot/boot.cmd
@@ -647,7 +640,7 @@ setenv rootuuid "true"' /boot/boot.cmd
G_EXEC sed -i -e 's/ttyAML0/ttyS2/' -e '/^extraargs=/s/$/ systemd.unified_cgroup_hierarchy=0/' /boot/dietpiEnv.txt
# Allwinner 64-bit
- elif [[ $G_HW_MODEL =~ ^40|44|45|57|65|67$ ]]
+ elif [[ $G_HW_MODEL =~ ^(40|44|45|57|65|67)$ ]]
then
G_EXEC sed -Ei '/^setenv (kernel|fdt)_addr_r/d' /boot/boot.cmd
G_CONFIG_INJECT 'setenv scriptaddr ' 'setenv scriptaddr "0x45000000"' /boot/boot.cmd
@@ -673,7 +666,7 @@ setenv rootuuid "true"' /boot/boot.cmd
esac
# Allwinner H3 (32-bit)
- elif [[ $G_HW_MODEL =~ ^48|59|60|63|64|66$ ]]
+ elif [[ $G_HW_MODEL =~ ^(48|59|60|63|64|66)$ ]]
then
G_EXEC sed -i 's/arm64/arm/' /etc/initramfs/post-update.d/99-dietpi-uboot /boot/boot.cmd
G_EXEC sed -Ei '/^setenv (kernel_addr_r|fdt_addr_r|overlay_path)/d' /boot/boot.cmd
@@ -863,7 +856,7 @@ setenv rootuuid "true"' /boot/boot.cmd
)
# Entropy daemon: Use modern rng-tools5 on all devices where it has been proven to work, else haveged: https://github.com/MichaIng/DietPi/issues/2806
- if [[ $G_HW_MODEL -lt 10 || $G_HW_MODEL =~ ^14|15|16|24|29|42|46|58|68|72|74|76|78|79|80|81$ ]] # RPi, S922X, Odroid C4, RK3399 - 47 NanoPi R4S, Radxa Zero, NanoPi R5S, ROCK 5B, NanoPi R6S, Orange Pi 5, VisionFive 2
+ if [[ $G_HW_MODEL -lt 10 || $G_HW_MODEL =~ ^(14|15|16|24|29|42|46|58|68|72|74|76|78|79|80|81)$ ]] # RPi, S922X, Odroid C4, RK3399 - 47 NanoPi R4S, Radxa Zero, NanoPi R5S/R5C, ROCK 5B, NanoPi R6S/R6C, Orange Pi 5, VisionFive 2
then
aPACKAGES_REQUIRED_INSTALL+=('rng-tools5')
else
@@ -897,7 +890,7 @@ setenv rootuuid "true"' /boot/boot.cmd
### Kernel/bootloader/initramfs packages: We need to install those directly to allow G_AGA() autoremove possible older packages later: https://github.com/MichaIng/DietPi/issues/1285#issuecomment-354602594
# x86_64 PCs and VMs
- if [[ $G_HW_ARCH == 10 && $G_HW_MODEL =~ ^20|21$ ]]
+ if [[ $G_HW_ARCH == 10 && $G_HW_MODEL =~ ^(20|21)$ ]]
then
local apackages=('linux-image-amd64' 'os-prober')
@@ -1007,7 +1000,7 @@ setenv rootuuid "true"' /boot/boot.cmd
G_EXEC rm "linux-u-boot-$model-$branch.deb"
fi
# NanoPi R2S/NEO3
- if [[ $G_HW_MODEL =~ ^55|56$ ]]
+ if [[ $G_HW_MODEL =~ ^(55|56)$ ]]
then
G_DIETPI-NOTIFY 2 'Blacklisting video related kernel modules'
cat << '_EOF_' > /etc/modprobe.d/dietpi-headless.conf
@@ -1702,7 +1695,7 @@ _EOF_'
G_EXEC systemctl mask serial-getty@ttyS0
# Odroid C1/C2/N2/C4, NanoPi K2, Radxa Zero
- elif [[ $G_HW_MODEL =~ ^10|12|15|1654|74$ ]]
+ elif [[ $G_HW_MODEL =~ ^(10|12|15|16|54|74)$ ]]
then
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttyAML0
@@ -1722,13 +1715,13 @@ _EOF_'
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttySAC0
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttyGS0
- # ROCKPro64, ROCK64, Pinebook Pro, NanoPi R4S, Quartz64, ASUS Tinker Board, NanoPi R2S, NanoPi NEO3, NanoPi M4V2, NanoPi M4/T4/NEO4, ROCK Pi 4, ROCK 3A
- elif [[ $G_HW_MODEL =~ ^42|43|46|47|49|52|55|56|58|68|72|77$ ]]
+ # ROCKPro64, ROCK64, Pinebook Pro, NanoPi R4S, Quartz64, ASUS Tinker Board, NanoPi R2S, NanoPi NEO3, NanoPi M4V2, NanoPi M4/T4/NEO4, ROCK 4, ROCK 3A
+ elif [[ $G_HW_MODEL =~ ^(42|43|46|47|49|52|55|56|58|68|72|77)$ ]]
then
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttyS2
# PINE A64, Pinebook, PINE H64, NenoPi NEO Plus2, ZeroPi, NanoPi NEO, NanoPi M1, NanoPi NEO Air, NenoPi NEO2, NanoPi M1 Plus, NanoPi K1 Plus, ROCK Pi S, VisionFive 2
- elif [[ $G_HW_MODEL =~ ^40|44|45|57|59|60|63|64|65|66|67|73|81$ ]]
+ elif [[ $G_HW_MODEL =~ ^(40|44|45|57|59|60|63|64|65|66|67|73|81)$ ]]
then
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttyS0
@@ -1737,17 +1730,11 @@ _EOF_'
then
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttyS1
- # NanoPi R5S, ROCK 5B, NanoPi R6S, Orange Pi 5
- elif [[ $G_HW_MODEL =~ ^76|78|79|80$ ]]
+ # NanoPi R5S/R5C, ROCK 5B, NanoPi R6S/R6C, Orange Pi 5
+ elif [[ $G_HW_MODEL =~ ^(76|78|79|80)$ ]]
then
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttyFIQ0
- # ToDo: pre-v8.16
- G_EXEC mkdir -p '/etc/systemd/system/serial-getty@ttyFIQ0.service.d'
- cat << _EOF_ > '/etc/systemd/system/serial-getty@ttyFIQ0.service.d/dietpi-baudrate.conf'
-[Service]
-ExecStart=
-$(sed -n '/^ExecStart=/s/ 115200/ 1500000,115200/p' '/lib/systemd/system/serial-getty@.service')
-_EOF_
+
# Else for physical systems (but Sparky SBC): Enable on all present serial consoles
elif (( $G_HW_MODEL != 20 && $G_HW_MODEL != 75 && $G_HW_MODEL != 70 ))
then
@@ -1978,8 +1965,8 @@ _EOF_
G_DIETPI-NOTIFY 2 'Enabling NanoPi R4S Ethernet LEDs'
G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
-SUBSYSTEM=="leds", KERNEL=="lan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
+SUBSYSTEM=="leds", KERNEL=="lan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1"
_EOF_
# NanoPi R2S
elif (( $G_HW_MODEL == 55 ))
@@ -1987,26 +1974,26 @@ _EOF_
G_DIETPI-NOTIFY 2 'Enabling NanoPi R2S Ethernet LEDs'
G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
-SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-SUBSYSTEM=="leds", KERNEL=="lan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1"
_EOF_
- # NanoPi R5S/R5C
+ # NanoPi R5S/R5C: In case, will be updated for R5C on first boot
elif (( $G_HW_MODEL == 76 ))
then
- G_DIETPI-NOTIFY 2 'Enabling NanoPi R5S Ethernet LEDs'
+ G_DIETPI-NOTIFY 2 'Enabling NanoPi R5S/R5C Ethernet LEDs'
G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
-SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-SUBSYSTEM=="leds", KERNEL=="lan2_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth2", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1"
+SUBSYSTEM=="leds", KERNEL=="lan2_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth2", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth2", RUN+="/bin/ip l s down dev eth2"
_EOF_
- # NanoPi R6S/R6C
+ # NanoPi R6S/R6C: In case, will be updated for R6C on first boot
elif (( $G_HW_MODEL == 79 ))
then
- G_DIETPI-NOTIFY 2 'Enabling NanoPi R6S Ethernet LEDs'
+ G_DIETPI-NOTIFY 2 'Enabling NanoPi R6S/R6C Ethernet LEDs'
G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
-SUBSYSTEM=="leds", KERNEL=="lan2_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
+SUBSYSTEM=="leds", KERNEL=="lan2_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth2", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
_EOF_
@@ -2042,13 +2029,9 @@ _EOF_
fi
G_DIETPI-NOTIFY 2 'Configuring services'
+ /boot/dietpi/dietpi-services unmask
/boot/dietpi/dietpi-services stop
- # Pre-v8.16
- # shellcheck disable=SC2015
- [[ $G_GITBRANCH == 'master' ]] && /boot/dietpi/dietpi-services dietpi_controlled || /boot/dietpi/dietpi-services enable
-
- G_DIETPI-NOTIFY 2 'Mask cron until 1st run setup is completed'
- G_EXEC systemctl mask cron
+ /boot/dietpi/dietpi-services enable
G_DIETPI-NOTIFY 2 'Removing swapfile from image'
/boot/dietpi/func/dietpi-set_swapfile 0 /var/swap
diff --git a/.build/software/Amiberry/build.bash b/.build/software/Amiberry/build.bash
index 4a96c6e121..cee0c8ba95 100755
--- a/.build/software/Amiberry/build.bash
+++ b/.build/software/Amiberry/build.bash
@@ -7,7 +7,7 @@
G_DIETPI-NOTIFY 2 "Amiberry will be built for platform: \e[33m$PLATFORM"
# APT dependencies
-# - wget: Used for WHDLoad database update: https://github.com/BlitterStudio/amiberry/commit/d6c103e3310bcf75c2d72a15849fbdf5eb7432b5
+# - wget: Used for WHDLoad database update: https://github.com/BlitterStudio/amiberry/commit/d6c103e
# - kbd: For "chvt" used in systemd service
adeps_build=('autoconf' 'make' 'g++' 'pkg-config' 'libdrm-dev' 'libgbm-dev' 'libudev-dev' 'libxml2-dev' 'libpng-dev' 'libfreetype6-dev' 'libflac-dev' 'libmpg123-dev' 'libmpeg2-4-dev' 'libasound2-dev' 'libserialport-dev' 'wget' 'kbd')
adeps=('libdrm2' 'libgl1-mesa-dri' 'libgbm1' 'libegl1' 'libudev1' 'libxml2' 'libpng16-16' 'libfreetype6' 'libmpg123-0' 'libmpeg2-4' 'libasound2' 'libserialport0' 'wget' 'kbd')
@@ -31,7 +31,7 @@ then
G_EXEC tar xf "SDL2-$v_sdl.tar.gz"
G_EXEC rm "SDL2-$v_sdl.tar.gz"
G_EXEC cd "SDL2-$v_sdl"
- G_EXEC_OUTPUT=1 G_EXEC ./configure CFLAGS='-g0 -O3' CXXFLAGS='-g0 -O3' --enable-video-kmsdrm "${opengl_flags[@]}" --disable-video-rpi --disable-video-x11 --disable-video-wayland --disable-video-opengles1 --disable-video-vulkan --disable-video-dummy --disable-diskaudio --disable-sndio --disable-dummyaudio --disable-oss --disable-dbus
+ G_EXEC_OUTPUT=1 G_EXEC ./configure CFLAGS='-g0 -O3' CXXFLAGS='-g0 -O3' --enable-video-kmsdrm "${opengl_flags[@]}" --disable-video-rpi --disable-video-x11 --disable-video-wayland --disable-video-opengles1 --disable-video-vulkan --disable-video-offscreen --disable-video-dummy --disable-diskaudio --disable-sndio --disable-dummyaudio --disable-oss --disable-dbus
G_EXEC_OUTPUT=1 G_EXEC make "-j$(nproc)"
find . -type f \( -name '*.so' -o -name '*.so.*' \) -exec strip --strip-unneeded --remove-section=.comment --remove-section=.note -v {} +
G_EXEC rm -f /usr/local/lib/libSDL2[.-]*
diff --git a/.build/software/Amiberry/container_build.bash b/.build/software/Amiberry/container_build.bash
index b63b9ff76e..ccd27ba8d5 100755
--- a/.build/software/Amiberry/container_build.bash
+++ b/.build/software/Amiberry/container_build.bash
@@ -66,7 +66,7 @@ G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}"
G_EXEC curl -sSfO "https://dietpi.com/downloads/images/$image.7z"
G_EXEC 7zz x "$image.7z"
G_EXEC rm "$image.7z" hash.txt README.md
-G_EXEC truncate -s $((2*1024**3)) "$image.img"
+G_EXEC truncate -s 2G "$image.img"
# Loop device
FP_LOOP=$(losetup -f)
@@ -92,9 +92,8 @@ G_EXEC rm rootfs/root/.ssh/known_hosts
# shellcheck disable=SC2016
G_EXEC eval 'echo '\''infocmp "$TERM" > /dev/null 2>&1 || export TERM=dumb'\'' > rootfs/etc/bashrc.d/00-dietpi-build.sh'
-# Workaround for network connection checks
+# Workaround for failing IPv4 network connectivity check as GitHub Actions runners do not receive external ICMP echo replies.
G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=127.0.0.1' rootfs/boot/dietpi.txt
-G_CONFIG_INJECT 'CONFIG_CHECK_DNS_DOMAIN=' 'CONFIG_CHECK_DNS_DOMAIN=localhost' rootfs/boot/dietpi.txt
# - RPi 64-bit: Add RPi repo, ARMv6 container images contain it already
[[ $PLATFORM != 'rpi'[34]'-64-dmx' ]] || cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1
@@ -116,6 +115,6 @@ _EOF_
##########################################
# Boot container
##########################################
-systemd-nspawn -bD rootfs --bind="$FP_LOOP"{,p1} --bind=/dev/disk
+systemd-nspawn -bD rootfs
[[ -f rootfs/amiberry_$PLATFORM.deb ]] || exit 1
}
diff --git a/.build/software/gmediarender/container_build.bash b/.build/software/gmediarender/container_build.bash
index 1649ee4086..e6b4157b14 100755
--- a/.build/software/gmediarender/container_build.bash
+++ b/.build/software/gmediarender/container_build.bash
@@ -72,7 +72,7 @@ G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}"
G_EXEC curl -sSfO "https://dietpi.com/downloads/images/$image.7z"
G_EXEC 7zz e "$image.7z" "$image.img"
G_EXEC rm "$image.7z"
-G_EXEC truncate -s $((2*1024**3)) "$image.img"
+G_EXEC truncate -s 2G "$image.img"
# Loop device
FP_LOOP=$(losetup -f)
@@ -101,9 +101,8 @@ G_EXEC rm rootfs/root/.ssh/known_hosts
# shellcheck disable=SC2016
G_EXEC eval 'echo '\''infocmp "$TERM" > /dev/null 2>&1 || export TERM=dumb'\'' > rootfs/etc/bashrc.d/00-dietpi-build.sh'
-# Workaround for network connection checks
+# Workaround for failing IPv4 network connectivity check as GitHub Actions runners do not receive external ICMP echo replies.
G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=127.0.0.1' rootfs/boot/dietpi.txt
-G_CONFIG_INJECT 'CONFIG_CHECK_DNS_DOMAIN=' 'CONFIG_CHECK_DNS_DOMAIN=localhost' rootfs/boot/dietpi.txt
# Automated build
cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1
@@ -117,6 +116,6 @@ _EOF_
##########################################
# Boot container
##########################################
-systemd-nspawn -bD rootfs --bind="$FP_LOOP"{,p1} --bind=/dev/disk
+systemd-nspawn -bD rootfs
[[ -f rootfs/gmediarender_$arch.deb ]] || exit 1
}
diff --git a/.build/software/gogs/container_build.bash b/.build/software/gogs/container_build.bash
index 442fa9eb06..25fa8b1f8a 100755
--- a/.build/software/gogs/container_build.bash
+++ b/.build/software/gogs/container_build.bash
@@ -72,7 +72,7 @@ G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}"
G_EXEC curl -sSfO "https://dietpi.com/downloads/images/$image.7z"
G_EXEC 7zz e "$image.7z" "$image.img"
G_EXEC rm "$image.7z"
-G_EXEC truncate -s $((2*1024**3)) "$image.img"
+G_EXEC truncate -s 2G "$image.img"
# Loop device
FP_LOOP=$(losetup -f)
@@ -102,9 +102,8 @@ G_EXEC rm rootfs/root/.ssh/known_hosts
# shellcheck disable=SC2016
G_EXEC eval 'echo '\''infocmp "$TERM" > /dev/null 2>&1 || export TERM=dumb'\'' > rootfs/etc/bashrc.d/00-dietpi-build.sh'
-# Workaround for network connection checks
+# Workaround for failing IPv4 network connectivity check as GitHub Actions runners do not receive external ICMP echo replies.
G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=127.0.0.1' rootfs/boot/dietpi.txt
-G_CONFIG_INJECT 'CONFIG_CHECK_DNS_DOMAIN=' 'CONFIG_CHECK_DNS_DOMAIN=localhost' rootfs/boot/dietpi.txt
# Automated build
cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1
@@ -118,6 +117,6 @@ _EOF_
##########################################
# Boot container
##########################################
-systemd-nspawn -bD rootfs --bind="$FP_LOOP"{,p1} --bind=/dev/disk
+systemd-nspawn -bD rootfs
[[ -f rootfs/gogs_$arch.7z ]] || exit 1
}
diff --git a/.build/software/shairport-sync/container_build.bash b/.build/software/shairport-sync/container_build.bash
index 0e5de4432d..ac9532e1d5 100755
--- a/.build/software/shairport-sync/container_build.bash
+++ b/.build/software/shairport-sync/container_build.bash
@@ -72,7 +72,7 @@ G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}"
G_EXEC curl -sSfO "https://dietpi.com/downloads/images/$image.7z"
G_EXEC 7zz e "$image.7z" "$image.img"
G_EXEC rm "$image.7z"
-G_EXEC truncate -s $((2*1024**3)) "$image.img"
+G_EXEC truncate -s 2G "$image.img"
# Loop device
FP_LOOP=$(losetup -f)
@@ -101,9 +101,8 @@ G_EXEC rm rootfs/root/.ssh/known_hosts
# shellcheck disable=SC2016
G_EXEC eval 'echo '\''infocmp "$TERM" > /dev/null 2>&1 || export TERM=dumb'\'' > rootfs/etc/bashrc.d/00-dietpi-build.sh'
-# Workaround for network connection checks
+# Workaround for failing IPv4 network connectivity check as GitHub Actions runners do not receive external ICMP echo replies.
G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=127.0.0.1' rootfs/boot/dietpi.txt
-G_CONFIG_INJECT 'CONFIG_CHECK_DNS_DOMAIN=' 'CONFIG_CHECK_DNS_DOMAIN=localhost' rootfs/boot/dietpi.txt
# Automated build
cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1
@@ -117,6 +116,6 @@ _EOF_
##########################################
# Boot container
##########################################
-systemd-nspawn -bD rootfs --bind="$FP_LOOP"{,p1} --bind=/dev/disk
+systemd-nspawn -bD rootfs
[[ -f rootfs/shairport-sync_$arch.deb ]] || exit 1
}
diff --git a/.build/software/squeezelite/container_build.bash b/.build/software/squeezelite/container_build.bash
index 1d8e348183..88c9ae2ba1 100755
--- a/.build/software/squeezelite/container_build.bash
+++ b/.build/software/squeezelite/container_build.bash
@@ -72,7 +72,7 @@ G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}"
G_EXEC curl -sSfO "https://dietpi.com/downloads/images/$image.7z"
G_EXEC 7zz e "$image.7z" "$image.img"
G_EXEC rm "$image.7z"
-G_EXEC truncate -s $((2*1024**3)) "$image.img"
+G_EXEC truncate -s 2G "$image.img"
# Loop device
FP_LOOP=$(losetup -f)
@@ -101,9 +101,8 @@ G_EXEC rm rootfs/root/.ssh/known_hosts
# shellcheck disable=SC2016
G_EXEC eval 'echo '\''infocmp "$TERM" > /dev/null 2>&1 || export TERM=dumb'\'' > rootfs/etc/bashrc.d/00-dietpi-build.sh'
-# Workaround for network connection checks
+# Workaround for failing IPv4 network connectivity check as GitHub Actions runners do not receive external ICMP echo replies.
G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=127.0.0.1' rootfs/boot/dietpi.txt
-G_CONFIG_INJECT 'CONFIG_CHECK_DNS_DOMAIN=' 'CONFIG_CHECK_DNS_DOMAIN=localhost' rootfs/boot/dietpi.txt
# Automated build
cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1
@@ -117,6 +116,6 @@ _EOF_
##########################################
# Boot container
##########################################
-systemd-nspawn -bD rootfs --bind="$FP_LOOP"{,p1} --bind=/dev/disk
+systemd-nspawn -bD rootfs
[[ -f rootfs/squeezelite_$arch.deb ]] || exit 1
}
diff --git a/.build/software/vaultwarden/build.bash b/.build/software/vaultwarden/build.bash
index 7943d4e31e..ec034cc428 100755
--- a/.build/software/vaultwarden/build.bash
+++ b/.build/software/vaultwarden/build.bash
@@ -207,12 +207,7 @@ G_EXEC curl -sSfo package.deb "https://dietpi.com/downloads/binaries/$G_DISTRO_N
old_version=$(dpkg-deb -f package.deb Version)
G_EXEC rm package.deb
suffix=${old_version#*-dietpi}
-if [[ $old_version == "$version-"* ]]
-then
- version+="-dietpi$((suffix+1))"
-else
- version+="-dietpi1"
-fi
+[[ $old_version == "$version-"* ]] && version+="-dietpi$((suffix+1))" || version+="-dietpi1"
# - control
cat << _EOF_ > "$DIR/DEBIAN/control"
diff --git a/.build/software/vaultwarden/container_build.bash b/.build/software/vaultwarden/container_build.bash
index 1172d5dbfd..c0796edf1f 100755
--- a/.build/software/vaultwarden/container_build.bash
+++ b/.build/software/vaultwarden/container_build.bash
@@ -72,7 +72,7 @@ G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}"
G_EXEC curl -sSfO "https://dietpi.com/downloads/images/$image.7z"
G_EXEC 7zz e "$image.7z" "$image.img"
G_EXEC rm "$image.7z"
-G_EXEC truncate -s $((2*1024**3)) "$image.img"
+G_EXEC truncate -s 2G "$image.img"
# Loop device
FP_LOOP=$(losetup -f)
@@ -101,9 +101,8 @@ G_EXEC rm rootfs/root/.ssh/known_hosts
# shellcheck disable=SC2016
G_EXEC eval 'echo '\''infocmp "$TERM" > /dev/null 2>&1 || export TERM=dumb'\'' > rootfs/etc/bashrc.d/00-dietpi-build.sh'
-# Workaround for network connection checks
+# Workaround for failing IPv4 network connectivity check as GitHub Actions runners do not receive external ICMP echo replies.
G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=127.0.0.1' rootfs/boot/dietpi.txt
-G_CONFIG_INJECT 'CONFIG_CHECK_DNS_DOMAIN=' 'CONFIG_CHECK_DNS_DOMAIN=localhost' rootfs/boot/dietpi.txt
# Automated build
cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1
@@ -117,6 +116,6 @@ _EOF_
##########################################
# Boot container
##########################################
-systemd-nspawn -bD rootfs --bind="$FP_LOOP"{,p1} --bind=/dev/disk
+systemd-nspawn -bD rootfs
[[ -f rootfs/vaultwarden_$arch.deb ]] || exit 1
}
diff --git a/.conf/dps_27/apache.tasmoadmin.conf b/.conf/dps_27/apache.tasmoadmin.conf
index d6ce64b3e7..befc179474 100644
--- a/.conf/dps_27/apache.tasmoadmin.conf
+++ b/.conf/dps_27/apache.tasmoadmin.conf
@@ -1,4 +1,4 @@
-
+
Require all granted
AllowOverride All
Options FollowSymLinks
diff --git a/.conf/dps_27/lighttpd.tasmoadmin.conf b/.conf/dps_27/lighttpd.tasmoadmin.conf
index 55508255bb..b63f338d83 100644
--- a/.conf/dps_27/lighttpd.tasmoadmin.conf
+++ b/.conf/dps_27/lighttpd.tasmoadmin.conf
@@ -1,10 +1,13 @@
$HTTP["url"] =~ "^/tasmoadmin($|/)" {
- # Restrict direct access to .htaccess and data directory
+ # Deny direct access to .htaccess and data directory
$HTTP["url"] =~ "^/tasmoadmin/(\.|data)" {
- url.access-deny = ("")
+ # Allow direct access to firmwares
+ $HTTP["url"] !~ "^/tasmoadmin/data/firmwares" {
+ url.access-deny = ("")
+ }
}
- # TasmoAdmin URL rewrite, required for sync clients
+ # TasmoAdmin URL rewrites required for sync clients
url.rewrite-if-not-file = (
"^/tasmoadmin/doAjax$" => "/tasmoadmin/index.php?doAjax=doAjax",
"^/tasmoadmin/doAjaxAll$" => "/tasmoadmin/index.php?doAjaxAll=doAjaxAll",
diff --git a/.conf/dps_27/nginx.tasmoadmin.conf b/.conf/dps_27/nginx.tasmoadmin.conf
index 48b73431ec..62fca0f85d 100644
--- a/.conf/dps_27/nginx.tasmoadmin.conf
+++ b/.conf/dps_27/nginx.tasmoadmin.conf
@@ -1,8 +1,9 @@
location ^~ /tasmoadmin {
- location /tasmoadmin/firmwares {
+ # Allow direct access to firmwares
+ location ^~ /tasmoadmin/data/firmwares {
}
- # Deny access to .htaccess and data dir
+ # Deny direct access to .htaccess and data directory
location ~ ^/tasmoadmin/(?:\.|data) {
deny all;
}
@@ -19,6 +20,7 @@ location ^~ /tasmoadmin {
location ~* \.(css|js|gif||jpe?g|png|json|cache\.json)$ {
}
+ # TasmoAdmin URL rewrites required for sync clients
location /tasmoadmin {
rewrite ^/tasmoadmin/login$ /tasmoadmin/login.php last;
rewrite ^/tasmoadmin/logout$ /tasmoadmin/login.php?logout=logout last;
diff --git a/.conf/dps_59/raspimjpeg.sh b/.conf/dps_59/raspimjpeg.sh
index 5ef085b779..3f2cea2948 100644
--- a/.conf/dps_59/raspimjpeg.sh
+++ b/.conf/dps_59/raspimjpeg.sh
@@ -13,8 +13,6 @@
#
#////////////////////////////////////
- Raspimjeg_Stop(){ killall -qw php raspimjpeg; }
-
Raspimjeg_Start()
{
[ -d '/dev/shm/mjpeg' ] || mkdir /dev/shm/mjpeg
@@ -26,9 +24,9 @@
}
case $1 in
- 'stop') Raspimjeg_Stop;;
+ 'stop') killall -qw php raspimjpeg;;
'start') Raspimjeg_Start;;
- *) echo "ERROR: Invalid argument: \"$1\""
+ *) echo "ERROR: Invalid argument: \"$1\"" >&2; exit 1;;
esac
exit 0
diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash
new file mode 100644
index 0000000000..a66b936877
--- /dev/null
+++ b/.github/workflows/dietpi-software.bash
@@ -0,0 +1,158 @@
+#!/bin/bash
+# Created by MichaIng / micha@dietpi.com / dietpi.com
+{
+##########################################
+# Load DietPi-Globals
+##########################################
+if [[ -f '/boot/dietpi/func/dietpi-globals' ]]
+then
+ . /boot/dietpi/func/dietpi-globals
+else
+ curl -sSf "https://raw.githubusercontent.com/${G_GITOWNER:=MichaIng}/DietPi/${G_GITBRANCH:=master}/dietpi/func/dietpi-globals" -o /tmp/dietpi-globals || exit 1
+ # shellcheck disable=SC1091
+ . /tmp/dietpi-globals
+ G_EXEC_NOHALT=1 G_EXEC rm /tmp/dietpi-globals
+ export G_GITOWNER G_GITBRANCH G_HW_ARCH_NAME=$(uname -m)
+fi
+case $G_HW_ARCH_NAME in
+ 'armv6l') export G_HW_ARCH=1;;
+ 'armv7l') export G_HW_ARCH=2;;
+ 'aarch64') export G_HW_ARCH=3;;
+ 'x86_64') export G_HW_ARCH=10;;
+ 'riscv64') export G_HW_ARCH=11;;
+ *) G_DIETPI-NOTIFY 1 "Unsupported host system architecture \"$G_HW_ARCH_NAME\" detected, aborting..."; exit 1;;
+esac
+readonly G_PROGRAM_NAME='DietPi-Software_test_setup'
+G_CHECK_ROOT_USER
+G_CHECK_ROOTFS_RW
+readonly FP_ORIGIN=$PWD # Store origin dir
+G_INIT
+G_EXEC cd "$FP_ORIGIN" # Process everything in origin dir instead of /tmp/$G_PROGRAM_NAME
+
+##########################################
+# Process inputs
+##########################################
+DISTRO=
+ARCH=
+SOFTWARE=
+RPI=
+while (( $# ))
+do
+ case $1 in
+ '-d') shift; DISTRO=$1;;
+ '-a') shift; ARCH=$1;;
+ '-s') shift; SOFTWARE=$1;;
+ '-rpi') shift; RPI=$1;;
+ *) G_DIETPI-NOTIFY 1 "Invalid input \"$1\", aborting..."; exit 1;;
+ esac
+ shift
+done
+[[ $DISTRO =~ ^'buster'|'bullseye'|'bookworm'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; }
+case $ARCH in
+ 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}";;
+ 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}";;
+ 'aarch64') image="DietPi_Container-ARMv8-${DISTRO^}";;
+ 'x86_64') image="DietPi_Container-x86_64-${DISTRO^}";;
+ 'riscv64') image="DietPi_Container-RISC-V-Sid";;
+ *) G_DIETPI-NOTIFY 1 "Invalid architecture \"$ARCH\" passed, aborting..."; exit 1;;
+esac
+[[ $SOFTWARE =~ ^[0-9\ ]+$ ]] || { G_DIETPI-NOTIFY 1 "Invalid software list \"$SOFTWARE\" passed, aborting..."; exit 1; }
+[[ $RPI =~ ^|'false'|'true'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid RPi flag \"$RPI\" passed, aborting..."; exit 1; }
+
+##########################################
+# Dependencies
+##########################################
+apackages=('7zip' 'parted' 'fdisk' 'systemd-container')
+(( $G_HW_ARCH == $ARCH || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $ARCH ) )) || apackages+=('qemu-user-static' 'binfmt-support')
+G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}"
+
+##########################################
+# Prepare container
+##########################################
+# Download
+G_EXEC curl -sSfO "https://dietpi.com/downloads/images/$image.7z"
+G_EXEC 7zz e "$image.7z" "$image.img"
+G_EXEC rm "$image.7z"
+G_EXEC truncate -s 3G "$image.img"
+
+# Loop device
+FP_LOOP=$(losetup -f)
+G_EXEC losetup "$FP_LOOP" "$image.img"
+G_EXEC partprobe "$FP_LOOP"
+G_EXEC partx -u "$FP_LOOP"
+G_EXEC_OUTPUT=1 G_EXEC e2fsck -fp "${FP_LOOP}p1"
+G_EXEC_OUTPUT=1 G_EXEC eval "sfdisk -fN1 '$FP_LOOP' <<< ',+'"
+G_EXEC partprobe "$FP_LOOP"
+G_EXEC partx -u "$FP_LOOP"
+G_EXEC_OUTPUT=1 G_EXEC resize2fs "${FP_LOOP}p1"
+G_EXEC_OUTPUT=1 G_EXEC e2fsck -fp "${FP_LOOP}p1"
+G_EXEC mkdir rootfs
+G_EXEC mount "${FP_LOOP}p1" rootfs
+
+# Force ARMv6 arch on Raspbian
+[[ $ARCH == 'armv6l' ]] && G_EXEC sed -i '/# Start DietPi-Software/iG_EXEC sed -i -e '\''/^G_HW_ARCH=/cG_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/cG_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' rootfs/boot/dietpi/dietpi-login
+
+# Force RPi on ARM systems if requested
+if [[ $RPI == 'true' && $ARCH == 'a'* ]]
+then
+ case $ARCH in
+ 'armv6l') model=1;;
+ 'armv7l') model=2;;
+ 'aarch64') model=4;;
+ *) G_DIETPI-NOTIFY 1 "Invalid architecture $ARCH beginning with \"a\" but not being one of the known/accepted ARM architectures. This should never happen!"; exit 1;;
+ esac
+ G_EXEC sed -i "/# Start DietPi-Software/iG_EXEC sed -i -e '/^G_HW_MODEL=/cG_HW_MODEL=$model' -e '/^G_HW_MODEL_NAME=/cG_HW_MODEL_NAME=\"RPi $model ($ARCH)\"' /boot/dietpi/.hw_model; > /boot/config.txt; > /boot/cmdline.txt" rootfs/boot/dietpi/dietpi-login
+ G_EXEC curl -sSf 'https://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-archive-keyring/raspberrypi-archive-keyring_2021.1.1+rpt1_all.deb' -o keyring.deb
+ G_EXEC dpkg --root=rootfs -i keyring.deb
+ G_EXEC rm keyring.deb
+fi
+
+# Workaround invalid TERM on login
+# shellcheck disable=SC2016
+G_EXEC eval 'echo '\''infocmp "$TERM" > /dev/null 2>&1 || { echo "[ INFO ] Unsupported TERM=\"$TERM\", switching to TERM=\"dumb\""; export TERM=dumb; }'\'' > rootfs/etc/bashrc.d/00-dietpi-ci.sh'
+
+# Enable automated setup
+G_CONFIG_INJECT 'AUTO_SETUP_AUTOMATED=' 'AUTO_SETUP_AUTOMATED=1' rootfs/boot/dietpi.txt
+
+# Workaround for failing IPv4 network connectivity check as GitHub Actions runners do not receive external ICMP echo replies.
+G_CONFIG_INJECT 'CONFIG_CHECK_CONNECTION_IP=' 'CONFIG_CHECK_CONNECTION_IP=127.0.0.1' rootfs/boot/dietpi.txt
+
+# Apply Git branch
+G_CONFIG_INJECT 'DEV_GITBRANCH=' "DEV_GITBRANCH=$G_GITBRANCH" rootfs/boot/dietpi.txt
+G_CONFIG_INJECT 'DEV_GITOWNER=' "DEV_GITOWNER=$G_GITOWNER" rootfs/boot/dietpi.txt
+
+# Avoid DietPi-Survey uploads to not mess with the statistics
+G_EXEC rm rootfs/root/.ssh/known_hosts
+
+# Apply software IDs to install
+for i in $SOFTWARE; do G_CONFIG_INJECT "AUTO_SETUP_INSTALL_SOFTWARE_ID=$i" "AUTO_SETUP_INSTALL_SOFTWARE_ID=$i" rootfs/boot/dietpi.txt; done
+
+# Workaround for failing Redis as of PrivateUsers=true leading to "Failed to set up user namespacing"
+G_EXEC mkdir rootfs/etc/systemd/system/redis-server.service.d
+G_EXEC eval 'echo -e '\''[Service]\nPrivateUsers=0'\'' > rootfs/etc/systemd/system/redis-server.service.d/dietpi-container.conf'
+
+# Workarounds for failing MariaDB install on Buster within GitHub Actions runner (both cannot be replicated on my test systems with and without QEMU):
+# - mysqld does not have write access if our symlink is in place, even that directory permissions are correct.
+# - Type=notify leads to a service start timeout while mysqld has actually fully started.
+if [[ $DISTRO == 'buster' ]]
+then
+ G_EXEC sed -i '/# Start DietPi-Software/a\sed -i -e '\''s|rm -Rf /var/lib/mysql|rm -Rf /mnd/dietpi_userdata/mysql|'\'' -e '\''s|ln -s /mnt/dietpi_userdata/mysql /var/lib/mysql|ln -s /var/lib/mysql /mnt/dietpi_userdata/mysql|'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login
+ G_EXEC mkdir rootfs/etc/systemd/system/mariadb.service.d
+ G_EXEC eval 'echo -e '\''[Service]\nType=exec'\'' > rootfs/etc/systemd/system/mariadb.service.d/dietpi-container.conf'
+fi
+
+# Workaround for failing 32-bit ARM Rust builds on ext4 in QEMU emulated container on 64-bit host: https://github.com/rust-lang/cargo/issues/9545
+(( $ARCH < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab'
+
+# Success flag and shutdown
+G_EXEC eval 'echo -e '\''#!/bin/dash\n/boot/dietpi/dietpi-services start\n> /success\npoweroff'\'' > rootfs/boot/Automation_Custom_Script.sh'
+
+# Shutdown as well on failure
+G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -e; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login
+
+##########################################
+# Boot container
+##########################################
+systemd-nspawn -bD rootfs
+[[ -f 'rootfs/success' ]] || { journalctl -e; df -h; free -h; exit 1; }
+}
diff --git a/.github/workflows/dietpi-software.yml b/.github/workflows/dietpi-software.yml
index cbed9310ec..853a382e5d 100644
--- a/.github/workflows/dietpi-software.yml
+++ b/.github/workflows/dietpi-software.yml
@@ -17,13 +17,21 @@ on:
soft:
description: 'Software ID(s) to install (space separated)'
required: true
+ rpi:
+ description: 'Fake RPi system on ARM archs'
+ type: boolean
+ default: false
+ branch:
+ description: 'Change target repo branch (optional)'
+ owner:
+ description: 'Change target repo owner (optional)'
concurrency:
group: ${{ github.workflow }}-${{ github.event.inputs.arch }}-${{ github.event.inputs.dist }}-${{ github.event.inputs.soft }}
cancel-in-progress: true
permissions: {}
defaults:
run:
- working-directory: /dev/shm
+ #working-directory: /dev/shm # uses too much RAM which can lead to OOM kills
shell: sh
jobs:
prep:
@@ -56,11 +64,17 @@ jobs:
arch: ${{ fromJson(needs.prep.outputs.arch) }}
dist: ${{ fromJson(needs.prep.outputs.dist) }}
exclude:
- - { arch: 11, dist: 5 }
- - { arch: 11, dist: 6 }
+ - { arch: riscv64, dist: buster }
+ - { arch: riscv64, dist: bullseye }
fail-fast: false
- name: "Install: ${{ matrix.arch }} - ${{ matrix.dist }} - ${{ github.event.inputs.soft }}"
+ name: "${{ matrix.arch }} - ${{ matrix.dist }} - ${{ github.event.inputs.soft }}"
runs-on: ubuntu-22.04
steps:
- name: Install
- run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=$GITHUB_REF_NAME; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/$GITHUB_REF_NAME/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}'
+ run: |
+ owner='${{ github.event.inputs.owner }}'
+ [ $owner ] || owner=$GITHUB_REPOSITORY_OWNER
+ branch='${{ github.event.inputs.branch }}'
+ [ $branch ] || branch=$GITHUB_REF_NAME
+ sudo systemctl stop ssh mono-xsp4
+ sudo bash -c "G_GITOWNER=$owner G_GITBRANCH=$branch; $(curl -sSf "https://raw.githubusercontent.com/$owner/DietPi/$branch/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}' -rpi '${{ github.event.inputs.rpi }}'
diff --git a/.github/workflows/quartz64.yml b/.github/workflows/quartz64.yml
index 1648641b8f..b2fc15601b 100644
--- a/.github/workflows/quartz64.yml
+++ b/.github/workflows/quartz64.yml
@@ -13,8 +13,6 @@ jobs:
shell: sh
working-directory: /dev/shm
env:
- # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/?h=linux-rolling-stable
- linux_version: '6.2.9'
uboot_branch: 'v2022.07-dietpi'
CROSS_COMPILE: 'aarch64-linux-gnu-'
ARCH: 'arm64'
@@ -29,11 +27,11 @@ jobs:
{ python3 -m pip install --no-cache-dir -U pip setuptools wheel; python3 -m pip install --no-cache-dir -U pyelftools; } &
{ sudo apt-get -q update; sudo DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends -qq install make gcc libc6-dev flex bison gcc-aarch64-linux-gnu bc libssl-dev swig; } &
{ curl -fO "https://gitlab.com/MichaIng/u-boot/-/archive/$uboot_branch/u-boot-$uboot_branch.tar.bz2"; tar xf "u-boot-$uboot_branch.tar.bz2"; rm "u-boot-$uboot_branch.tar.bz2"; } &
- { curl -fO "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/linux-$linux_version.tar.gz"; tar xf "linux-$linux_version.tar.gz"; rm "linux-$linux_version.tar.gz"; } &
+ { curl -fO 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/linux-rolling-stable.tar.gz'; tar xf linux-rolling-stable.tar.gz; rm linux-rolling-stable.tar.gz; } &
wait
curl -sSfo "u-boot-$uboot_branch/u-boot-spl-ddr.bin" 'https://raw.githubusercontent.com/JeffyCN/rockchip_mirrors/rkbin/bin/rk35/rk3568_ddr_1560MHz_v1.13.bin' &
curl -sSfo "u-boot-$uboot_branch/bl31.elf" 'https://raw.githubusercontent.com/JeffyCN/rockchip_mirrors/6186deb/bin/rk35/rk3568_bl31_v1.28.elf' &
- curl -sSfo "linux-$linux_version/arch/arm64/configs/quartz64_defconfig" "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/images/Quartz64/quartz64_defconfig" &
+ curl -sSfo linux-rolling-stable/arch/arm64/configs/quartz64_defconfig "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/$GITHUB_REF_NAME/.build/images/Quartz64/quartz64_defconfig" &
rm -Rf firmware-quartz64a/DEBIAN firmware-quartz64a/boot/extlinux firmware-quartz64a/lib/firmware/brcm
mkdir -p firmware-quartz64a/DEBIAN firmware-quartz64a/boot/extlinux firmware-quartz64a/lib/firmware/brcm
rm -Rf firmware-quartz64b/DEBIAN firmware-quartz64b/boot/extlinux firmware-quartz64b/lib/firmware/brcm
@@ -58,7 +56,7 @@ jobs:
rm -R "u-boot-$uboot_branch"
- name: Build Linux
run: |
- cd "linux-$linux_version"
+ cd linux-rolling-stable
make quartz64_defconfig
make -j$(nproc)
cp arch/arm64/boot/Image.gz ../firmware-quartz64a/boot/vmlinuz
@@ -72,24 +70,23 @@ jobs:
rm firmware-quartz64a/lib/modules/*/build firmware-quartz64a/lib/modules/*/source
cp -R firmware-quartz64a/lib/modules firmware-quartz64b/lib/
cp -R firmware-quartz64a/lib/modules firmware-soquartz/lib/
- rm -R "linux-$linux_version"
- name: Build package
run: |
+ version=$(mawk '/^VERSION =/{a=$3};/^PATCHLEVEL =/{b=$3};/^SUBLEVEL/{c=$3};END{print a"."b"."c}' linux-rolling-stable/Makefile)
+ rm -R linux-rolling-stable
curl -sSfO 'https://dietpi.com/downloads/binaries/firmware-quartz64a.deb' &
curl -sSfo firmware-quartz64b/lib/firmware/brcm/brcmfmac43456-sdio.bin 'https://raw.githubusercontent.com/armbian/firmware/master/brcm/brcmfmac43456-sdio.bin' &
curl -sSfo firmware-quartz64b/lib/firmware/brcm/brcmfmac43456-sdio.clm_blob 'https://raw.githubusercontent.com/armbian/firmware/master/brcm/brcmfmac43456-sdio.clm_blob' &
curl -sSfo firmware-quartz64b/lib/firmware/brcm/brcmfmac43456-sdio.clm_blob 'https://raw.githubusercontent.com/armbian/firmware/master/brcm/brcmfmac43456-sdio.txt' &
curl -sSfo firmware-quartz64a/lib/firmware/brcm/brcmfmac43455-sdio.txt 'https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/brcm/brcmfmac43455-sdio.AW-CM256SM.txt' &
wait
- version=$(dpkg-deb -f firmware-quartz64a.deb Version)
+ cur_version=$(dpkg-deb -f firmware-quartz64a.deb Version)
rm firmware-quartz64a.deb
- suffix=${version#*-dietpi}
- if [ "$version" = "$linux_version-dietpi$suffix" ]
- then
- version="$linux_version-dietpi$((suffix+1))"
- else
- version="$linux_version-dietpi1"
- fi
+ cur_suffix=${cur_version#*-dietpi}
+ echo "Current package version is: $cur_version"
+ echo "New kernel version is: $version"
+ [ "$version-dietpi$cur_suffix" = "$cur_version" ] && version="$version-dietpi$((cur_suffix+1))" || version="$version-dietpi1"
+ echo "New package version will be: $version"
cp firmware-quartz64a/lib/firmware/brcm/brcmfmac43455-sdio.txt firmware-soquartz/lib/firmware/brcm/
cat << '_EOF_' > firmware-quartz64a/boot/extlinux/extlinux.conf
label DietPi
diff --git a/.meta/dietpi-survey_report b/.meta/dietpi-survey_report
index 7658f2eb08..5a2a556c8b 100755
--- a/.meta/dietpi-survey_report
+++ b/.meta/dietpi-survey_report
@@ -75,14 +75,14 @@ shopt -s extglob
[69]='Firefly RK3399'
[70]='Sparky SBC'
[71]='BeagleBone Black'
- [72]='ROCK Pi 4'
+ [72]='ROCK 4'
[73]='ROCK Pi S'
[74]='Radxa Zero'
[75]='Container'
[76]='NanoPi R5S/R5C'
[77]='ROCK 3A'
[78]='ROCK 5B'
- [79]='NanoPi R6S'
+ [79]='NanoPi R6S/R6C'
[80]='Orange Pi 5'
[81]='StarFive VisionFive 2'
)
@@ -653,8 +653,18 @@ shopt -s extglob
done
aSOFTWARE_NAME8_16[16]='microblog.pub'
+ aSOFTWARE_NAME8_17=()
+ for i in "${!aSOFTWARE_NAME8_16[@]}"
+ do
+ aSOFTWARE_NAME8_17[$i]=${aSOFTWARE_NAME8_16[$i]}
+ done
+ aSOFTWARE_NAME8_17[206]='openHAB'
+ aSOFTWARE_NAME8_17[207]='Moonlight (CLI)'
+ aSOFTWARE_NAME8_17[208]='Moonlight (GUI)'
+ aSOFTWARE_NAME8_17[209]='Restic'
+
# Pre-create software counter array so that we can see also software (available in newest version) with 0 installs
- for i in "${aSOFTWARE_NAME8_16[@]}"
+ for i in "${aSOFTWARE_NAME8_17[@]}"
do
aSOFTWARE["$i"]=0
done
@@ -899,6 +909,8 @@ shopt -s extglob
[[ $i == 'Unknown Device (aarch64)' ]] && ((aDEVICE_NAME['Generic Device (aarch64)']+=aDEVICE_NAME["$i"])) && unset -v "aDEVICE_NAME[$i]"
[[ $i == 'NanoPi M1/T1 (armv7l)' ]] && ((aDEVICE_NAME['NanoPi M1 (armv7l)']+=aDEVICE_NAME["$i"])) && unset -v "aDEVICE_NAME[$i]" # v8.11
[[ $i == 'NanoPi R5S (aarch64)' ]] && ((aDEVICE_NAME['NanoPi R5S/R5C (aarch64)']+=aDEVICE_NAME["$i"])) && unset -v "aDEVICE_NAME[$i]" # v8.13
+ [[ $i == 'NanoPi R6S (aarch64)' ]] && ((aDEVICE_NAME['NanoPi R6S/R6C (aarch64)']+=aDEVICE_NAME["$i"])) && unset -v "aDEVICE_NAME[$i]" # v8.17
+ [[ $i == 'ROCK Pi 4 (aarch64)' ]] && ((aDEVICE_NAME['ROCK 4 (aarch64)']+=aDEVICE_NAME["$i"])) && unset -v "aDEVICE_NAME[$i]" # v8.17
done
# Process all results, for later use in HTML printout
diff --git a/.update/patches b/.update/patches
index 9bf9b41089..4f8110ab01 100755
--- a/.update/patches
+++ b/.update/patches
@@ -751,7 +751,7 @@ Patch_8_7()
G_EXEC dpkg -r raspotify
G_EXEC curl -fL 'https://github.com/dtcooper/raspotify/releases/download/0.31.8.1/raspotify_0.31.8.1.librespot.v0.3.1-54-gf4be9bb_armhf.deb' -o raspotify.deb
G_AGI ./raspotify.deb
- G_EXEC_HOHALT=1 G_EXEC rm raspotify.deb
+ G_EXEC rm raspotify.deb
fi
fi
@@ -876,79 +876,10 @@ Patch_8_11()
G_EXEC chmod +x "${adesktop_items[@]}"
fi
- if (( $G_HW_MODEL == 47 ))
+ if (( $G_HW_MODEL == 76 ))
then
- G_DIETPI-NOTIFY 2 'Configuring NanoPi R4S Ethernet LEDs'
- G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
- cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
-SUBSYSTEM=="leds", KERNEL=="lan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-_EOF_
- if modprobe -nq ledtrig-netdev
- then
- G_EXEC modprobe ledtrig-netdev
- G_EXEC_NOHALT=1 G_EXEC eval 'echo netdev > /sys/class/leds/lan_led/trigger'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo eth0 > /sys/class/leds/lan_led/device_name'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan_led/link'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan_led/rx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan_led/tx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo netdev > /sys/class/leds/wan_led/trigger'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo eth1 > /sys/class/leds/wan_led/device_name'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/link'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/rx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/tx'
- fi
-
- elif (( $G_HW_MODEL == 55 ))
- then
- G_DIETPI-NOTIFY 2 'Configuring NanoPi R2S Ethernet LEDs'
- G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
- cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
-SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-SUBSYSTEM=="leds", KERNEL=="lan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-_EOF_
- if modprobe -nq ledtrig-netdev
- then
- G_EXEC modprobe ledtrig-netdev
- G_EXEC_NOHALT=1 G_EXEC eval 'echo netdev > /sys/class/leds/wan_led/trigger'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo eth0 > /sys/class/leds/wan_led/device_name'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/link'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/rx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/tx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo netdev > /sys/class/leds/lan_led/trigger'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo eth1 > /sys/class/leds/lan_led/device_name'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan_led/link'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan_led/rx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan_led/tx'
- fi
-
- elif (( $G_HW_MODEL == 76 ))
- then
- G_DIETPI-NOTIFY 2 'Configuring NanoPi R5S Ethernet LEDs'
[[ -f '/etc/modules-load.d/dietpi-nanopi5.conf' ]] && G_EXEC mv /etc/modules-load.d/dietpi-{nanopi5,eth-leds}.conf
[[ -f '/etc/udev/rules.d/dietpi-nanopi5.rules' ]] && G_EXEC mv /etc/udev/rules.d/dietpi-{nanopi5,eth-leds}.rules
- G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
- cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
-SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-SUBSYSTEM=="leds", KERNEL=="lan2_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth2", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
-_EOF_
- G_EXEC modprobe ledtrig-netdev
- G_EXEC_NOHALT=1 G_EXEC eval 'echo netdev > /sys/class/leds/wan_led/trigger'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo eth0 > /sys/class/leds/wan_led/device_name'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/link'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/rx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/wan_led/tx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo netdev > /sys/class/leds/lan1_led/trigger'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo eth1 > /sys/class/leds/lan1_led/device_name'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan1_led/link'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan1_led/rx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan1_led/tx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo netdev > /sys/class/leds/lan2_led/trigger'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo eth2 > /sys/class/leds/lan2_led/device_name'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan2_led/link'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan2_led/rx'
- G_EXEC_NOHALT=1 G_EXEC eval 'echo 1 > /sys/class/leds/lan2_led/tx'
elif (( $G_HW_MODEL == 52 ))
then
@@ -1136,30 +1067,6 @@ Patch_8_16()
G_EXEC losetup -d "$loopdev"
G_EXEC rm "nanopir${series}s.img"
- elif (( $G_HW_MODEL == 49 ))
- then
- if dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-quartz64a 2> /dev/null)" lt-nl 6.2.9-dietpi1
- then
- G_DIETPI-NOTIFY 2 'Updating Quartz64 Model A kernel and bootloader ...'
- G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-quartz64a.deb'
- G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-quartz64a.deb
- G_EXEC_HOHALT=1 G_EXEC rm firmware-quartz64a.deb
-
- elif dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-quartz64b 2> /dev/null)" lt-nl 6.2.9-dietpi1
- then
- G_DIETPI-NOTIFY 2 'Updating Quartz64 Model B kernel and bootloader ...'
- G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-quartz64b.deb'
- G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-quartz64b.deb
- G_EXEC_HOHALT=1 G_EXEC rm firmware-quartz64b.deb
-
- elif dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-soquartz 2> /dev/null)" lt-nl 6.2.9-dietpi1
- then
- G_DIETPI-NOTIFY 2 'Updating SOQuartz kernel and bootloader ...'
- G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-soquartz.deb'
- G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-soquartz.deb
- G_EXEC_HOHALT=1 G_EXEC rm firmware-soquartz.deb
- fi
-
elif [[ $G_HW_MODEL =~ ^78|80$ && -f '/boot/dietpiEnv.txt' ]]
then
if systemctl -q is-enabled 'serial-getty@ttyS2'
@@ -1178,10 +1085,6 @@ Patch_8_16()
elif (( $G_HW_MODEL == 81 )) && dpkg --compare-versions "$(dpkg-query -Wf '${Version}' linux-image-visionfive2 2> /dev/null)" lt-nl 5.15.105-dietpi1
then
- G_DIETPI-NOTIFY 2 'Updating RISC-V StarFive VisionFive 2 kernel ...'
- G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/linux-image-visionfive2.deb'
- G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold linux-image-visionfive2.deb
- G_EXEC_HOHALT=1 G_EXEC rm linux-image-visionfive2.deb
G_EXEC systemctl unmask serial-getty@hvc0
fi
@@ -1321,6 +1224,138 @@ Release notes:
fi
}
+Patch_8_17()
+{
+ # https://dietpi.com/forum/t/cron-service-is-masked/16544
+ [[ $(systemctl is-enabled cron) == 'masked' ]] && G_EXEC systemctl unmask cron
+
+ # RPi
+ if (( $G_HW_MODEL < 10 ))
+ then
+ # Patch onboard audio
+ [[ -f '/etc/modprobe.d/dietpi-disable_rpi_sound.conf' ]] && G_EXEC mv /etc/modprobe.d/dietpi-disable_rpi_{sound,audio}.conf
+ if grep -q '^[[:blank:]]*dtoverlay=dietpi-disable_hdmi_audio' /boot/config.txt
+ then
+ G_EXEC sed -i '/^[[:blank:]]*dtoverlay=dietpi-disable_hdmi_audio/d' /boot/config.txt
+ G_EXEC sed -i '/root=/s/$/ snd_bcm2835.enable_hdmi=0/' /boot/cmdline.txt
+ fi
+ if grep -q '^[[:blank:]]*dtoverlay=dietpi-disable_headphones' /boot/config.txt
+ then
+ G_EXEC sed -i '/^[[:blank:]]*dtoverlay=dietpi-disable_headphones/d' /boot/config.txt
+ G_EXEC sed -i '/root=/s/$/ snd_bcm2835.enable_headphones=0/' /boot/cmdline.txt
+ fi
+ [[ -f '/boot/overlays/dietpi-disable_hdmi_audio.dtbo' ]] && G_EXEC rm /boot/overlays/dietpi-disable_hdmi_audio.dtbo
+ [[ -f '/boot/overlays/dietpi-disable_headphones.dtbo' ]] && G_EXEC rm /boot/overlays/dietpi-disable_headphones.dtbo
+
+ # Remove deprecated rpivid-v4l2 overlay
+ if (( $G_DISTRO > 5 )) && grep -q '^[[:blank:]]*dtoverlay=rpivid-v4l2$' /boot/config.txt
+ then
+ G_DIETPI-NOTIFY 2 'Removing deprecated device tree overlay: rpivid-v4l2'
+ G_EXEC sed -i '/^[[:blank:]]*dtoverlay=rpivid-v4l2$/d' /boot/config.txt
+ fi
+
+ # Quartz64
+ elif (( $G_HW_MODEL == 49 ))
+ then
+ if dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-quartz64a 2> /dev/null)" lt-nl 6.2.14-dietpi1
+ then
+ G_DIETPI-NOTIFY 2 'Updating Quartz64 Model A kernel and bootloader ...'
+ G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-quartz64a.deb'
+ G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-quartz64a.deb
+ G_EXEC rm firmware-quartz64a.deb
+
+ elif dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-quartz64b 2> /dev/null)" lt-nl 6.2.14-dietpi1
+ then
+ G_DIETPI-NOTIFY 2 'Updating Quartz64 Model B kernel and bootloader ...'
+ G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-quartz64b.deb'
+ G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-quartz64b.deb
+ G_EXEC rm firmware-quartz64b.deb
+
+ elif dpkg --compare-versions "$(dpkg-query -Wf '${Version}' firmware-soquartz 2> /dev/null)" lt-nl 6.2.14-dietpi1
+ then
+ G_DIETPI-NOTIFY 2 'Updating SOQuartz kernel and bootloader ...'
+ G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/firmware-soquartz.deb'
+ G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold firmware-soquartz.deb
+ G_EXEC rm firmware-soquartz.deb
+ fi
+
+ # Sparky SBC: Fix Roonbridge: https://dietpi.com/forum/t/allogui-not-working-apache-service-doesnt-start/15708/13
+ elif (( $G_HW_MODEL == 70 ))
+ then
+ [[ -f '/etc/systemd/system/roonbridge.service' ]] && G_EXEC sed -i '/^AmbientCapabilities=/d' /etc/systemd/system/roonbridge.service
+ [[ -f '/etc/systemd/system/roonbridge.service.d/dietpi-no-caps.conf' ]] && G_EXEC rm /etc/systemd/system/roonbridge.service.d/dietpi-no-caps.conf
+ [[ -f '/etc/systemd/system/roonbridge.service.d' ]] && G_EXEC rmdir --ignore-fail-on-non-empty /etc/systemd/system/roonbridge.service.d
+
+ # NanoPi R4S
+ elif (( $G_HW_MODEL == 47 ))
+ then
+ G_DIETPI-NOTIFY 2 'Updating udev rule for NanoPi R4S Ethernet LEDs'
+ G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
+ cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
+SUBSYSTEM=="leds", KERNEL=="lan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1"
+_EOF_
+ # NanoPi R2S
+ elif (( $G_HW_MODEL == 55 ))
+ then
+ G_DIETPI-NOTIFY 2 'Updating udev rule for NanoPi R2S Ethernet LEDs'
+ G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
+ cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1"
+_EOF_
+ # NanoPi R5S/R5C
+ elif (( $G_HW_MODEL == 76 ))
+ then
+ local model='R5S'
+ [[ $( /dev/null && model='R5C'
+ G_DIETPI-NOTIFY 2 "Updating udev rule for NanoPi $model Ethernet LEDs"
+ G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
+ if [[ $model == 'R6S' ]]
+ then
+ cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1"
+SUBSYSTEM=="leds", KERNEL=="lan2_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth2", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth2", RUN+="/bin/ip l s down dev eth2"
+_EOF_
+ else
+ cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1"
+_EOF_
+ fi
+
+ # NanoPi R6S/R6C
+ elif (( $G_HW_MODEL == 79 ))
+ then
+ local model='R6S'
+ [[ $( /dev/null && model='R6C'
+ G_DIETPI-NOTIFY 2 "Updating udev rule for NanoPi $model Ethernet LEDs"
+ G_EXEC eval 'echo '\''ledtrig-netdev'\'' > /etc/modules-load.d/dietpi-eth-leds.conf'
+ if [[ $model == 'R6S' ]]
+ then
+ cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
+SUBSYSTEM=="leds", KERNEL=="lan2_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth2", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1"
+_EOF_
+ else
+ cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0", RUN+="/bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1", RUN+="/bin/ip l s down dev eth1"
+_EOF_
+ fi
+
+ # VisionFive 2
+ elif (( $G_HW_MODEL == 81 )) && dpkg --compare-versions "$(dpkg-query -Wf '${Version}' linux-image-visionfive2 2> /dev/null)" lt-nl 5.15.110-dietpi1
+ then
+ G_DIETPI-NOTIFY 2 'Updating RISC-V StarFive VisionFive 2 kernel ...'
+ G_EXEC_OUTPUT=1 G_EXEC curl -fO 'https://dietpi.com/downloads/binaries/linux-image-visionfive2.deb'
+ G_EXEC_OUTPUT=1 G_EXEC dpkg -i --force-confdef,confold linux-image-visionfive2.deb
+ G_EXEC rm linux-image-visionfive2.deb
+ fi
+}
+
# v6.35 => v7 migration
if (( $G_DIETPI_VERSION_CORE == 6 && $G_DIETPI_VERSION_SUB > 34 ))
then
diff --git a/.update/version b/.update/version
index fe2fa6288b..0b06dddb90 100644
--- a/.update/version
+++ b/.update/version
@@ -2,7 +2,7 @@
# shellcheck disable=SC2034
# Available DietPi version
G_REMOTE_VERSION_CORE=8
-G_REMOTE_VERSION_SUB=16
+G_REMOTE_VERSION_SUB=17
G_REMOTE_VERSION_RC=2
# Minimum DietPi version to allow update
G_MIN_VERSION_CORE=6
@@ -14,7 +14,6 @@ G_MIN_DEBIAN=5
# Alternative Git branch to automatically migrate to when Debian version is too low
G_OLD_DEBIAN_BRANCH='stretch'
# Live patches
-G_LIVE_PATCH_DESC=('Unmask cron service which was accidentially shipped mask with recent images')
-# shellcheck disable=SC2016
-G_LIVE_PATCH_COND=('[[ $(systemctl is-enabled cron) == masked ]]')
-G_LIVE_PATCH=('systemctl unmask cron')
+G_LIVE_PATCH_DESC=()
+G_LIVE_PATCH_COND=()
+G_LIVE_PATCH=()
diff --git a/BRANCH_SYSTEM.md b/BRANCH_SYSTEM.md
index 5a0e28c6e4..57c7836b22 100644
--- a/BRANCH_SYSTEM.md
+++ b/BRANCH_SYSTEM.md
@@ -16,7 +16,7 @@ By joining the Beta and reporting issues, you will be assisting DietPi (and all
```sh
G_CONFIG_INJECT 'DEV_GITBRANCH=' 'DEV_GITBRANCH=beta' /boot/dietpi.txt
```
-3. Run `dietpi-update` to update the system, then reboot (or update quickly with `dietpi-backup 1`).
+3. Run `dietpi-update` to update the system, then reboot (or update quickly with `dietpi-update 1`).
4. Test away, please report any issues on our GitHub page. Also ensure you mention "beta branch" in your post: https://github.com/MichaIng/DietPi/issues
5. If you want to return the system to the previous restore state, run `dietpi-backup` to restore (or restore quickly with `dietpi-backup -1`).
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index ba9ccf8e41..cbb8bac5f2 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,3 +1,45 @@
+v8.17
+(2023-05-06)
+
+New software:
+- openHAB | This long requested vendor and technology agnostic FLOSS home automation software has been finally added to DietPi. Many thanks to @just-jason and many others for requesting it and @MDAR for providing install instructions and valuable information: https://github.com/MichaIng/DietPi/issues/3857
+- Moonlight (CLI) | This CLI game streaming client for Sunshine and NVIDIA GameStream has been added to our software catalogue. Many thanks to @mtekman for implementing it: https://github.com/MichaIng/DietPi/pull/6303
+- Moonlight (GUI) | This GUI game streaming client for Sunshine and NVIDIA GameStream has been added to our software catalogue. Many thanks to @mtekman for implementing it: https://github.com/MichaIng/DietPi/pull/6339
+- Restic | This fast, efficient and secure command-line backup program has been added to our software catalogue. Compared to the package available via APT, it is always the latest version. Many thanks to @goldfix for implementing it: https://github.com/MichaIng/DietPi/pull/6350
+
+Enhancements:
+- NanoPi R series | Updated udev rules for the Ethernet LEDs to not lid the LEDs of disabled Ethernet devices. If an Ethernet device has been detected by the kernel/udev already and an LED is configured to light on link (connected cable), it lights until the interface is set up and no link is detected. So for disabled interfaces, some LEDs remained lit. The udev rules have now been changed to quickly set up and down the interfaces for the LEDs to remain off until an interface has been successfully configured.
+- NanoPi R6S | Since our image runs fine on NanoPi R6C as well, the device name in DietPi is now shown as "NanoPi R6S/R6C" to indicate this fact.
+- ROCK Pi 4 | We followed Radxa and renamed the device to "ROCK 4", i.e. removed the "Pi" from its name.
+- DietPi-Banner | Added a new option to show the Let's Encrypt certificate status (expiry date), when installed via dietpi-letsencrypt or Certbot. Many thanks to @gary2002 for implementing this option: https://github.com/MichaIng/DietPi/pull/6314
+- DietPi-LetsEncrypt | HTTP/2 is now enabled OOTB on Nginx when enabling HTTPS via dietpi-letsencrypt. Many thanks to @Isti6github for bringing up this topic: https://dietpi.com/forum/t/nextcloud-memories-http-2-or-http-3-is-strongly-recommended-http-1-1-detected-nginx/16753
+- DietPi-Software | MinIO: On fresh installs, the S3 API port will be 9004 from now on, to resolve a port conflict with Logitech Media Server. Furthermore the web access port (aka console port) will be set to 9001, as otherwise it will be randomly applied from a high port range, making reverse proxy and container setups impossible. Many thanks to @din14970 for reporting this issue: https://dietpi.com/forum/t/configuring-https-for-minio-through-nginx/16775
+- DietPi-Software | Snapcast: The server and client install options have been enabled on ARMv8 and RISC-V, using the older but functional packages from the Debian repository.
+
+Bug fixes:
+- General | Resolved an issue where our recent images had the cron service masked accidentally after first run setup. Many thanks to @Johannes for reporting this issue: https://dietpi.com/forum/t/cron-service-is-masked/16544
+- Raspberry Pi | Resolved an issue where enabling the 3.5mm analogue onboard audio jack did not work if a HDMI device was attached, since due to a change with Linux 6.1 HDMI audio was not disabled correctly. Many thanks to @Gale for reporting this issue: https://dietpi.com/forum/t/no-audio-from-rpi-4b-headphone-jack/16538
+- Quartz64 | Resolved an issue where the kernel failed to load the WiFi regulatory database since the cfg80211 module was builtin and hence loaded before the rootfs was mounted.
+- DietPi-Globals | Resolved a DietPi v8.16 regression where wrong CPU temperatures were shown on some devices. Many thanks to @duledxb for reporting this issue: https://github.com/MichaIng/DietPi/issues/6315
+- DietPi-Config | Audio: 'firmware-sof-signed' required for functionality on some Intel devices, is now installed when selecting 'intel-sst-dsp': https://github.com/MichaIng/DietPi/issues/6281#issuecomment-1500990841
+- DietPi-Software | Resolved an issue where it was possible to install software titles via AUTO_SETUP_INSTALL_SOFTWARE_ID dietpi.txt entries on unsupported platforms.
+- DietPi-Software | Home Assistant: Resolved an issue where to installation on 32-bit ARM systems failed since Python cryptography source builds do now require pky-config. Many thanks to @retrofame for reporting this issue: https://dietpi.com/forum/t/unable-to-upgrade-home-assistant-to-2021-10-x/5823/7
+- DietPi-Software | HTPC Manager/Synapse: Resolved an issue where to installation on 32-bit ARM Bookworm systems failed since Python cryptography source builds do now require pky-config.
+- DietPi-Software | microblog.pub: Resolved an issue where the installation failed on 32-bit ARM devices since a Rust compiler is required for the cryptography Python module build. Many thanks to @kinoushe for reporting this issue: https://github.com/MichaIng/DietPi/issues/6304
+- DietPi-Software | Home Assistant/HTPC Manager/microblog-pub/Synapse: Resolved an issue where the install on RPi 4 with 32-bit image failed since rustup/cargo tried to compile for 64-bit. The issue occurred since the 64-bit kernel is used on RPi 4 by default since Linux 6.1, even if the OS/userland is 32-bit. Many thanks to @josh3003 for reporting this issue: https://github.com/MichaIng/DietPi/issues/6306
+- DietPi-Software | Home Assistant: Resolved an issue where the installation failed on 32-bit ARM systems due to newly required C++ compiler and FFmpeg libraries for compiling all required Python modules.
+- DietPi-Software | Google AIY: Resolved an issue where the install failed on ARMv7 systems due to conflicting Python module dependencies.
+- DietPi-Software | UrBackup: Resolved an issue where the installation failed since the use "latest" directory has been removed the download server. Many thanks to @mikeruss1 for reporting this issue: https://dietpi.com/forum/t/404-on-trying-to-install-urbackup/16744
+- DietPi-Software | SABnzbd: Resolved an issue where the service start failed on Buster systems since SABnzbd v4 does not support Python 3.7 anymore. The latest SABnzbd v3 is now installed instead on Buster systems. Many thanks to @githubchonger for reporting this issue: https://github.com/sabnzbd/sabnzbd/issues/2545
+- DietPi-Software | SABnzbd: Resolved an issue where the install failed on RISC-V and ARMv6/7 Bookworm systems due to missing dependencies for Python module builds.
+- DietPi-Software | UnRAR: Resolved an issue where the install failed on RISC-V systems, since the non-free "unrar" package is not available for this architecture yet. "unrar-free" is now installed instead.
+- DietPi-Software | TasmoAdmin: Resolved an issue with Nginx and Lighttpd webservers where firmware updates failed as direct web access to the firmwares path was denied. Many thanks to @SimonPHP for reporting and fixing this issue: https://github.com/MichaIng/DietPi/pull/6328
+- DietPi-Software | phpMyAdmin: Resolved an issue where an older version could have been installed since there are still v4 maintenance releases which may be dated after the latest v5 release.
+
+As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/6361
+
+-----------------------------------------------------------------------------------------------------------
+
v8.16
(2023-04-08)
@@ -389,9 +431,9 @@ Changes:
- DietPi-Software | rTorrent: The ruTorrent web interface is now reinstalled cleanly, i.e. configs, 3rd party plugins and themes are preserved but all other files are removed before new ruTorrent files are installed. Many thanks to @shanew1694 for reporting a related issue with remaining obsolete files: https://github.com/MichaIng/DietPi/issues/5161#issuecomment-1013286248
Fixes:
-- Network | Resolved an issue on some Armbian based systems where the network interface naming changed unintentionally after a kernel upgrade: https://dietpi.com/phpbb/viewtopic.php?t=10229
+- Network | Resolved an issue on some Armbian based systems where the network interface naming changed unintentionally after a kernel upgrade.
- DietPi-Config | Resolved an issue on RPi where disabling and re-enabling Bluetooth failed, since the hciuart.service cannot be restarted until reboot after it was stopped once. In the same turn, this also resolved an issue in DietPi-PREP where the service is still running after package removal, while trying to disabling it fails as of the missing service file. Many thanks to @Mausy5043 for reporting this issue: https://github.com/MichaIng/DietPi/issues/5435
-- DietPi-Software | Chromium: Resolved an issue on Raspberry Pi Buster systems where the installation failed because of a syntax error. Many thanks to @bbmak for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=10258
+- DietPi-Software | Chromium: Resolved an issue on Raspberry Pi Buster systems where the installation failed because of a syntax error. Many thanks to @bbmak for reporting this issue.
- DietPi-Software | Tor/Unbound: Resolved an issue where IPv6 usage was assumed only based on the dietpi.txt setting instead of on whether IPv6 can really be used for Internet connections. E.g. when a VPN connection is established, usually IPv6 is disabled to prevent IPv6 leaks, without changing the general dietpi.txt setting. Tor and Unbound service starts however fail then, trying to bind to the IPv6 port. If the adapter has an IPv6 address assigned, but no IPv6 default route, binding to the IPv6 port succeeds, but Internet connections via IPv6 are not possible, which isn't better. On the other hand, using IPv4 only while IPv6 is enabled, has no real downsides. Many thanks to @Wgsem for reporting this issue: https://github.com/MichaIng/DietPi/issues/5412
- DietPi-Software | Python 3: Updated the workaround for ARMv6/7 Buster systems where installing numpy or any module which depends on numpy failed. It was accidentally applied only on Raspberry Pi 2 and earlier, while it should have been applied to all ARMv6/7 Buster systems. Additionally, all numpy >=0.21.5 versions are now blocked, since the recent v0.21.6 fails to compile for the same reason.
- DietPi-Software | Single File PHP Gallery: Resolved the failing installation since a new version is available and the old download link has become invalid. Many thanks to @dodo1967 for reporting this issue: https://github.com/MichaIng/DietPi/issues/5415
@@ -412,26 +454,26 @@ New software:
Changes:
- DietPi-Banner | It is now possible to hide the credits section from the DietPi banner. Run "dietpi-banner" to configure its content. Many thanks to @math-gout for contributing this feature: https://github.com/MichaIng/DietPi/pull/5355
-- DietPi-Drive_Manager | Adding an NFS drive now allows to select a specific export from an NFS server, detected via "showmount -e ". Entering a custom path is still possible, including the single slash "/" which was always used before. If the NFS server has no root export defined via "fsid=0", this solves the issue that the full root directory structure is mounted and allows to mount multiple shares from the same server. Many thanks to @bamyasi for doing this suggestion: https://dietpi.com/phpbb/viewtopic.php?t=5488
+- DietPi-Drive_Manager | Adding an NFS drive now allows to select a specific export from an NFS server, detected via "showmount -e ". Entering a custom path is still possible, including the single slash "/" which was always used before. If the NFS server has no root export defined via "fsid=0", this solves the issue that the full root directory structure is mounted and allows to mount multiple shares from the same server. Many thanks to @bamyasi for doing this suggestion.
- DietPi-Drive_Manager | NFS and Samba network drives can now be mounted to any directory on the server, not necessarily below /mnt.
- DietPi-DDNS | It is now possible to select the IP family to associate with your DDNS domain. For new setups, IPv4 is used by default for best compatibility. If you configured your DDNS domain already, no IP family is forced to not change existing behaviour, unless selected explicitly. We recommend to use IPv4 so that your server can be reached with any client from any network, regardless whether client and network support IPv6 or not. Many thanks to @TomBayne for suggesting this feature: https://github.com/MichaIng/DietPi/issues/5354
- DietPi-Software | motionEye: We worked together with other contributors to revive motionEye and port it over to Python 3, which also allowed us to re-enable it on Debian Bullseye systems. It requires further careful testing before a stable release can be done, but common functionality works. We enabled it with a "beta" mark in DietPi-Software. Visit the new home of motionEye, and if you want, contribute or help testing: https://github.com/motioneye-project/motioneye
-- DietPi-Software | Node-RED: The "nodered" service user is now added to the "spi" system group automatically, relevant on Raspberry Pi to grant it access to SPI-attached sensors and similar. Many thanks to @devifast for reporting a related issue: https://dietpi.com/phpbb/viewtopic.php?t=10134
+- DietPi-Software | Node-RED: The "nodered" service user is now added to the "spi" system group automatically, relevant on Raspberry Pi to grant it access to SPI-attached sensors and similar. Many thanks to @devifast for reporting a related issue.
- DietPi-Software | TasmoAdmin: Reduced the downloaded data size from ~150 MiB to ~4 MiB by downloading the runtime files of the latest release only instead of the whole GitHub repository archive.
Fixes:
- NanoPi NEO3 | Resolved an issue where the board became unbootable after an "apt upgrade" because the latest version of the Armbian kernel does not ship a NEO3 device tree anymore. On DietPi upgrade, it is switched to the NanoPi R2 rev00 device tree, which works regarding Ethernet, USB and general GPIO interface: https://forum.armbian.com/topic/20133-nanopi-neo3-dtb-gone-since-linux-dtb-current-rockchip64-22021/
- Raspberry Pi | Resolved an issue where enabling and using onboard WiFi during first run installs was failing if a reboot was done after first run update due to a kernel upgrade. Many thanks to @matteocarnelos for reporting this issue: https://github.com/MichaIng/DietPi/issues/5391
-- Network | Resolved an issue where the systemd network targets could have been reached before the network adapter was even detected. Many thanks to @Totila for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=10167
+- Network | Resolved an issue where the systemd network targets could have been reached before the network adapter was even detected. Many thanks to @Totila for reporting this issue.
- DietPi-WiFi-Monitor | The first default gateway check is now done after the first tick rate interval instead of immediately after service start. This adds another grace period at boot to reduce the chance that the WiFi monitor reconfigures the interface which is just about to be configured for the first time. This should usually not be required, but may help with cases where the initial DHCP lease or WPA authentication time out or fail.
- DietPi-TimeSync | Resolved an issue where the script threw a syntax error where it shouldn't, which however didn't affect functionality. Many thanks to @adminy for reporting this issue: https://github.com/MichaIng/DietPi/issues/5347
- DietPi-Login | Resolved an issue where a prompt about an unsupported SSH client terminal was incorrectly shown. Many thanks to @jahway603 and @Dagon for reporting this issue: https://github.com/MichaIng/DietPi/issues/5341, https://github.com/MichaIng/DietPi/issues/5366
- DietPi-Drive_Manager | Worked around an issue on Bullseye with legacy Linux versions, where exFAT filesystems failed to mount since the exFAT driver for FUSE is not invoked automatically if the native kernel driver is missing. A symlink for "mount.exfat => mount.exfat-fuse" is now created in these cases to force this invocation, and it is removed as fast as due to a kernel upgrade, the native exFAT driver becomes available. Many thanks to @RunningUtes for reporting this issue: https://github.com/MichaIng/DietPi/issues/5166
-- DietPi-Software | Kodi: Resolved an issue on Raspberry Pi Bullseye systems where libraries were missing to run Kodi via KMS/DRM. Many thanks to @derebo for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=10161
-- DietPi-Software | Mopidy: Resolved an issue where there installation failed. Many thanks to @amibumpin for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=10188
+- DietPi-Software | Kodi: Resolved an issue on Raspberry Pi Bullseye systems where libraries were missing to run Kodi via KMS/DRM. Many thanks to @derebo for reporting this issue.
+- DietPi-Software | Mopidy: Resolved an issue where there installation failed. Many thanks to @amibumpin for reporting this issue.
- DietPi-Software | rTorrent: Resolved an issue where the web interface didn't work with Nginx because the PHP handler wasn't set. Many thanks to @vinhtq115 for providing the solution: https://github.com/MichaIng/DietPi/pull/5375
- DietPi-Software | Webmin: Worked around an issue where the install failed. Many thanks to @omavoss for reporting this issue: https://github.com/MichaIng/DietPi/issues/5386
-- DietPi-Software | WireGuard: Resolved an issue where the WireGuard module shipped with the kernel was not detected if it is shipped xz-compressed. Many thanks to @Carbonara for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=10173
+- DietPi-Software | WireGuard: Resolved an issue where the WireGuard module shipped with the kernel was not detected if it is shipped xz-compressed. Many thanks to @Carbonara for reporting this issue.
- DietPi-Software | Chromium: Resolved an issue on Raspberry Pi Bullseye systems where pages did not load but a "Page Unresponsive" error prompt was shown after a while instead, if KMS/DRM was not used. Many thanks to @pastaholic for reporting this issue: https://github.com/MichaIng/DietPi/issues/5342
- DietPi-Software | Nukkit: Resolved an issue where the service failed to start because of an unintended single quote character in the service file. Many thanks to @richardpdunngb for reporting this issue: https://github.com/MichaIng/DietPi/issues/5396
@@ -466,7 +508,7 @@ Changes:
- DietPi-Software | Roon Server: The service now runs as "roonserver" service user instead of as "root" and logs are now done to /var/log/roonserver, i.e. the DietPi-RAMlog by default, aligning with Roon Bridge. The DietPi update does not enforce the migration, but a manual reinstall via "dietpi-software reinstall 154" applies it, while preserving all data and configs. When you do the reinstall, note that Roon remote apps will ask you to login again and unauthorise the connected Roon Server. This is however just a formal step required as of the service user change, while all your settings and libraries appear just the same.
- DietPi-Software | Docker Compose: We migrated from the Python-based v1 to v2, written in Go. Existing installs can be migrated with a manual "dietpi-software reinstall 134". Many thanks to @CommandLineN00b for making us aware of this major Docker Compose upgrade: https://github.com/MichaIng/DietPi/issues/5034
- DietPi-Software | Chromium: It is now easier to autostart Chromium as non-root user, making use of systemd-logind and startx. The related change requires a reinstall of Chromium: dietpi-software reinstall 113
-- DietPi-Software | Deluge: The web interface will now connect to the local Deluge server automatically. Many thanks to @jonyskids for doing this suggestion and @Jappe for providing the solution: https://dietpi.com/phpbb/viewtopic.php?t=10026
+- DietPi-Software | Deluge: The web interface will now connect to the local Deluge server automatically. Many thanks to @jonyskids for doing this suggestion and @Jappe for providing the solution.
- DietPi-Software | Allo GUI: The Allo audiophile web interface received a major version update: It does caching and session storage via APCu memory cache, does not make use of the dedicated "allo" user anymore, and has undergone a bunch of updates, fixes, security hardenings and cleanups, including a database created from scratch. The migration will be done automatically with the DietPi update, which also provides further details. The source code is now hosted on GitHub: https://github.com/MichaIng/DietPi-AlloGUI
Fixes:
@@ -477,12 +519,12 @@ Fixes:
- DietPi-Software | Apache: Resolved an issue on fresh installs where the service failed to start due to a config file syntax error. Many thanks to @Camry2731 for reporting this issue: https://github.com/MichaIng/DietPi/issues/5248
- DietPi-Software | Nextcloud: Resolved an issue where the install on an over 2 GiB RAM system failed. Many thanks to @p4cm4n for reporting this issue: https://github.com/MichaIng/DietPi/issues/5251
- DietPi-Software | Folding@Home: Resolved an issue where reinstalls failed since a removed SysV service is tried to be stopped. Many thanks to @eyduh for reporting this issue: https://github.com/MichaIng/DietPi/issues/5255
-- DietPi-Software | Bazarr: Resolved an issue where the service entered an endless restart loop because of a missing dependency. Many thanks to @alleyu2 for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=10050
+- DietPi-Software | Bazarr: Resolved an issue where the service entered an endless restart loop because of a missing dependency. Many thanks to @alleyu2 for reporting this issue.
- DietPi-Software | Python 3: Worked around an issue on ARMv6/7 Buster systems where installing numpy or any module which depends on numpy failed: https://github.com/piwheels/packages/issues/287
- DietPi-Software | Pydio: Resolved an issue where the data directory was not writeable. Many thanks @holocronology for reporting this issue: https://github.com/MichaIng/DietPi/issues/5274
- DietPi-Software | Jellyfin: Resolved an issue where during install two settings failed to apply since the config file didn't exist yet. Many thanks to @echtfrank for reporting this issue: https://github.com/MichaIng/DietPi/issues/5279
- DietPi-Software | Firefox: Resolved a warning on startup about the missing libpci library, used to detect GPU details. Many thanks to @MDAR for reporting this issue: https://github.com/MichaIng/DietPi/issues/5278#issuecomment-1044381054
-- DietPi-Software | X.Org X Server: Resolved an issue on modern Odroid C2 and NanoPi K2 (Amlogic S905 SoC) images where the X server (desktop) failed to start. Many thanks to all users who reported and helped resolving this issue: https://github.com/MichaIng/DietPi/issues/5234, https://dietpi.com/phpbb/viewtopic.php?t=10078
+- DietPi-Software | X.Org X Server: Resolved an issue on modern Odroid C2 and NanoPi K2 (Amlogic S905 SoC) images where the X server (desktop) failed to start. Many thanks to all users who reported and helped resolving this issue: https://github.com/MichaIng/DietPi/issues/5234
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/5330
@@ -506,7 +548,7 @@ Changes:
- DietPi-Software | Raspotify: This software option has been disabled on Debian Buster systems but enabled for ARMv8 and x86_64 systems, to match the current state of the official Raspotify APT repository.
Fixes:
-- DietPi-Services | Resolved an issue where service edits and process tool settings were not effective as they were stored to the wrong file path. Many thanks to @TopFord and @MicDG for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=41509#p41509
+- DietPi-Services | Resolved an issue where service edits and process tool settings were not effective as they were stored to the wrong file path. Many thanks to @TopFord and @MicDG for reporting this issue.
- DietPi-LetsEncrypt | Resolved an issue where Certbot failed on fresh Apache installs since the 000-default.conf vhost by default does not contain any directive anymore. The ServerName directive with the entered domain name is now added to 000-default.conf instead of apache2.conf, with the benefit that it overrides the global ServerName directive in dietpi.conf, which uses the local IP address only.
- DietPi-Software/DietPi-AutoStart | Chromium: Resolved an issue where the Chromium kiosk autostart option failed on all non-RPi systems.
- DietPi-Software | Roon Extension Manager: It has been disabled for ARMv6 RPi systems where it cannot run currently. Many thanks to @JanKoudijs for applying this fix: https://github.com/MichaIng/DietPi/pull/5231
@@ -519,8 +561,8 @@ Fixes:
- DietPi-Software | OpenBazaar: Since the original project has been taken down, we migrated to a fork which keeps up the marketplace for the community: https://github.com/MichaIng/DietPi/issues/5213
- DietPi-Software | X.Org X Server: Resolved an issue where VMs without KMS/DRM support failed to start the X server, e.g. Hyper-V. The classic framebuffer DDX is now installed when no KMS/DRM support is detected on VMs.
- DietPi-Software | Box86/Box64: Resolved an issue where the install failed when a kernel upgrade has just been done so that the "binfmt_misc" kernel module cannot be found for the loaded kernel.
-- DietPi-Software | RPi-Monitor: Resolved an issue where the CPU temperature was not shown. Many thanks to @KamikazeePL for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=10001
-- DietPi-Software | Home Assistant: Resolved an issue with the latest Home Assistant version where restarting it via web interface made it remaining stopped. The fix is applied to all instances on DietPi update. Many thanks to @jchh for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=10025
+- DietPi-Software | RPi-Monitor: Resolved an issue where the CPU temperature was not shown. Many thanks to @KamikazeePL for reporting this issue.
+- DietPi-Software | Home Assistant: Resolved an issue with the latest Home Assistant version where restarting it via web interface made it remaining stopped. The fix is applied to all instances on DietPi update. Many thanks to @jchh for reporting this issue.
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/5229
@@ -576,7 +618,7 @@ Changes:
- Raspberry Pi | Since Bullseye, some media software titles, most importantly FFmpeg and those which make use of FFmpeg libraries compiled for Raspberry Pi firmware (Kodi, Jellyfin, Chromium), utilise the Raspberry Pi V4L2 codec drivers. Those were previously enabled/disabled with the RPi camera module switch in dietpi-config. The hardware codec drivers have now become an own CLI command and menu switch in the dietpi-config display options and are enabled automatically when one of the mentioned software titles is installed or reinstalled on Bullseye (or above).
- DietPi-Dashboard | On fresh installs, password protection is now enabled by default, using the global software password. You can apply or change this manually by following the instructions in our documentation: https://dietpi.com/docs/software/system_stats/#dietpi-dashboard
- DietPi-Dashboard | The default TCP network port has been changed from 8088 to 5252 to resolve a port conflict with InfluxDB. This does not affect existing installs, but you will be asked whether to apply this change during DietPi update. Many thanks to @blablazzz for reporting this issue: https://github.com/MichaIng/DietPi/issues/4966
-- DietPi-Backup | A backup archive with a selectable amount of backups to keep can be created now. Backups are rotated automatically and if the maximum amount has been reached, the oldest backup is used as basis for the incremental new backup sync, to reduce writes and increase speed. Many thanks to @johnvick and many others for requesting this feature: https://dietpi.com/phpbb/viewtopic.php?t=3593
+- DietPi-Backup | A backup archive with a selectable amount of backups to keep can be created now. Backups are rotated automatically and if the maximum amount has been reached, the oldest backup is used as basis for the incremental new backup sync, to reduce writes and increase speed. Many thanks to @johnvick and many others for requesting this feature.
- DietPi-Backup | Backups can now be stored outside of /mnt into any directory or mount point as long as the filesystem supports symlinks and UNIX permissions.
- DietPi-Software | The file server choice menu has been removed. Most file servers can run concurrently, hence it is not required to remove e.g. a Samba server to install an FTP server, so that a dedicated menu lost its reason. File servers can be selected the regular way via "Browse/Search Software" menus or CLI. The related dietpi.txt setting has been removed for new images as well, but it will still be respected when present. For an automated install with new images, use the "AUTO_SETUP_INSTALL_SOFTWARE_ID" setting instead.
- DietPi-Software | SABnzbd: For fresh installs, file logging has been disabled in favour of journal logging. All service and process logs can hence now be reviewed via: journalctl -u sabnzbd
@@ -592,11 +634,11 @@ Changes:
Fixes:
- Raspberry Pi | Resolved an issue in our images where on first boot two serial login consoles on the generic symlinked and actual serial devices could have been started. This doubled inputs and in turn broke successful username and password login via serial console on first boot. Many thanks to @ad7718 for reporting this issue: https://github.com/MichaIng/DietPi/issues/5014
-- DietPi-Backup | Resolved an issue where backup and restore failed if a non-default backup location is used, as a wrong log file path was used. This is a v7.8 regression. Many thanks to @Malinka for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=39909#p39909
+- DietPi-Backup | Resolved an issue where backup and restore failed if a non-default backup location is used, as a wrong log file path was used. This is a v7.8 regression. Many thanks to @Malinka for reporting this issue.
- DietPi-Config | Resolved an issue where enabling the "odroid-lcd35" LCD panel on Odroids failed as SPI is enabled by default, blocking the same GPIO ports. Many thanks to @MarcProux for reporting this issue: https://github.com/MichaIng/DietPi/issues/4154
- DietPi-Config | Resolved an issue where the network adapter menu did not show the static DNS server(s) effetively applied at first boot based on dietpi.txt settings. Many thanks to @nils-trubkin for reporting this issue: https://github.com/MichaIng/DietPi/issues/5054
- DietPi-Software | Resolved a v7.8 regression where ReadyMedia, Deluge, Sonarr and Jellyfin installs failed with an error on "usermod", since the services were not stopped first. This has been loved via live patches for v7.8 as well.
-- DietPi-Software | Transmission: Resolved a v7.8 regression where on fresh installs the intended configuration was not deployed. Many thanks to @kannz and @alessandro.psrt for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9567, https://dietpi.com/phpbb/viewtopic.php?t=9683
+- DietPi-Software | Transmission: Resolved a v7.8 regression where on fresh installs the intended configuration was not deployed. Many thanks to @kannz and @alessandro.psrt for reporting this issue.
- DietPi-Software | SABnzbd: Resolved an issue where installs failed on ARMv6 and ARMv7 Stretch systems. Many thanks to @bensp for reporting this issue: https://github.com/MichaIng/DietPi/issues/4997
- DietPi-Software | Deluge: Worked around an issue on Raspberry Pi ARMv6 userland systems where the service failed to start. Deluge has hence been re-enabled for this systems. Many thanks to @themagicbullet for providing the workaround: https://github.com/MichaIng/DietPi/issues/4944
- DietPi-Software | UnRAR: Resolved an issue on Raspberry Pi 1 an Zero (1) where an incompatible "unrar" binary was installed. "unrar-free" from Raspbian is installed now on these models, but note that it does not fully support all RAR formats and may hence fail to extract archives in some cases.
@@ -612,7 +654,7 @@ v7.8
New SBC support:
- Radxa Zero | Initial support for this Raspberry Pi Zero form factored (but way more powerful) SBC has been added to DietPi with the hardware ID 74. Many thanks to @almirus and @dhry for helping with testing and debugging an early image: https://github.com/MichaIng/DietPi/issues/4831
-- Raspberry Pi Zero 2 W | Initial support for this Raspberry Pi Zero/Zero W successor has been added, using hardware ID 3 for now (shared with RPi 3/3+), including overclocking profiles. Many thanks to @CassTG for providing early hardware information and doing intensive overclocking tests: https://dietpi.com/phpbb/viewtopic.php?t=9599
+- Raspberry Pi Zero 2 W | Initial support for this Raspberry Pi Zero/Zero W successor has been added, using hardware ID 3 for now (shared with RPi 3/3+), including overclocking profiles. Many thanks to @CassTG for providing early hardware information and doing intensive overclocking tests.
Removed SBC support:
- Odroid N1 | There is not a single reported DietPi Odroid N1 system, which makes sense as this model was never really released. Only a small number of developer samples are floating around, not worth to keep maintaining an image and dedicated code. If there are unreported Odroid N1 DietPi systems out there, they will be automatically migrated to the Generic Rockchip RK3399 device ID on DietPi update.
@@ -650,7 +692,7 @@ Fixes:
- DietPi-Software | LXDE: Resolved an issue where the Firefox browser panel icon was present even if no Firefox was installed. In this case now either Chromium or the text editor is added as replacement.
- DietPi-Software | Home Assistant: Resolved an issue where the install failed on ARMv6/ARMv7 Bullseye systems.
- DietPi-Software | Tor Relay: This software option has been disabled on Stretch. The Tor package shipped by the Debian Stretch repository is too old to support required protocols of the Tor network, when running a relay. Many thanks to @cptechnik for reporting this issue: https://github.com/MichaIng/DietPi/issues/4925
-- DietPi-Software | Deluge: Resolved an issue where on fresh installs the services failed due to an invalid config file syntax. Many thanks to @bookedirl for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9553
+- DietPi-Software | Deluge: Resolved an issue where on fresh installs the services failed due to an invalid config file syntax. Many thanks to @bookedirl for reporting this issue.
- DietPi-Software | Deluge: As the package from Raspbian Bullseye currently fails, we needed to disable Deluge for Raspberry Pi systems with ARMv6 Bullseye image. The bug has been reported to the Raspbian maintainers and we hope for a fix until next DietPi release: https://github.com/MichaIng/DietPi/issues/4944
- DietPi-Software | Lighttpd: Resolved an issue where reinstalls on a Bullseye system with DietPi-LetsEncrypt used, erroneously enabled an SSL configuration which could prevent the service start.
@@ -679,7 +721,7 @@ Changes:
- DietPi-Software | Deluge: On fresh installs, the web interface is now accessible as expected with the chosen global software password, stored hashed with a fresh random salt. Previously the password was hardcoded to "dietpi".
- DietPi-Software | Kodi: On Debian Bullseye, with Kodi 19, GBM support is present by default, which means that Kodi can be started without a wrapping X server. This is now done by default when starting Kodi outside of a desktop session, including the dietpi-autostart option. This also means that an X server is not installed anymore as a dependency of Kodi, but only as a dependency of a desktop environment.
- DietPi-Software | Kodi: It can now be installed on all devices. In some cases, video playback performance may be bad, depending on the GPU, whether good drivers are available, and on the video quality, of course. However, it should be our users who evaluate whether it's sufficient or not, instead of us. With Debian Bullseye, new Mesa drivers and Kodi 19 started via GBM, performance should be much better than it was with older Debian/package versions.
-- DietPi-Software | File Browser: The default network port has been changed to 8084 to resolve a conflict with HTPC Manager. This only affects new File Browser installs. Many thanks to @KamikazeePL for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9507
+- DietPi-Software | File Browser: The default network port has been changed to 8084 to resolve a conflict with HTPC Manager. This only affects new File Browser installs. Many thanks to @KamikazeePL for reporting this issue.
Fixes:
- General | Since the Armbian repository router does not reliably preserves HTTPS on redirects yet, APT by times fails when detecting a downgrade from HTTPS to HTTP. We hence change the armbian.list to use plain HTTP until the issues with the router have been resolved.
@@ -687,16 +729,16 @@ Fixes:
- General | Applied a workaround on Bullseye systems with older Linux versions (v4.14 and below) which do not sufficiently support the new "unified cgroup hierarchy" (a.k.a. cgroups-v2). Since the newer systemd tries to use it automatically, Docker and similar software which make use of cgroups fail. For devices with known boot configuration file, the kernel command line arguments are applied to force the legacy cgroups hierarchy usage.
- DietPi-Backup | Resolved an issue where clearing the PATH cache via "hash" command did not work as of a wrong command line argument: https://github.com/MichaIng/DietPi/issues/4800
- DietPi-LetsEncrypt | Resolved an issue where the script failed when ownCloud or Nextcloud were installed. Many thanks to @billouetaudrey for reporting this issue: https://github.com/MichaIng/DietPi/issues/4752
-- DietPi-JustBoom | Resolved an issue where applying some MPD settings did not work. Many thanks to @elevader for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9426
+- DietPi-JustBoom | Resolved an issue where applying some MPD settings did not work. Many thanks to @elevader for reporting this issue.
- DietPi-Config | Resolved an issue where the WiFi connection state could have been obtained falsely as accidentally the Ethernet interface index was used to derive it.
- DietPi-Config | Resolved an issue on NanoPi NEO (and likely other Allwinner H3 SBCs) where selecting a sound card failed as an invalid control was tried to be set. Many thanks to @VS-X for reporting this issue: https://github.com/MichaIng/DietPi/issues/4833
-- DietPi-Software | Resolved an issue where software services failed with a cryptic error message, when an expected directory was not present. This was especially reported with Sonarr and Radarr, if their log directory was missing for some reason. When directories are missing, which are explicitly listed to be read-writeable within the systemd service, systemd prints "Failed at step NAMESPACE spawning", while Sonarr and Radarr themselves would print a clearer error message about the missing log directory. Many thanks to @stevewitz for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9463
-- DietPi-Software | Lighttpd: Resolved an issue where the upgrade from Buster to Bullseye, following our guide, fails if HTTPS was enabled via DietPi-LetsEncrypt before. Many thanks to @fhals for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9477
-- DietPi-Software | Kodi: Resolved an issue on RPi ARMv8/64-bit systems where Kodi fails to start when it was installed without a desktop. Many thanks to @Klola for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=38079#p38079
+- DietPi-Software | Resolved an issue where software services failed with a cryptic error message, when an expected directory was not present. This was especially reported with Sonarr and Radarr, if their log directory was missing for some reason. When directories are missing, which are explicitly listed to be read-writeable within the systemd service, systemd prints "Failed at step NAMESPACE spawning", while Sonarr and Radarr themselves would print a clearer error message about the missing log directory. Many thanks to @stevewitz for reporting this issue.
+- DietPi-Software | Lighttpd: Resolved an issue where the upgrade from Buster to Bullseye, following our guide, fails if HTTPS was enabled via DietPi-LetsEncrypt before. Many thanks to @fhals for reporting this issue.
+- DietPi-Software | Kodi: Resolved an issue on RPi ARMv8/64-bit systems where Kodi fails to start when it was installed without a desktop. Many thanks to @Klola for reporting this issue.
- DietPi-Software | Deluge: Resolved an issue on Bullseye where the web interface service did not start as a new command line flag "-d" is required to keep it in foreground. Many thanks to @quyentruong for reporting this issue: https://github.com/MichaIng/DietPi/issues/4785
- DietPi-Software | Home Assistant: The Python version compiled with Home Assistant has been bumped to v3.9.7, which resolves and issue with installs on 32-bit ARM systems. Many thanks to @Przemek for reporting this issue: https://github.com/MichaIng/DietPi/issues/4372#issuecomment-936656595
- DietPi-Software | Home Assistant: Resolved an issue where Home Assistant did not start on ARM systems due to newly required runtime libraries.
-- DietPi-Software | Chromium: Resolved an issue where the autostart option didn't work if Chromium was installed without a desktop. Many thanks to @jowelboy for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9531
+- DietPi-Software | Chromium: Resolved an issue where the autostart option didn't work if Chromium was installed without a desktop. Many thanks to @jowelboy for reporting this issue.
- DietPi-Software | Chromium: Resolved an issue on RPi where starting Chromium failed if no desktop was installed, due to a missing dependency. Many thanks to @Loader23 for reporting this issue: https://github.com/MichaIng/DietPi/issues/4782
- DietPi-Software | X.Org X Server: Resolved an issue with Odroid N2 and C4 models where the installation failed because of a typo. Many thanks to @wiml for reporting this issue: https://github.com/MichaIng/DietPi/issues/4830
- DietPi-Software | Airsonic: Since the project has been archived and does not support Java 17, it has been disabled on Bullseye. We're watching a fork (https://github.com/airsonic-advanced/airsonic-advanced) which is actively developed and which is Java 17 compatible. We currently still face some major issues so that we needed to postpone the migration. Many thanks to @Andaloup for reporting this issue: https://github.com/MichaIng/DietPi/issues/4847
@@ -738,7 +780,7 @@ Fixes:
- DietPi-Software | LXDE: Resolved an issue on Bullseye where some icon themes could not be applied due to a missing SVG library. Many thanks to @pinipon for reporting the issue and solution: https://github.com/MichaIng/DietPi/issues/4687
- DietPi-Software | LXDE: Resolved an issue where the hotkey setup didn't work because of a missing openbox plugin. Many thanks to @pinipon for reporting the issue and solution: https://github.com/MichaIng/DietPi/issues/4687
- DietPi-Software | Blynk: Resolved an issue where the log directory may be missing, which breaks the service start, when the userdata were migrated from one system to a new one. Many thanks to @Phil1988 for reporting this issue: https://github.com/MichaIng/DietPi/issues/4721
-- DietPi-Software | qBittorrent: Resolved an issue on Bullseye systems where login to the web interface was not possible with the global software password since the required hash algorithm has changed. Many thanks to @aftensleuk for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=22564#p22564
+- DietPi-Software | qBittorrent: Resolved an issue on Bullseye systems where login to the web interface was not possible with the global software password since the required hash algorithm has changed. Many thanks to @aftensleuk for reporting this issue.
- DietPi-Software | ReadyMedia: Resolved an issue on Bullseye where the service does not start unless the log directory is manually created. Due to a Debian package patch, on Bullseye logs are forced to file logging again, so that /var/log/minidlna again needs to exist. Many thanks to @AnzoP for reporting this issue: https://github.com/MichaIng/DietPi/issues/4745
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/4747
@@ -766,7 +808,7 @@ Fixes:
- DietPi-Software | Java JRE: Resolved an issue where the install failed on Raspbian Bullseye systems, since Raspbian has no compiled Java 17 packages yet.
- DietPi-Software | VSCodium: Added the missing dependency on ALSA for cases where no desktop is installed and VSCodium is started as standalone X server session. Many thanks to @Gill-Bates for reporting this issue: https://github.com/MichaIng/DietPi/issues/4610
- DietPi-Software | Bazarr: Resolved an issue where the install failed, as assets have been moved into an own repository, bundled with now release downloads. Many thanks to @psi5asp for reporting this issue: https://github.com/MichaIng/DietPi/issues/4615
-- DietPi-Software | phpSysInfo: Resolved an issue where the install failed because of a changed download URL. Many thanks to @robex for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9278
+- DietPi-Software | phpSysInfo: Resolved an issue where the install failed because of a changed download URL. Many thanks to @robex for reporting this issue.
- DietPi-Software | LXDE: Resolved an issue on Raspberry Pi Bullseye systems, where the install failed. Many thanks to @ravenclaw900 for reporting this issue: https://github.com/MichaIng/DietPi/issues/4555#issuecomment-898780672
- DietPi-Software | PiJuice: Resolved an issue where the install failed on Bullseye systems. Many thanks for reporting this issue: https://github.com/MichaIng/DietPi/issues/4643
- DietPi-Software | LXQt: Resolved an issue where the install failed on Bullseye systems. Many thanks to @LieDanG for reporting this issue: https://github.com/MichaIng/DietPi/issues/4656
@@ -828,7 +870,7 @@ Removed Software:
- Tomcat 8 | Tomcat version 8 is available until Debian Stretch only, from Buster on it's Tomcat 9. There is no reasonable configuration that DietPi-Software can do on top of installing the APT package, which can be easily done manually via "apt install tomcat9". The software option is hence removed from DietPi-Software, in favour of a manual package install.
Fixes:
-- DietPi-JustBoom | Resolved an issue where the equalizer was always shown as "Off" even when it was just or previously enabled (v7.2 regression). Many thanks to @shao for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=35072#p35072
+- DietPi-JustBoom | Resolved an issue where the equalizer was always shown as "Off" even when it was just or previously enabled (v7.2 regression). Many thanks to @shao for reporting this issue.
- DietPi-Drive_Manager | Resolved an issue where network drives were detected as physical drives (v7.2 regression). Many thanks to @maartenlangeveld for reporting this issue: https://github.com/MichaIng/DietPi/issues/4479
- DietPi-Software | Resolved an issue where with AUTO_SETUP_AUTOMATED=1 the OpenSSH client was always installed on first boot, even if it was not requested.
- DietPi-Software | Node-RED: Resolved an issue where the Python 3 RPi.GPIO module was tried to be installed as dependency on non-RPi devices (v7.2 regression). Many thanks to @TheAdminFrmoHell for reporting this issue: https://github.com/MichaIng/DietPi/issues/4478
@@ -869,29 +911,29 @@ Removed Software:
- LibSSL1.0.0 | This old library was kept for backwards-compatibility with old binaries but is not required anymore for any binary installed by DietPi-Software. It has hence been removed from the software list.
Fixes:
-- Odroid XU4 | Resolved an issue where installs and possibly other tasks hang, because the device ran out of entropy. All Odroid XU4 system will have the unsupported hardware random generator daemon removed and the software HAVEGE daemon installed instead for entropy generation. Many thanks to @Speeedfire for reporting this issue: https://github.com/MichaIng/DietPi/issues/4318
+- Odroid XU4 | Resolved an issue where installs and possibly other tasks hang, because the device ran out of entropy. All Odroid XU4 system will have the unsupported hardware random generator daemon removed and the software HAVEGE daemon installed instead for entropy generation. Many thanks to @szabolcs-toth for reporting this issue: https://github.com/MichaIng/DietPi/issues/4318
- DietPi-Banner | Resolved an issue where the MOTD was not updated via daily cron job, if the banner settings have not been changed yet, hence no config file exists. Since the MOTD is enabled by default, it needs to be updated as well if the config file does not exist. Many thanks to @gorby-pranata for helping us discovering this issue: https://github.com/MichaIng/DietPi/pull/4292#issuecomment-830787256
-- DietPi-Banner | Resolved an issue where DietPi-VPN stats could not be shown due to a false file path. Many thanks to @sl002 for reporting this issue: https://github.com/MichaIng/DietPi/issues/4354
+- DietPi-Banner | Resolved an issue where DietPi-VPN stats could not be shown due to a false file path. Many thanks to @Maggus101 for reporting this issue: https://github.com/MichaIng/DietPi/issues/4354
- DietPi-Banner and DietPi-VPN | Resolved an issue where the WAN IP could not be derived, as the external API service we used has server issues by times. We switched to a (hopefully) more reliable one with higher rate limit as well, until we find time to host an own GeoIP API. Many thanks to @maartenlangeveld for reporting this issue: https://github.com/MichaIng/DietPi/issues/4393
- DietPi-Update | Resolved an issue where updating from DietPi v6.16 or older did not complete as intended. Many thanks to @orotarobas for reporting this issue: https://github.com/MichaIng/DietPi/issues/4385
-- DietPi-Drive_Manager | Resolved an issue where NTFS (and potentially other) filesystems were not detected correctly, leading to failing mount attempts at boot. Many thanks to @NoLifer for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8971
+- DietPi-Drive_Manager | Resolved an issue where NTFS (and potentially other) filesystems were not detected correctly, leading to failing mount attempts at boot. Many thanks to @NoLifer for reporting this issue.
- DietPi-Drive_Manager | Resolved an issue where info for drives with a systemd.automount unit was not detected correctly, leading to invalid fstab entries. Many thanks to @cocoflan and @BillyCorgan1 for reporting this issue: https://github.com/MichaIng/DietPi/issues/4339
-- DietPi-JustBoom | Resolved an issue where the equalizer had no effect in some cases. Many thanks to @zackdvd for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8992
+- DietPi-JustBoom | Resolved an issue where the equalizer had no effect in some cases. Many thanks to @zackdvd for reporting this issue.
- DietPi-LetsEncrypt | Resolved an issue with Lighttpd, where lighty-enable-mod or lighty-disable-mod failed, if the related config was already enabled or disabled, respectively. Many thanks to @staxfax for reporting this issue: https://github.com/MichaIng/DietPi/issues/4336
- DietPi-Config | Resolved an issue where changing the locale generated it but did not apply it as new system default. Many thanks to @bamyasi for reporting the issue: https://github.com/MichaIng/DietPi/issues/3515#issuecomment-840751875
-- DietPi-Software | Python 3: Resolved an issue where installing pip on Stretch systems failed, due to a changed download URL. Many thanks to @tfmeier for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8968
-- DietPi-Software | Webmin: Resolved an issue where restarts from the web interface only stopped the service. Many thanks to @Burgess85 and @Keridos for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8839, https://github.com/MichaIng/DietPi/pull/4331
-- DietPi-Software | Docker Compose: Resolved an issue on ARMv8 Debian Stretch systems, where the install failed because of missing development headers. Many thanks to @tfmeier for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=34293#p34293
+- DietPi-Software | Python 3: Resolved an issue where installing pip on Stretch systems failed, due to a changed download URL. Many thanks to @tfmeier for reporting this issue.
+- DietPi-Software | Webmin: Resolved an issue where restarts from the web interface only stopped the service. Many thanks to @Burgess85 and @Keridos for reporting this issue: https://dietpi.com/forum/t/webmin/5145, https://github.com/MichaIng/DietPi/issues/4327
+- DietPi-Software | Docker Compose: Resolved an issue on ARMv8 Debian Stretch systems, where the install failed because of missing development headers. Many thanks to @tfmeier for reporting this issue.
- DietPi-Software | rTorrent: Resolved an issue where pre-v7.1 reinstalls with Lighttpd did not update the webserver configuration to provide the new RPC socket proxy. Many thanks to @bbsixzz for reporting this issue: https://github.com/MichaIng/DietPi/issues/4330
- DietPi-Software | rTorrent: Resolved an issue where v7.1 reinstalls failed. Many thanks to @Joulinar for fixing it.
- DietPi-Software | Radarr: Resolved an issue where an older fallback version was installed, rather than the latest one. Many thanks to @Takerman for reporting this issue: https://github.com/MichaIng/DietPi/issues/4350
-- DietPi-Software | Node.js: Resolved an issue on ARMv6 where installing further modules via web interface failed, as an incompatible Node.js version was installed. The latest Node.js version is now installed via unofficial builds (see changes above). Many thanks to @torwan for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8944
+- DietPi-Software | Node.js: Resolved an issue on ARMv6 where installing further modules via web interface failed, as an incompatible Node.js version was installed. The latest Node.js version is now installed via unofficial builds (see changes above). Many thanks to @torwan for reporting this issue.
- DietPi-Software | RPi Cam Web Interface: Resolved two issues: Reinstalls failed when certain files in the web interface existed already and the shutdown and reboot buttons from the web interface failed due to insufficient webserver permissions.
-- DietPi-Software | Kodi: Resolved an issue where an attempt was made during install to create a desktop entry, even if no desktop environment was installed. Many thanks to @sidgeg for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8995
+- DietPi-Software | Kodi: Resolved an issue where an attempt was made during install to create a desktop entry, even if no desktop environment was installed. Many thanks to @sidgeg for reporting this issue.
- DietPi-Software | Bitwarden_RS: This project has been renamed by its author into "vaultwarden", to avoid confusion and potential legal issues with original Bitwarden software. This caused our install option to fail. To apply this important change to all Bitwarden_RS instances, it will be migrated via reinstall during DietPi update. As compiling can take up to several hours, users are informed at the beginning of the DietPi update, with the option to cancel and apply it at a later time. All data and configs will be preserved during the reinstall. Many thanks to @math-gout for informing us about this change: https://github.com/MichaIng/DietPi/issues/4325
- DietPi-Software | Home Assistant: Resolved an issue where the install failed, as running "pyenv init -" does not complement the PATH variable anymore.
- DietPi-Software | Mosquitto: Resolved an issue where the install failed on ARMv8 systems. Many thanks to @fra87 for reporting this issue: https://github.com/MichaIng/DietPi/issues/4424
-- DietPi-Software | Kodi: Resolved an issue on 64-bit RPi systems, where starting Kodi outside of a desktop session (e.g. using the Kodi dietpi-autostart option) failed, as our script tried to start it without X server (intended on 32-bit RPi systems). Many thanks to @Milemar for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=9030
+- DietPi-Software | Kodi: Resolved an issue on 64-bit RPi systems, where starting Kodi outside of a desktop session (e.g. using the Kodi dietpi-autostart option) failed, as our script tried to start it without X server (intended on 32-bit RPi systems). Many thanks to @Milemar for reporting this issue.
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/4422
@@ -914,7 +956,7 @@ Changes:
- DietPi-FS_partition_resize | Added support to automatically resize F2FS and Btrfs filesystems on first boot.
- DietPi-Drive_Manager | Added support for resizing F2FS and Btrfs filesystems as well as format- and filesystem check & repair support for XFS filesystems.
- DietPi-Drive_Manager | When adding Samba mounts, credentials are not added in plain text to /etc/fstab anymore, but stored instead in a separate per-mount credential file with strict root-only read permissions. Many thanks to @TheOriginalMrWolf for doing this suggestion: https://github.com/MichaIng/DietPi/issues/4082
-- DietPi-Config | Added a safe overclocking profile for RPi 3+ models. Many thanks to @lone for doing long-term stability tests and reporting back the result: https://dietpi.com/phpbb/viewtopic.php?p=32285#p32285
+- DietPi-Config | Added a safe overclocking profile for RPi 3+ models. Many thanks to @lone for doing long-term stability tests and reporting back the result.
- DietPi-Config | When disabling the RPi camera feature, the bcm2835_isp kernel module is now additionally blacklisted. Since kernel 5.X it is otherwise loaded automatically and pulls in the whole camera modules stack as dependency, adding some additional memory usage and boot overhead. Many thanks to @ferbar for making us aware of this: https://github.com/MichaIng/DietPi/issues/4203
- DietPi-Software | The "optimised" and "additional" software menus have been merged. The separation did not follow consistent rules and this change allows us to have development tools and platforms in a more prominent position. Also it simplifies the software selection and addresses possible confusion about that separation among our users.
- DietPi-Software | Since multiple software titles were listening on the ports 5000 and 8000, the default ports of those titles have been changed to avoid conflicts on concurrent installs. No change is done during the DietPi update, even a software title reinstall won't change it, in most cases. For details see the individual software changes below.
@@ -950,21 +992,21 @@ Fixes:
- DietPi-Drive_Manager | Fixed detection and visualisation of loop devices in menu.
- DietPi-Set_userdata | When dietpi_userdata was moved to another drive, the intended dietpi:dietpi ownership was not applied to the target directory as intended. This is required by some software titles, like Syncthing and file servers, to permit the creation of files and directories. Many thanks to @redschumi for reporting this issue: https://github.com/MichaIng/DietPi/issues/4228
- DietPi-Config | Worked around an issue in RPi, where selecting a sound card ended with an error prompt in certain circumstances. Many thanks to @sturbs for reporting this issue: https://github.com/MichaIng/DietPi/issues/4306
-- DietPi-Software | Resolved an issue where the "uninstall" command did not work and the "reinstall" did not show the intended backup prompt. Many thanks to @Zeuskk for reporting this v7.0 regression: https://dietpi.com/phpbb/viewtopic.php?t=8729
+- DietPi-Software | Resolved an issue where the "uninstall" command did not work and the "reinstall" did not show the intended backup prompt. Many thanks to @Zeuskk for reporting this v7.0 regression.
- DietPi-Software | Resolved an issue where directory permissions could be wrong because of 7zr overriding the default umask. This lead e.g. to 403 browser error on a fresh Single File PHP Gallery install. Many thanks to @Alexgolshtein for reporting this issue: https://github.com/MichaIng/DietPi/issues/4251
-- DietPi-Software | X.Org X Server: Resolved an issue on RPi where the X server start failed when the KMS device tree overlay was not enabled. Many thanks to @xthedakmanx for reporting this issue: https://github.com/MichaIng/DietPi/issues/4175
-- DietPi-Software | LXDE: Resolved an issue where after installing LXDE, the system booted into the LightDM desktop login mask automatically, even if desktop autologin was not chosen via dietpi-autostart. Many thanks to @manilx for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8766
+- DietPi-Software | X.Org X Server: Resolved an issue on RPi where the X server start failed when the KMS device tree overlay was not enabled. Many thanks to @NightLink42 for reporting this issue: https://github.com/MichaIng/DietPi/issues/4175
+- DietPi-Software | LXDE: Resolved an issue where after installing LXDE, the system booted into the LightDM desktop login mask automatically, even if desktop autologin was not chosen via dietpi-autostart. Many thanks to @manilx for reporting this issue.
- DietPi-Software | Portainer: Resolved an issue where the uninstall failed, if the container or image was removed manually before, or not found for a different reason. Many thanks to @redschumi for reporting this issue: https://github.com/MichaIng/DietPi/issues/4224
- DietPi-Software | IceCast: Resolved an issue where DarkIce fails to connect to IceCast by default, due to an invalid hostname in its config.
- DietPi-Software | Koel: Resolved issues which caused a failing install, caused by changed archive directory names and changed Laravel dependencies.
- DietPi-Software | myMPD: Resolved an issue where the service fails to start because of a renamed setting. Many thanks to @sofad for reporting this issue: https://github.com/MichaIng/DietPi/issues/4256
-- DietPi-Software | O!MPD: Resolved an issue where browsing the media directory from the web UI failed because of a missing slash in the local config file. Many thanks to @pinkdot for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8904
+- DietPi-Software | O!MPD: Resolved an issue where browsing the media directory from the web UI failed because of a missing slash in the local config file. Many thanks to @pinkdot for reporting this issue.
- DietPi-Software | Kodi: Worked around an issue on 64-bit RPi systems, where the wrong Kodi package is tried to be installed, causing an APT failure. Many thanks to @mmnpkf for reporting this issue: https://github.com/MichaIng/DietPi/issues/4194
- DietPi-Software | Chromium: Worked around an issue on 64-bit RPi systems, where the install failed, as The Raspberry Pi repository does not ship a 64-bit build yet. The Chromium package from the Debian repository is now installed instead.
- DietPi-Software | Sonarr/Radarr: Having both now installed as v3 or later, resolves a long outstanding issue, where importing downloads to filesystems without native UNIX permissions support, including Samba/CIFS mounts, failed.
-- DietPi-Software | WebIOPi: Resolved an issue where the GPIO pins could not be toggled via web interface by moving to a newer fork of this project. This additionally enabled us to run it with Python 3 and enable it on RPi 3 and RPi 4 models. Many thanks to @torwan for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8945
-- DietPi-Software | Plex Media Server: Resolved an issue where secure remote access via app.plex.tv did not work if Unbound with DNS rebinding protection is installed. Many thanks to @danmo117 for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8896
-- DietPi-Software | MATE: Resolved an issue where DietPi menu and desktop shortcuts could not be started, as the MATE terminal emulator is not compatible with the "start in console" flag of desktop shortcuts. xterm is now installed together with MATE, to replace the default terminal emulator. Many thanks to @maya95 for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8949
+- DietPi-Software | WebIOPi: Resolved an issue where the GPIO pins could not be toggled via web interface by moving to a newer fork of this project. This additionally enabled us to run it with Python 3 and enable it on RPi 3 and RPi 4 models. Many thanks to @torwan for reporting this issue.
+- DietPi-Software | Plex Media Server: Resolved an issue where secure remote access via app.plex.tv did not work if Unbound with DNS rebinding protection is installed. Many thanks to @danmo117 for reporting this issue.
+- DietPi-Software | MATE: Resolved an issue where DietPi menu and desktop shortcuts could not be started, as the MATE terminal emulator is not compatible with the "start in console" flag of desktop shortcuts. xterm is now installed together with MATE, to replace the default terminal emulator. Many thanks to @maya95 for reporting this issue.
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/4305
@@ -1000,18 +1042,18 @@ New Software:
Fixes:
- Audio | Resolved a bug with Debian Buster, where the ALSA state daemon was always running, even when it was not configured.
-- DietPi-Globals | G_OBTAIN_CPU_TEMP: Negative temperatures are not trusted anymore, "N/A" will be printed instead. This allows a generic approach to fix/allow temperature estimation on further SBC models. Many thanks to @Thanapat for reporting a related issue on Roseapple Pi: https://dietpi.com/phpbb/viewtopic.php?t=8677
+- DietPi-Globals | G_OBTAIN_CPU_TEMP: Negative temperatures are not trusted anymore, "N/A" will be printed instead. This allows a generic approach to fix/allow temperature estimation on further SBC models. Many thanks to @Thanapat for reporting a related issue on Roseapple Pi.
- DietPi-Set_swapfile | Resolve an issue where "zram"/"zram0" dietpi.txt path entries were dropped, when running the script without input arguments. This especially broke applying zram-swap on first boot. Many thanks to @Dr0bac for reporting this issue: https://github.com/MichaIng/DietPi/issues/4002
- DietPi-Software | Bitwarden_RS: Resolved an issue where the self-signed TLS certificate could not be imported on iOS. To apply this fix to an existing instance, the configuration file "/mnt/dietpi_userdata/bitwarden_rs/bitwarden_rs.env" needs to be removed or moved to a different location, so "dietpi-software reinstall 183" will re-create the configuration and TLS certificate.
- DietPi-Software | Unbound: Resolved an issue where during install in combination with Pi-hole the service restart could have failed. Many thanks to @Ernstian for reporting this issue: https://github.com/MichaIng/DietPi/issues/2409#issuecomment-739154892
- DietPi-Software | Unbound: Resolved an issue where the service start failed if the host system had a local IP address outside of the 192.168.0.0/16 subnet. Many thanks to @faxesystem for reporting this issue: https://github.com/MichaIng/DietPi/issues/2409#issuecomment-749174984
- DietPi-Software | ReadyMedia: Resolved an issue where the media library was not rescanned on service start.
-- DietPi-Software | WiFi Hotspot: Resolved an issue where the install on Armbian-based images with RTL8188C* WiFi chip failed. Many thanks to @smogan71 for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8523
+- DietPi-Software | WiFi Hotspot: Resolved an issue where the install on Armbian-based images with RTL8188C* WiFi chip failed. Many thanks to @smogan71 for reporting this issue.
- DietPi-Software | Medusa: This software option has been disabled on Stretch systems, since it now requires Python >=3.6, which is not available in the Debian Stretch repository. If you run Medusa on a Stretch system, it will continue to work, but updating will either not be possible or break it. Many thanks to @aermak for reporting this issue: https://github.com/MichaIng/DietPi/issues/3991
-- DietPi-Software | WiringPi: Resolved an issue where the install failed, if the /usr/local/bin directory was not present. Many thanks to @bruz for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8609
-- DietPi-Software | PaperMC: Resolved an issue where the install failed due to changed download URLs and stabilised service start and config creation by setting the Java heap size and allowing more time for the startup on smaller SBCs. Many thanks to @omavoss for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=30191#p30191
+- DietPi-Software | WiringPi: Resolved an issue where the install failed, if the /usr/local/bin directory was not present. Many thanks to @bruz for reporting this issue.
+- DietPi-Software | PaperMC: Resolved an issue where the install failed due to changed download URLs and stabilised service start and config creation by setting the Java heap size and allowing more time for the startup on smaller SBCs. Many thanks to @omavoss for reporting this issue.
- DietPi-Software | OpenTyrian: The install option has been disabled on x86_64, since the Debian package comes with a different file structure and it has been disabled on 64-bit RPi systems, since the binary has been compiled for armhf.
-- DietPi-Software | Domoticz: Resolved an issue where saving custom scripts and starting with a template did not work. Many thanks to @tec13 for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8627
+- DietPi-Software | Domoticz: Resolved an issue where saving custom scripts and starting with a template did not work. Many thanks to @tec13 for reporting this issue.
- DietPi-Software | Resolved an issue where for ruTorrent, Koel and Bitwarden_RS the automatic newest version detection failed and instead a possibly older fallback was used. Many thanks to @kelvmod for reporting this issue: https://github.com/MichaIng/DietPi/issues/4105
- DietPi-Software | LXQt: Resolved visual issues with our default configuration of Debian Buster, drastically simplified and cleaned up the files we ship.
- DietPi-Software | SABnzbd: Resolved an issue on Stretch where the install failed due to raised minimum Python version with SABnzbd v3.2.0. If Python 3.5 is installed, SABnzbd v3.1.1 will be installed now to allow keeping the install option enabled for now. Many thanks to @19eighties for reporting this issue: https://github.com/MichaIng/DietPi/issues/2762#issuecomment-787118995
@@ -1026,7 +1068,7 @@ v6.34
Changes / Improvements / Optimisations:
- Raspberry Pi 400 | Correct detection for this new Raspberry Pi model has been added.
- DietPi-Globals | In DietPi scripts, the PATH variable is now overwritten with the Debian/bash system default to assure that no broken or manipulated PATH can be passed via e.g. "su" or "sudo -E". This means that overrides must be placed in /usr/local/(s)bin now, which as well was the only save location for system-wide overrides before. Many thanks to @tandy-1000 for reporting a related issue: https://github.com/MichaIng/DietPi/issues/3873
-- DietPi-Set_swapfile | Hardened permissions of the /dev/zram0 zram-swap device to be only accessible by root user (mode 0600) and interpret input argument "/dev/zram0" and "zram0" as zram-swap as well, aside of "zram" only. Many thanks to @hansjuergenmay for reporting a related issue: https://github.com/MichaIng/DietPi/issues/3869
+- DietPi-Set_swapfile | Hardened permissions of the /dev/zram0 zram-swap device to be only accessible by root user (mode 0600) and interpret input argument "/dev/zram0" and "zram0" as zram-swap as well, aside of "zram" only. Many thanks to @mennerausr for reporting a related issue: https://github.com/MichaIng/DietPi/issues/3869
- DietPi-NordVPN | A function has been added update the NordVPN server list, e.g. when new servers are available that are closer to your location.
- DietPi-JustBoom | The ALSA equalizer settings are not stored to /var/lib/dietpi/dietpi-config/.alsaequal.bin where all users/services can read it and all members of the "dietpi" group (or root) can create and write to it. Many thanks to @wowcut for reporting this issue: https://github.com/MichaIng/DietPi/issues/3950
- DietPi-CloudShell | Several enhancements have been applied. The autostart option now runs the script in foreground, which means that it can always be terminated via "CTRL+C" from an attached keyboard. The original sized font is now restored on exit and terminal settings reset. Also the menu has gone through some fine tuning, showing current settings hopefully a bid more outstanding.
@@ -1039,7 +1081,7 @@ Changes / Improvements / Optimisations:
- DietPi-Software | Single File PHP Gallery: Updated new installs to latest v4.7.1. Run "dietpi-software reinstall 56" to upgrade your existing instance.
- DietPi-Software | MineOS: A systemd service is now used to run the daemon in favour of the previous supervisor, the obsolete "mineos" user is not created anymore, Node.js v11 is used to build MineOS, obsolete dependencies have been removed and a reinstall will now perform a MineOS upgrade and the existing /etc/mineos.conf is not replaced anymore.
- DietPi-Software | Mycroft AI: By default, the ALSA automatic conversions plugin is enabled now on install, which enables OOTB compatibility with all wav sound formats and sound card. Additionally listener sampling rate override (48000 Hz) has been removed, reverting to Mycroft default (16000 Hz), which might solve an issue with hanging microphone level in CLI and related failing voice detection.
-- DietPi-Software | Gogs: Has been enabled for ARMv8 boards and on ARMv7 boards the newest version is installed again, which was not the case since Gogs v0.12. due to changed download names. Many thanks to @MadKernel for bringing ARMv8 support back to our attention: https://dietpi.com/phpbb/viewtopic.php?t=8276
+- DietPi-Software | Gogs: Has been enabled for ARMv8 boards and on ARMv7 boards the newest version is installed again, which was not the case since Gogs v0.12. due to changed download names. Many thanks to @MadKernel for bringing ARMv8 support back to our attention.
- DietPi-Software | Folding@Home: Is now available for ARMv8 (arm64) boards. Donate your idle CPU power to help researchers fighting against diseases like Cancer, Alzheimer, Ebola and COVID-19.
- DietPi-Software | Radarr: Has been upgraded to the newest major version 3, including the required branch migration (from "develop" to "master") and, for non-ARMv6 boards, a migration to the now available .NET-based build away from Mono. This change is applied to all DietPi systems via Radarr reinstall, preserving your data and configs of course.
- DietPi-Software | OctoPrint: Is now available via PyPI repository, hence can be installed and updated easier and faster without downloading and building from the sources. Git is not required anymore, as the internal updater as well uses Python pip only. We migrate all DietPi OctoPrint instances to the new version and new install method, so that the Git/install directory /opt/octoprint is obsolete and removed. All your data will be preserved, of course. Many thanks to @Stinocon for reporting issues related to our previous implementation: https://github.com/MichaIng/DietPi/issues/3940
@@ -1062,7 +1104,7 @@ Bug Fixes:
- DietPi-Services | Resolved an issue where CPU affinity selection failed due to a syntax error.
- DietPi-BugReport | Resolved an issue where bug report uploads were cancelled if connection test on port 80/443 failed even that uploads are done via SFTP on port 22.
- DietPi-Cleaner | Resolved an issue where cleaner selection failed with a syntax error.
-- DietPi-Sync | Resolved an issue where setting the delete mode to "On" did not have any effect on it. Many thanks to @mafioso12dk for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8226
+- DietPi-Sync | Resolved an issue where setting the delete mode to "On" did not have any effect on it. Many thanks to @mafioso12dk for reporting this issue.
- DietPi-Banner + DietPi-NordVPN | Resolved an issue where WAN IP changed to a multi-line output. Many thanks to @maartenlangeveld for reporting this issue: https://github.com/MichaIng/DietPi/issues/3908
- DietPi-CloudShell | Resolved an issue where scene selection failed with a syntax error. Many thanks to @ravenclaw900 for reporting this issue: https://github.com/MichaIng/DietPi/issues/3880
- DietPi-Software | PiVPN: Resolved an issue where the installer hang since the interactive whiptail dialogues were not shown on console. Many thanks to @kelliegator for reporting this issue: https://github.com/MichaIng/DietPi/issues/3844
@@ -1070,15 +1112,15 @@ Bug Fixes:
- DietPi-Software | Webservers: Resolved an issue where reinstall failed if /var/www/html did not exist.
- DietPi-Software | Lighttpd: Resolved an issue where (re)install failed if the fastcgi or fastcgi-php module was enabled already.
- DietPi-Software | O!MPD: Resolved an issue where the URL check for youtube-dl failed.
-- DietPi-Software | Single File PHP Gallery: Resolved an issue where directory previews were not shown due to missing permissions. Many thanks to @tallbastard for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=28155#p28155
+- DietPi-Software | Single File PHP Gallery: Resolved an issue where directory previews were not shown due to missing permissions. Many thanks to @tallbastard for reporting this issue.
- DietPi-Software | WebIOPi: Resolved an issue where the download and install failed.
- DietPi-Software | Nginx: Resolved an issue where the amount of worker processes was not set to the amount of CPU threads as intended.
- DietPi-Software | MineOS: Resolved an issue where the Node.js downgrade an hence the web UI compiling failed. Many thanks to @CactiChameleon9 for reporting this issue: https://github.com/MichaIng/DietPi/issues/3901
-- DietPi-Software | Mycroft AI: Resolved an issue where skill installs failed due to missing permissions. Many thanks to @GreenGentleman for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=28464#p28464
-- DietPi-Software | Jellyfin: Resolved an issue where Jellyfin did not run on ARMv6 (RPi 1 and Zero models). ARMv6/Raspbian-compatible binaries are now shipped via different APT repository. Many thanks to @Shiivu for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8263
-- DietPi-Software | WiFi Hotspot: Resolved an issue on RPi with WiFi adapters using an RTL8188C* chip, where the service failed to start due to an invalid driver. Many thanks to @yerc for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=28984#p28984
+- DietPi-Software | Mycroft AI: Resolved an issue where skill installs failed due to missing permissions. Many thanks to @GreenGentleman for reporting this issue.
+- DietPi-Software | Jellyfin: Resolved an issue where Jellyfin did not run on ARMv6 (RPi 1 and Zero models). ARMv6/Raspbian-compatible binaries are now shipped via different APT repository. Many thanks to @Shiivu for reporting this issue.
+- DietPi-Software | WiFi Hotspot: Resolved an issue on RPi with WiFi adapters using an RTL8188C* chip, where the service failed to start due to an invalid driver. Many thanks to @yerc for reporting this issue.
- DietPi-Software | OctoPrint: Resolved an issue where the service and system could not be restarted anymore via OctoPrint web UI and, on RPi, the CPU throttling state could not be derived.
-- DietPi-Software | Ampache: Resolved an issue where the install failed due to an incompatible PHP composer version and it was not possible to update the configuration file to a new version through the web interface. Many thanks to @kk345 for reporting these issues: https://dietpi.com/phpbb/viewtopic.php?t=8367
+- DietPi-Software | Ampache: Resolved an issue where the install failed due to an incompatible PHP composer version and it was not possible to update the configuration file to a new version through the web interface. Many thanks to @kk345 for reporting these issues.
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/3982
@@ -1107,7 +1149,7 @@ Changes / Improvements / Optimisations:
- DietPi-Software | LXDE: By default, when double-clicking a desktop icon or executable file, it will be executed directly now, without being asked first what to do. This behaviour can be changed from within PCManFM file manager > "Edit" > "Preferences" > "General" > "Don't ask options to launch executable file".
Bug Fixes:
-- General | Resolved an issue where using AUTO_UNMASK_LOGIND=1 or enabling Amiberry fastboot did not allow to start systemd-logind as intended if the required dbus package was not installed before. Many thanks to @razerbann for reporting this issue: https://github.com/MichaIng/DietPi/issues/3770
+- General | Resolved an issue where using AUTO_UNMASK_LOGIND=1 or enabling Amiberry fastboot did not allow to start systemd-logind as intended if the required dbus package was not installed before. Many thanks to @Razerban for reporting this issue: https://github.com/MichaIng/DietPi/issues/3770
- RPi | Resolved an issue where Allo USBridge Sig (ASIX AX88179) Ethernet fails due to non-matching driver. Many thanks to @dsnyder0pc for reporting this issue any many thanks to Allo for providing stable branch driver builds and a method to compare kernel module layouts: https://github.com/MichaIng/DietPi/issues/3725
- DietPi-Backup | Resolved an issue where F2FS was not supported as target location. Since it has full UNIX permissions and symlinks support and can be used as rootfs file system, it can be used for OS backups as well. Many thanks to @Cjkeenan for reporting this issue: https://github.com/MichaIng/DietPi/issues/606#issuecomment-695944450
- DietPi-Set_swapfile | Resolved an issue where swapon failed on ext4 due to an external bug in Linux 5.7 and 5.8. The script now tries quick and less write-intense fallocate pre-allocation first, regardless of kernel version and file system type, and falls back to dd in case of failure. Many thanks to @auanasgheps for reporting this issue: https://github.com/MichaIng/DietPi/issues/3756
@@ -1119,11 +1161,11 @@ Bug Fixes:
- DietPi-Software | LXDE: Resolved several issues due to conflicts between the RPi desktop LXDE packages with native LXDE.
- DietPi-Software | Webmin: Worked around an issue where install failed. Webmin depends on apt-show-versions which does not support compressed APT list files, which be implemented as default with DietPi v6.32.
- DietPi-Software | WebIOPi: Resolved an issue where the download failed.
-- DietPi-Software | Home Assistant: Resolved an issue where install failed on ARM due to missing new build dependency. Many thanks to @pbutterworth for reporting and @novitibo for providing the solution: https://dietpi.com/phpbb/viewtopic.php?t=8095
+- DietPi-Software | Home Assistant: Resolved an issue where install failed on ARM due to missing new build dependency. Many thanks to @pbutterworth for reporting and @novitibo for providing the solution: https://dietpi.com/forum/t/home-assistant-404-error/4471
- DietPi-Software | Kodi: Resolved an issue on Odroid XU4 where install failed due to missing librockchip-mpp1 package which instead was aimed to be installed on Odroid N1 only.
- DietPi-Software | TigerVNC+LXDE: Resolved an issue where lxappearance start ("Customize Look and Feel") hangs within TigerVNC sessions.
-- DietPi-Software | Fail2Ban: Resolved an issue where the service could have failed to start due to a missing variable declaration in our default config. Many thanks to @mafioso12dk for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8147
-- DietPi-Software | DietPi-RAMlog: Resolved an issue where /var/log content was not restored when reinstalling DietPi-RAMlog, e.g. when switching logging mode from #1 to #2. This could have led to service start issues, when those rely on log files or directories being present. Many thanks to @djashdj for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=8163
+- DietPi-Software | Fail2Ban: Resolved an issue where the service could have failed to start due to a missing variable declaration in our default config. Many thanks to @mafioso12dk for reporting this issue.
+- DietPi-Software | DietPi-RAMlog: Resolved an issue where /var/log content was not restored when reinstalling DietPi-RAMlog, e.g. when switching logging mode from #1 to #2. This could have led to service start issues, when those rely on log files or directories being present. Many thanks to @djashdj for reporting this issue.
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/3829
@@ -1184,7 +1226,7 @@ Changes / Improvements / Optimisations:
- Network | "ping" can now be used by all users without any file capabilities, sudo or setuid. For this we allow all users to create native ICMP sockets which are available since Linux 3.X but disabled by default on Debian. Other distributions and systemd (upstream) have this enabled by default and for security and usability reasons we follow them: https://fedoraproject.org/wiki/Changes/EnableSysctlPingGroupRange
- DietPi-Login | A new setting has been added which allows to skip the interactive GPLv2 license agreement on first login. Add/set "AUTO_SETUP_ACCEPT_LICENSE=1" in (/boot/)dietpi.txt in which case we assume you read and agreed the license text at least once. Many thanks to @mrbluecoat for reporting the urgent use-case of Chromium kiosk mode autostart without keyboard attached: https://github.com/MichaIng/DietPi/issues/3326
- DietPi-Cleaner | Enhanced performance of the files cleaner if /mnt is skipped, especially in combination with large drives or network mounts. Many thanks to @maartenlangeveld for revealing the underlying issue: https://github.com/MichaIng/DietPi/issues/3609
-- DietPi-Drive_Manager | SSHFS entries in fstab are now detected and preserved. Many thanks to @notwork for doing this suggestion: https://dietpi.com/phpbb/viewtopic.php?t=7781
+- DietPi-Drive_Manager | SSHFS entries in fstab are now detected and preserved. Many thanks to @notwork for doing this suggestion.
- DietPi-Config | Added Ethernet link speed selection to Network>Ethernet menu. The function and dietpi.txt entry exists for a long time but it was only exposed as first run setup option.
- DietPi-Software | WireGuard: Added generic support for all SBCs where the WireGuard kernel module is shipped together with the kernel package. This applies to most current Armbian-based images at the time of writing and will be the more regular case since Linux 5.6 has WireGuard natively integrated.
- DietPi-Software | Firefox Sync Server has been added to our software list, which allows to sync your Firefox bookmarks, history, tabs and passwords via your self-hosted server. Many thanks and all credits to @CedArctic for implementing this software title: https://github.com/MichaIng/DietPi/pull/3471
@@ -1200,17 +1242,17 @@ Bug Fixes:
- DietPi-Login | Resolved an issue where the script called itself from within the error handler subshell. Generally the error handler subshell must never call dietpi-login (and related autostart programs) and dietpi-login must never call itself from an interactive subshell. Many thanks to @nosyaardvark for reporting this issue: https://github.com/MichaIng/DietPi/issues/3583#issuecomment-643583664
- DietPi-Drive_Manager | Resolved an issue where moving the RootFS to an external drive did not include DietPi userdata. Many thanks to @sdomotica and @Joulinar for reporting this issue: https://github.com/MichaIng/DietPi/issues/3600#issuecomment-643261670
- DietPi-LED_control | Resolved an issue where LED triggers fail to become boot persistent. Many thanks to @FrostyMisa for reporting this issue: https://github.com/MichaIng/DietPi/issues/3636
-- DietPi-Config | Resolved an issue on RPi3+ models where RPi3 non-plus overclocking profiles were shown. Many thanks to @lone for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=7804
+- DietPi-Config | Resolved an issue on RPi3+ models where RPi3 non-plus overclocking profiles were shown. Many thanks to @lone for reporting this issue.
- DietPi-Config | Resolved an issue on RPi4 2/4/8 GiB RAM models where the current GPU memory split was not obtained correctly. Many thanks to @FrostyMisa for reporting this issue: https://github.com/MichaIng/DietPi/issues/3636#issuecomment-652467249
- DietPi-Software | Logging choice: Resolved an issue where manually choosing logging options "None" and "Full" during firstrun installs did not uninstall DietPi-RAMlog as intended. Many thanks to @Pain-Patate for reporting this issue: https://github.com/MichaIng/DietPi/issues/3588
- DietPi-Software | GMediaRender+WireGuard: Resolved an issue where service start could have failed due to invalid network information. Many thanks to @fnsnyc for reporting this issue: https://github.com/MichaIng/DietPi/issues/3519
-- DietPi-Software | rTorrent: Resolved an issue where startup fails because of invalid default config values. Many thanks to @PiTech and @vorrac for reporting and fixing this issue: https://dietpi.com/phpbb/viewtopic.php?t=7613, https://dietpi.com/phpbb/viewtopic.php?t=7607
-- DietPi-Software | Sonarr/Radarr/Lidarr: Resolved an issue where those software services crashed once an hour due to faulty SQLite database log file clearing. Many thanks to @Taloth from Sonarr and all the others who reported, investigated and finally solved the mystery: https://dietpi.com/phpbb/viewtopic.php?t=7598
-- DietPi-Software | WireGuard: Resolved an issue where WireGuard in client mode failed to start due to missing resolvconf. It is now installed together with WireGuard when choosing client setup. Many thanks to @yahoo456 for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=7783
+- DietPi-Software | rTorrent: Resolved an issue where startup fails because of invalid default config values. Many thanks to @PiTech and @vorrac for reporting and fixing this issue.
+- DietPi-Software | Sonarr/Radarr/Lidarr: Resolved an issue where those software services crashed once an hour due to faulty SQLite database log file clearing. Many thanks to @Taloth from Sonarr and all the others who reported, investigated and finally solved the mystery.
+- DietPi-Software | WireGuard: Resolved an issue where WireGuard in client mode failed to start due to missing resolvconf. It is now installed together with WireGuard when choosing client setup. Many thanks to @yahoo456 for reporting this issue.
- DietPi-Software | WireGuard: Worked around an issue where on some Odroids install failed due to missing symlinks to the Linux headers. Many thanks to @repomanz for reporting this issue: https://github.com/MichaIng/DietPi/issues/3577
-- DietPi-Software | Ubooquity: Updated the installer to pull the latest version from Vae Mendis Software directly and enhanced permissions to better integrate with other software. Many thanks to @Mr.Roboto for doing this suggestion: https://dietpi.com/phpbb/viewtopic.php?t=7786
+- DietPi-Software | Ubooquity: Updated the installer to pull the latest version from Vae Mendis Software directly and enhanced permissions to better integrate with other software. Many thanks to @Mr.Roboto for doing this suggestion.
- DietPi-Software | Node.js: Resolved an issue where Node failed to start due to missing new libatmoic1 dependency. Many thanks to @larsno for reporting this issue: https://github.com/MichaIng/DietPi/issues/3614
-- DietPi-Software | TigerVNC: Worked around an external bug where the VNC server crashed after client logout or failed to start at all. Many thanks to @Joulinar for investigating this issue and providing the workaround: https://dietpi.com/phpbb/viewtopic.php?p=25285#p25285
+- DietPi-Software | TigerVNC: Worked around an external bug where the VNC server crashed after client logout or failed to start at all. Many thanks to @Joulinar for investigating this issue and providing the workaround.
- DietPi-Software | XRDP: The above TigerVNC bug affected as well XRDP connections which have been resolved in the same turn: https://github.com/MichaIng/DietPi/issues/3615#issuecomment-650559035
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/3640
@@ -1224,7 +1266,7 @@ Changes / Improvements / Optimisations:
- DietPi-Software | qBittorrent: Changed default download file permissions so that Sonarr/Radarr/Lidarr/.. are able to manipulate the downloads after import. Many thanks to @compdealer for doing this suggestion: https://github.com/MichaIng/DietPi/issues/3524
Bug Fixes:
-- DietPi-Config | Resolved an issue where on RPi3/4/Zero W onboard WiFi could not be enabled. Many thanks to @elitearmedforce for reporting this issue: https://github.com/MichaIng/DietPi/issues/3510
+- DietPi-Config | Resolved an issue where on RPi3/4/Zero W onboard WiFi could not be enabled. Many thanks to @dasrocky for reporting this issue: https://github.com/MichaIng/DietPi/issues/3510
- DietPi-Drive_Manager | Resolved an issue on Raspberry Pi where, after running DietPi-Drive_Manager, the root file system was mount read-only. Many thanks to @Adsouza98 for reporting this issue: https://github.com/MichaIng/DietPi/issues/3511
- DietPi-Banner | Resolved an issue where non-root users were unable to download a new MOTD (message of the day). Many thanks to @PeterLacknase and @fnsnyc for reporting this issue: https://github.com/MichaIng/DietPi/issues/3505, https://github.com/MichaIng/DietPi/issues/3520
- DietPi-Boot | Resolved an issue where non-root users were unable to read or update DietPi-internal network info, which lead to e.g. error messages on login. Many thanks to @PeterLacknase for reporting this issue: https://github.com/MichaIng/DietPi/issues/3505
@@ -1246,7 +1288,7 @@ API Changes:
- DietPi-Globals | The new global functions G_CHECK_CON and G_CHECK_DNS have been added to test general network connectivity and DNS resolver based on dietpi.txt settings.
Changes / Improvements / Optimisations:
-- NanoPi M4V2 | Initial hardware identifier (ID: 58) and support for this device has been added to DietPi. Many thanks to @purist doing this request: https://dietpi.com/phpbb/viewtopic.php?t=6451
+- NanoPi M4V2 | Initial hardware identifier (ID: 58) and support for this device has been added to DietPi. Many thanks to @purist doing this request.
- NanoPi NEO Plus2 | Initial hardware identifier (ID: 57) and support for this device has been added to DietPi. Many thanks to @StephanStS for doing this request and creating an image: https://github.com/MichaIng/DietPi/issues/2979#issuecomment-615487662
- PINE H64 | Initial hardware identifier (ID: 45) and support for this device has been added to DietPi. Many thanks to @unixino for doing this request: https://github.com/MichaIng/DietPi/issues/3286
- ROCK Pi S | Initial hardware identifier (ID: 73) and support for this device has been added to DietPi. Many thanks to @lwqcz for doing this request: https://github.com/MichaIng/DietPi/issues/3365
@@ -1258,7 +1300,7 @@ Changes / Improvements / Optimisations:
- DietPi-Cron | Allows now to set the cron job output mail recipient. Cron mails are disabled by default since no MTA is preconfigured on DietPi. Additionally the execution times are now shown more clearly in 24h format.
- DietPi-AutoStart | When selecting a non-root autologin user, some required tasks, like permissions, are now applied automatically, based on autostart option. This especially allows non-root users to launch Kodi without applying permissions manually. Many thanks to @sbrl for requesting this feature: https://github.com/MichaIng/DietPi/issues/3351
- DietPi-Drive_Manager | GlusterFS fstab entries are now preserved. Many thanks to @Sudrien for implementing this addition: https://github.com/MichaIng/DietPi/issues/3374
-- DietPi-Software | Domoticz: open-source home automation platform is now available for install. Many thanks to @AndyB for doing this request a long time ago: https://dietpi.com/phpbb/viewtopic.php?t=222
+- DietPi-Software | Domoticz: open-source home automation platform is now available for install. Many thanks to @AndyB for doing this request a long time ago: https://dietpi.com/forum/t/software-suggestion-domoticz/185
- DietPi-Software | phpBB: Updated to v3.3.0 which has PHP7.3 support, hence can be installed on all hardware models and distro versions.
- DietPi-Software | Sonarr/Radarr/Lidarr: Enhanced install and uninstall steps. On reinstalls, the install directory is left unchanged now, suggesting to use the internal updater instead, which is generally safer and now does not require a manual service restart (see bug fix below). In case of a broken instance, the install directory /opt/ needs to be removed manually now, to have reinstalls downloading and installing the newest binaries.
- DietPi-Software | Sonarr/Radarr/Lidarr: The service now runs with hardened permissions, by default blocking access to directories outside of /opt/ /mnt /var/log/ and /tmp. If writing to other directories is wanted, the service file needs to be edited, easiest with "dietpi-services" > "" > "Edit" and adding an additional "ReadWritePaths=/path/to/custom/dir".
@@ -1271,19 +1313,19 @@ Changes / Improvements / Optimisations:
- DietPi-Software | rTorrent: Further rework and update of the default config file. Many thanks to @bbsixzz for this contribution: https://github.com/MichaIng/DietPi/issues/3332
Bug Fixes:
-- Raspberry Pi | Resolved an issue where RPi models could be incorrectly identified in case of warranty, overvoltage or OTP bits set in revision code. Many thanks to @LeeMenHin for reporting this issue: https://github.com/MichaIng/DietPi/issues/2979#issuecomment-598906749
+- Raspberry Pi | Resolved an issue where RPi models could be incorrectly identified in case of warranty, overvoltage or OTP bits set in revision code. Many thanks to @FusionPlmH for reporting this issue: https://github.com/MichaIng/DietPi/issues/2979#issuecomment-598906749
- DietPi-Banner | Resolved an issue where clearing the screen fails due to missing G_TERM_CLEAR command. Many thanks to @Joulinar for reporting this issue: https://github.com/MichaIng/DietPi/issues/3313
- DietPi-Config | Resolved an issue where, on RPi with vc4-fkms-v3d overlay/driver enabled, soundcard selection went wrong. Many thanks to @Cybolic for reporting this issue: https://github.com/MichaIng/DietPi/issues/3356
-- DietPi-Globals | CPU temperature readout on Intel Mini PCs has been fixed. Many thanks to @Iv711 and @kt1024 for reporting this issue: https://github.com/MichaIng/DietPi/issues/3172, https://github.com/MichaIng/DietPi/issues/3412
+- DietPi-Globals | CPU temperature readout on Intel Mini PCs has been fixed. Many thanks to @BrownC0de and @0x9394 for reporting this issue: https://github.com/MichaIng/DietPi/issues/3172, https://github.com/MichaIng/DietPi/issues/3412
- DietPi-Drive_Manager | Resolved an issue where the chosen spindown timeout was not applied correctly on boot. Many thanks to @tesseract241 and @lukaszm89 for reporting this issue: https://github.com/MichaIng/DietPi/issues/3309, https://github.com/MichaIng/DietPi/issues/3420
- DietPi-Drive_Manager | Resolved an issue where NFS pre-v3 mounts could have failed on boot. They are now automounted on first mountpoint access, like NFSv3 and Samba shares do already. Many thanks to @Joulinar for reporting and debugging this issue: https://github.com/MichaIng/DietPi/issues/1898#issuecomment-604412425
-- DietPi-Drive_Manager | Resolved an issue where Samba/SMB/CIFS mounts failed if the shares name contained white spaces. Many thanks to @SNG for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=7518
+- DietPi-Drive_Manager | Resolved an issue where Samba/SMB/CIFS mounts failed if the shares name contained white spaces. Many thanks to @SNG for reporting this issue.
- DietPi-Software | Resolved an issue where extraction of zip archives to current directory failed. Many thanks to @en0rism for reporting this issue: https://github.com/MichaIng/DietPi/issues/3320
- DietPi-Software | Redis: Resolved an issue where service start fails on Stretch systems. Many thanks to @drieksje for reporting this issue: https://github.com/MichaIng/DietPi/issues/3314
- DietPi-Software | Sonarr/Radarr/Lidarr: Resolved an issue where a manual service restart was required after the internal updater has been used.
- DietPi-Software | myMPD: Resolved MPD connection issues on Stretch systems. Many thanks to @jcorporation for informing us on upstream changes, helping with debug and fixing the issues: https://github.com/MichaIng/DietPi/issues/3382
- DietPi-Software | O!MPD: Resolved an issue where YouTube support was not functional by default due to missing youtube-dl execute permissions. Many thanks to @ArturSierzant for reporting this issue: https://github.com/MichaIng/DietPi/issues/3413
-- DietPi-Software | GMediaRender: Resolved an issue where the wrong sound device could have been used. Many thanks to @kikigarel for reporting this issue: https://github.com/MichaIng/DietPi/issues/3348
+- DietPi-Software | GMediaRender: Resolved an issue where the wrong sound device could have been used. Many thanks to @gaeldoyen for reporting this issue: https://github.com/MichaIng/DietPi/issues/3348
- DietPi-Software | Chromium: Resolved an issue where non-root users were not able to use the Chromium autostart option due to wrong permissions. Many thanks to @lasers and @promofu for reporting this issue: https://github.com/MichaIng/DietPi/issues/3322
- DietPi-Software | RPi Cam Web Interface: Resolved an issue where camera through the web UI failed because of missing permissions. Many thanks to @arkhub for reporting this issue: https://github.com/MichaIng/DietPi/issues/3431
- DietPi-Software | OctoPrint: Resolved an issue where install failed. Many thanks to @zell-mbc and @Joulinar for reporting the issue and providing the solution: https://github.com/MichaIng/DietPi/issues/3474
@@ -1330,7 +1372,7 @@ Changes / Improvements / Optimisations:
- DietPi-Software | Home Assistant: Python3.8 will be installed for the pyenv from now on due to Python3.6 deprecation. Many thanks to @sdomotica for providing this information: https://github.com/MichaIng/DietPi/issues/3219
- DietPi-Software | Home Assistant: When selecting for install, one will be informed about possibly long install/build times. Many thanks to @Gill-Bates for doing this suggestion to avoid users assuming their install process being stuck: https://github.com/MichaIng/DietPi/issues/2897
- DietPi-Software | Home Assistant: Vastly reduced Home Assistant dependencies and install complexity. It does not run inside a virtualenv of pyenv anymore, since it has already its unique pyenv Python instance. pyenv is still required due to the large amount of specific module versions, required for HA and its integrations. The alternative would be a venv from a globally installed Python instance, but this requires further thoughts and discussion. The amount of development libraries and tools, installed via APT, has been updated and reduced to a minimum to build Python and Home Assistant inside the pyenv without errors and warnings. There is a slightly increased chance that certain HA components need additional development packages. To cover this, two new settings have been added to dietpi.txt: "SOFTWARE_HOMEASSISTANT_APT_DEPS" and "SOFTWARE_HOMEASSISTANT_PIP_DEPS". Add a space-separated list of APT packages and pip modules respectively, to have those installed automatically with Home Assistant. As well activating the pyenv environment from console is now easier possible via "source /home/homeassistant/pyenv-activate.sh" as user "homeassistant". Additionally "/home/homeassistant/homeassistant-update.sh" has been added, which can be called by any sudo-capable user to update Home Assistant easily.
-- DietPi-Software | Node-RED: Access permissions to I2C is now enabled by default on RPi and other SBCs which ship a configured "i2c" group by default. Many thanks to @NastySpill for reporting an underlying issue: https://dietpi.com/phpbb/viewtopic.php?t=6862
+- DietPi-Software | Node-RED: Access permissions to I2C is now enabled by default on RPi and other SBCs which ship a configured "i2c" group by default. Many thanks to @NastySpill for reporting an underlying issue.
- DietPi-Software | Gitea: The latest version will now be pulled from GitHub automatically.
- DietPi-Software | Amiberry: Updated to v3.0.9, a large update from v2.25 with many improvements, see: https://github.com/midwan/amiberry/releases
- DietPi-Software | Amiberry: Since we ship a tailored SDL2 version, this has now been merged right into the Amiberry download archive and install directory, to not interfere with other system-wide installed SDL2 instances.
@@ -1342,16 +1384,16 @@ Changes / Improvements / Optimisations:
Bug Fixes:
- DietPi-PREP | Resolved an issue, where in rare cases a wrong $PATH variable could break command calls. Many thanks to @dtm2001 for reporting this issue: https://github.com/MichaIng/DietPi/issues/3206
-- DietPi-Explorer | Resolved an issue where handling of file/directory paths with white spaces failed. Many thanks to @gabboman for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=7046
-- DietPi-Drive_Manager | Resolved an issue where, after transferring the root file system, the script itself could revert the fstab entry, since a reboot was not forced anymore since v6.22. This change has been reverted, hence a reboot cannot be skipped to avoid any fstab revert and inconsistency with cmdline. Many thanks to @DutchFlash for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=6645
+- DietPi-Explorer | Resolved an issue where handling of file/directory paths with white spaces failed. Many thanks to @gabboman for reporting this issue.
+- DietPi-Drive_Manager | Resolved an issue where, after transferring the root file system, the script itself could revert the fstab entry, since a reboot was not forced anymore since v6.22. This change has been reverted, hence a reboot cannot be skipped to avoid any fstab revert and inconsistency with cmdline. Many thanks to @DutchFlash for reporting this issue.
- DietPi-Drive_Manager | Resolved an issue where, in rare cases, all drives were mounted as R/O on boot. Many thanks to @samolego for reporting this issue: https://github.com/MichaIng/DietPi/issues/3268
- DietPi-AutoStart | Resolved an issue where non-interactive script calls, e.g. done by dietpi-software installs, reset prior made auto login user choices. Many thanks to @zedrdave for reporting this issue: https://github.com/MichaIng/DietPi/issues/3242
- DietPi-Config | RPi: Resolved an issue where PSU noise reduction state always shows "[Off]". HDMI output will now be toggled immediately, hence no reboot is required for changes to take effect. Many thanks to @maartenlangeveld for reporting this issue: https://github.com/MichaIng/DietPi/issues/3187
- DietPi-Software | ownCloud/Nextcloud: An important security fix has been applied to our ownCloud/Nextcloud Nginx configs. This has been merged into our other GitHub branches as well, hence all fresh installs wont be affected. Read more about it: https://nextcloud.com/blog/urgent-security-issue-in-nginx-php-fpm/
- DietPi-Software | WireGuard: Resolved an issue where the server fails to start if network has not yet fully initialised. Many thanks to @Joulinar for reporting this issue: https://github.com/MichaIng/DietPi/issues/3175
- DietPi-Software | Syncthing: Resolved an issue where fresh install failed to start due to missing permissions. Many thanks to @ralban, @mowestusa and @g7kse for reporting this issue: https://github.com/MichaIng/DietPi/issues/3180
-- DietPi-Software | Gitea: Resolved an issue where fresh Gitea installs failed to start due to missing permissions. Many thanks to @NZRob for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=6550
-- DietPi-Software | Home Assistant: Resolved on issue where fresh install failed to started to start due to missing permissions. Many thanks to @slopsjon, @tyjtyj and @pakikje for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=6531, https://dietpi.com/phpbb/viewtopic.php?p=20408#p20408
+- DietPi-Software | Gitea: Resolved an issue where fresh Gitea installs failed to start due to missing permissions. Many thanks to @NZRob for reporting this issue.
+- DietPi-Software | Home Assistant: Resolved on issue where fresh install failed to started to start due to missing permissions. Many thanks to @slopsjon, @tyjtyj and @pakikje for reporting this issue.
- DietPi-Software | Google AIY: Resolved an issue where fresh install failed to start due to missing permissions
- DietPi-Software | Grafana: Resolved an issue where install failed on RPi 1/Zero Buster systems. The fix includes an update of Grafana to the latest official version for those models. Many thanks to @TBail for reporting this issue: https://github.com/MichaIng/DietPi/issues/3213
- DietPi-Software | Jackett: Resolved an issue where the internal updater broke the Jackett instance. Automated updates can be safely enabled again. Many thanks to @ngosang for providing the workaround: https://github.com/MichaIng/DietPi/issues/2593
@@ -1391,7 +1433,7 @@ Changes / Improvements / Optimisations:
- DietPi-Config | Audio Options: Menu has been reworked. Audio capabilities (ALSA) can be enabled and disabled as a separate option. If enabled, generic sound card auto-detection has been added to the bottom of the list for all devices. This allows the selection of generic sound devices on all SBCs, e.g. if unknown to DietPi or if our hard-coded card/device IDs are wrong due to additional attached audio hardware.
- DietPi-Config | Some /etc/modprobe.d/ configs are merged to less files and mostly prefixed with "dietpi-", to allow easier differentiation between Debian/pre-image and DietPi files.
- DietPi-Config | RPi: Update certain config.txt settings to match new firmware version. WiFi and Bluetooth is now disabled via related dtoverlays, which should further reduce hardware and firmware loads.
-- DietPi-Config | Added overclocking profiles for RPi4. Many thanks to @aftensleuk for request and valuable suggestions: https://dietpi.com/phpbb/viewtopic.php?t=6225
+- DietPi-Config | Added overclocking profiles for RPi4. Many thanks to @aftensleuk for request and valuable suggestions.
- DietPi-Config | RPi: Re-added previously removed options to adjust initial turbo for CPU frequency on boot and to lower the idle CPU frequency. The related firmware issues have been fixed with a recent update: https://github.com/MichaIng/DietPi/issues/3147
- DietPi-Config | RPi: Removed the option to adjust CPU frequency limits. On RPi the dynamic CPU governors only jump between "arm_freq" and "arm_freq_min", hence those limits should be set via overclocking profile and the newly re-added "ARM Idle Frequency" option.
- DietPi-Config | RPi1/Zero: OpenGL modes/drivers can now be successfully selected/installed from display resolution menu.
@@ -1464,13 +1506,13 @@ Changes / Improvements / Optimisations:
- DietPi-Config | Audio Options (RPi): I-Sabre-K2M/Q2M sound card drivers are now integrated into the RPi kernel. These are now enabled on selection instead of compiling the drivers from source: https://github.com/MichaIng/DietPi/issues/2690
- DietPi-Software | Mycroft AI FOSS voice assistant is now available for install. Many thanks to @LexiconCode for the initial request and all other requesters, FeatHub voters and testers: https://github.com/MichaIng/DietPi/issues/1701
- DietPi-Software | Resolved some misleading outputs when having VNC Server or GPU using software installed. Many thanks to @mtpiercey for reporting these issues: https://github.com/MichaIng/DietPi/issues/2870
-- DietPi-Software | Deluge: Lowered UMask (007 => 002) to allow read access from e.g. custom Samba shares without "dietpi" user. Many thanks to @radsb for reporting the limited access: https://dietpi.com/phpbb/viewtopic.php?t=5847
+- DietPi-Software | Deluge: Lowered UMask (007 => 002) to allow read access from e.g. custom Samba shares without "dietpi" user. Many thanks to @radsb for reporting the limited access.
- DietPi-Software | FFmpeg: On RPi, the new APT repo package will be installed, which now supports RPi hardware acceleration and is some subversion newer then the package hosted on dietpi.com: https://github.com/MichaIng/DietPi/issues/869#issuecomment-490047405
- DietPi-Software | Gitea: Current stable v1.8.X will be installed now and existing instances will be upgraded during DietPi-Update. Many thanks to @msongz for implementing this: https://github.com/MichaIng/DietPi/pull/2881
- DietPi-Software | myMPD: Current upstream version will be installed now and existing instances will be upgraded during DietPi-Update, which requires a config file reset. A backup to recover custom settings from will be created: https://github.com/MichaIng/DietPi/issues/2156#issuecomment-497513129
- DietPi-Software | O!MPD: Current upstream version will be installed now and existing instances will be upgraded during DietPi-Update. Existing config and database will be preserved. YouTube and Tidal support is added now by default. Many thanks to @ArturSierzant for giving valuable feedback and suggestions: https://github.com/MichaIng/DietPi/pull/2884
- DietPi-Software | Ampache: Reinstalls will now preserve existing configs and database.
-- DietPi-Software | Medusa: mediainfo is now installed to enable Medusa gathering meta data and resolving related warnings in log. Additionally, on Stretch and above, Python3 is now installed and used, as recommended by Medusa for a while. Many thanks to @bluesmoke for suggesting this enhancement: https://dietpi.com/phpbb/viewtopic.php?t=5945
+- DietPi-Software | Medusa: mediainfo is now installed to enable Medusa gathering meta data and resolving related warnings in log. Additionally, on Stretch and above, Python3 is now installed and used, as recommended by Medusa for a while. Many thanks to @bluesmoke for suggesting this enhancement.
- DietPi-Software | Node-RED: "sudo" permissions are now enabled by default: https://github.com/MichaIng/DietPi/issues/2910
Bug Fixes:
@@ -1481,17 +1523,17 @@ Bug Fixes:
- DietPi-Cleaner | Resolved an issue where the cleaner ran into an endless loop if "Files" cleaner was used. Many thanks to @maartenlangeveld for reporting this issue: https://github.com/MichaIng/DietPi/issues/2837
- DietPi-PREP | Resolved an issue where ifupdown (networking service) was autoremoved, which broke running network connections.
- DietPi-Drive_Manager | Resolved an issue where idle spin down selection would always default to 241, instead of currently active value: https://github.com/MichaIng/DietPi/issues/2852
-- DietPi-Drive_Manager | Resolved an issue where eCryptfs fstab entries were not detected and preserved correctly. Many thanks to @johnvick for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=18428#p18283
-- DietPi-Drive_Manager | Resolved an issue where transferring the RootFS to a BTRFS formatted drive fails. Since BTRFS support is not natively built into the RPi and Odroid kernel, a warning prompts and the transfer is aborted. Many thanks to @dieitpi for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=18164#p18164
+- DietPi-Drive_Manager | Resolved an issue where eCryptfs fstab entries were not detected and preserved correctly. Many thanks to @johnvick for reporting this issue.
+- DietPi-Drive_Manager | Resolved an issue where transferring the RootFS to a BTRFS formatted drive fails. Since BTRFS support is not natively built into the RPi and Odroid kernel, a warning prompts and the transfer is aborted. Many thanks to @dieitpi for reporting this issue.
- DietPi-Drive_Manager | Resolved an issue where on x86_64 systems a specific Seagate drive, attached via USB, does not spin down on idle. Many thanks to @tomillr for reporting this issue: https://github.com/MichaIng/DietPi/issues/2905
- DietPi-Config | (RPi) Resolved an issue where selecting sound cards with vc4 enabled would result with incorrect ALSA card index: https://github.com/MichaIng/DietPi/issues/2173
- DietPi-Config | Resolved an issue where selecting any locale (language) failed, which does not contain "UTF-8" in its name. DietPi only supports UTF-8 locales, but those available with UTF-8 only, do not have the ".UTF-8" suffix in their name.
- DietPi-Software | Resolved an issue on Buster systems that were dist-upgraded manually from Stretch, where DietPi-Software failed to obtain the global software password. Many thanks to @MattL0 for reporting this issue: https://github.com/MichaIng/DietPi/issues/2937
- DietPi-Software | Resolved an issue where audio software failed to use hardware acceleration on Buster. Users need to be part of the new "render" group on Buster to have permissions. Many thanks to @tomillr for reporting this issue: https://github.com/MichaIng/DietPi/issues/2916
- DietPi-Software | MotionEye: Resolved an issue on ARMv6 where install failed due to PHP Buster repo conflicts. Many thanks to @infinitejones for reporting this issue: https://github.com/MichaIng/DietPi/issues/2888
-- DietPi-Software | Ampache: Resolved an issue where database connection failed when a custom global software password (other than "dietpi") was chosen. Many thanks to @WarHawk for reporting this issue and solution: https://dietpi.com/phpbb/viewtopic.php?p=15771#p15771
-- DietPi-Software | Desktops: Resolved an issue where PolicyKit failed when logging in via LightDM as non-root user, which broke shutdown and reboot options from logout panel. Many thanks to @magus7091 for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5850
-- DietPi-Software | Transmission: Resolved an issue where settings applied via web UI did not survive a service restart or reboot. Many thanks to @chosen_too and @th0maz for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=17927#p17927
+- DietPi-Software | Ampache: Resolved an issue where database connection failed when a custom global software password (other than "dietpi") was chosen. Many thanks to @WarHawk for reporting this issue and solution.
+- DietPi-Software | Desktops: Resolved an issue where PolicyKit failed when logging in via LightDM as non-root user, which broke shutdown and reboot options from logout panel. Many thanks to @magus7091 for reporting this issue.
+- DietPi-Software | Transmission: Resolved an issue where settings applied via web UI did not survive a service restart or reboot. Many thanks to @chosen_too and @th0maz for reporting this issue.
- DietPi-Software | Docker: The official Docker installer now supports Debian Buster and a workaround for the still missing Raspbian Buster support has been implemented. Many thanks to @Qarasique for reporting this issue: https://github.com/MichaIng/DietPi/issues/2891
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/2950
@@ -1545,7 +1587,7 @@ Changes / Improvements / Optimisations:
- DietPi-Benchmark | Increased default survey RootFS and RAM benchmark sizes. 100 MiB (from 10 MiB) for RootFS. RAM is 1/4 of available. This is ensure a more accurate calculation of throughput when we divide bytes against time, to obtain the MB/s result. Benchmarks now also run at Nice -19 and realtime I/O with priority 0 (highest).
- DietPi-Cleaner | Added a confirmation prompt, before removal of offline docs and man pages, as this may cause APT issues in some circumstances. Many thanks to @maartenlangeveld for reporting this issue: https://github.com/MichaIng/DietPi/issues/2751
- DietPi-LetsEncrypt | When applying to Lighttpd, "webroot" authentication is now used instead of "standalone". This allows the auto-renewal service to succeed while Lighttpd is running. Many thanks to @minnux for testing this method: https://github.com/MichaIng/DietPi/issues/2680#issuecomment-480095449
-- DietPi-Arr_to_RAM | With v6.18 we silently added a new script (for Stretch and above) that allows linking Sonarr/Radarr/Lidarr database files to RAM, increasing access performance, reducing disk I/O and avoiding constant external HDD spinning due to the very regular access to these files. This script has gone through some rework and polishing and can now be enabled to automatically link those databases to RAM on boot and store them back to disk on shutdown. For more details read: https://dietpi.com/phpbb/viewtopic.php?t=5828. Many thanks to @Dr0bac for providing valuable input and testing the development progress constantly: https://github.com/MichaIng/DietPi/issues/2689
+- DietPi-Arr_to_RAM | With v6.18 we silently added a new script (for Stretch and above) that allows linking Sonarr/Radarr/Lidarr database files to RAM, increasing access performance, reducing disk I/O and avoiding constant external HDD spinning due to the very regular access to these files. This script has gone through some rework and polishing and can now be enabled to automatically link those databases to RAM on boot and store them back to disk on shutdown. Many thanks to @Dr0bac for providing valuable input and testing the development progress constantly: https://github.com/MichaIng/DietPi/issues/2689
- DietPi-Drive_Manager | eCryptfs and vboxsf (VirtualBox shared folder) fstab entries are now preserved. Many thanks to @johnvick and @Phil1988 for suggesting: https://github.com/MichaIng/DietPi/issues/2078, https://github.com/MichaIng/DietPi/issues/2202
- DietPi-PREP | The script execution can now be fully automated via environment variables. Many thanks to @FredericGuilbault for adding this feature: https://github.com/MichaIng/DietPi/pull/2756
- DietPi-Config | Added support to toggle Intel CPU turbo/boost mode. Requires Intel CPU that supports the feature.
@@ -1572,18 +1614,18 @@ Bug Fixes:
- DietPi-Config | Resolved an issue where proxy settings would not be correct after a reboot. Many thanks to @stephantual for reporting this!: https://github.com/MichaIng/DietPi/issues/2704
- DietPi-Update | Resolved an issue where on older images first run update didn't finalise as intended, leading to several first run setup issues, depending on the image age. The fix has been applied outside of the releases since only the online part of the updater is affected: https://github.com/MichaIng/DietPi/pull/2684
- DietPi-Login | Resolved an issue where login as non-root user could result in a "sudo" password prompt or endless failure loop due to missing sudo permissions. Many thanks to @xsak for reporting this issue: https://github.com/MichaIng/DietPi/issues/2667
-- DietPi-Software | Emby Server: Resolved an issue where download failed if the latest release does not contain a Debian package. Many thanks to @niblettr for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5755
+- DietPi-Software | Emby Server: Resolved an issue where download failed if the latest release does not contain a Debian package. Many thanks to @niblettr for reporting this issue.
- DietPi-Software | Transmission: Resolved an issue where double quotes in global software password caused a service startup failure. Many thanks to @Drew80 for reporting this issue: https://github.com/MichaIng/DietPi/issues/2484#issuecomment-480675168
- DietPi-Software | WireGuard: Resolved an issue where IPv6 connections did not work with enabled IPv6 forwarding. Many thanks to @schnuckz for reporting this issue: https://github.com/MichaIng/DietPi/issues/2691
- DietPi-Software | Subsonic: Resolved an issue where FFmpeg transcoder might not have been applied correctly. Many thanks to @spectrumcomputing for reporting this issue: https://github.com/MichaIng/DietPi/issues/2697
- DietPi-Software | Amiberry: Resolved an issue where no login prompt was present when exiting Amiberry from fastboot mode. Many thanks to @Trigger58 for reporting this issue: https://github.com/MichaIng/DietPi/issues/2703#issuecomment-482471440
-- DietPi-Software | Logitech Media Server: Resolved an issue where certain plugins failed due to missing "libio-socket-ssl-perl". Many thanks to @noobian and @Edward for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5824
+- DietPi-Software | Logitech Media Server: Resolved an issue where certain plugins failed due to missing "libio-socket-ssl-perl". Many thanks to @noobian and @Edward for reporting this issue.
- DietPi-Software | Fail2Ban: Resolved an issue where the service silently failed due to wrong log level settings on Stretch and Buster systems. Many thanks to @joaofl for reporting this issue: https://github.com/MichaIng/DietPi/issues/90#issuecomment-485140236
- DietPi-Software | Redis: Resolved an issue on Jessie systems where the service fails to start due to wrong shipped permissions from Debian package: https://github.com/MichaIng/DietPi/issues/2736
- DietPi-Software | Nextcloud: Resolved an issue on Lighttpd with HTTPS enabled where OPcache settings were not applied as desired, leading to a warning on Nextcloud admin panel. Many thanks to @Borotes for reporting this issue: https://github.com/MichaIng/DietPi/issues/2489
- DietPi-Software | Nextcloud/ownCloud: Fixed a wrong directive in our Lighttpd configs. Many thanks to @WilburWalsh for reporting this issue: https://github.com/MichaIng/DietPi/issues/2775
- DietPi-Software | Nextcloud Talk: Resolved an issue where coTURN prints two warnings about deprecated settings on Buster systems, due to some changes with latest versions.
-- DietPi-Software | Kodi: Resolved an issue on RPi where Kodi (v18) fails to start when a custom screen resolution was chosen. Many thanks to @johnnypea for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?p=17550#p17550
+- DietPi-Software | Kodi: Resolved an issue on RPi where Kodi (v18) fails to start when a custom screen resolution was chosen. Many thanks to @johnnypea for reporting this issue.
- DietPi-Software | Java: Resolved an issue where install fails on Jessie systems since the used jessie-backports APT repo does not exist any more: https://github.com/MichaIng/DietPi/issues/2752
- DietPi-Software | Java: Resolved an issue where install fails on Buster systems since OpenJDK 8 packages are not available any more on Buster repo. OpenJDK 11 is installed instead, testing with Java software titles is outstanding.
- DietPi-Software | Node.js: Resolved an issue where install failed on ARMv6 since Node 12 does not support it any more. Many thanks to @axwax for reporting this issue: https://github.com/MichaIng/DietPi/issues/2755
@@ -1605,7 +1647,7 @@ Changes / Improvements / Optimisations:
- RPi | DietPi does not set or change "framebuffer_depth" in config.txt any more which defaults to 16 which works in every known case. It will be re-added as fast as we find a case where another value is required.
- DietPi-Banner | You can now customise which options to display during system login. These include CPU temps, WAN IP, free disk space and more! Simply run 'dietpi-banner': https://github.com/MichaIng/DietPi/issues/2627
- DietPi-NordVPN | Added sent/received usage stats for VPN tunnel.
-- DietPi-Sync | Sync will now abort if the source directory is empty. Merged dry run into real sync, as this was performed anyway to do required free space check. When "Sync" is selected, after dry run the user is presented a summary and given the option to view the detailed dry run log, cancel or continue with real sync. Some other minor fixes and enhancements have been applied as well. Many thanks to @midnightwatcher for doing this request: https://dietpi.com/phpbb/viewtopic.php?t=5588
+- DietPi-Sync | Sync will now abort if the source directory is empty. Merged dry run into real sync, as this was performed anyway to do required free space check. When "Sync" is selected, after dry run the user is presented a summary and given the option to view the detailed dry run log, cancel or continue with real sync. Some other minor fixes and enhancements have been applied as well. Many thanks to @midnightwatcher for doing this request.
- DietPi-Software | Emby Server: Now installs the latest version automatically (currently 4.0.2) which as well offers a native ARMv8 package: https://github.com/MichaIng/DietPi/pull/2525
- DietPi-Software | WireGuard: Switched from 10.8.0.0 to 10.9.0.0 IP addresses on fresh installs to avoid doubled IP range use with OpenVPN. Many thanks to @XRay437 for pointing this out: https://github.com/MichaIng/DietPi/issues/2491#issuecomment-461366739
- DietPi-Software | WireGuard: Changed the way users are advised to add multiple clients, to enhance concurrent connections. Many thanks to @curiosity-seeker for reporting and testing this issue: https://github.com/MichaIng/DietPi/issues/2491#issuecomment-462419860
@@ -1613,7 +1655,7 @@ Changes / Improvements / Optimisations:
- DietPi-Software | GMediaRender: Enabled support for Debian/Raspbian Buster by using the up-to-date APT repo package.
- DietPi-Software | Aria2: Tweaked settings to enhance 3rd party plugin support and removed deprecated/doubled entries. Many thanks to @msongz for the commit: https://github.com/MichaIng/DietPi/pull/2538
- DietPi-Software | UrBackup: Now installs updated version 2.3.7. Many thanks to @DeathIsUnknown for the information: https://github.com/MichaIng/DietPi/issues/2577
-- DietPi-Software | Deluge: Reworked the installer to better match the Debian package defaults and recommendations/examples from official docs. Deluge now runs as user "debian-deluged", logs have been moved to "/var/log/deluged/" and the init.d service with its traces are removed, which are all pre-generated by the Debian APT package. The systemd units have been adjusted according to the official Deluge documentation. These changes are applied as well to existing installs during DietPi update, the old user "deluge" and obsolete configurations are removed. Your active configurations and data are preserved, the installer has been as well enhanced to better handle existing installs and never touch existing configs. Note that access to the Deluge console has to be done as user "debian-deluged" (sudo -u debian-deluged deluge-console). A related access issue to the console has been fixed by this as well. Many thanks to @seanmikhaels for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5525
+- DietPi-Software | Deluge: Reworked the installer to better match the Debian package defaults and recommendations/examples from official docs. Deluge now runs as user "debian-deluged", logs have been moved to "/var/log/deluged/" and the init.d service with its traces are removed, which are all pre-generated by the Debian APT package. The systemd units have been adjusted according to the official Deluge documentation. These changes are applied as well to existing installs during DietPi update, the old user "deluge" and obsolete configurations are removed. Your active configurations and data are preserved, the installer has been as well enhanced to better handle existing installs and never touch existing configs. Note that access to the Deluge console has to be done as user "debian-deluged" (sudo -u debian-deluged deluge-console). A related access issue to the console has been fixed by this as well. Many thanks to @seanmikhaels for reporting this issue.
- DietPi-Software | Amiberry: Updated to latest version (2.25), thanks @midwan: https://github.com/MichaIng/DietPi/issues/2599
- DietPi-Software | Netdata: On Debian Stretch/Buster and Raspbian Buster an up-to-date APT package is available, which will now be installed instead of our custom build. Many thanks to @74cmonty for this information: https://github.com/MichaIng/DietPi/issues/2446
- DietPi-Software | DietPi-RAMlog: When installing/enabling RAMlog, the /var/log mount point will be now cleaned before mounting the tmpfs on it, while preserving the existing logs metadata. This resolves a warning on early boot stage and frees the disk space consumed by the disk log before.
@@ -1633,7 +1675,7 @@ Bug Fixes:
- DietPi-Software | MineOS/Koel: Resolved an issue where installs on ARMv8 devices failed. Many thanks to @DeathIsUnknown for reporting this issue and providing the solution: https://github.com/MichaIng/DietPi/issues/1880#issuecomment-464097174
- DietPi-Software | GMediaRender: Resolved an issue where the daemon can attach to a wrong IP if multiple network devices are present. As well resolved a failing service start on fresh install if/as the log file does not yet exist. Many thanks to @WilburWalsh for reporting these issues and providing the fix: https://github.com/MichaIng/DietPi/issues/2576
- DietPi-Software | OpenSSH Client: Resolved an issue where uninstalling the OpenSSH client will in case also remove the OpenSSH server.
-- DietPi-Software | Emby Server: We disabled the install option on Jessie ARM systems. This never succeeded since Debian Jessie does not provide the required minimum libc6 version. Many thanks to @mbone for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5502
+- DietPi-Software | Emby Server: We disabled the install option on Jessie ARM systems. This never succeeded since Debian Jessie does not provide the required minimum libc6 version. Many thanks to @mbone for reporting this issue.
- DietPi-Software | Mopidy: Resolved issue with failed audio playback. Many thanks to @arkhub for reporting this issue: https://github.com/MichaIng/DietPi/issues/2536
- DietPi-Software | WireGuard: Resolved an issue with wrong client DNS entry if 127.0.0.1/localhost loopback is used as DNS entry on server. Many thanks to @swrobel for reporting this issue: https://github.com/MichaIng/DietPi/issues/2482
- DietPi-Software | WireGuard: Resolved an issue where on uninstall the Debian Sid repo was not removed from APT sources. Many thanks to @XRay437 for reporting this issue: https://github.com/MichaIng/DietPi/issues/2545
@@ -1641,9 +1683,9 @@ Bug Fixes:
- DietPi-Software | Remote.It: Resolved an issue where install failed due to Git repo changes. Additionally Remote.It is now available on x86_64 and ARMv8 systems as well. Many thanks to @techano for reporting this issue: https://github.com/MichaIng/DietPi/issues/2551
- DietPi-Software | Pi-hole: Resolved an issue where "pihole -up" fails because of wrong file permissions. Many thanks to @jonare77 for reporting this issue: https://github.com/MichaIng/DietPi/issues/2516
- DietPi-Software | MPD: Resolved an issue with failed playback due to permissions. Permissions are now set via systemd service to ensure the MPD user can use both dietpi and audio groups: https://github.com/MichaIng/DietPi/issues/2462
-- DietPi-Software | Airsonic: Resolved an issue where during install the FFmpeg transcoder symlink could be placed wrong, leading to a failing Airsonic start. Many thanks to @pecan_pie for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5637
-- DietPi-Software | DietPi-RAMlog: Fixed an issue where logging mode could be set wrong when uninstalling and reinstalling RAMlog. Many thanks to @abecvar for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5666
-- DietPi-Software | rTorrent: Resolved an issue where the ruTorrent web UI could not connect to the rTorrent daemon. Many thanks to @Chester007 for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5656
+- DietPi-Software | Airsonic: Resolved an issue where during install the FFmpeg transcoder symlink could be placed wrong, leading to a failing Airsonic start. Many thanks to @pecan_pie for reporting this issue.
+- DietPi-Software | DietPi-RAMlog: Fixed an issue where logging mode could be set wrong when uninstalling and reinstalling RAMlog. Many thanks to @abecvar for reporting this issue.
+- DietPi-Software | rTorrent: Resolved an issue where the ruTorrent web UI could not connect to the rTorrent daemon. Many thanks to @Chester007 for reporting this issue.
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/2653/files
@@ -1680,7 +1722,7 @@ Changes / Improvements / Optimisations:
- General | Moved the remaining conf/* files located on DietPi-RAMdisk to /var/lib/dietpi or into DietPi-PREP, and removed /DietPi/dietpi/conf completely. These files were only used once or never, thus have no business inside the RAMdisk.
- DietPi-Config | RPi: Improved available options for HDMI boost setting: https://github.com/MichaIng/DietPi/issues/2350
- DietPi-Config | RPi: Headless display mode is now applied via undocumented config.txt setting. Removed/Replaced some other obsolete config.txt entries: https://github.com/MichaIng/DietPi/pull/2402
-- DietPi-Config | RPi: Added info to "hifiberry-dacplus" sound device overlay that it supports the AMP2 DAC. Thanks to @Lat Dior for reporting the issue and testing the solution: https://dietpi.com/phpbb/viewtopic.php?t=5396
+- DietPi-Config | RPi: Added info to "hifiberry-dacplus" sound device overlay that it supports the AMP2 DAC. Thanks to @Lat Dior for reporting the issue and testing the solution.
- DietPi-Config | WiFi Hotspot: You can now toggle support for 802.11 N. Please note this is device and compatibility dependent, mileage may vary.
- DietPi-Drive_Manager | Now allows to check & repair the boot file system and trigger it for root file system on next reboot: https://github.com/MichaIng/DietPi/issues/1740#issuecomment-388325204
- DietPi-Software | Amiberry: Updated to v2.24, thanks @midwan! Brings several bug fixes, new features and improvements over the previous version (2.19). Please check the version history for full details on the changes made: https://github.com/midwan/amiberry/wiki/Version-history
@@ -1717,10 +1759,10 @@ Bug Fixes:
- DietPi-Software | ownCloud/Nextcloud: Resolved an issue, where during fresh installs on v6.19, Apache configs were not enabled correctly.
- DietPi-Software | MPD: Resolved an issue on Stretch, where the mpd binary could not find the configuration file without giving it explicitly as argument. Thanks to @mfeif for reporting this issue: https://github.com/MichaIng/DietPi/issues/2378
- DietPi-Software | Mopidy: Resolved an issue, where playlist files could not be created due to missing permissions. Further improved handling of existing configs, data and cache directories on (re)install. Thanks to @cyberlussi for reporting this issue: https://github.com/MichaIng/DietPi/issues/2384
-- DietPi-Software | Deluge: Resolved a visual-only error in systemd unit, since same-line comments are not allowed anymore. Thanks to @Gabba for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5378
+- DietPi-Software | Deluge: Resolved a visual-only error in systemd unit, since same-line comments are not allowed anymore. Thanks to @Gabba for reporting this issue.
- DietPi-Software | No-IP: Fixed an issue, where on "Generic device" (ID 22), the wrong binary could have been installed. As well added failsafe "/usr/local/[bin|etc]" directory pre-creation, in case not present on the system or manually removed by user. Thanks to @walker93 for reporting this issue: https://github.com/MichaIng/DietPi/issues/2426
- DietPi-Software | PHP: Resolved an issue where install fails on Stretch due to package name changes in the Debian repo. Thanks to @rox-wolf for reporting this issue: https://github.com/MichaIng/DietPi/issues/2438
-- DietPi-Sync | Resolved an issue, where dry-run and compression options were not applied correctly. Thanks to @WilburWalsh for reporting the issue and identifying the faulty code: https://dietpi.com/phpbb/viewtopic.php?t=5347
+- DietPi-Sync | Resolved an issue, where dry-run and compression options were not applied correctly. Thanks to @WilburWalsh for reporting the issue and identifying the faulty code.
- DietPi-Sync | Resolved an issue, where daily sync was not applied due to changed settings file scheme.
- DietPi-Config | RPi: gpu_mem_256/512 are now capped when being applied (to prevent value exceeding limits of each board type): https://github.com/MichaIng/DietPi/issues/2417
- DietPi-Config | Resolved a visual-only issue, where WiFi interface starts throw an error message about unsupported power management: https://github.com/MichaIng/DietPi/issues/2198
@@ -1827,9 +1869,9 @@ Bug Fixes:
- DietPi-Software | OpenBazaar: Resolved an issue where remote OB clients could not connect to server with default configuration: https://github.com/MichaIng/DietPi/pull/2224
- DietPi-Software | Resolved an issue where a global password with special characters lead to failing installs, due to missing escaping within our internal function G_CONFIG_INJECT. Thanks to @MistahDarcy for reporting this issue: https://github.com/MichaIng/DietPi/issues/2215
- DietPi-Software | Docker: Resolved an issue where the Docker daemon fails to start due to invalid command argument. Thanks to @mspieth376 for reporting this issue: https://github.com/MichaIng/DietPi/issues/2238
-- DietPi-Software | Grafana: Resolved an issue, where WebUI password is not applied correctly, when containing ";" or "#". Thanks to @Warmbadger for reporting this issue and solution: https://dietpi.com/phpbb/viewtopic.php?t=5248
-- DietPi-Software | Tautulli: Resolved an issue where Tautulli service failed to start up. As well improved reinstall, if install directory is already existent. Thanks to @Comfubar for reporting this issue: https://dietpi.com/phpbb/viewtopic.php?t=5256
-- DietPi-Obtain_network_details | Resolved a tiny visual-only error message on non-root logins. Thanks to @AndrewZ for reporting: https://dietpi.com/phpbb/viewtopic.php?t=5194
+- DietPi-Software | Grafana: Resolved an issue, where WebUI password is not applied correctly, when containing ";" or "#". Thanks to @Warmbadger for reporting this issue and solution.
+- DietPi-Software | Tautulli: Resolved an issue where Tautulli service failed to start up. As well improved reinstall, if install directory is already existent. Thanks to @Comfubar for reporting this issue.
+- DietPi-Obtain_network_details | Resolved a tiny visual-only error message on non-root logins. Thanks to @AndrewZ for reporting.
- DietPi-Update | Resolved a visual-only issue, where wrong RC versions could have been shown during incremental patching: https://github.com/MichaIng/DietPi/issues/2190
As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed+base%3Amaster
@@ -1877,7 +1919,7 @@ Bug Fixes:
- DietPi-Software | myMPD: Resolved an issue where the service would fail to run: https://github.com/MichaIng/DietPi/issues/2088
- DietPi-Software | myMPD: Resolved an issue where the installation would fail, due to a recent myMPD update with new pre-reqs: https://github.com/MichaIng/DietPi/issues/2088#issuecomment-423852124
- DietPi-Software | SiCKRAGE: Resolved failing install due to changed capitalization of SiCKRAGE GitHub repo, and, various additional pre-reqs due to new install method required by SiCKRAGE. Thanks to @mdoary for reporting this issue: https://github.com/MichaIng/DietPi/issues/2126
-- DietPi-Software | VNC Server: Resolved an issue where VNC server would fail to start under shared desktop mode, many thanks to @LieDanG for reporting this issue: https://github.com/MichaIng/DietPi/issues/2142#issuecomment-430492281
+- DietPi-Software | VNC Server: Resolved an issue where VNC server would fail to start under shared desktop mode, many thanks to @dagamboa for reporting this issue: https://github.com/MichaIng/DietPi/issues/2142#issuecomment-430492281
- DietPi-Process_tool | Resolved an issue where applying process settings on Plex Media Server failed, thanks to @symbios24 for reporting this issue: https://github.com/MichaIng/DietPi/issues/2089
- General | Sparky SBC: Resolved an issue where 'sparky_eth_controller.sh' could incorrectly reboot the device after 20 seconds.
- General | Resolved an issue with ROCK64 being unable to run xserver. Please note this device still runs under limited software rendering due to lack of available working drivers/installation method for Debian systems: https://github.com/MichaIng/DietPi/issues/2086
@@ -1939,7 +1981,7 @@ Bug Fixes:
- General | Resolved an issue where automatic swapfile generation, would not run a freespace check prior: https://github.com/MichaIng/DietPi/issues/2048#issuecomment-417855645
- DietPi-Automation | Resolved an issue where 'AUTO_SETUP_INSTALL_SOFTWARE_ID' would include numbers contained within comments: https://github.com/MichaIng/DietPi/issues/2036#issuecomment-416613903
- DietPi-Cloudshell | Resolved incorrect RAM usage readout, and, inability to run from menu on same screen: https://github.com/MichaIng/DietPi/issues/2066
-- DietPi-Config | Resolved an issue with PineA64 resolution changes, due to updated uEnv.txt on the latest PineA64 image. NB: for this feature to work, you must have an installation of the latest PineA64 v6.14 image from the DietPi site: https://dietpi.com/phpbb/viewtopic.php?p=14010#p14010
+- DietPi-Config | Resolved an issue with PineA64 resolution changes, due to updated uEnv.txt on the latest PineA64 image. NB: for this feature to work, you must have an installation of the latest PineA64 v6.14 image from the DietPi site.
- DietPi-Drive_Manager | Correctly handles bind mounts, contained within '/etc/fstab': https://github.com/MichaIng/DietPi/issues/2013
- DietPi-Process_Tool | Resolved an issue with PIDs no longer existing, causing an apply to fail: https://github.com/MichaIng/DietPi/issues/2059
- DietPi-Software | PlexPy/Tautulli: Resolved an issue with recent pre-req changes for this application, required for start functionality: https://github.com/MichaIng/DietPi/issues/2047
diff --git a/README.md b/README.md
index 20319ff45b..46571940f0 100644
--- a/README.md
+++ b/README.md
@@ -331,6 +331,11 @@ Links to hardware and software manufacturers, sources and build instructions use
- [Navidrome](https://github.com/navidrome/navidrome)
- [Homer](https://github.com/bastienwirtz/homer)
- [microblog.pub](https://git.sr.ht/~tsileo/microblog.pub)
+- [Nukkit](https://github.com/CloudburstMC/Nukkit)
+- [openHAB](https://github.com/openhab)
+- [Moonlight (CLI)](https://github.com/moonlight-stream/moonlight-embedded)
+- [Moonlight (GUI)](https://github.com/moonlight-stream/moonlight-qt)
+- [Restic](https://github.com/restic/restic)
---
diff --git a/dietpi/dietpi-config b/dietpi/dietpi-config
index 5d5aba8ce3..ed1ba6b577 100755
--- a/dietpi/dietpi-config
+++ b/dietpi/dietpi-config
@@ -358,7 +358,7 @@ A long (or insufficiently manufactured) cable may required a higher boost settin
G_CONFIG_INJECT 'decode_WVC1=' "decode_WVC1=$G_WHIP_RETURNED_VALUE" /boot/config.txt
# https://github.com/MichaIng/DietPi/issues/1487
- local current_gpu_mem=$(sed -n '/^[[:blank:]]*gpu_mem_1024/{s/^[^=]*=//p;q}' /boot/config.txt)
+ local current_gpu_mem=$(sed -n '/^[[:blank:]]*gpu_mem_1024=/{s/^[^=]*=//p;q}' /boot/config.txt)
(( ${current_gpu_mem:=76} < 96 )) && /boot/dietpi/func/dietpi-set_hardware gpumemsplit 96
REBOOT_REQUIRED=1
@@ -373,7 +373,7 @@ A long (or insufficiently manufactured) cable may required a higher boost settin
G_CONFIG_INJECT 'decode_MPG2=' "decode_MPG2=$G_WHIP_RETURNED_VALUE" /boot/config.txt
# https://github.com/MichaIng/DietPi/issues/1487
- local current_gpu_mem=$(sed -n '/^[[:blank:]]*gpu_mem_1024/{s/^[^=]*=//p;q}' /boot/config.txt)
+ local current_gpu_mem=$(sed -n '/^[[:blank:]]*gpu_mem_1024=/{s/^[^=]*=//p;q}' /boot/config.txt)
(( ${current_gpu_mem:=76} < 96 )) && /boot/dietpi/func/dietpi-set_hardware gpumemsplit 96
REBOOT_REQUIRED=1
@@ -1075,7 +1075,7 @@ Re-enabling HDMI requires a reboot. If you need emergency HDMI output, edit the
if [[ -f '/usr/lib/u-boot/platform_install.sh' ]]
then
local rootdev=$(lsblk -npo PKNAME "$G_ROOTFS_DEV")
- G_WHIP_MENU_ARRAY+=('Update MMC bootloader' ": Flash current U-Boot to $rootdev)")
+ G_WHIP_MENU_ARRAY+=('Update MMC bootloader' ": Flash current U-Boot to $rootdev")
fi
# RPi4 EEPROM update: https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md
@@ -1696,8 +1696,8 @@ If unsure, set any value, 'Ondemand Down Factor' option on the next screen will
# Get current memory split
# - Get override setting: gpu_mem_1024 is effective for all models with >= 1 GiB
- local value=$G_HW_MEMORY_SIZE
- (( $value <= 1024 )) || value=1024
+ local value=1024
+ (( $value < 1024 )) && value=$G_HW_MEMORY_SIZE
local gpu_mem_current=$(sed -n "/^[[:blank:]]*gpu_mem_$value=/{s/^[^=]*=//p;q}" /boot/config.txt) # override setting
[[ $gpu_mem_current ]] || gpu_mem_current=$(sed -n "/^[[:blank:]]*gpu_mem=/{s/^[^=]*=//p;q}" /boot/config.txt) # base setting
[[ $gpu_mem_current ]] || { (( $value < 1024 )) && gpu_mem_current=64 || gpu_mem_current=76; } # default value
@@ -2036,7 +2036,7 @@ _EOF_
# Remove wireless-power setting if not supported by adapter/firmware
# shellcheck disable=SC2015
- (( $WIFI_HARDWARE )) && iw dev "$WIFI_DEV_IFACE" set power_save on 2> /dev/null && iw dev "$WIFI_DEV_IFACE" set power_save off 2> /dev/null || sed -i '/ iw dev .* set power_save /d' /etc/network/interfaces
+ (( $WIFI_HARDWARE )) && iw dev "$WIFI_DEV_IFACE" set power_save on 2> /dev/null && iw dev "$WIFI_DEV_IFACE" set power_save off 2> /dev/null || G_EXEC sed -i '/ iw dev .* set power_save /d' /etc/network/interfaces
# Update WiFi db/wpa_supplicant if enabled
(( $WIFI_DISABLED )) || /boot/dietpi/func/dietpi-wifidb 1
@@ -3310,7 +3310,6 @@ Additional benchmarks:
if [[ $G_WHIP_RETURNED_VALUE == 'Disable' ]]; then
/boot/dietpi/func/dietpi-set_hardware soundcard none
- G_AGP alsa-utils libasound2-plugin-equal firmware-intel-sound
[[ -d '/etc/systemd/system/alsa-state.service.d' ]] && G_EXEC rm -R /etc/systemd/system/alsa-state.service.d
[[ -f '/boot/dietpi/.installed' ]] && G_CONFIG_INJECT 'aSOFTWARE_INSTALL_STATE\[5\]=' 'aSOFTWARE_INSTALL_STATE[5]=0' /boot/dietpi/.installed
diff --git a/dietpi/dietpi-letsencrypt b/dietpi/dietpi-letsencrypt
index 1fd9d684a3..2259e85f25 100755
--- a/dietpi/dietpi-letsencrypt
+++ b/dietpi/dietpi-letsencrypt
@@ -240,6 +240,9 @@ _EOF_
fi
+ # Enable HTTP/2: https://github.com/certbot/certbot/issues/3646
+ grep -q 'http2' /etc/nginx/sites-available/default || G_EXEC sed -i '/^[[:blank:]]*listen /s/443 ssl/443 ssl http2/' /etc/nginx/sites-available/default
+
Apply_To_Web_Applications
# Add HSTS header to software location blocks where required: https://dietpi.com/forum/t/warnings-in-the-configuration-nextcloud/15002/13
diff --git a/dietpi/dietpi-services b/dietpi/dietpi-services
index 7d703df2c3..1eff1502c8 100755
--- a/dietpi/dietpi-services
+++ b/dietpi/dietpi-services
@@ -145,7 +145,6 @@ _EOF_
'tomcat8'
# - Media
- 'alsa-init' # Google AI
'coturn'
'mpd'
'minidlna'
@@ -204,7 +203,7 @@ _EOF_
# - Cloud/Backups
'bdd'
'minio'
- 'syncthing' 'syncthing-inotify'
+ 'syncthing'
'urbackupsrv'
'gogs'
'gitea'
@@ -245,6 +244,7 @@ _EOF_
# - Home Automation
'home-assistant'
'domoticz'
+ 'openhab'
# - Network
'noip2'
@@ -423,7 +423,7 @@ _EOF_
esac
done
- elif [[ $command =~ ^start|stop|restart|enable|disable|mask|unmask$ ]]
+ elif [[ $command =~ ^(start|stop|restart|enable|disable|mask|unmask)$ ]]
then
for i in $services
do
diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software
index b4bbacf5d4..973ded07ba 100755
--- a/dietpi/dietpi-software
+++ b/dietpi/dietpi-software
@@ -582,10 +582,6 @@ Available commands:
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#snapcast-server'
aSOFTWARE_DEPS[$software_id]='5'
- # - ARMv8: https://github.com/badaix/snapcast/issues/706
- aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0
- # - RISC-V: https://github.com/badaix/snapcast/releases
- aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=192
aSOFTWARE_NAME[$software_id]='Snapcast Client'
@@ -594,10 +590,6 @@ Available commands:
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#snapcast-client'
aSOFTWARE_DEPS[$software_id]='5'
aSOFTWARE_INTERACTIVE[$software_id]=1
- # - ARMv8: https://github.com/badaix/snapcast/issues/706
- aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0
- # - RISC-V: https://github.com/badaix/snapcast/releases
- aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=199
aSOFTWARE_NAME[$software_id]='Spotifyd'
@@ -871,6 +863,12 @@ Available commands:
aSOFTWARE_DESC[$software_id]='Utility to sync your files to cloud storages'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#rclone'
+ #------------------
+ software_id=209
+ aSOFTWARE_NAME[$software_id]='Restic'
+ aSOFTWARE_DESC[$software_id]='Fast, efficient and secure command-line backup program'
+ aSOFTWARE_CATX[$software_id]=4
+ aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#restic'
# Gaming & Emulation
#--------------------------------------------------------------------------------
@@ -955,7 +953,7 @@ Available commands:
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#box86'
# ARMv7 only
- (( $G_HW_ARCH == 7 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,$G_HW_ARCH]=0
+ (( $G_HW_ARCH == 2 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,$G_HW_ARCH]=0
#------------------
software_id=197
aSOFTWARE_NAME[$software_id]='Box64'
@@ -966,6 +964,32 @@ Available commands:
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,2]=0
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,10]=0
+ #------------------
+ software_id=207
+ aSOFTWARE_NAME[$software_id]='Moonlight (CLI)'
+ aSOFTWARE_DESC[$software_id]='CLI game streaming client for Sunshine and NVIDIA GameStream'
+ aSOFTWARE_CATX[$software_id]=5
+ aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#moonlight-cli'
+ # RPi only
+ (( $G_HW_MODEL > 9 )) && aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,$G_HW_MODEL]=0
+ # - ARMv6: https://github.com/moonlight-stream/moonlight-embedded/issues/832
+ aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
+ # No Bookworm packages yet and Bullseye packages depend on libssl1.1
+ aSOFTWARE_AVAIL_G_DISTRO[$software_id,7]=0
+ # No Buster ARMv8 packages
+ (( $G_HW_ARCH == 3 )) && aSOFTWARE_AVAIL_G_DISTRO[$software_id,5]=0
+ #------------------
+ software_id=208
+ aSOFTWARE_NAME[$software_id]='Moonlight (GUI)'
+ aSOFTWARE_DESC[$software_id]='GUI game streaming client for Sunshine and NVIDIA GameStream'
+ aSOFTWARE_CATX[$software_id]=5
+ aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#moonlight-gui'
+ # RPi only
+ (( $G_HW_MODEL > 9 )) && aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,$G_HW_MODEL]=0
+ # - ARMv6: https://github.com/moonlight-stream/moonlight-embedded/issues/832
+ aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
+ # No Bookworm packages yet and Bullseye packages depend on libssl1.1
+ aSOFTWARE_AVAIL_G_DISTRO[$software_id,7]=0
# Social & Search
#--------------------------------------------------------------------------------
@@ -1017,7 +1041,7 @@ Available commands:
aSOFTWARE_DESC[$software_id]='A self-hosted, single-user, ActivityPub powered microblog.'
aSOFTWARE_CATX[$software_id]=6
aSOFTWARE_DEPS[$software_id]='17'
- aSOFTWARE_DOCS[$software_id]='https://docs.microblog.pub/'
+ aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/social/#microblogpub'
# Camera & Surveillance
#--------------------------------------------------------------------------------
@@ -1230,7 +1254,7 @@ Available commands:
#------------------
software_id=169
aSOFTWARE_NAME[$software_id]='Google AIY'
- aSOFTWARE_DESC[$software_id]='voice kit'
+ aSOFTWARE_DESC[$software_id]='Voice Kit'
aSOFTWARE_CATX[$software_id]=10
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/hardware_projects/#google-aiy'
aSOFTWARE_DEPS[$software_id]='5 17 69 130'
@@ -1270,6 +1294,7 @@ Available commands:
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/webserver_stack/#lasp-web-stack'
aSOFTWARE_DEPS[$software_id]='83 87 89'
aSOFTWARE_CONFLICTS[$software_id]='78 79 81 82 84 85'
+ aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,70]=0
#------------------
software_id=76
aSOFTWARE_NAME[$software_id]='LAMP'
@@ -1278,6 +1303,7 @@ Available commands:
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/webserver_stack/#lamp-web-stack'
aSOFTWARE_DEPS[$software_id]='83 88 89'
aSOFTWARE_CONFLICTS[$software_id]='78 79 81 82 84 85'
+ aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,70]=0
#------------------
software_id=78
aSOFTWARE_NAME[$software_id]='LESP'
@@ -1317,6 +1343,7 @@ Available commands:
aSOFTWARE_CATX[$software_id]=-1
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/webserver_stack/#apache2'
aSOFTWARE_CONFLICTS[$software_id]='78 79 81 82 84 85'
+ aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,70]=0
#------------------
software_id=84
aSOFTWARE_NAME[$software_id]='Lighttpd'
@@ -1490,6 +1517,15 @@ Available commands:
aSOFTWARE_CATX[$software_id]=17
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/home_automation/#tasmoadmin'
aSOFTWARE_DEPS[$software_id]='89 webserver'
+ #------------------
+ software_id=206
+ aSOFTWARE_NAME[$software_id]='openHAB'
+ aSOFTWARE_DESC[$software_id]='Vendor and technology agnostic FLOSS home automation software'
+ aSOFTWARE_CATX[$software_id]=17
+ aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/home_automation/#openhab'
+ aSOFTWARE_DEPS[$software_id]='196'
+ # - ARMv6: Requires at least Java 11
+ aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
# Printing
#--------------------------------------------------------------------------------
@@ -2362,16 +2398,21 @@ _EOF_
local target=$2 # Target path
local file=${url##*/} # Grab file name from URL
- local type=${file##*.} # Grab file type from file name to special handle deb|zip|tar(.gz|.bz2)|tgz|tbz2|txz|7z|xz
# DietPi-Software conf/service mode
# shellcheck disable=SC2154
- [[ $dps_index && ${aSOFTWARE_NAME[$dps_index]} ]] && url="https://raw.githubusercontent.com/$G_GITOWNER/DietPi/$G_GITBRANCH/.conf/dps_$dps_index/$url" type=
+ [[ $dps_index && ${aSOFTWARE_NAME[$dps_index]} ]] && url="https://raw.githubusercontent.com/$G_GITOWNER/DietPi/$G_GITBRANCH/.conf/dps_$dps_index/$url"
G_EXEC cd "$G_WORKING_DIR" # Failsafe
# Add decompressor to deps list if missing
- [[ $type == 'xz' || $type == 'txz' ]] && ! command -v xz > /dev/null && aDEPS+=('xz-utils')
+ case $file in
+ *'.xz'|*'.txz') command -v xz > /dev/null || aDEPS+=('xz-utils');;
+ *'.bz2'|*'.tbz2') command -v bzip2 > /dev/null || aDEPS+=('bzip2');;
+ *'.zip') command -v unzip > /dev/null || aDEPS+=('unzip');;
+ *'.7z') command -v 7zr > /dev/null || aDEPS+=('p7zip');;
+ *) :;;
+ esac
# Download file
if [[ ${aDEPS[0]} ]]
@@ -2393,20 +2434,25 @@ _EOF_
unset -v fallback_url dps_index
# Process downloaded file
- [[ $type == 'xz' ]] && G_EXEC xz -df "$file" && file=${file%.xz}
- if [[ $type == 'deb' ]]
+ case $file in
+ *'.gz') [[ $file == *'.tar.gz' ]] || { G_EXEC gzip -df "$file" && file=${file%.gz}; };;
+ *'.xz') [[ $file == *'.tar.xz' ]] || { G_EXEC xz -df "$file" && file=${file%.xz}; };;
+ *'.bz2') [[ $file == *'.tar.bz2' ]] || { G_EXEC bzip2 -df "$file" && file=${file%.bz2}; };;
+ *) :;;
+ esac
+ if [[ $file == *'.deb' ]]
then
G_AGI "./$file"
- elif [[ $type == 'zip' ]]
+ elif [[ $file == *'.zip' ]]
then
G_EXEC unzip -o "$file" ${target:+"-d$target"}
- elif [[ $type =~ ^(t?gz|t?bz2|txz|tar)$ ]]
+ elif [[ $file =~ \.(t?gz|t?xz|t?bz2|tar)$ ]]
then
G_EXEC tar xf "$file" ${target:+"--one-top-level=$target"}
- elif [[ $type == '7z' ]]
+ elif [[ $file == *'.7z' ]]
then
[[ $target && ! -d $target ]] && G_EXEC mkdir -p "$target" # Workaround for 7zr ignoring umask: https://github.com/MichaIng/DietPi/issues/4251
G_EXEC 7zr x -y "$file" ${target:+"-o$target"}
@@ -2875,8 +2921,8 @@ unix_socket_directories = '/run/postgresql'" > "$i/00dietpi.conf"
if To_Install 7 # FFmpeg
then
- # Raspberry Pi Bullseye: Enable hardware codecs
- (( $G_HW_MODEL > 9 )) || (( $G_DISTRO < 6 )) || /boot/dietpi/func/dietpi-set_hardware rpi-codec 1
+ # RPi: Enable hardware codecs
+ (( $G_HW_MODEL > 9 )) || /boot/dietpi/func/dietpi-set_hardware rpi-codec 1
G_AGI ffmpeg
fi
@@ -3018,8 +3064,8 @@ unix_socket_directories = '/run/postgresql'" > "$i/00dietpi.conf"
if To_Install 170 # UnRAR
then
- # On Raspbian, only "unrar-free" is available which does not support all RAR formats, thus we use "unrar" [non-free] from Debian on ARMv7+ models: http://raspbian.raspberrypi.org/raspbian/pool/non-free/u/unrar-nonfree/
- if (( $G_HW_ARCH == 1 ))
+ # On Raspbian and for RISC-V, only "unrar-free" is available which does not support all RAR formats, thus we use "unrar" [non-free] from Debian on ARMv7+ models: http://raspbian.raspberrypi.org/raspbian/pool/non-free/u/unrar-nonfree/, https://deb.debian.org/debian-ports/pool/non-free/u/unrar-nonfree/
+ if (( $G_HW_ARCH == 1 || $G_HW_ARCH == 11 ))
then
G_AGI unrar-free
@@ -3631,7 +3677,8 @@ _EOF_
Remove_SysV mysql 1
# Assure correct owner in case the database dir got migrated from a different system: https://github.com/MichaIng/DietPi/issues/4721#issuecomment-917051930
- [[ $(stat -c '%U' /mnt/dietpi_userdata/mysql/mysql) == 'mysql' ]] || G_EXEC chown -R mysql:mysql /mnt/dietpi_userdata/mysql
+ # - The group is correctly recursively fixed by the preinst script already.
+ [[ -d '/mnt/dietpi_userdata/mysql/mysql' && $(stat -c '%U' /mnt/dietpi_userdata/mysql/mysql) != 'mysql' ]] && find /mnt/dietpi_userdata/mysql ! -user root ! -user mysql -exec chown mysql {} +
# Force service to start before cron
G_EXEC mkdir -p /etc/systemd/system/mariadb.service.d
@@ -3775,10 +3822,9 @@ _EOF_
# Quick install: https://docs.phpmyadmin.net/en/latest/setup.html#quick-install
# - Get latest version name
- local version=$(curl -sSfL 'https://api.github.com/repos/phpmyadmin/phpmyadmin/releases/latest' | mawk -F\" '/"name": /{print $4}')
+ local version=$(curl -sSfL 'https://api.github.com/repos/phpmyadmin/phpmyadmin/releases' | mawk -F\" '/^ *"name": "/ && $4!~/rc/ {print $4}' | sort -rV | head -1)
[[ $version ]] || { version='5.2.1'; G_DIETPI-NOTIFY 1 "Automatic latest ${aSOFTWARE_NAME[$software_id]} version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; }
- # ToDo: Add xz support
- Download_Install "https://files.phpmyadmin.net/phpMyAdmin/$version/phpMyAdmin-$version-english.tar.gz"
+ Download_Install "https://files.phpmyadmin.net/phpMyAdmin/$version/phpMyAdmin-$version-english.tar.xz"
# - Reinstall: Clean install but preserve existing config file
[[ -f '/var/www/phpmyadmin/config.inc.php' ]] && G_EXEC mv /var/www/phpmyadmin/config.inc.php "phpMyAdmin-$version-english/"
G_EXEC rm -Rf /var/www/phpmyadmin # Include pre-v6.27 symlink: https://github.com/MichaIng/DietPi/issues/3304
@@ -3843,11 +3889,12 @@ _EOF_
then
G_AGI libtiff5 libopenjp2-7 libxcb1 # ARMv6/7: Runtime libs for Pillow from piwheels (libtiff5 pulls libjpeg62-turbo)
else
- # Bookworm: Most wheels need to be compiled: gcc and libffi-dev for cffi, Rust for matrix-synapse, libpq-dev for psycopg2, make for PyNaCl, libjpeg62-turbo-dev for Pillow
- G_AGI gcc libffi-dev libpq-dev make libjpeg62-turbo-dev
+ # Bookworm: Most wheels need to be compiled: gcc and libffi-dev for cffi, Rust for cryptography and matrix-synapse, libpq-dev for psycopg2, make for PyNaCl, libjpeg62-turbo-dev for Pillow, libssl-dev and pkg-config for cryptography
+ G_AGI gcc libffi-dev libpq-dev make libjpeg62-turbo-dev libssl-dev pkg-config
G_EXEC curl -sSf 'https://sh.rustup.rs/' -o rustup-init.sh
G_EXEC chmod +x rustup-init.sh
- G_EXEC_OUTPUT=1 G_EXEC ./rustup-init.sh -y --profile minimal
+ # RPi with 64-bit kernel on 32-bit image: Enforce 32-bit toolchain: https://github.com/MichaIng/DietPi/issues/6306
+ G_EXEC_OUTPUT=1 G_EXEC ./rustup-init.sh -y --profile minimal ${RPI_64KERNEL_32OS:+'--default-host' 'armv7-unknown-linux-gnueabihf'}
G_EXEC rm rustup-init.sh
export PATH="/root/.cargo/bin:$PATH"
fi
@@ -3862,7 +3909,7 @@ _EOF_
Create_User -d /mnt/dietpi_userdata/synapse synapse
# Service
- cat << _EOF_ > /etc/systemd/system/synapse.service
+ cat << '_EOF_' > /etc/systemd/system/synapse.service
[Unit]
Description=Synapse (DietPi)
Wants=network-online.target
@@ -3873,7 +3920,7 @@ Type=notify
SyslogIdentifier=Synapse
User=synapse
WorkingDirectory=/mnt/dietpi_userdata/synapse
-ExecStart=$(command -v python3) -m synapse.app.homeserver -c homeserver.yaml -c homeserver.yaml.d/
+ExecStart=/usr/bin/python3 -m synapse.app.homeserver -c homeserver.yaml -c homeserver.yaml.d/
ExecReload=/bin/kill -HUP \$MAINPID
[Install]
@@ -4097,7 +4144,7 @@ _EOF_
# Download latest version
local version=$(curl -sSfL 'https://dist.ipfs.io/go-ipfs/versions' | tail -1)
- [[ $version ]] || { version='v0.18.1'; G_DIETPI-NOTIFY 1 "Automatic latest ${aSOFTWARE_NAME[$software_id]} version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; }
+ [[ $version ]] || { version='v0.19.2'; G_DIETPI-NOTIFY 1 "Automatic latest ${aSOFTWARE_NAME[$software_id]} version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; }
Download_Install "https://dist.ipfs.io/go-ipfs/$version/go-ipfs_${version}_linux-$arch.tar.gz"
# Install
@@ -4148,7 +4195,7 @@ _EOF_
if To_Install 16 microblog-pub # microblog.pub
then
local micro_name='microblog-pub'
- local micro_python_version='3.10.9'
+ local micro_python_version='3.10.11' # https://github.com/pyenv/pyenv/tree/master/plugins/python-build/share/python-build
local micro_pyenv_dir="/opt/$micro_name"
local micro_pyenv_activate_file="$micro_pyenv_dir/pyenv-activate.sh"
local micro_virtualenv="$micro_pyenv_dir/.virtual_path"
@@ -4156,34 +4203,49 @@ _EOF_
local micro_systemd="/etc/systemd/system/$micro_name.service"
local micro_functions="/etc/bashrc.d/$micro_name.sh"
+ # Clone the repo into data dir
+ if [[ ! -d $micro_data_dir ]]
+ then
+ G_EXEC_OUTPUT=1 G_EXEC git clone 'https://git.sr.ht/~tsileo/microblog.pub' "$micro_data_dir"
+ # Enable remote access on port 8007
+ G_EXEC sed -i 's/uvicorn app/uvicorn --host 0.0.0.0 --port 8007 app/' "$micro_data_dir/misc/supervisord.conf"
+ G_EXEC sed -i 's/8000/8007/' "$micro_data_dir/data/tests.toml"
+ fi
+
+ # Disable pip cache
+ G_EXEC mkdir -p "$micro_data_dir/.pip"
+ G_EXEC eval "echo -e '[global]\nno-cache-dir=true' > '$micro_data_dir/.pip/pip.conf'"
+
# User
Create_User -d "$micro_data_dir" "$micro_name"
+ G_EXEC chown -R "$micro_name:$micro_name" "$micro_data_dir"
# Dependencies
# - gcc, libc6-dev, make, libssl-dev, zlib1g-dev for Python build. libbz2-dev; libreadline-dev, libsqlite3-dev, liblzma-dev to suppress warnings; libffi-dev for ModuleNotFoundError: No module named '_ctypes'
aDEPS=('gcc' 'libc6-dev' 'make' 'libssl-dev' 'zlib1g-dev' 'libbz2-dev' 'libreadline-dev' 'libsqlite3-dev' 'liblzma-dev' 'libffi-dev')
+ # - All but x86_64: g++ for libsass
+ (( $G_HW_ARCH == 10 )) || aDEPS+=('g++')
+ # - ARMv6/7/RISC-V: Rust and pkg-config required for cryptography
+ if [[ $G_HW_ARCH =~ ^(1|2|11)$ ]]
+ then
+ # pkg-config for cryptography, libjpeg62-turbo-dev for Pillow and libxslt1-dev for lxml
+ aDEPS+=('pkg-config' 'libjpeg62-turbo-dev' 'libxslt1-dev')
+ # Rust for cryptography
+ G_EXEC curl -sSf 'https://sh.rustup.rs/' -o rustup-init.sh
+ G_EXEC chmod +x rustup-init.sh
+ # RPi with 64-bit kernel on 32-bit image: Enforce 32-bit toolchain: https://github.com/MichaIng/DietPi/issues/6306
+ G_EXEC_OUTPUT=1 G_EXEC sudo -u "$micro_name" ./rustup-init.sh -y --profile minimal ${RPI_64KERNEL_32OS:+'--default-host' 'armv7-unknown-linux-gnueabihf'}
+ G_EXEC rm rustup-init.sh
+ fi
- # 1. Create a Python 3.10 environment via pyenv
+ # Create a Python 3.10 environment via pyenv
# - https://python-poetry.org/docs/managing-environments/
Download_Install 'https://github.com/pyenv/pyenv/archive/master.tar.gz'
# - Start with fresh instance to allow clean pyenv and Python updates and fix broken instances.
[[ -d $micro_pyenv_dir ]] && G_EXEC rm -R "$micro_pyenv_dir"
G_EXEC mv pyenv-master "$micro_pyenv_dir"
- # 2. Clone the repo into data dir
- if [[ ! -d $micro_data_dir ]]
- then
- G_EXEC_OUTPUT=1 G_EXEC git clone 'https://git.sr.ht/~tsileo/microblog.pub' "$micro_data_dir"
- # Enable remote access on port 8007
- G_EXEC sed -i 's/uvicorn app/uvicorn --host 0.0.0.0 --port 8007 app/' "$micro_data_dir/misc/supervisord.conf"
- G_EXEC sed -i 's/8000/8007/' "$micro_data_dir/data/tests.toml"
- fi
-
- # 3. Disable pip cache
- G_EXEC mkdir -p "$micro_data_dir/.pip"
- G_EXEC eval "echo -e '[global]\nno-cache-dir=true' > '$micro_data_dir/.pip/pip.conf'"
-
- # 4. Generate script to activate pyenv
+ # Generate script to activate pyenv
echo "#!/bin/dash
cd $micro_pyenv_dir || return 1
export PYENV_ROOT='$micro_pyenv_dir' || return 1
@@ -4191,10 +4253,11 @@ export PATH=\"\$PYENV_ROOT/bin:\$PATH\" || return 1
eval \"\$(pyenv init --path)\" || return 1
eval \"\$(pyenv init -)\" || return 1
cd $micro_data_dir
+[ -f '.cargo/env' ] && . .cargo/env
PS1=\"(microblog.pub) \$PS1\"" > "$micro_pyenv_activate_file"
- # 5. Install Python 3.10 and Poetry
- G_EXEC chown -R "$micro_name:$micro_name" "$micro_pyenv_dir" "$micro_data_dir"
+ # Install Python 3.10 and Poetry
+ G_EXEC chown -R "$micro_name:$micro_name" "$micro_pyenv_dir"
G_EXEC_DESC='Installing Python with Poetry into pyenv'
G_EXEC_OUTPUT=1 G_EXEC sudo -u "$micro_name" dash -c "
. $micro_pyenv_activate_file || exit 1
@@ -4213,7 +4276,7 @@ poetry env info | grep -oP '(?<=^Path:\s).*/virtualenvs/.*' > '$micro_virtualenv
G_EXEC_DESC='Checking for Poetry virtualenv' G_EXEC eval '[[ $VENV_DIR ]]'
G_EXEC rm "$micro_virtualenv"
- # 6. Generate functions for later configuration and install to profile
+ # Generate functions for later configuration and install to profile
cat << _EOF_ > "$micro_functions"
#!/bin/dash
microblog-pub()
@@ -4235,7 +4298,7 @@ where:
sudo systemctl restart '$micro_name'
}
_EOF_
- # 7. Generate systemd service
+ # Generate systemd service
cat << _EOF_ > "$micro_systemd"
[Unit]
Description=microblog.pub (DietPi)
@@ -5048,6 +5111,8 @@ PrivateTmp=true
[Install]
WantedBy=multi-user.target
_EOF_
+ # Sparky SBC: Workaround for failing service start: https://dietpi.com/forum/t/allogui-not-working-apache-service-doesnt-start/15708
+ G_EXEC sed -i '/^AmbientCapabilities=/d' /etc/systemd/system/roonbridge.service
fi
if To_Install 119 # CAVA
@@ -5369,12 +5434,12 @@ _EOF_
# Install latest version
local arch=$(dpkg --print-architecture)
- local url=$(curl -sSfL 'https://hndl.urbackup.org/Server/latest' | mawk -F\" "/\"urbackup-server_.*_$arch\.deb\"/{print \$8}")
- [[ $url ]] && url="https://hndl.urbackup.org/Server/latest/$url"
- local fallback_url="https://hndl.urbackup.org/Server/2.5.30/urbackup-server_2.5.27_$arch.deb"
- Download_Install "$url"
+ local version=$(curl -sSfL 'https://hndl.urbackup.org/Server/' | grep -Pwo '(?<=href=")[0-9.]+(?=/")' | sort -Vr | head -1)
+ local file=$(curl -sSfL "https://hndl.urbackup.org/Server/$version/" | grep -Pwom1 "(?<=href=\")urbackup-server_${version}_$arch\.deb(?=\")")
+ local fallback_url="https://hndl.urbackup.org/Server/2.5.31/urbackup-server_2.5.31_$arch.deb"
+ Download_Install "${file:+https://hndl.urbackup.org/Server/$version/$file}"
G_EXEC systemctl stop urbackupsrv
- unset -v backuppath arch url
+ unset -v backuppath arch version file
fi
if To_Install 51 # OpenTyrian
@@ -6248,7 +6313,7 @@ After=network-online.target remote-fs.target
SyslogIdentifier=Airsonic
User=airsonic
WorkingDirectory=/mnt/dietpi_userdata/airsonic
-ExecStart=$(command -v java) -Xmx${memory_limit}m -Dairsonic.home=/mnt/dietpi_userdata/airsonic -Dserver.servlet.context-path=/airsonic -Dserver.port=8080 -jar /mnt/dietpi_userdata/airsonic/airsonic.war
+ExecStart=/usr/bin/java -Xmx${memory_limit}m -Dairsonic.home=/mnt/dietpi_userdata/airsonic -Dserver.servlet.context-path=/airsonic -Dserver.port=8080 -jar /mnt/dietpi_userdata/airsonic/airsonic.war
[Install]
WantedBy=multi-user.target
@@ -6429,14 +6494,11 @@ See the manual below for instructions on how to do this.
if To_Install 100 pijuice # PiJuice
then
- G_AGI pijuice-base
- G_EXEC systemctl stop pijuice
-
- G_EXEC mkdir -p /var/lib/dietpi/dietpi-software/installed/pijuice
- echo -e '#!/bin/dash\npoweroff' > /var/lib/dietpi/dietpi-software/installed/pijuice/pijuice_func1.sh
+ # Pre-create config so we can preserve user customisations but override the package default
+ G_EXEC mkdir -p /var/lib/dietpi/dietpi-software/installed/pijuice /var/lib/pijuice
+ [[ -f '/var/lib/dietpi/dietpi-software/installed/pijuice/pijuice_func1.sh' ]] || G_EXEC eval 'echo -e '\''#!/bin/dash\npoweroff'\'' > /var/lib/dietpi/dietpi-software/installed/pijuice/pijuice_func1.sh'
G_EXEC chmod +x /var/lib/dietpi/dietpi-software/installed/pijuice/pijuice_func1.sh
-
- cat << '_EOF_' > /var/lib/pijuice/pijuice_config.JSON
+ [[ -f '/var/lib/pijuice/pijuice_config.JSON' ]] || cat << '_EOF_' > /var/lib/pijuice/pijuice_config.JSON
{
"system_events": {
"low_battery_voltage": {
@@ -6499,6 +6561,8 @@ See the manual below for instructions on how to do this.
}
}
_EOF_
+ G_AGI pijuice-base
+ G_EXEC systemctl stop pijuice
fi
if To_Install 171 # frp
@@ -6804,7 +6868,7 @@ SyslogIdentifier=Blynk
User=blynk
LogsDirectory=blynk
WorkingDirectory=/mnt/dietpi_userdata/blynk
-ExecStart=$(command -v java)$log4shell -jar /mnt/dietpi_userdata/blynk/blynkserver.jar
+ExecStart=/usr/bin/java$log4shell -jar /mnt/dietpi_userdata/blynk/blynkserver.jar
# Hardening
PrivateTmp=true
@@ -6876,7 +6940,7 @@ _EOF_
# Service
Remove_SysV webiopi 1
- cat << _EOF_ > /etc/systemd/system/webiopi.service
+ cat << '_EOF_' > /etc/systemd/system/webiopi.service
[Unit]
Description=WebIOPi (DietPi)
Wants=network-online.target
@@ -6884,7 +6948,7 @@ After=network-online.target
[Service]
SyslogIdentifier=WebIOPi
-ExecStart=$(command -v python3) -m webiopi -c /etc/webiopi/config
+ExecStart=/usr/bin/python3 -m webiopi -c /etc/webiopi/config
# Hardening
PrivateTmp=true
@@ -7319,7 +7383,7 @@ _EOF_
# ARMv6: Install package manually since repo is not compatible: https://grafana.com/grafana/download?platform=arm&edition=oss
if (( $G_HW_ARCH == 1 ))
then
- Download_Install 'https://dl.grafana.com/oss/release/grafana-rpi_9.4.7_armhf.deb'
+ Download_Install 'https://dl.grafana.com/oss/release/grafana-rpi_9.5.1_armhf.deb'
# Else use official APT repo: https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/#install-from-apt-repository
else
@@ -7411,7 +7475,7 @@ SyslogIdentifier=Ubooquity
User=ubooquity
LogsDirectory=ubooquity
WorkingDirectory=/mnt/dietpi_userdata/ubooquity
-ExecStart=$(command -v java) -Xmx${memory_limit}m -jar /mnt/dietpi_userdata/ubooquity/Ubooquity.jar --headless --remoteadmin --adminport 2038 --libraryport 2039
+ExecStart=/usr/bin/java -Xmx${memory_limit}m -jar /mnt/dietpi_userdata/ubooquity/Ubooquity.jar --headless --remoteadmin --adminport 2038 --libraryport 2039
[Install]
WantedBy=multi-user.target
@@ -7466,7 +7530,7 @@ After=network-online.target remote-fs.target
SyslogIdentifier=Komga
User=komga
WorkingDirectory=/mnt/dietpi_userdata/komga
-ExecStart=$(command -v java) -Xmx${memory_limit}m -jar komga.jar
+ExecStart=/usr/bin/java -Xmx${memory_limit}m -jar komga.jar
[Install]
WantedBy=multi-user.target
@@ -8208,7 +8272,7 @@ location = /.well-known/caldav { return 301 /baikal/html/dav.php; }' > /etc/ngi
murmurd -ini /etc/mumble-server.ini -supw "$GLOBAL_PW"
fi
- if To_Install 41 emby-server # Emby Server
+ if To_Install 41 emby-server # Emby
then
case $G_HW_ARCH in
2) local arch='armhf';;
@@ -8217,7 +8281,7 @@ location = /.well-known/caldav { return 301 /baikal/html/dav.php; }' > /etc/ngi
esac
local fallback_url="https://github.com/MediaBrowser/Emby.Releases/releases/download/4.7.11.0/emby-server-deb_4.7.11.0_$arch.deb"
- Download_Install "$(curl -sSfL 'https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest' | mawk -F\" "/\"browser_download_url\": .*\/emby-server-deb_[^\"\/]*_$arch\.deb\"/{print \$4}")"
+ Download_Install "$(curl -sSfL 'https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": .*\/emby-server-deb_[^\"\/]*_$arch\.deb\"$/{print \$4}")"
G_EXEC systemctl stop emby-server
# User: The DEB package install overrides this, hence the method needs to be changed when using an APT repository!
@@ -8547,7 +8611,7 @@ _EOF_
# Install ruTorrent: Web UI for rTorrent
# - Grab current version
local version=$(curl -sSfL 'https://api.github.com/repos/Novik/ruTorrent/releases/latest' | mawk -F\" '/"tag_name": /{print $4}')
- [[ $version ]] || { version='v4.0.3'; G_DIETPI-NOTIFY 1 "Automatic latest ruTorrent version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; }
+ [[ $version ]] || { version='v4.1.5'; G_DIETPI-NOTIFY 1 "Automatic latest ruTorrent version detection failed. Version \"$version\" will be installed as fallback, but a newer version might be available. Please report this at: https://github.com/MichaIng/DietPi/issues"; }
Download_Install "https://github.com/Novik/ruTorrent/archive/$version.tar.gz"
# - Reinstall freshly with preserved configs and 3rd party plugins
@@ -8915,13 +8979,13 @@ _EOF_
# - Remove "Group=medusa" which does not exist, instead fallback to primary group "dietpi"
G_EXEC sed -i '/^[[:blank:]]*Group=/d' /etc/systemd/system/medusa.service
# - Launch from our install and data directory
- G_CONFIG_INJECT 'ExecStart=' "ExecStart=$(command -v python3) /mnt/dietpi_userdata/medusa/start.py -q --nolaunch --datadir=/mnt/dietpi_userdata/medusa" /etc/systemd/system/medusa.service
+ G_CONFIG_INJECT 'ExecStart=' 'ExecStart=/usr/bin/python3 /mnt/dietpi_userdata/medusa/start.py -q --nolaunch --datadir=/mnt/dietpi_userdata/medusa' /etc/systemd/system/medusa.service
# Permissions
G_EXEC chown -R medusa:dietpi /mnt/dietpi_userdata/medusa
fi
- if To_Install 50 syncthing syncthing-inotify # Syncthing
+ if To_Install 50 syncthing # Syncthing
then
# Reinstall: Skip download and install, advice to use internal updater from web UI
if [[ -d '/opt/syncthing' ]]
@@ -9012,8 +9076,8 @@ _EOF_
# Enable KMS
grep -Eq '^[[:blank:]]*dtoverlay=vc4-f?kms-v3d' /boot/config.txt || /boot/dietpi/func/dietpi-set_hardware rpi-opengl vc4-kms-v3d
- # Bullseye: Enable hardware codecs
- (( $G_DISTRO < 6 )) || /boot/dietpi/func/dietpi-set_hardware rpi-codec 1
+ # Enable hardware codecs
+ /boot/dietpi/func/dietpi-set_hardware rpi-codec 1
fi
# Flags: Allow root (disable sandbox) and minimise CPU usage: https://peter.sh/experiments/chromium-command-line-switches/
@@ -9188,16 +9252,34 @@ _EOF_
[[ -f '/var/log/virtualhere.log' ]] && G_EXEC rm /var/log/virtualhere.log
fi
- if To_Install 139 sabnzbd # SABnzbd
+ if To_Install 139 sabnzbd # SABnzbd: https://sabnzbd.org/wiki/installation/install-off-modules
then
- # https://sabnzbd.org/wiki/installation/install-off-modules
# APT deps
aDEPS=('par2' 'p7zip-full')
- # ARMv8: No sabyenc3 wheels available: https://pypi.org/project/sabyenc3/#files
- (( $G_HW_ARCH == 3 )) && aDEPS+=('gcc')
+ # - ARMv6/7 on Bookworm + RISC-V: gcc and libffi-dev for cffi; pkg-config, libssl-dev and Rust for cryptography, g++ for sabctools and ujson
+ if (( $G_DISTRO > 6 && $G_HW_ARCH < 3 || $G_HW_ARCH == 11 ))
+ then
+ aDEPS+=('g++' 'libffi-dev' 'libssl-dev' 'pkg-config')
+ G_EXEC curl -sSf 'https://sh.rustup.rs/' -o rustup-init.sh
+ G_EXEC chmod +x rustup-init.sh
+ G_EXEC_OUTPUT=1 G_EXEC ./rustup-init.sh -y --profile minimal
+ G_EXEC rm rustup-init.sh
+ export PATH="/root/.cargo/bin:$PATH"
- # Download
- Download_Install 'https://github.com/sabnzbd/sabnzbd/archive/master.tar.gz'
+ # - ARMv6/7 temporary workaround: https://github.com/piwheels/packages/issues/358
+ elif (( $G_HW_ARCH < 3 ))
+ then
+ aDEPS+=('g++')
+ fi
+
+ # Download: SABnzbd v4 does not support Python 3.7 (Buster) anymore: https://github.com/sabnzbd/sabnzbd/issues/2545
+ if (( $G_DISTRO < 6 ))
+ then
+ Download_Install 'https://github.com/sabnzbd/sabnzbd/archive/3.7.2.tar.gz'
+ G_EXEC mv sabnzbd-3.7.2 sabnzbd-master
+ else
+ Download_Install 'https://github.com/sabnzbd/sabnzbd/archive/master.tar.gz'
+ fi
# Reinstall: Remove old install dir
if [[ -d '/etc/sabnzbd' ]]
@@ -9223,10 +9305,10 @@ _EOF_
# Service: https://github.com/sabnzbd/sabnzbd/blob/master/linux/sabnzbd%40.service
# - Options: https://sabnzbd.org/wiki/advanced/command-line-parameters
# "-OO": Optimise code and remove doc lines (default shebang of SABnzbd.py, but we run python3 explicitly to avoid version conflicts)
- # "-d": Run in daemon mode without terminal and browser start (requires "-f ")
+ # "-d": Run in daemon mode without terminal and browser start (requires "-f /path/to/config.ini")
# NB: In systemd unit leads to unreliable long taking webserver start. A new process is forked which allows web access, but sometimes after very long time, sometimes never: https://github.com/sabnzbd/sabnzbd/issues/1283
# "-n": Do no start browser with daemon
- cat << _EOF_ > /etc/systemd/system/sabnzbd.service
+ cat << '_EOF_' > /etc/systemd/system/sabnzbd.service
[Unit]
Description=SABnzbd (DietPi)
Documentation=https://sabnzbd.org/wiki/
@@ -9236,7 +9318,7 @@ After=network-online.target remote-fs.target
[Service]
SyslogIdentifier=SABnzbd
User=sabnzbd
-ExecStart=$(command -v python3) -OO /etc/sabnzbd/SABnzbd.py -f /etc/sabnzbd/sabnzbd.ini -n --disable-file-log
+ExecStart=/usr/bin/python3 -OO /etc/sabnzbd/SABnzbd.py -f /etc/sabnzbd/sabnzbd.ini -n --disable-file-log
Restart=on-failure
[Install]
@@ -9428,7 +9510,7 @@ _EOF_
if (( ${PHP_VERSION::1} > 7 ))
then
aDEPS+=("php$PHP_VERSION-curl")
- local fallback_url='https://github.com/koel/koel/releases/download/v6.11.0/koel-v6.11.0.tar.gz' aphp_deps=('curl' 'dom')
+ local fallback_url='https://github.com/koel/koel/releases/download/v6.11.2/koel-v6.11.2.tar.gz' aphp_deps=('curl' 'dom')
Download_Install "$(curl -sSfL 'https://api.github.com/repos/koel/koel/releases/latest' | mawk -F\" '/^ *"browser_download_url": ".*\/koel-[^"\/]*\.tar\.gz"$/{print $4}')"
else
aDEPS+=("php$PHP_VERSION-json")
@@ -9610,7 +9692,7 @@ _EOF_
# ARMv7
else
local url=$(curl -sSfL 'https://api.github.com/repos/Radarr/Radarr/releases/latest' | mawk -F\" '/"browser_download_url": .*linux-core-arm\.tar\.gz"/{print $4}')
- local fallback_url='https://github.com/Radarr/Radarr/releases/download/v4.3.2.6857/Radarr.master.4.3.2.6857.linux-core-arm.tar.gz'
+ local fallback_url='https://github.com/Radarr/Radarr/releases/download/v4.4.4.7068/Radarr.master.4.4.4.7068.linux-core-arm.tar.gz'
fi
# ARMv8
@@ -9717,7 +9799,7 @@ _EOF_
# ARMv7
else
local url=$(curl -sSfL 'https://api.github.com/repos/Lidarr/Lidarr/releases/latest' | mawk -F\" '/"browser_download_url": .*linux-core-arm\.tar\.gz"/{print $4}')
- local fallback_url='https://github.com/Lidarr/Lidarr/releases/download/v1.0.2.2592/Lidarr.master.1.0.2.2592.linux-core-arm.tar.gz'
+ local fallback_url='https://github.com/Lidarr/Lidarr/releases/download/v1.1.4.3027/Lidarr.master.1.1.4.3027.linux-core-arm.tar.gz'
fi
# ARMv8
@@ -9785,25 +9867,23 @@ _EOF_
G_EXEC chown -R lidarr:dietpi /mnt/dietpi_userdata/lidarr /opt/lidarr
fi
- if To_Install 180 bazarr # Bazarr
+ if To_Install 180 bazarr # Bazarr: https://wiki.bazarr.media/Getting-Started/Installation/Linux/linux/
then
- # https://wiki.bazarr.media/Getting-Started/Installation/Linux/linux/
- Download_Install 'https://github.com/morpheus65535/bazarr/releases/latest/download/bazarr.zip' bazarr
+ # APT deps
+ (( $G_HW_ARCH < 3 )) && aDEPS=('libatlas3-base') # numpy from piwheels: https://piwheels.org/project/numpy/
- # Dependencies
- (( $G_HW_ARCH < 3 )) && G_AGI libatlas3-base # numpy from piwheels deps: https://piwheels.org/project/numpy/
- (( $G_HW_ARCH == 3 || ( $G_HW_ARCH == 10 && $G_DISTRO > 5 ) )) && G_AGI gcc # webrtcvad-wheels build on ARMv8 and x86_64 Bullseye+: https://pypi.org/project/webrtcvad-wheels/#files
+ # Download
+ Download_Install 'https://github.com/morpheus65535/bazarr/releases/latest/download/bazarr.zip' bazarr
- G_EXEC cd bazarr
- G_EXEC_OUTPUT=1 G_EXEC pip3 install -Ur requirements.txt
- G_EXEC cd ..
+ # Python deps
+ G_EXEC_OUTPUT=1 G_EXEC pip3 install -Ur bazarr/requirements.txt
- # Always perform a clean full reinstall
+ # Install: Remove previous instance on reinstall
[[ -d '/opt/bazarr' ]] && G_EXEC rm -R /opt/bazarr
G_EXEC mv bazarr /opt
# Data dir
- [[ -d '/mnt/dietpi_userdata/bazarr' ]] || G_EXEC mkdir /mnt/dietpi_userdata/bazarr
+ G_EXEC mkdir -p /mnt/dietpi_userdata/bazarr
# Log to RAM
G_EXEC rm -Rf /mnt/dietpi_userdata/bazarr/log
@@ -9813,10 +9893,10 @@ _EOF_
Create_User -g dietpi -d /mnt/dietpi_userdata/bazarr bazarr
# Permissions
- G_EXEC chown -R bazarr:dietpi /mnt/dietpi_userdata/bazarr /opt/bazarr
+ G_EXEC chown -R bazarr:0 /mnt/dietpi_userdata/bazarr /opt/bazarr
- # Service: https://github.com/morpheus65535/bazarr/wiki/Autostart-on-Linux-Windows-MacOS-FreeBSD#systemd-service-file-for-debian-ubuntu
- cat << _EOF_ > /etc/systemd/system/bazarr.service
+ # Service: https://wiki.bazarr.media/Getting-Started/Autostart/Linux/linux/
+ cat << '_EOF_' > /etc/systemd/system/bazarr.service
[Unit]
Description=Bazarr (DietPi)
Wants=network-online.target
@@ -9827,7 +9907,7 @@ SyslogIdentifier=Bazarr
User=bazarr
UMask=002
LogsDirectory=bazarr
-ExecStart=$(command -v python3) /opt/bazarr/bazarr.py -c /mnt/dietpi_userdata/bazarr
+ExecStart=/usr/bin/python3 /opt/bazarr/bazarr.py -c /mnt/dietpi_userdata/bazarr
# Hardening
ProtectSystem=strict
@@ -9895,7 +9975,7 @@ _EOF_
[[ -d '/mnt/dietpi_userdata/tautulli' ]] || G_EXEC mkdir /mnt/dietpi_userdata/tautulli
# Service: https://github.com/Tautulli/Tautulli/blob/master/init-scripts/init.systemd
- cat << _EOF_ > /etc/systemd/system/tautulli.service
+ cat << '_EOF_' > /etc/systemd/system/tautulli.service
[Unit]
Description=Tautulli (DietPi)
Wants=network-online.target
@@ -9904,7 +9984,7 @@ After=network-online.target
[Service]
SyslogIdentifier=Tautulli
User=tautulli
-ExecStart=$(command -v python3) /opt/tautulli/Tautulli.py -q --nolaunch --config /mnt/dietpi_userdata//tautulli/config.ini --datadir /mnt/dietpi_userdata/tautulli
+ExecStart=/usr/bin/python3 /opt/tautulli/Tautulli.py -q --nolaunch --config /mnt/dietpi_userdata//tautulli/config.ini --datadir /mnt/dietpi_userdata/tautulli
[Install]
WantedBy=multi-user.target
@@ -10069,7 +10149,7 @@ _EOF_
*) local arch='x64';;
esac
- local fallback_url="https://github.com/Prowlarr/Prowlarr/releases/download/v1.3.2.3006/Prowlarr.master.1.3.2.3006.linux-core-$arch.tar.gz"
+ local fallback_url="https://github.com/Prowlarr/Prowlarr/releases/download/v1.4.1.3258/Prowlarr.master.1.4.1.3258.linux-core-$arch.tar.gz"
Download_Install "$(curl -sSfL 'https://api.github.com/repos/Prowlarr/Prowlarr/releases/latest' | mawk -F\" "/\"browser_download_url\": .*linux-core-$arch\.tar\.gz\"/{print \$4}")"
G_EXEC mv Prowlarr /opt/prowlarr
fi
@@ -10206,11 +10286,12 @@ _EOF_
then
G_AGI libtiff5 libopenjp2-7 libxcb1 # ARMv6/7: Runtime libs for Pillow from piwheels (libtiff5 pulls libjpeg62-turbo)
else
- # Bookworm: Most wheels need to be compiled: gcc and libffi-dev for cffi, libssl-dev and Rust for cryptography and bcrypt, make for PyNaCl, libjpeg62-turbo-dev for Pillow
- G_AGI gcc libffi-dev libssl-dev make libjpeg62-turbo-dev
+ # Bookworm: Most wheels need to be compiled: gcc and libffi-dev for cffi, libssl-dev and Rust for cryptography and bcrypt, make for PyNaCl, libjpeg62-turbo-dev for Pillow, pkg-config for cryptography
+ G_AGI gcc libffi-dev libssl-dev make libjpeg62-turbo-dev pkg-config
G_EXEC curl -sSf 'https://sh.rustup.rs/' -o rustup-init.sh
G_EXEC chmod +x rustup-init.sh
- G_EXEC_OUTPUT=1 G_EXEC ./rustup-init.sh -y --profile minimal
+ # RPi with 64-bit kernel on 32-bit image: Enforce 32-bit toolchain: https://github.com/MichaIng/DietPi/issues/6306
+ G_EXEC_OUTPUT=1 G_EXEC ./rustup-init.sh -y --profile minimal ${RPI_64KERNEL_32OS:+'--default-host' 'armv7-unknown-linux-gnueabihf'}
G_EXEC rm rustup-init.sh
export PATH="/root/.cargo/bin:$PATH"
fi
@@ -10240,7 +10321,7 @@ _EOF_
G_EXEC_OUTPUT=1 G_EXEC pip3 install -Ur requirements.txt
# Service
- cat << _EOF_ > /etc/systemd/system/htpc-manager.service
+ cat << '_EOF_' > /etc/systemd/system/htpc-manager.service
[Unit]
Description=HTPC Manager (DietPi)
Wants=network-online.target
@@ -10248,7 +10329,7 @@ After=network-online.target
[Service]
SyslogIdentifier=HTPC Manager
-ExecStart=$(command -v python3) -OO /mnt/dietpi_userdata/htpc-manager/Htpc.py
+ExecStart=/usr/bin/python3 -OO /mnt/dietpi_userdata/htpc-manager/Htpc.py
[Install]
WantedBy=multi-user.target
@@ -10453,7 +10534,7 @@ _EOF_
# Default file path
MINIO_VOLUMES="/mnt/dietpi_userdata/minio-data"
# Use if you want to run MinIO on a custom port.
-#MINIO_OPTS="--address :9199"
+MINIO_OPTS="--address :9004 --console-address :9001"
# Access key of the server.
#MINIO_ACCESS_KEY=Server-Access-Key
# Secret key of the server.
@@ -10596,13 +10677,13 @@ _EOF_
if To_Install 164 nukkit # Nukkit
then
- Download_Install 'https://repo.opencollab.dev/artifactory/maven-snapshots/cn/nukkit/nukkit/1.0-SNAPSHOT/nukkit-1.0-SNAPSHOT.jar' /usr/local/bin/nukkit/nukkit.jar
+ Download_Install 'https://ci.opencollab.dev/job/NukkitX/job/Nukkit/job/master/lastSuccessfulBuild/artifact/target/nukkit-1.0-SNAPSHOT.jar' /usr/local/bin/nukkit/nukkit.jar
# Config
[[ -f '/usr/local/bin/nukkit/nukkit.yml ' ]] || G_EXEC curl -sSfL 'https://raw.githubusercontent.com/CloudburstMC/Languages/master/eng/nukkit.yml' -o /usr/local/bin/nukkit/nukkit.yml
# Service
- cat << _EOF_ > /etc/systemd/system/nukkit.service
+ cat << '_EOF_' > /etc/systemd/system/nukkit.service
[Unit]
Description=Nukkit (DietPi)
Wants=network-online.target
@@ -10611,7 +10692,7 @@ After=network-online.target
[Service]
SyslogIdentifier=Nukkit
WorkingDirectory=/usr/local/bin/nukkit
-ExecStart=$(command -v java) -jar /usr/local/bin/nukkit/nukkit.jar
+ExecStart=/usr/bin/java -jar /usr/local/bin/nukkit/nukkit.jar
[Install]
WantedBy=multi-user.target
@@ -10627,7 +10708,7 @@ _EOF_
*) local arch='arm-6';;
esac
- local fallback_url="https://github.com/go-gitea/gitea/releases/download/v1.19.0/gitea-1.19.0-linux-$arch.xz"
+ local fallback_url="https://github.com/go-gitea/gitea/releases/download/v1.19.3/gitea-1.19.3-linux-$arch.xz"
Download_Install "$(curl -sSfL 'https://api.github.com/repos/go-gitea/gitea/releases/latest' | mawk -F\" "/\"browser_download_url\": \".*\/gitea-[^\"\/]*-linux-$arch\.xz\"/{print \$4}")" /mnt/dietpi_userdata/gitea/gitea
# User
@@ -10812,30 +10893,25 @@ _EOF_
G_EXEC systemctl stop raspotify
fi
- if To_Install 169 alsa-init voice-recognizer # Google AIY
+ if To_Install 169 alsa-init voice-recognizer # Google AIY: https://github.com/google/aiyprojects-raspbian/blob/voicekit/HACKING.md
then
G_EXEC_OUTPUT=1 G_EXEC git clone -b voicekit 'https://github.com/google/aiyprojects-raspbian.git' /mnt/dietpi_userdata/voice-recognizer-raspi
G_EXEC cd /mnt/dietpi_userdata/voice-recognizer-raspi
- G_EXEC_OUTPUT=1 G_EXEC pip3 install -U pip virtualenv
+ G_EXEC_OUTPUT=1 G_EXEC pip3 install -U virtualenv
G_EXEC_OUTPUT=1 G_EXEC virtualenv --system-site-packages -p python3 env
G_EXEC_OUTPUT=1 G_EXEC env/bin/pip install -Ur requirements.txt
- #??? ARMv7 only
- (( $G_HW_ARCH == 2 )) && G_EXEC_OUTPUT=1 G_EXEC env/bin/pip install 'google-assistant-library==0.0.3'
+ # ARMv7 only: https://pypi.org/project/google-assistant-library/
+ (( $G_HW_ARCH == 2 )) && G_EXEC_OUTPUT=1 G_EXEC env/bin/pip install 'google-assistant-library~=1.0'
# Services
G_EXEC sed -i 's|/home/pi|/mnt/dietpi_userdata|g' systemd/voice-recognizer.service
G_CONFIG_INJECT 'User=' 'User=dietpi' systemd/voice-recognizer.service '\[Service\]'
+ G_EXEC cp systemd/{alsa-init,voice-recognizer}.service /etc/systemd/system/
- G_EXEC cp systemd/alsa-init.service /etc/systemd/system/
- G_EXEC cp systemd/voice-recognizer.service /etc/systemd/system/
-
- # shellcheck disable=SC1091
- source env/bin/activate
-
- # Enable default app for service start
- G_EXEC cp src/assistant_library_with_button_demo.py src/main.py
+ # Enable default app for service start, if not done yet
+ [[ -f 'src/main.py' ]] || G_EXEC cp src/assistant_library_with_button_demo.py src/main.py
G_EXEC cd "$G_WORKING_DIR"
@@ -10845,7 +10921,7 @@ _EOF_
# Generate cache dir
G_EXEC mkdir -p /home/dietpi/.cache/voice-recognizer
- # Setup soundcard
+ # Setup sound card
/boot/dietpi/func/dietpi-set_hardware soundcard googlevoicehat-soundcard
# Permissions
@@ -10958,8 +11034,8 @@ _EOF_
if To_Install 178 jellyfin # Jellyfin
then
- # Raspberry Pi Bullseye: Enable hardware codecs
- (( $G_HW_MODEL > 9 )) || (( $G_DISTRO < 6 )) || /boot/dietpi/func/dietpi-set_hardware rpi-codec 1
+ # RPi: Enable hardware codecs
+ (( $G_HW_MODEL > 9 )) || /boot/dietpi/func/dietpi-set_hardware rpi-codec 1
# APT key
local url='https://repo.jellyfin.org/jellyfin_team.gpg.key'
@@ -11103,6 +11179,51 @@ _EOF_
modprobe binfmt_misc 2> /dev/null && G_EXEC systemctl restart systemd-binfmt
fi
+ if To_Install 207 # Moonlight (CLI): https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-embedded/setup.deb.sh
+ then
+ # APT key
+ local url='https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-embedded/gpg.5AEE46706CF0453E.key'
+ G_CHECK_URL "$url"
+ G_EXEC eval "curl -sSfL '$url' | gpg --dearmor -o /etc/apt/trusted.gpg.d/dietpi-moonlight.gpg --yes"
+
+ # APT list
+ G_EXEC eval "echo 'deb https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-embedded/deb/raspbian/ $G_DISTRO_NAME main' > /etc/apt/sources.list.d/dietpi-moonlight.list"
+ G_AGUP
+
+ # APT deps
+ (( $G_DISTRO < 6 )) && aDEPS=('libcec4') || aDEPS=('libcec6')
+
+ # Install the client
+ G_AGI moonlight-embedded "${aDEPS[@]}"
+ unset -v aDEPS
+
+ # Enable required fake KMS driver: https://github.com/moonlight-stream/moonlight-embedded/wiki/Packages
+ /boot/dietpi/func/dietpi-set_hardware rpi-opengl vc4-fkms-v3d
+ fi
+
+ if To_Install 208 # Moonlight (GUI): https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-qt/setup.deb.sh
+ then
+ # APT key
+ local url='https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-qt/gpg.2F6AE14E1C660D44.key'
+ G_CHECK_URL "$url"
+ G_EXEC eval "curl -sSfL '$url' | gpg --dearmor -o /etc/apt/trusted.gpg.d/dietpi-moonlight-qt.gpg --yes"
+
+ # APT list
+ G_EXEC eval "echo 'deb https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-qt/deb/raspbian/ $G_DISTRO_NAME main' > /etc/apt/sources.list.d/dietpi-moonlight-qt.list"
+ G_AGUP
+
+ # Install: libgl1 required, else start from console prints "SDL Error: Can't load EGL/GL library on window creation.", the GUI says it cannot find a video decoder and streaming does not start.
+ G_AGI moonlight-qt libgl1
+
+ # Video setup: https://github.com/moonlight-stream/moonlight-docs/wiki/Installing-Moonlight-Qt-on-Raspberry-Pi-4#hevc-and-hdr-support
+ # - Usually requires vc4-fkms-v3d which also serves best performance
+ # - HEVC requires rpivid-v4l2, but it is deprecated and enabled OOTB since Bullseye
+ # - HDR requires vc4-kms-v3d, works on RPi 4 only (?) and breaks starting Moonlight from desktop
+ # => Compatible arrangement with HEVC but no HDR
+ /boot/dietpi/func/dietpi-set_hardware rpi-opengl vc4-fkms-v3d
+ /boot/dietpi/func/dietpi-set_hardware rpi-codec 1
+ fi
+
if To_Install 27 # TasmoAdmin
then
# Install required PHP modules
@@ -11121,8 +11242,8 @@ _EOF_
# v3 drops PHP 7.4 support: https://github.com/TasmoAdmin/TasmoAdmin/releases/tag/v3.0.0
if (( $G_DISTRO > 6 ))
then
- local fallback_url='https://github.com/TasmoAdmin/TasmoAdmin/releases/download/v3.0.1/tasmoadmin_v3.0.1.tar.gz'
- Download_Install "$(curl -sSfL 'https://api.github.com/repos/TasmoAdmin/TasmoAdmin/releases/latest' | mawk -F\" '/"browser_download_url": ".*\/tasmoadmin_v[^"\/]*\.tar\.gz"$/{print $4}')"
+ local fallback_url='https://github.com/TasmoAdmin/TasmoAdmin/releases/download/v3.0.3/tasmoadmin_v3.0.3.tar.gz'
+ Download_Install "$(curl -sSfL 'https://api.github.com/repos/TasmoAdmin/TasmoAdmin/releases/latest' | mawk -F\" '/^ *"browser_download_url": ".*\/tasmoadmin_v[^"\/]*\.tar\.gz"$/{print $4}')"
# v2 drops PHP <7.4 support: https://github.com/TasmoAdmin/TasmoAdmin/releases/tag/v2.0.0
elif (( $G_DISTRO > 5 ))
@@ -11175,6 +11296,42 @@ _EOF_
fi
fi
+ if To_Install 206 openhab # openHAB
+ then
+ # APT key
+ local url='https://openhab.jfrog.io/artifactory/api/gpg/key/public'
+ G_CHECK_URL "$url"
+ G_EXEC eval "curl -sSfL '$url' | gpg --dearmor -o /etc/apt/trusted.gpg.d/dietpi-openhab.gpg --yes"
+
+ # APT list
+ # - Enable RISC-V support by explicitly defining arch=all, which contains exactly the same packages (well, it's Java...)
+ # - Use testing suite == openHAB 4 from Bullseye on since openHAB 3 does not fully support Java 17: https://github.com/MichaIng/DietPi/pull/6334#issuecomment-1528729163
+ local arch='' suite='testing'
+ (( $G_HW_ARCH == 11 )) && arch=' [arch=all]'
+ (( $G_DISTRO < 6 )) && suite='stable'
+ G_EXEC eval "echo 'deb$arch https://openhab.jfrog.io/artifactory/openhab-linuxpkg $suite main' > /etc/apt/sources.list.d/dietpi-openhab.list"
+ G_AGUP
+
+ # APT package
+ G_AGI openhab
+ G_EXEC systemctl stop openhab
+
+ # Disable plain HTTP and change HTTPS TCP port to avoid conflicts with SABnzbd, Airsonic-Advanced (8000) and MineOS (8443)
+ G_CONFIG_INJECT 'OPENHAB_HTTPS_PORT=' 'OPENHAB_HTTPS_PORT=8444' /etc/default/openhab
+ G_CONFIG_INJECT 'OPENHAB_HTTP_PORT=' 'OPENHAB_HTTP_PORT=0' /etc/default/openhab
+
+ # Do all logs to STDOUT => journalctl -u openhab
+ G_EXEC sed -i 's|||' /var/lib/openhab/etc/log4j2.xml
+ local line='' last=''
+ grep -n '' /var/lib/openhab/etc/log4j2.xml | while read -r line
+ do
+ line=${line%%:*}
+ (( $line == ${last:-$line} + 1 )) && G_EXEC sed -i "${last}d" /var/lib/openhab/etc/log4j2.xml
+ last=$line
+ done
+ G_EXEC rm -f /var/log/openhab/*
+ fi
+
if To_Install 157 home-assistant # Home Assistant
then
local ha_user='homeassistant'
@@ -11196,20 +11353,21 @@ _EOF_
local custom_apt_deps=$(sed -n '/^[[:blank:]]*SOFTWARE_HOMEASSISTANT_APT_DEPS=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)
local custom_pip_deps=$(sed -n '/^[[:blank:]]*SOFTWARE_HOMEASSISTANT_PIP_DEPS=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)
# - All: gcc, libc6-dev, make, libssl-dev, zlib1g-dev for Python build and libbz2-dev, libreadline-dev, libsqlite3-dev, liblzma-dev to suppress warnings
- # - All: libffi-dev to solve "ModuleNotFoundError: No module named '_ctypes'", for python-slugify==4.0.1 build on ARMv8/x86_64 and cffi build on ARMv6/7 Bookworm
+ # - All: libffi-dev to solve "ModuleNotFoundError: No module named '_ctypes'", for python-slugify==4.0.1 build on ARMv8/x86_64 and cffi build on ARMv6/7/RISC-V
aDEPS=('gcc' 'libc6-dev' 'make' 'libssl-dev' 'zlib1g-dev' 'libbz2-dev' 'libreadline-dev' 'libsqlite3-dev' 'liblzma-dev' 'libffi-dev')
mapfile -t -d' ' -O "${#aDEPS[@]}" aDEPS < <(echo -n "$custom_apt_deps")
- # - ARMv6/7
+ # - ARMv6/7/RISC-V
G_EXEC mkdir -p "$ha_home"
G_EXEC chown "$ha_user:$ha_user" "$ha_home"
- if [[ $G_HW_ARCH == [12] ]]
+ if [[ $G_HW_ARCH =~ ^(1|2|11)$ ]]
then
- # libjpeg62-turbo-dev for Pillow, libatlas-base-dev for numpy
- aDEPS+=('libjpeg62-turbo-dev' 'libatlas-base-dev')
+ # libjpeg62-turbo-dev for Pillow, libatlas-base-dev for numpy, pkg-config for cryptography, g++ for numpy < PyTurboJPEG and greenlet < SQLAlchemy, libavdevice-dev for ha-av
+ aDEPS+=('libjpeg62-turbo-dev' 'libatlas-base-dev' 'pkg-config' 'g++' 'libavdevice-dev')
# Rust for cryptography
G_EXEC curl -sSf 'https://sh.rustup.rs/' -o rustup-init.sh
G_EXEC chmod +x rustup-init.sh
- G_EXEC_OUTPUT=1 G_EXEC sudo -u "$ha_user" ./rustup-init.sh -y --profile minimal
+ # RPi with 64-bit kernel on 32-bit image: Enforce 32-bit toolchain: https://github.com/MichaIng/DietPi/issues/6306
+ G_EXEC_OUTPUT=1 G_EXEC sudo -u "$ha_user" ./rustup-init.sh -y --profile minimal ${RPI_64KERNEL_32OS:+'--default-host' 'armv7-unknown-linux-gnueabihf'}
G_EXEC rm rustup-init.sh
fi
@@ -11367,7 +11525,7 @@ SyslogIdentifier=PaperMC
User=papermc
LogsDirectory=papermc
WorkingDirectory=/mnt/dietpi_userdata/papermc
-ExecStart=$(command -v java) -Xmx${heap_size}m -jar /opt/papermc/paperclip.jar --nogui --noconsole
+ExecStart=/usr/bin/java -Xmx${heap_size}m -jar /opt/papermc/paperclip.jar --nogui --noconsole
[Install]
WantedBy=multi-user.target
@@ -11406,7 +11564,7 @@ _EOF_
if [[ ! -f '/mnt/dietpi_userdata/domoticz/domoticz.conf' ]]
then
G_EXEC cp /opt/domoticz/scripts/domoticz.conf /mnt/dietpi_userdata/domoticz/domoticz.conf
- G_CONFIG_INJECT 'http_port=' 'http_port=8124' /mnt/dietpi_userdata/domoticz/domoticz.conf
+ G_CONFIG_INJECT 'http_port=' 'http_port=8124' /mnt/dietpi_userdata/domoticz/domoticz.conf # ToDo: Disable plain HTTP port
G_CONFIG_INJECT 'ssl_port=' 'ssl_port=8424' /mnt/dietpi_userdata/domoticz/domoticz.conf
G_CONFIG_INJECT 'ssl_cert=' 'ssl_cert=/opt/domoticz/server_cert.pem' /mnt/dietpi_userdata/domoticz/domoticz.conf
G_CONFIG_INJECT 'ssl_key=' 'ssl_key=/opt/domoticz/server_cert.pem' /mnt/dietpi_userdata/domoticz/domoticz.conf
@@ -11445,24 +11603,41 @@ _EOF_
if To_Install 191 snapserver # Snapcast Server
then
- local arch='armhf'
- (( $G_HW_ARCH == 10 )) && arch='amd64'
+ # ARMv6/7/x86_64: Install package from GitHub repo (no Bookworm as package depends on libflac8)
+ if (( $G_DISTRO < 7 )) && [[ $G_HW_ARCH =~ ^(1|2|10)$ ]]
+ then
+ local arch='armhf'
+ (( $G_HW_ARCH == 10 )) && arch='amd64'
+ local fallback_url="https://github.com/badaix/snapcast/releases/download/v0.27.0/snapserver_0.27.0-1_$arch.deb"
+ Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapcast/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": \".*\/snapserver_[^\"\/]*_$arch.deb\"/{print \$4}")"
- local fallback_url="https://github.com/badaix/snapcast/releases/download/v0.27.0/snapserver_0.27.0-1_$arch.deb"
- Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapcast/releases/latest' | mawk -F\" "/\"browser_download_url\": .*\/snapserver_[^\"\/]*_$arch.deb\"/{print \$4}")"
+ # Else install from Debian repo
+ else
+ G_AGI snapserver
+
+ # Enable web UI to align with upstream package (On Debian Buster repo package this file does not yet exist.)
+ [[ -f '/etc/snapserver.conf' ]] && G_CONFIG_INJECT 'doc_root[[:blank:]=]' 'doc_root = /usr/share/snapserver/snapweb' /etc/snapserver.conf '\[http\]'
+ fi
G_EXEC systemctl stop snapserver
- # Disable JSON RPC by default, if setting was never touched yet
- G_EXEC sed -i '/^\[tcp\]/,/^\[/s/^#enabled = true$/enabled = false/' /etc/snapserver.conf
+ # Disable JSON RPC by default if setting was never touched yet
+ [[ -f '/etc/snapserver.conf' ]] && G_EXEC sed -i '/^\[tcp\]/,/^\[/s/^#enabled = true$/enabled = false/' /etc/snapserver.conf
fi
if To_Install 192 snapclient # Snapcast Client
then
- local arch='armhf'
- (( $G_HW_ARCH == 10 )) && arch='amd64'
+ # ARMv6/7/x86_64: Install package from GitHub repo (no Bookworm as package depends on libflac8)
+ if (( $G_DISTRO < 7 )) && [[ $G_HW_ARCH =~ ^(1|2|10)$ ]]
+ then
+ local arch='armhf'
+ (( $G_HW_ARCH == 10 )) && arch='amd64'
+ local fallback_url="https://github.com/badaix/snapcast/releases/download/v0.27.0/snapclient_0.27.0-1_without-pulse_$arch.deb"
+ Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapcast/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": \".*\/snapclient_[^\"\/]*_without-pulse_$arch.deb\"$/{print \$4}")"
- local fallback_url="https://github.com/badaix/snapcast/releases/download/v0.27.0/snapclient_0.27.0-1_without-pulse_$arch.deb"
- Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapcast/releases/latest' | mawk -F\" "/\"browser_download_url\": .*\/snapclient_[^\"\/]*_without-pulse_$arch.deb\"/{print \$4}")"
+ # Else install from Debian repo
+ else
+ G_AGI snapclient
+ fi
G_EXEC systemctl stop snapclient
# Client IP needs to be added to allowed IP list
@@ -11470,7 +11645,7 @@ _EOF_
local invalid_entry=
while :
do
- if G_WHIP_INPUTBOX "${invalid_entry}Please enter the IPv4 address of your Snapcast server machine" && [[ $G_WHIP_RETURNED_VALUE =~ ^[0-9.]+$ ]]
+ if G_WHIP_INPUTBOX "${invalid_entry}Please enter the IPv4 address of your Snapcast server:" && [[ $G_WHIP_RETURNED_VALUE =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]
then
snapcast_server_ip=$G_WHIP_RETURNED_VALUE
break
@@ -11484,7 +11659,7 @@ _EOF_
while :
do
G_WHIP_DEFAULT_ITEM=$snapcast_server_port
- if G_WHIP_INPUTBOX "${invalid_text}Please enter the network port of your Snapcast server machine\n - default: 1704" && disable_error=1 G_CHECK_VALIDINT "$G_WHIP_RETURNED_VALUE" 1
+ if G_WHIP_INPUTBOX "${invalid_text}Please enter the network port of your Snapcast server (default: 1704):" && disable_error=1 G_CHECK_VALIDINT "$G_WHIP_RETURNED_VALUE" 1
then
snapcast_server_port=$G_WHIP_RETURNED_VALUE
break
@@ -11493,7 +11668,7 @@ _EOF_
fi
done
- G_CONFIG_INJECT 'SNAPCLIENT_OPTS[[:blank:]=]' "SNAPCLIENT_OPTS=\"-h $snapcast_server_ip -p $snapcast_server_port\"" /etc/default/snapclient
+ G_CONFIG_INJECT 'SNAPCLIENT_OPTS=' "SNAPCLIENT_OPTS=\"-h $snapcast_server_ip -p $snapcast_server_port\"" /etc/default/snapclient
fi
if To_Install 202 # Rclone
@@ -11515,6 +11690,19 @@ _EOF_
fi
fi
+ if To_Install 209 # Restic
+ then
+ case $G_HW_ARCH in
+ 3) local arch='arm64';;
+ 10) local arch='amd64';;
+ 11) local arch='riscv64';;
+ *) local arch='arm';;
+ esac
+
+ local fallback_url="https://github.com/restic/restic/releases/download/v0.15.2/restic_0.15.2_linux_$arch.bz2"
+ Download_Install "$(curl -sSfL 'https://api.github.com/repos/restic/restic/releases/latest' | mawk -F\" "/^ * \"browser_download_url\": \".*\/restic_[^\"\/]*_linux_$arch\.bz2\"$/{print \$4}")" /usr/local/bin/restic
+ fi
+
if To_Install 205 # Homer
then
# Download the latest release
@@ -11602,7 +11790,7 @@ _EOF_
# x86_64 only deps: Both ARM binaries are not compiled against these. dbus would be required for MPRIS support, but let's keep it slim for now.
(( $G_HW_ARCH == 10 )) && aDEPS=('libdbus-1-3' 'libpulse0')
- local fallback_url="https://github.com/Spotifyd/spotifyd/releases/download/v0.3.4/$file.tar.gz"
+ local fallback_url="https://github.com/Spotifyd/spotifyd/releases/download/v0.3.5/$file.tar.gz"
Download_Install "$(curl -sSfL 'https://api.github.com/repos/Spotifyd/spotifyd/releases/latest' | mawk -F\" "/\"browser_download_url\": .*\/$file\.tar\.gz\"/{print \$4}")" /opt/spotifyd
# User
@@ -11907,13 +12095,15 @@ If no WireGuard (auto)start is included, but you require it, please do the follo
then
suggest_gpu_mem=96
- # Desktops, OpenTyrian
+ # Desktops, OpenTyrian, Moonlight (CLI), Moonlight (GUI)
elif (( ${aSOFTWARE_INSTALL_STATE[23]} == 1 ||
${aSOFTWARE_INSTALL_STATE[24]} == 1 ||
${aSOFTWARE_INSTALL_STATE[25]} == 1 ||
${aSOFTWARE_INSTALL_STATE[26]} == 1 ||
${aSOFTWARE_INSTALL_STATE[51]} == 1 ||
- ${aSOFTWARE_INSTALL_STATE[173]} == 1 ))
+ ${aSOFTWARE_INSTALL_STATE[173]} == 1 ||
+ ${aSOFTWARE_INSTALL_STATE[207]} == 1 ||
+ ${aSOFTWARE_INSTALL_STATE[208]} == 1 ))
then
suggest_gpu_mem=1 # default
fi
@@ -12183,6 +12373,13 @@ If no WireGuard (auto)start is included, but you require it, please do the follo
[[ -f '/etc/lighttpd/conf-available/99-dietpi-tasmoadmin.conf' ]] && G_EXEC rm /etc/lighttpd/conf-available/99-dietpi-tasmoadmin.conf
fi
+ if To_Uninstall 206 # openHAB
+ then
+ G_AGP openhab
+ [[ -f '/etc/apt/sources.list.d/dietpi-openhab.list' ]] && G_EXEC rm /etc/apt/sources.list.d/dietpi-openhab.list
+ [[ -f '/etc/apt/trusted.gpg.d/dietpi-openhab.gpg' ]] && G_EXEC rm /etc/apt/trusted.gpg.d/dietpi-openhab.gpg
+ fi
+
if To_Uninstall 83 # Apache
then
Remove_Service apache2
@@ -12689,6 +12886,21 @@ If no WireGuard (auto)start is included, but you require it, please do the follo
[[ -d '/usr/lib/x86_64-linux-gnu' ]] && G_EXEC rmdir --ignore-fail-on-non-empty /usr/lib/x86_64-linux-gnu
fi
+ if To_Uninstall 207 # Moonlight (CLI)
+ then
+ G_AGP moonlight-embedded
+ [[ -f '/etc/apt/sources.list.d/dietpi-moonlight.list' ]] && G_EXEC rm /etc/apt/sources.list.d/dietpi-moonlight.list
+ [[ -f '/etc/apt/trusted.gpg.d/dietpi-moonlight.gpg' ]] && G_EXEC rm /etc/apt/trusted.gpg.d/dietpi-moonlight.gpg
+ fi
+
+ if To_Uninstall 208 # Moonlight (GUI)
+ then
+ dpkg-query -s 'libgl1' &> /dev/null && G_EXEC apt-mark auto libgl1
+ G_AGP moonlight-qt
+ [[ -f '/etc/apt/sources.list.d/dietpi-moonlight-qt.list' ]] && G_EXEC rm /etc/apt/sources.list.d/dietpi-moonlight-qt.list
+ [[ -f '/etc/apt/trusted.gpg.d/dietpi-moonlight-qt.gpg' ]] && G_EXEC rm /etc/apt/trusted.gpg.d/dietpi-moonlight-qt.gpg
+ fi
+
if To_Uninstall 119 # CAVA
then
G_AGP cava
@@ -13072,14 +13284,9 @@ If no WireGuard (auto)start is included, but you require it, please do the follo
[[ -f '/etc/dhcp/dhcpd.conf' ]] && G_EXEC rm /etc/dhcp/dhcpd.conf
[[ -f '/etc/hostapd/hostapd.conf' ]] && G_EXEC rm /etc/hostapd/hostapd.conf
[[ -f '/etc/default/isc-dhcp-server' ]] && G_EXEC rm /etc/default/isc-dhcp-server
- [[ -f '/etc/etc/default/hostapd' ]] && G_EXEC rm /etc/default/hostapd
+ [[ -f '/etc/default/hostapd' ]] && G_EXEC rm /etc/default/hostapd
[[ -f '/etc/iptables.ipv4.nat' ]] && G_EXEC rm /etc/iptables.ipv4.nat
[[ -f '/etc/iptables.ipv6.nat' ]] && G_EXEC rm /etc/iptables.ipv6.nat
- # Remove binary (used a -f trigger to detect WiFi hotspot mode in dietpi-config).
- [[ -f '/usr/sbin/hostapd' ]] && G_EXEC rm /usr/sbin/hostapd
- [[ -f '/usr/sbin/hostapd_cli' ]] && G_EXEC rm /usr/sbin/hostapd_cli
-
- # IP forwarding
[[ -f '/etc/sysctl.d/dietpi-wifihotspot.conf' ]] && G_EXEC rm /etc/sysctl.d/dietpi-wifihotspot.conf
# Set WiFi interface back to inactive and ready for use with dietpi-config.
@@ -13093,11 +13300,14 @@ If no WireGuard (auto)start is included, but you require it, please do the follo
iface $wifi_iface inet dhcp
address 192.168.0.101
netmask 255.255.255.0
-gateway 192.168.0.1
+#gateway 192.168.0.1
#dns-nameservers 9.9.9.9 149.112.112.112
-wireless-power off
+pre-up iw dev $wifi_iface set power_save off
+post-down iw dev $wifi_iface set power_save on
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
_EOF_
+ # shellcheck disable=SC2015
+ iw dev "$wifi_iface" set power_save on 2> /dev/null && iw dev "$wifi_iface" set power_save off 2> /dev/null || G_EXEC sed -i '/ iw dev .* set power_save /d' /etc/network/interfaces
# - Flush iptables
iptables -F
iptables -t nat -F
@@ -13177,10 +13387,9 @@ _EOF_
G_AGP mumble-server
fi
- if To_Uninstall 41 # Emby Server
+ if To_Uninstall 41 # Emby
then
- G_AGP emby-server embymagick
- [[ -f '/etc/apt/sources.list.d/emby-server.list' ]] && G_EXEC rm /etc/apt/sources.list.d/emby-server.list # Pre v6.15
+ G_AGP emby-server
fi
if To_Uninstall 42 # Plex Media Server
@@ -13902,6 +14111,11 @@ _EOF_
G_EXEC rm -Rf /{root,home/*}/.config/rclone
fi
+ if To_Uninstall 209 # Restic
+ then
+ [[ -f '/usr/local/bin/restic' ]] && G_EXEC rm /usr/local/bin/restic
+ fi
+
if To_Uninstall 198 # File Browser
then
Remove_Service filebrowser 1
@@ -14263,15 +14477,15 @@ _EOF_
then
G_DIETPI-NOTIFY 1 "Software title with ID $software_id does not exist. Skipping it."
- elif (( ! ${aSOFTWARE_AVAIL_G_HW_ARCH[$i,$G_HW_ARCH]:=1} ))
+ elif (( ! ${aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,$G_HW_ARCH]:=1} ))
then
G_DIETPI-NOTIFY 1 "Software title ${aSOFTWARE_NAME[$software_id]} is not supported on $G_HW_ARCH_NAME systems. Skipping it."
- elif (( ! ${aSOFTWARE_AVAIL_G_HW_MODEL[$i,$G_HW_MODEL]:=1} ))
+ elif (( ! ${aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,$G_HW_MODEL]:=1} ))
then
G_DIETPI-NOTIFY 1 "Software title ${aSOFTWARE_NAME[$software_id]} is not supported on $G_HW_MODEL_NAME. Skipping it."
- elif (( ! ${aSOFTWARE_AVAIL_G_DISTRO[$i,$G_DISTRO]:=1} )); then
+ elif (( ! ${aSOFTWARE_AVAIL_G_DISTRO[$software_id,$G_DISTRO]:=1} )); then
G_DIETPI-NOTIFY 1 "Software title ${aSOFTWARE_NAME[$software_id]} is not supported on Debian ${G_DISTRO_NAME^}. Skipping it."
else
diff --git a/dietpi/dietpi-update b/dietpi/dietpi-update
index 4c791d46e6..8bbdcbc8eb 100755
--- a/dietpi/dietpi-update
+++ b/dietpi/dietpi-update
@@ -305,11 +305,12 @@
G_DIETPI-NOTIFY 3 "$G_PROGRAM_NAME" 'Installing new DietPi code'
G_EXEC_DESC='Downloading update archive' G_EXEC curl -sSfLO "https://github.com/$GITOWNER_TARGET/DietPi/archive/$GITBRANCH_TARGET.tar.gz"
- G_EXEC_DESC='Unpacking update archive' G_EXEC tar xf "$GITBRANCH_TARGET.tar.gz"
- G_EXEC_DESC='Removing unused files' G_EXEC rm "$GITBRANCH_TARGET.tar.gz" "DietPi-$GITBRANCH_TARGET/dietpi/"{pre-patch_file,server_version-6}
- G_EXEC_DESC='Hardening update archive mode' G_EXEC chmod -R g-w "DietPi-$GITBRANCH_TARGET"
- G_EXEC_DESC='Installing new DietPi scripts' G_EXEC cp -a "DietPi-$GITBRANCH_TARGET/dietpi" /boot/
- G_EXEC_DESC='Installing new DietPi system files' G_EXEC cp -a "DietPi-$GITBRANCH_TARGET/rootfs/." /
+ G_EXEC_DESC='Unpacking update archive' G_EXEC tar xf "${GITBRANCH_TARGET##*/}.tar.gz" # Support for Git branch names with forward slashes
+ local dir="DietPi-${GITBRANCH_TARGET//\//-}" # GitHub translates forward slashes into dashes
+ G_EXEC_DESC='Removing unused files' G_EXEC rm "${GITBRANCH_TARGET##*/}.tar.gz" "$dir/dietpi/"{pre-patch_file,server_version-6}
+ G_EXEC_DESC='Hardening update archive mode' G_EXEC chmod -R g-w "$dir"
+ G_EXEC_DESC='Installing new DietPi scripts' G_EXEC cp -a "$dir/dietpi" /boot/
+ G_EXEC_DESC='Installing new DietPi system files' G_EXEC cp -a "$dir/rootfs/." /
# Save version + Git info now for sub scripts to pull from correct branch
G_GITOWNER=$GITOWNER_TARGET
@@ -344,7 +345,7 @@
fi
rm /boot/dietpi/patch_file
- if ! "DietPi-$G_GITBRANCH/.update/patches"; then
+ if ! "$dir/.update/patches"; then
G_DIETPI-NOTIFY 1 "An error occurred during incremental patching. Please check the above log or $FP_LOG for errors, and rerun \"dietpi-update\" after the cause has been solved."
exit 1
@@ -570,12 +571,7 @@ Do you wish to continue and update DietPi to v$G_REMOTE_VERSION_CORE.$G_REMOTE_V
then
G_AGUP -v
# shellcheck disable=SC2154
- if (( $G_AGUP_COUNT ))
- then
- G_AGUG &> >(tee /var/tmp/dietpi/logs/dietpi-upgrade_apt.log)
- # Assure all services are up since APT updates might stop some
- (( $G_DIETPI_INSTALL_STAGE == 2 )) && /boot/dietpi/dietpi-services start
- fi
+ (( $G_AGUP_COUNT )) && G_AGUG &> >(tee /var/tmp/dietpi/logs/dietpi-upgrade_apt.log)
# No forced update input but APT updates check not disabled: Check for APT updates and store result to /run/dietpi/.apt_updates to be used by DietPi-Banner
elif [[ $mode != 0 ]]
diff --git a/dietpi/func/dietpi-banner b/dietpi/func/dietpi-banner
index 2444d6ea76..904865770a 100755
--- a/dietpi/func/dietpi-banner
+++ b/dietpi/func/dietpi-banner
@@ -56,15 +56,15 @@
'VPN status'
'Large hostname'
'Print credits'
-
+ 'Let'\''s Encrypt cert status'
)
# Set defaults: Disable CPU temp by default in VMs
if (( $G_HW_MODEL == 20 ))
then
- aENABLED=(1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1)
+ aENABLED=(1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0)
else
- aENABLED=(1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1)
+ aENABLED=(1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0)
fi
COLOUR_RESET='\e[0m'
@@ -74,7 +74,6 @@
'\e[1m' # Bold white | Main descriptions
'\e[90m' # Grey | Credits
'\e[91m' # Red | Update notifications
-
)
# Load settings here, to have chosen ${aCOLOUR[0]} applied to below strings
@@ -90,32 +89,29 @@
# DietPi update available?
AVAILABLE_UPDATE= # value = version string
- Check_DietPi_Update(){
-
+ Check_DietPi_Update()
+ {
[[ -f '/run/dietpi/.update_available' ]] || return 1
AVAILABLE_UPDATE=$(&1)"
- # LAN IP [5]
+ # LAN IP
Print_Local_Ip
# WAN IP + location info
(( ${aENABLED[6]} == 1 )) && echo -e "$GREEN_BULLET ${aCOLOUR[1]}${aDESCRIPTION[6]} $GREEN_SEPARATOR $(G_GET_WAN_IP 2>&1)"
@@ -263,6 +253,18 @@ $GREEN_LINE"
(( ${aENABLED[8]} == 1 )) && echo -e "$GREEN_BULLET ${aCOLOUR[1]}${aDESCRIPTION[8]} $GREEN_SEPARATOR $(df -h --output=avail /mnt/dietpi_userdata | mawk 'NR==2 {print $1}' 2>&1)"
# Weather
(( ${aENABLED[9]} == 1 )) && echo -e "$GREEN_BULLET ${aCOLOUR[1]}${aDESCRIPTION[9]} $GREEN_SEPARATOR $(curl -sSfLm 3 'https://wttr.in/?format=4' 2>&1)"
+ # Let's Encrypt cert status
+ if (( ${aENABLED[16]} == 1 ))
+ then
+ local i certinfo='No certificate found'
+ for i in /etc/letsencrypt/live/*/cert.pem
+ do
+ [[ -f $i ]] || continue
+ certinfo=$(openssl x509 -enddate -noout -in "$i" | mawk '/notAfter=/{print "Valid until "$4"-"substr($1,10)"-"$2" "$3}' 2>&1)
+ break
+ done
+ echo -e "$GREEN_BULLET ${aCOLOUR[1]}${aDESCRIPTION[16]} $GREEN_SEPARATOR $certinfo"
+ fi
# Custom
(( ${aENABLED[10]} == 1 )) && echo -e "$GREEN_BULLET ${aCOLOUR[1]}${aDESCRIPTION[10]} $GREEN_SEPARATOR $(bash "$FP_CUSTOM" 2>&1)"
# MOTD
@@ -278,11 +280,10 @@ $GREEN_LINE"
(( ${aENABLED[15]} == 1 )) && Print_Credits
Print_Updates
(( ${aENABLED[11]} == 1 )) && Print_Useful_Commands
-
}
- Menu_Main(){
-
+ Menu_Main()
+ {
G_WHIP_CHECKLIST_ARRAY=()
for i in "${!aDESCRIPTION[@]}"
do
@@ -320,7 +321,6 @@ NB: It is executed as bash script, so it needs to be in bash compatible syntax.
[[ -f $FP_CUSTOM ]] || aENABLED[10]=0
Save > "$FP_SAVEFILE"
-
}
#/////////////////////////////////////////////////////////////////////////////////////
diff --git a/dietpi/func/dietpi-globals b/dietpi/func/dietpi-globals
index d9ee7a0bbf..52e01b155a 100644
--- a/dietpi/func/dietpi-globals
+++ b/dietpi/func/dietpi-globals
@@ -58,7 +58,7 @@
[[ -f '/boot/dietpi/.version' ]] && . /boot/dietpi/.version
# - Assign defaults/code version as fallback
[[ $G_DIETPI_VERSION_CORE ]] || G_DIETPI_VERSION_CORE=8
- [[ $G_DIETPI_VERSION_SUB ]] || G_DIETPI_VERSION_SUB=16
+ [[ $G_DIETPI_VERSION_SUB ]] || G_DIETPI_VERSION_SUB=17
[[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=2
[[ $G_GITBRANCH ]] || G_GITBRANCH='master'
[[ $G_GITOWNER ]] || G_GITOWNER='MichaIng'
@@ -170,7 +170,7 @@ $(ps f -eo pid,user,tty,cmd | grep -i '[d]ietpi')" && continue
# Printing terminal height - 1 newlines seems to be the fastest method that is compatible with all terminal types.
local lines=$(tput lines) i newlines
- for ((i=1;i<${lines% *};i++)); do newlines+='\n'; done
+ for ((i=1;i<$lines;i++)); do newlines+='\n'; done
echo -ne "\e[0m$newlines\e[H"
}
@@ -195,7 +195,7 @@ $(ps f -eo pid,user,tty,cmd | grep -i '[d]ietpi')" && continue
local i ainput_string=("$@") output_string grey green red reset yellow dietpi_green
# If this is a terminal, it understands ANSI escape sequences, so use colour, always start left-aligned with colour reset and clear screen from cursor to end.
- # - Assume if STDIN is a terminal that STDOUT is one as well, e.g. covered by "tee"
+ # - Assume if STDIN is a terminal that STDOUT is one as well, e.g. masked by pipe to "tee"
if [[ -t 0 || -t 1 ]]
then
output_string='\e[0m\r\e[J' grey='\e[90m' green='\e[32m' red='\e[31m' reset='\e[0m' yellow='\e[33m' dietpi_green='\e[38;5;154m'
@@ -258,7 +258,7 @@ $(ps f -eo pid,user,tty,cmd | grep -i '[d]ietpi')" && continue
# NB: Do not use this with newlines, literally or "\n", as this would cause parts of the processing message not being overwritten as intended.
elif (( $1 == -2 )); then
- # If this is a terminal, it understands control codes, so make any next output overwrite the processing message.
+ # If this is a terminal and not "dumb", it understands the carriage return control code, so make any next output overwrite the processing message.
if [[ ( -t 0 || -t 1 ) && $TERM != 'dumb' ]]
then
# Calculate the amount of output lines and in case move cursor up for correct animation position and to allow overwriting the whole output.
@@ -292,8 +292,7 @@ $(ps f -eo pid,user,tty,cmd | grep -i '[d]ietpi')" && continue
set +C
Start_Process_Animation(){
- local bright_dot='\e[1;33m.'
- local dimmed_dot='\e[0;33m.'
+ local bright_dot='\e[1;33m.' dimmed_dot='\e[0;33m.'
# Alternative: \u23F9
local aprocess_string=(
"$bright_dot "
@@ -1724,7 +1723,7 @@ Press any key to continue...'
# Coders NB: Do NOT quote the array to allow coretemp file paths glob expansion!
# shellcheck disable=SC2068
- for i in "${afp_temperature[@]}"
+ for i in ${afp_temperature[@]}
do
[[ -f $i ]] || continue
read -r temp < "$i"
diff --git a/dietpi/func/dietpi-obtain_hw_model b/dietpi/func/dietpi-obtain_hw_model
index 2a45c70892..6dbd69cc01 100755
--- a/dietpi/func/dietpi-obtain_hw_model
+++ b/dietpi/func/dietpi-obtain_hw_model
@@ -19,14 +19,14 @@
#
# G_HW_MODEL 81 StarFive VisionFive 2
# G_HW_MODEL 80 Orange Pi 5
- # G_HW_MODEL 79 NanoPi R6S
+ # G_HW_MODEL 79 NanoPi R6S/R6C
# G_HW_MODEL 78 ROCK 5B
# G_HW_MODEL 77 ROCK 3A
# G_HW_MODEL 76 NanoPi R5S/R5C
# G_HW_MODEL 75 Container
# G_HW_MODEL 74 Radxa Zero
# G_HW_MODEL 73 ROCK Pi S
- # G_HW_MODEL 72 ROCK Pi 4
+ # G_HW_MODEL 72 ROCK 4
# G_HW_MODEL 70 Sparky SBC
# G_HW_MODEL 68 NanoPi M4/T4/NEO4
# G_HW_MODEL 67 NanoPi K1 Plus
@@ -323,7 +323,7 @@
elif (( $G_HW_MODEL == 79 )); then
- G_HW_MODEL_NAME='NanoPi R6S'
+ G_HW_MODEL_NAME='NanoPi R6S/R6C'
G_HW_CPUID=11
elif (( $G_HW_MODEL == 78 )); then
@@ -356,7 +356,7 @@
elif (( $G_HW_MODEL == 72 )); then
- G_HW_MODEL_NAME='ROCK Pi 4'
+ G_HW_MODEL_NAME='ROCK 4'
G_HW_CPUID=3
elif (( $G_HW_MODEL == 70 )); then
diff --git a/dietpi/func/dietpi-set_hardware b/dietpi/func/dietpi-set_hardware
index 86c73046f0..0585948e6f 100755
--- a/dietpi/func/dietpi-set_hardware
+++ b/dietpi/func/dietpi-set_hardware
@@ -18,7 +18,7 @@ $FP_SCRIPT eth-forcespeed 10/100/1000/disable
$FP_SCRIPT wifimodules enable/disable/onboard_enable/onboard_disable
$FP_SCRIPT wificountrycode GB/US/DE/...
$FP_SCRIPT bluetooth enable/disable
-$FP_SCRIPT serialconsole enable/disable [(tty(S|AMA|SAC|AML|SC|GS|FIQ|MV)|hvc)[0-9]] (optional Serial/UART device)
+$FP_SCRIPT serialconsole enable/disable [(tty(S|AMA|SAC|AML|SC|GS|FIQ|MV)|hvc)[0-9]] (optional Serial/UART device)
$FP_SCRIPT i2c enable/disable/khz
$FP_SCRIPT spi enable/disable
$FP_SCRIPT soundcard target_card (non-matching name for reset to default). Add '-eq' to target_card string to enable ALSA equalizer on card. HW:x,x (specify target card and device index eg: HW:9,1)
@@ -39,14 +39,13 @@ $FP_SCRIPT gpudriver none|intel|nvidia|amd|custom
INPUT_DEVICE_NAME=${1,,}
INPUT_DEVICE_VALUE=${2,,}
# - Support for 1/0 inputs to enable/disable.
- if [[ $INPUT_DEVICE_VALUE == '1' ]]; then
-
+ if [[ $INPUT_DEVICE_VALUE == '1' ]]
+ then
INPUT_DEVICE_VALUE='enable'
- elif [[ $INPUT_DEVICE_VALUE == '0' ]]; then
-
+ elif [[ $INPUT_DEVICE_VALUE == '0' ]]
+ then
INPUT_DEVICE_VALUE='disable'
-
fi
INPUT_ADDITIONAL=$3
@@ -80,32 +79,28 @@ $FP_SCRIPT gpudriver none|intel|nvidia|amd|custom
EXIT_CODE=0
- Unknown_Input_Name(){
-
+ Unknown_Input_Name()
+ {
G_DIETPI-NOTIFY 2 "Unknown input name ($INPUT_DEVICE_NAME). Nothing has been applied."
echo "$AVAIABLE_COMMANDS"
EXIT_CODE=1
-
}
- Unknown_Input_Mode(){
-
+ Unknown_Input_Mode()
+ {
G_DIETPI-NOTIFY 2 "Unknown input value ($INPUT_DEVICE_VALUE). Nothing has been applied."
echo "$AVAIABLE_COMMANDS"
EXIT_CODE=1
-
}
- Unsupported_Input_Name(){
-
+ Unsupported_Input_Name()
+ {
G_DIETPI-NOTIFY 2 "Input name ($INPUT_DEVICE_NAME) is not supported on your system. Nothing has been applied."
-
}
- Unsupported_Input_Mode(){
-
+ Unsupported_Input_Mode()
+ {
G_DIETPI-NOTIFY 2 "Input value ($INPUT_DEVICE_VALUE) is not supported on your system. Nothing has been applied."
-
}
#/////////////////////////////////////////////////////////////////////////////////////
@@ -123,8 +118,8 @@ $FP_SCRIPT gpudriver none|intel|nvidia|amd|custom
# Enable video devices via extended start
G_CONFIG_INJECT 'start_x=' 'start_x=1' /boot/config.txt
- # Requires 128 MiB memory split at least
- local gpu_mem=$(sed -n '/^[[:blank:]]*gpu_mem[_0-9]*=/{s/^[^=]*=//p;q}' /boot/config.txt)
+ # Requires 96 MiB memory split at least
+ local gpu_mem=$(sed -n '/^[[:blank:]]*gpu_mem_1024=/{s/^[^=]*=//p;q}' /boot/config.txt)
(( ${gpu_mem:-76} < 96 )) && INPUT_DEVICE_VALUE=96 Gpu_Memory_Split_Main
# Enable V4L2 codec as well
@@ -149,32 +144,28 @@ $FP_SCRIPT gpudriver none|intel|nvidia|amd|custom
#/////////////////////////////////////////////////////////////////////////////////////
# rpi-codec
#/////////////////////////////////////////////////////////////////////////////////////
- RPi_Codec_Main(){
-
+ RPi_Codec_Main()
+ {
(( $G_HW_MODEL > 9 )) && { Unsupported_Input_Name; return 1; } # Exit path for non-RPi
- if [[ $INPUT_DEVICE_VALUE == 'enable' ]]; then
-
- # Remove modules blacklist
+ if [[ $INPUT_DEVICE_VALUE == 'enable' ]]
+ then
+ # Remove module blacklist
[[ -f '/etc/modprobe.d/dietpi-disable_rpi_codec.conf' ]] && G_EXEC rm /etc/modprobe.d/dietpi-disable_rpi_codec.conf
- # RPi 4: Enable HEVC decoder
- (( $G_HW_MODEL == 4 )) && G_CONFIG_INJECT 'dtoverlay=rpivid-v4l2' 'dtoverlay=rpivid-v4l2' /boot/config.txt
+ # RPi 4: Enable HEVC decoder (deprecated since Bullseye)
+ (( $G_DISTRO == 5 && $G_HW_MODEL == 4 )) && G_CONFIG_INJECT 'dtoverlay=rpivid-v4l2' 'dtoverlay=rpivid-v4l2' /boot/config.txt
- elif [[ $INPUT_DEVICE_VALUE == 'disable' ]]; then
-
- # Add module blacklist, which is otherwise loaded by default since kernel 4.19/5.10
+ elif [[ $INPUT_DEVICE_VALUE == 'disable' ]]
+ then
+ # Add module blacklist, which is otherwise loaded by default
G_EXEC eval "echo 'blacklist bcm2835_codec' > /etc/modprobe.d/dietpi-disable_rpi_codec.conf"
# Disable HEVC decoder
- G_EXEC sed -i '/^[[:blank:]]*dtoverlay=rpivid-v4l2$/d' /boot/config.txt
-
+ grep -q '^[[:blank:]]*dtoverlay=rpivid-v4l2$' && /boot/config.txt && G_EXEC sed -i '/^[[:blank:]]*dtoverlay=rpivid-v4l2$/d' /boot/config.txt
else
-
Unknown_Input_Mode
-
fi
-
}
#/////////////////////////////////////////////////////////////////////////////////////
@@ -655,7 +646,7 @@ _EOF_
[[ $params ]] && params=$(mawk -F, '{for(i=1; i<=NF; i++) {if($i~/^cma-*/){print $i;exit}}}' <<< "$params")
else
# Disable full KMS HDMI audio if onboard HDMI is disabled
- [[ $params != *',noaudio'* ]] && { ! grep -q '^[[:blank:]]*dtparam=audio=on' /boot/config.txt || grep -q '^[[:blank:]]*dtoverlay=dietpi-disable_hdmi_audio' /boot/config.txt; } && params+=',noaudio'
+ [[ $params != *',noaudio'* ]] && { ! grep -q '^[[:blank:]]*dtparam=audio=on' /boot/config.txt || grep -Eq '(^|[[:blank:]])snd_bcm2835.enable_hdmi=0([[:blank:]]|$)' /boot/cmdline.txt; } && params+=',noaudio'
fi
# Use additional argument for CMA size
@@ -682,49 +673,29 @@ _EOF_
#/////////////////////////////////////////////////////////////////////////////////////
# lcdpanel: All non-HDMI/VGA based displays and monitors
#/////////////////////////////////////////////////////////////////////////////////////
- Lcd_Panel_Main(){
-
- local update_dietpitxt=1
-
- if [[ $INPUT_DEVICE_VALUE == 'odroid-lcd35' ]]; then
-
- Lcd_Panel_OdroidLCD35_Enable
-
- elif [[ $INPUT_DEVICE_VALUE == 'waveshare32' ]]; then
-
- Lcd_Panel_Waveshare32_Enable
-
- elif [[ $INPUT_DEVICE_VALUE == 'odroid-cloudshell' ]]; then
-
- Lcd_Panel_Odroidcloudshell_Enable
-
- elif [[ ${INPUT_DEVICE_VALUE,,} == 'esp01215e' ]]; then
-
- Lcd_Panel_ESP01215E_Enable
-
- elif [[ ${INPUT_DEVICE_VALUE,,} == 'allo-boss2-oled' ]]; then
-
- OLED_Allo_Boss2_Enable
-
- # Disable all
- elif [[ $INPUT_DEVICE_VALUE == 'none' ]]; then
-
- Lcd_Panel_Waveshare32_Disable
- Lcd_Panel_Odroidcloudshell_Disable
- Lcd_Panel_OdroidLCD35_Disable
- Lcd_Panel_ESP01215E_Disable
- OLED_Allo_Boss2_Disable
-
- else
-
- update_dietpitxt=0
- Unknown_Input_Mode
-
- fi
-
- # Update dietpi.txt entry?
- (( $update_dietpitxt )) && G_CONFIG_INJECT 'CONFIG_LCDPANEL=' "CONFIG_LCDPANEL=$INPUT_DEVICE_VALUE" /boot/dietpi.txt
+ Lcd_Panel_Main()
+ {
+ case $INPUT_DEVICE_VALUE in
+ 'odroid-lcd35') Lcd_Panel_OdroidLCD35_Enable;;
+ 'waveshare32') Lcd_Panel_Waveshare32_Enable;;
+ 'odroid-cloudshell') Lcd_Panel_Odroidcloudshell_Enable;;
+ 'esp01215e') Lcd_Panel_ESP01215E_Enable;;
+ 'allo-boss2-oled') OLED_Allo_Boss2_Enable;;
+ 'none')
+ Lcd_Panel_Waveshare32_Disable
+ Lcd_Panel_Odroidcloudshell_Disable
+ Lcd_Panel_OdroidLCD35_Disable
+ Lcd_Panel_ESP01215E_Disable
+ OLED_Allo_Boss2_Disable
+ ;;
+ *)
+ Unknown_Input_Mode
+ return 1
+ ;;
+ esac
+ # Update dietpi.txt entry
+ G_CONFIG_INJECT 'CONFIG_LCDPANEL=' "CONFIG_LCDPANEL=$INPUT_DEVICE_VALUE" /boot/dietpi.txt
}
Lcd_Panel_ESP01215E_Enable(){
@@ -743,7 +714,7 @@ _EOF_
Lcd_Panel_ESP01215E_Disable(){
- (( $G_HW_MODEL > 9 )) && return # Skip on non-RPi
+ (( $G_HW_MODEL > 9 )) && return 0 # Skip on non-RPi
G_EXEC sed -i '/^[[:blank:]]*hdmi_force_hotplug=/c\#hdmi_force_hotplug=1' /boot/config.txt
G_EXEC sed -i '/^[[:blank:]]*hdmi_group=/c\#hdmi_group=2' /boot/config.txt
@@ -760,9 +731,6 @@ _EOF_
G_EXEC mkdir -p /etc/X11/xorg.conf.d
- # Create desktop icon for xcalibration
- # - NB: libinput replaces this in start menu
-
}
# Waveshare32
@@ -1512,7 +1480,7 @@ _EOF_
# - RPi
elif (( $G_HW_MODEL < 10 ))
then
- grep -q "console=$INPUT_ADDITIONAL" /boot/cmdline.txt || sed -i "/root=/s/[[:blank:]]*$/ console=$INPUT_ADDITIONAL,115200/" /boot/cmdline.txt
+ grep -q "console=$INPUT_ADDITIONAL" /boot/cmdline.txt || sed -i "/root=/s/$/ console=$INPUT_ADDITIONAL,115200/" /boot/cmdline.txt
# - Odroid C1/C2 legacy
elif [[ $G_HW_MODEL == 1[02] && -f '/boot/boot.ini' ]]
@@ -1734,17 +1702,16 @@ _EOF_
Soundcard_Reset_RPi()
{
# Remove device tree overlays which disable HDMI audio and 3.5mm jack and those for known sound card, disable I2S and HDMI drive
- G_EXEC sed -Ei -e '/^[[:blank:]]*(dtoverlay=(dietpi-disable_(hdmi_audio|headphones)|allo-|applepi-dac|dionaudio-|googlevoicehat-soundcard|hifiberry-|i-sabre-q2m|iqaudio-|justboom-|rpi-dac)|dtparam=i2s)/d' -e 's/^[[:blank:]]*(hdmi_drive(:[01])?=.*$)/#\1/' /boot/config.txt
-
- # Remove overlay files which disable HDMI audio and 3.5mm jack
- [[ -f '/boot/overlays/dietpi-disable_hdmi_audio.dtbo' ]] && G_EXEC rm /boot/overlays/dietpi-disable_hdmi_audio.dtbo
- [[ -f '/boot/overlays/dietpi-disable_headphones.dtbo' ]] && G_EXEC rm /boot/overlays/dietpi-disable_headphones.dtbo
+ G_EXEC sed -Ei -e '/^[[:blank:]]*(dtoverlay=(allo-|applepi-dac|dionaudio-|googlevoicehat-soundcard|hifiberry-|i-sabre-q2m|iqaudio-|justboom-|rpi-dac)|dtparam=i2s)/d' -e 's/^[[:blank:]]*(hdmi_drive(:[01])?=.*$)/#\1/' /boot/config.txt
# Disable onboard sound
G_CONFIG_INJECT 'dtparam=audio=' 'dtparam=audio=off' /boot/config.txt
# Blacklist onboard sound kernel module
- G_EXEC eval 'echo '\''blacklist snd_bcm2835'\'' > /etc/modprobe.d/dietpi-disable_rpi_sound.conf'
+ G_EXEC eval 'echo '\''blacklist snd_bcm2835'\'' > /etc/modprobe.d/dietpi-disable_rpi_audio.conf'
+
+ # Remove kernel module options
+ G_EXEC sed -Ei '/root=/s/[[:blank:]]*snd_bcm2835.enable_[^[:blank:]]*([[:blank:]]*$)?//g' /boot/cmdline.txt
# Disable full KMS HDMI audio
local kms=$(grep -Em1 '^[[:blank:]]*dtoverlay=vc4-kms-v3d(-pi4)?(,|$)' /boot/config.txt)
@@ -1818,8 +1785,14 @@ _EOF_
# An input is required
[[ $INPUT_DEVICE_VALUE ]] || Unknown_Input_Mode
#-----------------------------------------------------------------------------
- # Failsafe: Assure installed alsa-utils, if sound card has been selected
- [[ $INPUT_DEVICE_VALUE == 'none' ]] || G_AG_CHECK_INSTALL_PREREQ alsa-utils
+ # Remove all known audio based packages
+ if [[ $INPUT_DEVICE_VALUE == 'none' ]]
+ then
+ G_AGP alsa-utils libasound2-plugin-equal firmware-intel-sound firmware-sof-signed
+ # Install base alsa package
+ else
+ G_AG_CHECK_INSTALL_PREREQ alsa-utils
+ fi
# Always reset sound cards and revert back to defaults
Soundcard_Reset_All
# Print info
@@ -1896,8 +1869,14 @@ _EOF_
fi
;;
- # Intel SST DSP
- 'intel-sst-dsp') G_AG_CHECK_INSTALL_PREREQ 'firmware-intel-sound';;
+ # Intel SST DSP
+ 'intel-sst-dsp')
+
+ local aPackages=('firmware-intel-sound')
+ (( $G_DISTRO > 5 )) && aPackages+=('firmware-sof-signed') # Available since Bullseye
+ G_AG_CHECK_INSTALL_PREREQ "${aPackages[@]}"
+
+ ;;
# --------------- Sparky SBC ------------
# Allo Piano DAC (firmware + module)
@@ -1950,46 +1929,23 @@ _EOF_
'rpi-bcm2835-'*)
# Remove blacklist for onboard audio kernel module
- G_EXEC rm /etc/modprobe.d/dietpi-disable_rpi_sound.conf
+ G_EXEC rm /etc/modprobe.d/dietpi-disable_rpi_audio.conf
# Enable onboard audio
G_CONFIG_INJECT 'dtparam=audio=' 'dtparam=audio=on' /boot/config.txt
- # Force 3.5mm out?
+ # Force 3.5mm output?
if [[ $INPUT_DEVICE_VALUE == *'3.5mm' ]]
then
- # Disable HDMI audio via dtoverlay
- G_EXEC_DESC='Compiling device tree overlay: /boot/overlays/dietpi-disable_hdmi_audio.dtbo'
- G_EXEC eval 'dtc -I dts -O dtb -o /boot/overlays/dietpi-disable_hdmi_audio.dtbo <<< '\''/dts-v1/;
-/plugin/;
-/ {
- compatible = "brcm,bcm2835";
- fragment@0 {
- target = <&audio>;
- __overlay__ {
- brcm,disable-hdmi = <1>;
- };
- };
-};'\'
- G_CONFIG_INJECT 'dtoverlay=dietpi-disable_hdmi_audio' 'dtoverlay=dietpi-disable_hdmi_audio' /boot/config.txt
+ # Disable HDMI audio via kernel module option
+ G_EXEC G_EXEC sed -i '/root=/s/$/ snd_bcm2835.enable_hdmi=0/' /boot/cmdline.txt
# Force HDMI output?
elif [[ $INPUT_DEVICE_VALUE == *'hdmi' ]]
then
- # Disable headphones via dtoverlay
- G_EXEC_DESC='Compiling device tree overlay: /boot/overlays/dietpi-disable_headphones.dtbo'
- G_EXEC eval 'dtc -I dts -O dtb -o /boot/overlays/dietpi-disable_headphones.dtbo <<< '\''/dts-v1/;
-/plugin/;
-/ {
- compatible = "brcm,bcm2835";
- fragment@0 {
- target = <&audio>;
- __overlay__ {
- brcm,disable-headphones = <1>;
- };
- };
-};'\'
- G_CONFIG_INJECT 'dtoverlay=dietpi-disable_headphones' 'dtoverlay=dietpi-disable_headphones' /boot/config.txt
+ # Disable headphones via kernel module option
+ G_EXEC G_EXEC sed -i '/root=/s/$/ snd_bcm2835.enable_headphones=0/' /boot/cmdline.txt
+ # Force HDMI audio via config.txt option
G_CONFIG_INJECT 'hdmi_drive=' 'hdmi_drive=2' /boot/config.txt
(( $G_HW_MODEL == 4 )) && G_CONFIG_INJECT 'hdmi_drive:1=' 'hdmi_drive:1=2' /boot/config.txt 'hdmi_drive='
fi
@@ -2296,7 +2252,7 @@ _EOF_
[[ $INPUT_DEVICE_VALUE == 'intel' ]] || uninstall_array+=('i965-va-driver' 'xserver-xorg-video-intel') #Intel
[[ $INPUT_DEVICE_VALUE == 'nvidia' ]] || uninstall_array+=('nvidia-driver' 'nvidia-driver-libs:*' 'libnvidia-glvkspirv:*' 'nvidia-xconfig' 'libgl1-nvidia-glx' 'nvidia-settings' 'nvidia-vulkan-common' 'nvidia-vulkan-icd:*') #Nvidia
[[ $INPUT_DEVICE_VALUE == 'amd' ]] || uninstall_array+=('firmware-amd-graphics' 'xserver-xorg-video-amdgpu') #AMD
- [[ $INPUT_DEVICE_VALUE =~ ^intel|amd$ ]] || uninstall_array+=('mesa-vulkan-drivers:*') #Mesa Vulkan
+ [[ $INPUT_DEVICE_VALUE =~ ^(intel|amd)$ ]] || uninstall_array+=('mesa-vulkan-drivers:*') #Mesa Vulkan
if [[ ${uninstall_array[0]} ]]
then
@@ -2339,94 +2295,30 @@ _EOF_
#/////////////////////////////////////////////////////////////////////////////////////
#-----------------------------------------------------------------------------------
G_DIETPI-NOTIFY 3 "$G_PROGRAM_NAME" "$INPUT_DEVICE_NAME ($INPUT_DEVICE_VALUE)"
-
#-----------------------------------------------------------------------------------
- if [[ $INPUT_DEVICE_NAME == 'soundcard' ]]; then
-
- Soundcard_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'serialconsole' ]]; then
-
- Serial_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'bluetooth' ]]; then
-
- Bluetooth_Main || EXIT_CODE=1
-
- elif [[ $INPUT_DEVICE_NAME == 'wifimodules' ]]; then
-
- Wifi_Modules_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'enableipv6' ]]; then
-
- Enable_IPv6
-
- elif [[ $INPUT_DEVICE_NAME == 'wificountrycode' ]]; then
-
- Wifi_Countrycode_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'i2c' ]]; then
-
- I2c_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'spi' ]]; then
-
- SPI_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'lcdpanel' ]]; then
-
- Lcd_Panel_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'rpi-opengl' ]]; then
-
- RPi_OpenGL_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'eth-forcespeed' ]]; then
-
- Eth_Force_Speed_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'remoteir' ]]; then
-
- RemoteIR_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'gpumemsplit' ]]; then
-
- Gpu_Memory_Split_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'rpi-camera' ]]; then
-
- RPi_Camera_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'rpi-codec' ]]; then
-
- RPi_Codec_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'rpi3_usb_boot' ]]; then
-
- RPi_USB_Boot_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'rpi-eeprom' ]]; then
-
- RPi_EEPROM
-
- elif [[ $INPUT_DEVICE_NAME == 'vf2-spi-update' ]]; then
-
- VF2_SPI_Update
-
- elif [[ $INPUT_DEVICE_NAME == 'headless' ]]; then
-
- Headless_Main
-
- elif [[ $INPUT_DEVICE_NAME == 'gpudriver' ]]; then
-
- GPUDriver_Main
-
- else
-
- Unknown_Input_Name
-
- fi
-
+ case $INPUT_DEVICE_NAME in
+ 'soundcard') Soundcard_Main;;
+ 'serialconsole') Serial_Main;;
+ 'bluetooth') Bluetooth_Main || EXIT_CODE=1;;
+ 'wifimodules') Wifi_Modules_Main;;
+ 'enableipv6') Enable_IPv6;;
+ 'wificountrycode') Wifi_Countrycode_Main;;
+ 'i2c') I2c_Main;;
+ 'spi') SPI_Main;;
+ 'lcdpanel') Lcd_Panel_Main;;
+ 'rpi-opengl') RPi_OpenGL_Main;;
+ 'eth-forcespeed') Eth_Force_Speed_Main;;
+ 'remoteir') RemoteIR_Main;;
+ 'gpumemsplit') Gpu_Memory_Split_Main;;
+ 'rpi-camera') RPi_Camera_Main;;
+ 'rpi-codec') RPi_Codec_Main;;
+ 'rpi3_usb_boot') RPi_USB_Boot_Main;;
+ 'rpi-eeprom') RPi_EEPROM;;
+ 'vf2-spi-update') VF2_SPI_Update;;
+ 'headless') Headless_Main;;
+ 'gpudriver') GPUDriver_Main;;
+ *) Unknown_Input_Name;;
+ esac
#-----------------------------------------------------------------------------------
G_DIETPI-NOTIFY -1 "$EXIT_CODE" "$INPUT_DEVICE_NAME $INPUT_DEVICE_VALUE"
exit "$EXIT_CODE"
diff --git a/rootfs/etc/cron.daily/dietpi b/rootfs/etc/cron.daily/dietpi
index f0f73cb319..c906587875 100755
--- a/rootfs/etc/cron.daily/dietpi
+++ b/rootfs/etc/cron.daily/dietpi
@@ -31,12 +31,7 @@
G_AGUP -f
fi
# Apply APT upgrades if chosen and available
- if [[ $APT_UPDATE_MODE == 2 && -f '/run/dietpi/.apt_updates' ]]
- then
- apt-get -qq upgrade &> /var/tmp/dietpi/logs/dietpi-upgrade_apt.log
- # Assure all services are up since APT upgrades might stop them
- /boot/dietpi/dietpi-services start
- fi
+ [[ $APT_UPDATE_MODE == 2 && -f '/run/dietpi/.apt_updates' ]] && apt-get -qq upgrade &> /var/tmp/dietpi/logs/dietpi-upgrade_apt.log
#----------------------------------------------------------------
# Sync DietPi-RAMlog to disk: https://github.com/MichaIng/DietPi/issues/4884
systemctl -q is-enabled dietpi-ramlog 2> /dev/null && /boot/dietpi/func/dietpi-ramlog 1
diff --git a/rootfs/var/lib/dietpi/services/dietpi-firstboot.bash b/rootfs/var/lib/dietpi/services/dietpi-firstboot.bash
index e25e3b606d..dc6af03ff1 100755
--- a/rootfs/var/lib/dietpi/services/dietpi-firstboot.bash
+++ b/rootfs/var/lib/dietpi/services/dietpi-firstboot.bash
@@ -91,7 +91,24 @@
Apply_DietPi_FirstRun_Settings(){
# RPi: Apply safe overclocking values or update comments to show model-specific defaults
- (( $G_HW_MODEL < 10 )) && RPi_Set_Clock_Speeds
+ if (( $G_HW_MODEL < 10 ))
+ then
+ RPi_Set_Clock_Speeds
+
+ # NanoPi R5S/R5C/R6S/R6C: Update udev rules for C variants
+ elif (( $G_HW_MODEL == 76 ))
+ then
+ [[ $( /dev/null && cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0; /bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1; /bin/ip l s down dev eth1"
+_EOF_
+ elif (( $G_HW_MODEL == 79 ))
+ then
+ [[ $( /dev/null && cat << '_EOF_' > /etc/udev/rules.d/dietpi-eth-leds.rules
+SUBSYSTEM=="leds", KERNEL=="wan_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth0; /bin/ip l s down dev eth0"
+SUBSYSTEM=="leds", KERNEL=="lan1_led", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s up dev eth1; /bin/ip l s down dev eth1"
+_EOF_
+ fi
# End user automated script
if [[ -f '/boot/Automation_Custom_PreScript.sh' ]]; then