You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

225 lines
7.4 KiB

#!/bin/bash
# This script is based on raspinfo: https://github.com/raspberrypi/utils/blob/master/raspinfo/raspinfo
# raspinfo is Copyright: 2018-2019, Raspberry Pi (Trading) Ltd.
# This fork is Copyright 2020-2021, Umbrel
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Try to load Umbrel OS version info to detect Umbrel OS
[[ -f "/etc/default/umbrel" ]] && source "/etc/default/umbrel"
# function to upload the output to our paste server
# Based on https://github.com/seejohnrun/haste-client#lightweight-alternative
upload() {
curl \
--header "Content-Type: text/plain" \
--request POST \
--silent \
--data-binary @- \
https://umbrel-paste.vercel.app/documents \
| awk -F '"' '{print "https://umbrel-paste.vercel.app/"$6}'
}
echo "====================="
echo "= Umbrel debug info ="
echo "====================="
UMBREL_ROOT="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))/.."
cd "${UMBREL_ROOT}"
echo
echo "Umbrel version"
echo "--------------"
cat info.json | jq .version | sed 's/"//g'
if [[ ! -z "${UMBREL_OS:-}" ]]; then
echo
echo "Flashed OS version"
echo "-----------------"
echo $UMBREL_OS
echo
echo "Raspberry Pi Model"
echo "------------------"
cat /proc/cpuinfo | tail -3
echo
echo "Firmware"
echo "--------"
vcgencmd version
echo
echo "Temperature"
echo "-----------"
vcgencmd measure_temp
echo
echo "Throttling"
echo "----------"
vcgencmd get_throttled
fi
echo
echo "Memory usage"
echo "------------"
free --human --mega
echo
"${UMBREL_ROOT}/scripts/memory-usage"
echo
echo "Memory monitor logs"
echo "-------------------"
tail -n 10 "${UMBREL_ROOT}/logs/memory-monitor.log"
echo
echo "Filesystem information"
echo "----------------------"
df --human-readable / "${UMBREL_ROOT}"
if [[ ! -z "${UMBREL_OS:-}" ]]; then
echo
echo "Startup service logs"
echo "--------------------"
journalctl --unit=umbrel-startup.service | tail -n 30 | sed '/onion/d'
echo
echo "External storage service logs"
echo "-----------------------------"
journalctl --unit=umbrel-external-storage.service | tail -n 30
echo
echo "External storage SD card update service logs"
echo "--------------------------------------------"
journalctl --unit=umbrel-external-storage-sdcard-update.service | tail -n 30
fi
echo
echo "Karen logs"
echo "----------"
echo
tail -n 50 logs/karen.log | sed '/onion/d'
echo
echo "Docker containers"
echo "-----------------"
docker ps --format="table {{.Names}}\t{{.Status}}"
echo
echo "Bitcoin Core logs"
echo "-----------------"
echo
docker-compose logs --tail=30 bitcoin
echo
echo "LND logs"
echo "--------"
echo
docker-compose logs --tail=30 lnd
echo
echo "Tor logs"
echo "--------"
echo
docker-compose logs --tail=30 tor
installed_apps=$(./scripts/app ls-installed)
if [[ ! -z "${installed_apps:-}" ]]; then
echo
echo "App logs"
echo "--------"
for app in $installed_apps; do
echo
echo "${app}"
echo
# Double tail because we want 30 lines total not per container
./scripts/app compose $app logs --tail 30 | tail -n 30;
done
fi
if [[ ! -z "${UMBREL_OS:-}" ]]; then
list_block_devices () {
# Documented in the mount script for Umbrel OS
sync
(ls -d /sys/block/sd* 2>/dev/null || true) | sed 's!.*/!!'
}
no_of_block_devices=$(list_block_devices | wc -l)
fi
echo "================"
echo "==== Result ===="
echo "================"
if [[ ! -z "${UMBREL_OS:-}" ]]; then
if [[ $(vcgencmd get_throttled) != "throttled=0x0" ]]; then
if [[ $(vcgencmd get_throttled) = "throttled=0x5"* ]]; then
echo "There is probably issue with your power supply. We recommend using the official power supply to avoid this issue"
else
echo "The temperature of your Raspberry Pi is too high. We recommend either using a case that lowers the temperature of your Pi or a case with a builtin fan."
fi
exit 0
fi
if [[ $no_of_block_devices -lt 1 ]]; then
echo "You have either no external drive connected to your Raspberry Pi or the drive is not being detected."
echo "Please shutdown your Raspberry Pi ('sudo shutdown'), then plug the SSD into the other USB3 port."
echo "After you've finished that, boot your Raspberry Pi back up. If it still still doesn't work,"
echo "you can contact us on Telegram (t.me/getumbrel) and share the output of this script."
if [[ "${1}" == "--upload" ]]; then
echo "You can also share these links instead:"
echo "$(./scripts/debug | sed '/onion/d') === Umbrel-Paste split === $(dmesg)" | upload
else
echo "Run this script again with the --upload flag to automatically generate a link to share."
fi
exit 0
fi
if [[ $no_of_block_devices -gt 1 ]]; then
echo "================"
echo "==== Result ===="
echo "================"
echo "You have multiple external drives connected to your Raspberry Pi. Please remove the drive(s) you don't want to use for Umbrel."
exit 0
fi
fi
if [[ "${1}" == "--dashboard" ]]; then
echo "The debug script did not automatically detect any issues with your Umbrel."
elif [[ "${1}" == "--upload" ]]; then
# This runs the script twice, but it works
echo "This script could not automatically detect an issue with your Umbrel."
echo "Please share the following links and paste it in the Umbrel Telegram group (https://t.me/getumbrel) so we can help you with your problem."
echo "$(./scripts/debug | sed '/onion/d') === Umbrel-Paste split === $(dmesg)" | upload
else
echo "This script could not automatically detect an issue with your Umbrel."
echo "Please copy the entire output of this script and paste it in the Umbrel Telegram group (https://t.me/getumbrel) so we can help you with your problem."
echo "It's recommended to upload the output somewhere and share a link to it. Run this script with '--upload' to automatically generate a link to share."
fi