- Platform information: Raspberry Pi 3
- Hardware: CPUArchitecture/RAM/storage
- OS: what OS is used and which version
- Java Runtime Environment: which java platform is used and what version
- openHAB version:
- Issue of the topic: please be detailed explaining your issue
- Please post configurations (if applicable):
- Items configuration related to the issue
- Sitemap configuration related to the issue
- Rules code related to the issue
- Services configuration related to the issue
- If logs where generated please post these here using code fences:
Hi All I’m trying to install for the 1st time and I’m just in a reboot cycle. I can’t see where the actual failure is in these logs so perhaps someone with more experience can?
OK
- tryUntil ‘ping -c1 8.8.8.8 &> /dev/null || curl --silent --head h_t_t_p://www.openhab.org/docs |& grep -qs ‘’‘h_t_t_p/1.1 200 OK’’’’ 5 1
- local cmd
- local attempts
- local interval
- cmd=‘ping -c1 8.8.8.8 &> /dev/null || curl --silent --head h_t_t_p://www.openhab.org/docs |& grep -qs ‘’‘h_t_t_p/1.1 200 OK’’’’
- attempts=5
- interval=1
- [[ 5 -le 0 ]]
- cond_echo ‘\nexecuting ping -c1 8.8.8.8 &> /dev/null || curl --silent --head h_t_t_p://www.openhab.org/docs |& grep -qs ‘’‘h_t_t_p/1.1 200 OK’’’ \c’
- [[ -z 1 ]]
- eval ‘ping -c1 8.8.8.8 &> /dev/null || curl --silent --head h_t_t_p://www.openhab.org/docs |& grep -qs ‘’‘h_t_t_p/1.1 200 OK’’’’
++ ping -c1 8.8.8.8
- out=0
- [[ 0 -eq 0 ]]
- break
- [[ -z 1 ]]
- return 5
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:39:13_CEST [openHABian] Ensuring network connectivity… ’
2021-04-05_21:39:13_CEST [openHABian] Ensuring network connectivity… + running_in_docker
- [[ -n ‘’ ]]
- grep -qs ‘docker|lxc’ /proc/1/cgroup
- [[ -f /.dockerenv ]]
- return 1
- tryUntil ‘ping -c1 8.8.8.8 &> /dev/null || curl --silent --head h_t_t_p://www.openhab.org/docs |& grep -qs ‘’‘h_t_t_p/1.1 200 OK’’’’ 5 1
- local cmd
- local attempts
- local interval
- cmd=‘ping -c1 8.8.8.8 &> /dev/null || curl --silent --head h_t_t_p://www.openhab.org/docs |& grep -qs ‘’‘h_t_t_p/1.1 200 OK’’’’
- attempts=5
- interval=1
- [[ 5 -le 0 ]]
- cond_echo ‘\nexecuting ping -c1 8.8.8.8 &> /dev/null || curl --silent --head h_t_t_p://www.openhab.org/docs |& grep -qs ‘’‘h_t_t_p/1.1 200 OK’’’ \c’
- [[ -z 1 ]]
- eval ‘ping -c1 8.8.8.8 &> /dev/null || curl --silent --head h_t_t_p://www.openhab.org/docs |& grep -qs ‘’‘h_t_t_p/1.1 200 OK’’’’
++ ping -c1 8.8.8.8
- out=0
- [[ 0 -eq 0 ]]
- break
- [[ -z 1 ]]
- return 5
- echo OK
OK
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:39:13_CEST [openHABian] Waiting for dpkg/apt to get ready… ’
2021-04-05_21:39:13_CEST [openHABian] Waiting for dpkg/apt to get ready… + wait_for_apt_to_be_ready
- local attempts
- local interval
- local pid
- attempts=10
- interval=1
- [[ 10 -le 0 ]]
- pid=932
- apt-get update
+++ tail --pid=932 -f /dev/null
++ eval ‘’
- [[ ‘’ -eq 0 ]]
- return 0
- echo OK
OK
++ dpkg -s raspberrypi-kernel
++ grep ‘Version:[[:space:]]’
- firmwareBefore=‘Version: 1.20210303-1’
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:52:46_CEST [openHABian] Updating repositories and upgrading installed packages… ’
2021-04-05_21:52:46_CEST [openHABian] Updating repositories and upgrading installed packages… + apt-get install --fix-broken --yes
+++ apt-get --yes upgrade
++ eval ‘’
- [[ ‘’ -eq 100 ]]
++ dpkg -s raspberrypi-kernel
++ grep ‘Version:[[:space:]]’
- [[ Version: 1.20210303-1 != \V\e\r\s\i\o\n:\ \1.\2\0\2\1\0\3\0\3-\1 ]]
- echo OK
OK
++ command -v python3
- [[ -x /usr/bin/python3 ]]
- bash /boot/webserver.bash reinsure_running
bash: /boot/webserver.bash: No such file or directory
++ command -v git
- [[ -x /usr/bin/git ]]
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:52:46_CEST [openHABian] Updating myself from h_t_t_ps://github.com/openhab/openhabian, main branch… ’
2021-04-05_21:52:46_CEST [openHABian] Updating myself from h_t_t_ps://github.com/openhab/openhabian, main branch… +++ openhabian_update
++ eval ‘’
- [[ ‘’ -eq 0 ]]
- echo OK
OK
- ln -sfn /opt/openhabian/openhabian-setup.sh /usr/local/bin/openhabian-config
++ timestamp
++ date +%F_%T_%Z
- echo ‘2021-04-05_21:52:55_CEST [openHABian] Starting execution of ‘’‘openhabian-config unattended’’’… OK’
2021-04-05_21:52:55_CEST [openHABian] Starting execution of ‘openhabian-config unattended’… OK
- openhabian-config unattended
2021-04-05_21:52:55_CEST [openHABian] Checking for root privileges… OK
- export UNATTENDED SILENT DEBUGMAX INTERACTIVE
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/auth.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/backup.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/config.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/ext-storage.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/find.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/habapp.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/helpers.bash
++ ESC=’\033[’
++ COL_DEF=’\033[39;49;00m’
++ COL_RED=’\033[31;01m’
++ COL_GREEN=’\033[32;01m’
++ COL_YELLOW=’\033[33;01m’
++ COL_BLUE=’\033[34;01m’
++ COL_MAGENTA=’\033[35;01m’
++ COL_CYAN=’\033[36;01m’
++ COL_LGRAY=’\033[37;01m’
++ COL_DGRAY=’\033[90;01m’
++ export COL_DEF COL_RED COL_GREEN COL_YELLOW COL_BLUE COL_MAGENTA COL_CYAN COL_LGRAY COL_DGRAY
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/influxdb+grafana.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/java-jre.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/menu.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/nodejs-apps.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/openhab.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/openhabian.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/packages.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/system.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/vpn.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/wifi.bash
- for shfile in “${BASEDIR:-/opt/openhabian}”/functions/*.bash
- source /opt/openhabian/functions/zram.bash
++ pwd
- OLDWD=/
- cd /opt
- update_openhabian_conf
- local configFile=/etc/openhabian.conf
- local referenceConfig=/opt/openhabian/openhabian.conf.dist
- cp /etc/openhabian.conf /etc/openhabian.conf.BAK
- read -r line
- [[ # Modify your openHABian settings =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Modify your openHABian settings’
- read -r line
- [[ # Handle with care, only touch if you need to!! =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Handle with care, only touch if you need to!!’
- read -r line
- [[ # This file will only be used on unattended initial install. =~ ^(#)?[a-zA-Z] ]]
- echo ‘# This file will only be used on unattended initial install.’
- read -r line
- [[ # If you want to change anything after unattended install completed, use menu in openhabian-config. =~ ^(#)?[a-zA-Z] ]]
- echo ‘# If you want to change anything after unattended install completed, use menu in openhabian-config.’
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # Hostname to set this one to =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Hostname to set this one to’
- read -r line
- [[ hostname=openhabian =~ ^(#)?[a-zA-Z] ]]
- parsed=hostname=openhabian
- [[ hostname=openhabian =~ ^#[a-zA-Z] ]]
++ echo hostname=openhabian
++ cut -d= -f1
- param=hostname
- [[ -v hostname ]]
- [[ openhabian == *\ * ]]
- echo hostname=openhabian
- read -r line
- [[ # if it exists, the default user (with its working environment) will be renamed to this username given here … =~ ^(#)?[a-zA-Z] ]]
- echo ‘# if it exists, the default user (with its working environment) will be renamed to this username given here …’
- read -r line
- [[ username=openhabian =~ ^(#)?[a-zA-Z] ]]
- parsed=username=openhabian
- [[ username=openhabian =~ ^#[a-zA-Z] ]]
++ cut -d= -f1
++ echo username=openhabian
- param=username
- [[ -v username ]]
- [[ openhabian == *\ * ]]
- echo username=openhabian
- read -r line
- [[ # … and given this password. The password will be removed from this file after completion for security reasons. =~ ^(#)?[a-zA-Z] ]]
- echo ‘# … and given this password. The password will be removed from this file after completion for security reasons.’
- read -r line
- [[ userpw=openhabian =~ ^(#)?[a-zA-Z] ]]
- parsed=userpw=openhabian
- [[ userpw=openhabian =~ ^#[a-zA-Z] ]]
++ echo userpw=openhabian
++ cut -d= -f1
- param=userpw
- [[ -v userpw ]]
- [[ openhabian == *\ * ]]
- echo userpw=openhabian
- read -r line
- [[ # set this to download a SSH key and authorize the owner to login as the admin user =~ ^(#)?[a-zA-Z] ]]
- echo ‘# set this to download a SSH key and authorize the owner to login as the admin user’
- read -r line
- [[ adminkeyurl="" =~ ^(#)?[a-zA-Z] ]]
- parsed=‘adminkeyurl=""’
- [[ adminkeyurl="" =~ ^#[a-zA-Z] ]]
++ echo ‘adminkeyurl=""’
++ cut -d= -f1
- param=adminkeyurl
- [[ -v adminkeyurl ]]
- [[ ‘’ == *\ * ]]
- echo adminkeyurl=
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # Language and timezone. See Debian documentation for valid values. =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Language and timezone. See Debian documentation for valid values.’
- read -r line
- [[ timezone=Europe/Berlin =~ ^(#)?[a-zA-Z] ]]
- parsed=timezone=Europe/Berlin
- [[ timezone=Europe/Berlin =~ ^#[a-zA-Z] ]]
++ echo timezone=Europe/Berlin
++ cut -d= -f1
- param=timezone
- [[ -v timezone ]]
- [[ Europe/Berlin == *\ * ]]
- echo timezone=Europe/Berlin
- read -r line
- [[ locales=“en_US.UTF-8 de_DE.UTF-8” =~ ^(#)?[a-zA-Z] ]]
- parsed=‘locales=“en_US.UTF-8 de_DE.UTF-8”’
- [[ locales=“en_US.UTF-8 de_DE.UTF-8” =~ ^#[a-zA-Z] ]]
++ echo ‘locales=“en_US.UTF-8 de_DE.UTF-8”’
++ cut -d= -f1
- param=locales
- [[ -v locales ]]
- [[ en_US.UTF-8 de_DE.UTF-8 == *\ * ]]
- echo ‘locales=“en_US.UTF-8 de_DE.UTF-8”’
- read -r line
- [[ system_default_locale=“en_US.UTF-8” =~ ^(#)?[a-zA-Z] ]]
- parsed=‘system_default_locale=“en_US.UTF-8”’
- [[ system_default_locale=“en_US.UTF-8” =~ ^#[a-zA-Z] ]]
++ echo ‘system_default_locale=“en_US.UTF-8”’
++ cut -d= -f1
- param=system_default_locale
- [[ -v system_default_locale ]]
- [[ en_US.UTF-8 == *\ * ]]
- echo system_default_locale=en_US.UTF-8
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # WiFi settings. An ethernet connection is recommended. =~ ^(#)?[a-zA-Z] ]]
- echo ‘# WiFi settings. An ethernet connection is recommended.’
- read -r line
- [[ # If you have a RPi4, RPi3, RPi0W or a supported external WiFi dongle, the WiFi =~ ^(#)?[a-zA-Z] ]]
- echo ‘# If you have a RPi4, RPi3, RPi0W or a supported external WiFi dongle, the WiFi’
- read -r line
- [[ # interface can be setup and used for the initial installation. =~ ^(#)?[a-zA-Z] ]]
- echo ‘# interface can be setup and used for the initial installation.’
- read -r line
- [[ # Fill in your SSID and password below, leave empty or put comment in front to =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Fill in your SSID and password below, leave empty or put comment in front to’
- read -r line
- [[ # have your WiFi remain unchanged/uninitialized. Make sure your Ethernet works. =~ ^(#)?[a-zA-Z] ]]
- echo ‘# have your WiFi remain unchanged/uninitialized. Make sure your Ethernet works.’
- read -r line
- [[ # ATTENTION: you need to escape these special characters: $, `, ", , (newline) =~ ^(#)?[a-zA-Z] ]]
- echo ‘# ATTENTION: you need to escape these special characters: $, `, ", , (newline)’
- read -r line
- [[ # ‘Escaping’ means to put an additional \ in front of that character =~ ^(#)?[a-zA-Z] ]]
- echo ‘# ‘’‘Escaping’’’ means to put an additional \ in front of that character’
- read -r line
- [[ wifi_ssid="" =~ ^(#)?[a-zA-Z] ]]
- parsed=‘wifi_ssid=""’
- [[ wifi_ssid="" =~ ^#[a-zA-Z] ]]
++ echo ‘wifi_ssid=""’
++ cut -d= -f1
- param=wifi_ssid
- [[ -v wifi_ssid ]]
- [[ My_SSID == *\ * ]]
- echo wifi_ssid=My_SSID
- read -r line
- [[ wifi_password="" =~ ^(#)?[a-zA-Z] ]]
- parsed=‘wifi_password=""’
- [[ wifi_password="" =~ ^#[a-zA-Z] ]]
++ echo ‘wifi_password=""’
++ cut -d= -f1
- param=wifi_password
- [[ -v wifi_password ]]
- [[ My_PWD == *\ * ]]
- echo wifi_password=My_PWD
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # Wi-Fi setting. Select a two-letter country code suitable for your location =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Wi-Fi setting. Select a two-letter country code suitable for your location’
- read -r line
- [[ # E.g. US (default), DE, AU, NZ… =~ ^(#)?[a-zA-Z] ]]
- echo ‘# E.g. US (default), DE, AU, NZ…’
- read -r line
- [[ # You may infringe on local legislature otherwise =~ ^(#)?[a-zA-Z] ]]
- echo ‘# You may infringe on local legislature otherwise’
- read -r line
- [[ # See h_t_t_ps://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 or /usr/share/zoneinfo/zone.tab =~ ^(#)?[a-zA-Z] ]]
- echo ‘# See h_t_t_ps://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 or /usr/share/zoneinfo/zone.tab’
- read -r line
- [[ wifi_country="" =~ ^(#)?[a-zA-Z] ]]
- parsed=‘wifi_country=""’
- [[ wifi_country="" =~ ^#[a-zA-Z] ]]
++ echo ‘wifi_country=""’
++ cut -d= -f1
- param=wifi_country
- [[ -v wifi_country ]]
- [[ UK == *\ * ]]
- echo wifi_country=UK
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # Eventually disable all IPv6 e.g. on installation problems =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Eventually disable all IPv6 e.g. on installation problems’
- read -r line
- [[ # values: “enable”, “disable” =~ ^(#)?[a-zA-Z] ]]
- echo ‘# values: “enable”, “disable”’
- read -r line
- [[ ipv6=enable =~ ^(#)?[a-zA-Z] ]]
- parsed=ipv6=enable
- [[ ipv6=enable =~ ^#[a-zA-Z] ]]
++ echo ipv6=enable
++ cut -d= -f1
- param=ipv6
- [[ -v ipv6 ]]
- [[ disable == *\ * ]]
- echo ipv6=disable
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # repo and branch to clone from =~ ^(#)?[a-zA-Z] ]]
- echo ‘# repo and branch to clone from’
- read -r line
- [[ repositoryurl=h_t_t_ps://github.com/openhab/openhabian.git =~ ^(#)?[a-zA-Z] ]]
- parsed=repositoryurl=h_t_t_ps://github.com/openhab/openhabian.git
- [[ repositoryurl=h_t_t_ps://github.com/openhab/openhabian.git =~ ^#[a-zA-Z] ]]
++ echo repositoryurl=h_t_t_ps://github.com/openhab/openhabian.git
++ cut -d= -f1
- param=repositoryurl
- [[ -v repositoryurl ]]
- [[ h_t_t_ps://github.com/openhab/openhabian == *\ * ]]
- echo repositoryurl=h_t_t_ps://github.com/openhab/openhabian
- read -r line
- [[ clonebranch=openHAB3 =~ ^(#)?[a-zA-Z] ]]
- parsed=clonebranch=openHAB3
- [[ clonebranch=openHAB3 =~ ^#[a-zA-Z] ]]
++ echo clonebranch=openHAB3
++ cut -d= -f1
- param=clonebranch
- [[ -v clonebranch ]]
- [[ main == *\ * ]]
- echo clonebranch=main
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # debug verbosity mode =~ ^(#)?[a-zA-Z] ]]
- echo ‘# debug verbosity mode’
- read -r line
- [[ # off, on (verbose output in log) or maximum (show every command) =~ ^(#)?[a-zA-Z] ]]
- echo ‘# off, on (verbose output in log) or maximum (show every command)’
- read -r line
- [[ debugmode=off =~ ^(#)?[a-zA-Z] ]]
- parsed=debugmode=off
- [[ debugmode=off =~ ^#[a-zA-Z] ]]
++ echo debugmode=off
++ cut -d= -f1
- param=debugmode
- [[ -v debugmode ]]
- [[ maximum == *\ * ]]
- echo debugmode=maximum
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # fake hardware =~ ^(#)?[a-zA-Z] ]]
- echo ‘# fake hardware’
- read -r line
- [[ # force treating your box as if it was a … =~ ^(#)?[a-zA-Z] ]]
- echo ‘# force treating your box as if it was a …’
- read -r line
- [[ # pi4, pi4_8gb, cm4, pi400, pi3, cm3, pi3+, cm3+, pi2, pi1, cm1, pi0, pi0w, x86 =~ ^(#)?[a-zA-Z] ]]
- echo ‘# pi4, pi4_8gb, cm4, pi400, pi3, cm3, pi3+, cm3+, pi2, pi1, cm1, pi0, pi0w, x86’
- read -r line
- [[ # hw= =~ ^(#)?[a-zA-Z] ]]
- echo ‘# hw=’
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # Hardware architecture =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Hardware architecture’
- read -r line
- [[ # x86_64, amd64, armv6l, armv7l, aarch64, arm64 =~ ^(#)?[a-zA-Z] ]]
- echo ‘# x86_64, amd64, armv6l, armv7l, aarch64, arm64’
- read -r line
- [[ # hwarch= =~ ^(#)?[a-zA-Z] ]]
- echo ‘# hwarch=’
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # OS distribution/release =~ ^(#)?[a-zA-Z] ]]
- echo ‘# OS distribution/release’
- read -r line
- [[ # Valid arguments: raspios, raspbian, debian, ubuntu, stretch, buster, bionic, focal =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Valid arguments: raspios, raspbian, debian, ubuntu, stretch, buster, bionic, focal’
- read -r line
- [[ # osrelease= =~ ^(#)?[a-zA-Z] ]]
- echo ‘# osrelease=’
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # Java architecture mode =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Java architecture mode’
- read -r line
- [[ # Valid arguments: “Adopt11”, “Zulu11-32”, or “Zulu11-64” =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Valid arguments: “Adopt11”, “Zulu11-32”, or “Zulu11-64”’
- read -r line
- [[ java_opt=Zulu11-32 =~ ^(#)?[a-zA-Z] ]]
- parsed=java_opt=Zulu11-32
- [[ java_opt=Zulu11-32 =~ ^#[a-zA-Z] ]]
++ echo java_opt=Zulu11-32
++ cut -d= -f1
- param=java_opt
- [[ -v java_opt ]]
- [[ Zulu11-32 == *\ * ]]
- echo java_opt=Zulu11-32
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # install zram per default, set to “disable” to skip installation =~ ^(#)?[a-zA-Z] ]]
- echo ‘# install zram per default, set to “disable” to skip installation’
- read -r line
- [[ zraminstall=enable =~ ^(#)?[a-zA-Z] ]]
- parsed=zraminstall=enable
- [[ zraminstall=enable =~ ^#[a-zA-Z] ]]
++ echo zraminstall=enable
++ cut -d= -f1
- param=zraminstall
- [[ -v zraminstall ]]
- [[ enable == *\ * ]]
- echo zraminstall=enable
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # start comitup hotspot if internet is not reachable =~ ^(#)?[a-zA-Z] ]]
- echo ‘# start comitup hotspot if internet is not reachable’
- read -r line
- [[ hotspot=enable =~ ^(#)?[a-zA-Z] ]]
- parsed=hotspot=enable
- [[ hotspot=enable =~ ^#[a-zA-Z] ]]
++ echo hotspot=enable
++ cut -d= -f1
- param=hotspot
- [[ -v hotspot ]]
- [[ enable == *\ * ]]
- echo hotspot=enable
- read -r line
- [[ hotspotpw=openhabian =~ ^(#)?[a-zA-Z] ]]
- parsed=hotspotpw=openhabian
- [[ hotspotpw=openhabian =~ ^#[a-zA-Z] ]]
++ echo hotspotpw=openhabian
++ cut -d= -f1
- param=hotspotpw
- [[ -v hotspotpw ]]
- echo hotspotpw=openhabian
- eval hotspotpw=openhabian
++ hotspotpw=openhabian
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # external SD card device to backup and mirror the internal SD card to =~ ^(#)?[a-zA-Z] ]]
- echo ‘# external SD card device to backup and mirror the internal SD card to’
- read -r line
- [[ # backupdrive=/dev/sda =~ ^(#)?[a-zA-Z] ]]
- echo ‘# backupdrive=/dev/sda’
- read -r line
- [[ storageconfig=openhab-dir =~ ^(#)?[a-zA-Z] ]]
- parsed=storageconfig=openhab-dir
- [[ storageconfig=openhab-dir =~ ^#[a-zA-Z] ]]
++ echo storageconfig=openhab-dir
++ cut -d= -f1
- param=storageconfig
- [[ -v storageconfig ]]
- [[ openhab-dir == *\ * ]]
- echo storageconfig=openhab-dir
- read -r line
- [[ storagedir=/storage =~ ^(#)?[a-zA-Z] ]]
- parsed=storagedir=/storage
- [[ storagedir=/storage =~ ^#[a-zA-Z] ]]
++ echo storagedir=/storage
++ cut -d= -f1
- param=storagedir
- [[ -v storagedir ]]
- [[ /storage == *\ * ]]
- echo storagedir=/storage
- read -r line
- [[ storagetapes=15 =~ ^(#)?[a-zA-Z] ]]
- parsed=storagetapes=15
- [[ storagetapes=15 =~ ^#[a-zA-Z] ]]
++ echo storagetapes=15
++ cut -d= -f1
- param=storagetapes
- [[ -v storagetapes ]]
- [[ 15 == *\ * ]]
- echo storagetapes=15
- read -r line
- [[ storagecapacity=1024 =~ ^(#)?[a-zA-Z] ]]
- parsed=storagecapacity=1024
- [[ storagecapacity=1024 =~ ^#[a-zA-Z] ]]
++ echo storagecapacity=1024
++ cut -d= -f1
- param=storagecapacity
- [[ -v storagecapacity ]]
- [[ 1024 == *\ * ]]
- echo storagecapacity=1024
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # mail relay settings =~ ^(#)?[a-zA-Z] ]]
- echo ‘# mail relay settings’
- read -r line
- [[ # adminmail=john.doe@foo.bar =~ ^(#)?[a-zA-Z] ]]
- echo ‘# adminmail=john.doe@foo.bar’
- read -r line
- [[ # relayuser=john.doe@foo.bar =~ ^(#)?[a-zA-Z] ]]
- echo ‘# relayuser=john.doe@foo.bar’
- read -r line
- [[ # relaypass=secret =~ ^(#)?[a-zA-Z] ]]
- echo ‘# relaypass=secret’
- read -r line
- [[ # smarthost=smtp.gmail.com =~ ^(#)?[a-zA-Z] ]]
- echo ‘# smarthost=smtp.gmail.com’
- read -r line
- [[ # smartport=587 =~ ^(#)?[a-zA-Z] ]]
- echo ‘# smartport=587’
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # Tailscale VPN =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Tailscale VPN’
- read -r line
- [[ # preauthkey=tskey-xxxxxxxxxxxxxxxxx =~ ^(#)?[a-zA-Z] ]]
- echo ‘# preauthkey=tskey-xxxxxxxxxxxxxxxxx’
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # Custom log files =~ ^(#)?[a-zA-Z] ]]
- echo ‘# Custom log files’
- read -r line
- [[ # custom_log_files=("/var/log/foo.log" “/var/log/bar.log”) =~ ^(#)?[a-zA-Z] ]]
- echo ‘# custom_log_files=("/var/log/foo.log" “/var/log/bar.log”)’
- read -r line
- [[ ‘’ =~ ^(#)?[a-zA-Z] ]]
- echo ‘’
- read -r line
- [[ # vim: filetype=sh =~ ^(#)?[a-zA-Z] ]]
- echo ‘# vim: filetype=sh’
- read -r line
- set_cpu_speed
- is_raspios
- [[ ‘’ == \r\a\s\p\i\o\s ]]
- is_raspbian
- [[ ‘’ == \r\a\s\p\b\i\a\n ]]
++ cat /etc/os-release
- [[ PRETTY_NAME=“Raspbian GNU/Linux 10 (buster)”
NAME=“Raspbian GNU/Linux”
VERSION_ID=“10”
VERSION=“10 (buster)”
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL=“h_t_t_p://www.raspbian.org/”
SUPPORT_URL=“h_t_t_p://www.raspbian.org/RaspbianForums”
BUG_REPORT_URL=“h_t_t_p://www.raspbian.org/RaspbianBugs” =~ Raspbian ]]
- return 0
- return 0
- running_in_docker
- [[ -n ‘’ ]]
- grep -qs ‘docker|lxc’ /proc/1/cgroup
- [[ -f /.dockerenv ]]
- return 1
- echo ‘GOVERNOR=“ondemand”’
- echo ondemand
- config_ipv6
- local aptConf=/etc/apt/apt.conf.d/S90force-ipv4
- local sysctlConf=/etc/sysctl.d/99-sysctl.conf
- [[ disable == \d\i\s\a\b\l\e ]]
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:52:57_CEST [openHABian] Disabling IPv6… ’
2021-04-05_21:52:57_CEST [openHABian] Disabling IPv6… + grep -qs ‘^[[:space:]]*# Disable all IPv6 functionality’ /etc/sysctl.d/99-sysctl.conf
- cp /opt/openhabian/includes/S90force-ipv4 /etc/apt/apt.conf.d/S90force-ipv4
- cond_redirect sysctl --load
- [[ -n ‘’ ]]
- echo -e ‘\n\033[90;01m$ sysctl --load \033[39;49;00m’
e[90;01m$ sysctl --load e[39;49;00m
- sysctl --load
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
- return 0
- echo OK
OK
- [[ -n 1 ]]
- export DEBIAN_FRONTEND=noninteractive
- DEBIAN_FRONTEND=noninteractive
- wait_for_apt_to_finish_update
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:53:05_CEST [openHABian] Updating Linux package information… ’
2021-04-05_21:53:05_CEST [openHABian] Updating Linux package information… + [[ -z ‘’ ]]
- apt_update
- PID_APT=1411
- tail --pid=1411 -f /dev/null
- apt-get update
- echo OK
OK
- load_create_config
- local ‘questionText=\nWelcome to openHABian!\n\nPlease provide the name of your Linux user i.e. the account you normally log in with.\n\nTypical user names are ‘’‘pi’’’ or ‘’‘ubuntu’’’.’
- local input
- [[ -f /etc/openhabian.conf ]]
++ timestamp
++ date +%F_%T_%Z
- echo -n ‘2021-04-05_21:53:20_CEST [openHABian] Loading configuration file ‘’’/etc/openhabian.conf’’’… ’
2021-04-05_21:53:20_CEST [openHABian] Loading configuration file ‘/etc/openhabian.conf’… ++ getent group openhabian
- [[ ! -n openhabian:x:1000:openhabian ]]
- id -u openhabian
- source /etc/openhabian.conf
++ hostname=openhabian
++ username=openhabian
++ userpw=openhabian
++ adminkeyurl=
++ timezone=Europe/Berlin
++ locales=‘en_US.UTF-8 de_DE.UTF-8’
++ system_default_locale=en_US.UTF-8
++ wifi_ssid=My_SSID
++ wifi_password=My_PWD
++ wifi_country=UK
++ ipv6=disable
++ repositoryurl=h_t_t_ps://github.com/openhab/openhabian
++ clonebranch=main
++ debugmode=maximum
++ java_opt=Zulu11-32
++ zraminstall=enable
++ hotspot=enable
++ hotspotpw=openhabian
++ storageconfig=openhab-dir
++ storagedir=/storage
++ storagetapes=15
++ storagecapacity=1024
- echo OK
OK
- change_swapsize
- is_pi
- is_pifour
- [[ ‘’ == \p\i\4 ]]
- grep -q ‘^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]11[0-9a-fA-F]$’ /proc/cpuinfo
- return 1
- is_cmfour
- [[ ‘’ == \c\m\4 ]]
- grep -q ‘^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]14[0-9a-fA-F]$’ /proc/cpuinfo
- return 1
- is_pi400
- [[ ‘’ == \p\i\4\0\0 ]]
- grep -q ‘^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]13[0-9a-fA-F]$’ /proc/cpuinfo
- return 1
- is_cmthreeplus
- [[ ‘’ == \c\m\3+ ]]
- grep -q ‘^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]10[0-9a-fA-F]$’ /proc/cpuinfo
- return 1
- is_cmthree
- [[ ‘’ == \c\m\3 ]]
- grep -q ‘^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[aA][0-9a-fA-F]$’ /proc/cpuinfo
- return 1
- is_pithree
- [[ ‘’ == \p\i\3 ]]
- grep -q ‘^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]0[8dDeE][0-9a-fA-F]$’ /proc/cpuinfo
- return 0
- return 0
- local free
- local minFree
- local swap
- local totalMemory
++ awk ‘/MemTotal/ {print $2}’ /proc/meminfo
- totalMemory=997124
- [[ -z 997124 ]]
- swap=1994248
- minFree=3988496
++ df -hk /
++ awk ‘/dev/ { print $4 }’
- free=8640644
- [[ 8640644 -ge 3988496 ]]
- size=1994248
- (( size/=1024 ))
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:53:25_CEST [openHABian] Adjusting swap size to 1947 MB… ’
2021-04-05_21:53:25_CEST [openHABian] Adjusting swap size to 1947 MB… + cond_redirect dphys-swapfile swapoff
- [[ -n ‘’ ]]
- echo -e ‘\n\033[90;01m$ dphys-swapfile swapoff \033[39;49;00m’
e[90;01m$ dphys-swapfile swapoff e[39;49;00m
- dphys-swapfile swapoff
- return 0
- cond_redirect sed -i ‘s|^#*.CONF_SWAPSIZE=.$|CONF_SWAPSIZE=1947|g’ /etc/dphys-swapfile
- [[ -n ‘’ ]]
- echo -e ‘\n\033[90;01m$ sed -i s|^#*.CONF_SWAPSIZE=.$|CONF_SWAPSIZE=1947|g /etc/dphys-swapfile \033[39;49;00m’
e[90;01m$ sed -i s|^#*.CONF_SWAPSIZE=.$|CONF_SWAPSIZE=1947|g /etc/dphys-swapfile e[39;49;00m
- sed -i ‘s|^#*.CONF_SWAPSIZE=.$|CONF_SWAPSIZE=1947|g’ /etc/dphys-swapfile
- return 0
- cond_redirect dphys-swapfile swapon
- [[ -n ‘’ ]]
- echo -e ‘\n\033[90;01m$ dphys-swapfile swapon \033[39;49;00m’
e[90;01m$ dphys-swapfile swapon e[39;49;00m
- dphys-swapfile swapon
- return 0
- echo ‘OK (reboot required)’
OK (reboot required)
- timezone_setting
- [[ -n ‘’ ]]
- [[ -n Europe/Berlin ]]
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:53:28_CEST [openHABian] Setting timezone based on openhabian.conf… ’
2021-04-05_21:53:28_CEST [openHABian] Setting timezone based on openhabian.conf… + running_in_docker
- [[ -n ‘’ ]]
- grep -qs ‘docker|lxc’ /proc/1/cgroup
- [[ -f /.dockerenv ]]
- return 1
- running_on_github
- [[ -n ‘’ ]]
- return 1
- cond_redirect timedatectl set-timezone Europe/Berlin
- [[ -n ‘’ ]]
- echo -e ‘\n\033[90;01m$ timedatectl set-timezone Europe/Berlin \033[39;49;00m’
e[90;01m$ timedatectl set-timezone Europe/Berlin e[39;49;00m
- timedatectl set-timezone Europe/Berlin
- return 0
++ cat /etc/timezone
- echo ‘OK (Europe/Berlin)’
OK (Europe/Berlin)
- setup_ntp enable
- running_in_docker
- [[ -n ‘’ ]]
- grep -qs ‘docker|lxc’ /proc/1/cgroup
- [[ -f /.dockerenv ]]
- return 1
- is_raspios
- [[ ‘’ == \r\a\s\p\i\o\s ]]
- is_raspbian
- [[ ‘’ == \r\a\s\p\b\i\a\n ]]
++ cat /etc/os-release
- [[ PRETTY_NAME=“Raspbian GNU/Linux 10 (buster)”
NAME=“Raspbian GNU/Linux”
VERSION_ID=“10”
VERSION=“10 (buster)”
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL=“h_t_t_p://www.raspbian.org/”
SUPPORT_URL=“h_t_t_p://www.raspbian.org/RaspbianForums”
BUG_REPORT_URL=“h_t_t_p://www.raspbian.org/RaspbianBugs” =~ Raspbian ]]
- return 0
- return 0
- [[ enable == \e\n\a\b\l\e ]]
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:53:29_CEST [openHABian] Enabling time synchronization using NTP… ’
2021-04-05_21:53:29_CEST [openHABian] Enabling time synchronization using NTP… + cond_redirect cp /opt/openhabian/includes/50-timesyncd.conf /lib/dhcpcd/dhcpcd-hooks/
- [[ -n ‘’ ]]
- echo -e ‘\n\033[90;01m$ cp /opt/openhabian/includes/50-timesyncd.conf /lib/dhcpcd/dhcpcd-hooks/ \033[39;49;00m’
e[90;01m$ cp /opt/openhabian/includes/50-timesyncd.conf /lib/dhcpcd/dhcpcd-hooks/ e[39;49;00m
- cp /opt/openhabian/includes/50-timesyncd.conf /lib/dhcpcd/dhcpcd-hooks/
- return 0
- cond_redirect timedatectl set-ntp true
- [[ -n ‘’ ]]
- echo -e ‘\n\033[90;01m$ timedatectl set-ntp true \033[39;49;00m’
e[90;01m$ timedatectl set-ntp true e[39;49;00m
- timedatectl set-ntp true
- return 0
- echo OK
OK
- locale_setting
- local locale
- dpkg -s locales
- [[ -n ‘’ ]]
++ timestamp
++ date +%F_%T_%Z
- echo -n '2021-04-05_21:53:29_CEST [openHABian] Setting locale based on openhabian.conf… ’
2021-04-05_21:53:29_CEST [openHABian] Setting locale based on openhabian.conf… + is_ubuntu
- [[ ‘’ == \u\b\u\n\t\u ]]
++ cat /etc/os-release
- [[ PRETTY_NAME=“Raspbian GNU/Linux 10 (buster)”
NAME=“Raspbian GNU/Linux”
VERSION_ID=“10”
VERSION=“10 (buster)”
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL=“h_t_t_p://www.raspbian.org/”
SUPPORT_URL=“h_t_t_p://www.raspbian.org/RaspbianForums”
BUG_REPORT_URL=“h_t_t_p://www.raspbian.org/RaspbianBugs” =~ Ubuntu ]]
- return 1
- for loc in $locales
- sed -i ‘/^#[[:space:]]en_US.UTF-8/s/^#[[:space:]]//’ /etc/locale.gen
- for loc in $locales
- sed -i ‘/^#[[:space:]]de_DE.UTF-8/s/^#[[:space:]]//’ /etc/locale.gen
- cond_redirect locale-gen
- [[ -n ‘’ ]]
- echo -e ‘\n\033[90;01m$ locale-gen \033[39;49;00m’
e[90;01m$ locale-gen e[39;49;00m
- locale-gen
Generating locales (this might take a while)…
de_DE.UTF-8…