diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..2b6c3e81d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,39 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+---
+name: Bug report
+about: Create a report to help us fix your issue
+
+---
+
+
+**Describe the bug**
+Add a clear and concise description of what you think the bug is.
+
+**To reproduce**
+List the steps required to reproduce the issue.
+
+**Expected behaviour**
+Add a clear and concise description of what you expected to happen.
+
+**Actual behaviour**
+Add a clear and concise description of what actually happened.
+
+**System**
+Add answers to the following questions:
+
+* Which model of Raspberry Pi? e.g. Pi3B+, PiZeroW
+* Which version of PINN?
+
+**Logs**
+If applicable, add the relevant output from `/tmp/debug` or `dmesg`.
+
+**Additional context**
+Add any other relevant context for the problem.
diff --git a/history.md b/history.md
index cb654136b..a26d7e942 100644
--- a/history.md
+++ b/history.md
@@ -5,6 +5,11 @@ PINN is a version of the NOOBS Operating System Installer for the Raspberry Pi w
## Change History
+### V3.9.2
+
+- **HDMI2** - fixed crash when using HDMI2 on Pi4
+- **Translation** - Updated Czech translation
+
### V3.9.1
- **Update** - Update Italian. Update process deletes all of boot.
diff --git a/recovery/config.h b/recovery/config.h
index 0bed78ae4..167fb9bed 100644
--- a/recovery/config.h
+++ b/recovery/config.h
@@ -3,7 +3,7 @@
/* Version number displayed in the title bar */
-#define VERSION_NUMBER "3.9.1"
+#define VERSION_NUMBER "3.9.2"
/* Color of the background */
// #define BACKGROUND_COLOR Qt::white
diff --git a/recovery/config.txt b/recovery/config.txt
index 77a83caec..28a3be864 100644
--- a/recovery/config.txt
+++ b/recovery/config.txt
@@ -5,6 +5,9 @@ fixup_file=fixup.dat
disable_overscan=1
initramfs pinn.rfs
+[HDMI1]
+hdmi_force_hotplug=1
+
[pi4]
start_file=start4.elf
fixup_file=fixup4.dat
diff --git a/recovery/initdrivethread.h b/recovery/initdrivethread.h
index 6280597b5..5ce6ae4a3 100644
--- a/recovery/initdrivethread.h
+++ b/recovery/initdrivethread.h
@@ -22,12 +22,12 @@ class InitDriveThread : public QThread
bool formatUsbDrive();
static bool saveBootFiles();
static bool restoreBootFiles();
+ static int sizeofBootFilesInKB();
protected:
virtual void run();
bool method_resizePartitions();
- int sizeofBootFilesInKB();
uint sizeofSDCardInBlocks();
bool mountSystemPartition();
bool umountSystemPartition();
diff --git a/recovery/mainwindow.cpp b/recovery/mainwindow.cpp
index 0fa75b930..3773cc7fd 100644
--- a/recovery/mainwindow.cpp
+++ b/recovery/mainwindow.cpp
@@ -4636,23 +4636,15 @@ int MainWindow::updatePinn()
int error=0;
int dummy;
//When PINN is updated, We don't need these files to be extracted
- QString exclusions = " -x cmdline.txt -x updatepinn -x exclude.txt";
+ QString exclusions = " -x cmdline.txt -x preupdate -x postupdate -x exclude.txt";
readexec(1,"mount -o remount,rw /mnt",dummy);
- //First we'll extract these 2 files to /tmp to automate hte update process
- readexec(1,"unzip /tmp/pinn-lite.zip -o exclude.txt updatepinn preupdate -d /tmp",dummy);
+ //First we'll extract these 2 files to /tmp to automate the update process
+ readexec(1,"unzip /tmp/pinn-lite.zip -o exclude.txt preupdate postupdate -d /tmp",dummy);
- //Save the existing installation in case of failure
- if (_qpdup)
- ((QProgressDialog*)_qpdup)->setLabel( new QLabel(tr("Saving current version")));
- QApplication::processEvents();
-
-
- InitDriveThread::saveBootFiles();
-
- //In case we need to do some additional upgrade processing
+ //In case we need to do some additional pre-update processing
if (QFile::exists("/tmp/preupdate"))
{
if (_qpdup)
@@ -4685,35 +4677,23 @@ int MainWindow::updatePinn()
QString cmd = "unzip /tmp/pinn-lite.zip -o" + exclusions + " -d /mnt";
readexec(1,cmd,dummy);
-
- //In case we need to do some additional upgrade processing
- if (QFile::exists("/tmp/updatepinn"))
- {
- if (_qpdup)
- ((QProgressDialog*)_qpdup)->setLabel( new QLabel(tr("Executing updatepinn")));
- QApplication::processEvents();
-
- QProcess::execute("chmod +x /tmp/updatepinn");
- error = QProcess::execute("/tmp/updatepinn");
- }
}
- if (error)
- {
- int dummy;
- QString cmd;
-
- qDebug() << "preupdate failed.";
- cmd = "sh -c \" cd /mnt; rm -rf *\"";
- QString type = readexec(1,cmd, dummy);
+ //In case we need to do some additional upgrade processing
+ if (QFile::exists("/tmp/postupdate"))
+ {
if (_qpdup)
- {
- ((QProgressDialog*)_qpdup)->setLabel( new QLabel(tr("Update failed. Restoring previous version.")));
- QApplication::processEvents();
- }
+ ((QProgressDialog*)_qpdup)->setLabel( new QLabel(tr("Executing postupdate")));
+ QApplication::processEvents();
- InitDriveThread::restoreBootFiles();
+ QProcess::execute("chmod +x /tmp/postupdate");
+ QString cmd = "/tmp/postupdate " + QString::number(error);
+ QProcess::execute(cmd);
+ }
+ if (error)
+ {
+ qDebug() << "update failed.";
}
QProcess::execute("mount -o remount,ro /mnt");
diff --git a/recovery/translation_cs.ts b/recovery/translation_cs.ts
index df594f4cb..73a2e26c0 100644
--- a/recovery/translation_cs.ts
+++ b/recovery/translation_cs.ts
@@ -93,7 +93,7 @@
- Kompozitní NTSC mód
+ kompozitní NTSC mód
@@ -128,7 +128,7 @@
DateTimeDialog
- Nastavení Datumu & Času
+ Nastav Da&tum a Čas
@@ -243,7 +243,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě
- Chyba zero'ing MBR/GPT. SD karta může být poškozena nebo vykazuje špatnou velikost.
+ Chyba mazan'i MBR/GPT. SD karta může být poškozena nebo vykazuje špatnou velikost.
@@ -399,7 +399,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě
- Dokumentace RPi
+ Online pomoc (h)
@@ -419,7 +419,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě
- Stahování (d)
+ Stahovat (d)
@@ -471,7 +471,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě
Set Data & Time
- Nastavit Datum & Čas
+ Nastavit Da&tum a Čas
@@ -479,7 +479,7 @@ UPOZORNĚNÍ: Toto smaže všechna data na Vaší SD kartě
- Přejmenovat systém (a)
+ Pojmenovat jako (a)
@@ -673,7 +673,7 @@ Opravdu chcete pokračovat?
- Upozornění: Zjištěn(y) nekompatibilní Operační Systém(y). Následující OS aren't nejsou podporovány tímto Raspberry Pi a mohou selhat při startu nebo nefungovat správně:
+ Upozornění: Zjištěn(y) nekompatibilní Operační Systém(y). Následující OS nejsou podporovány tímto Raspberry Pi a mohou selhat při startu nebo nefungovat správně:
@@ -866,36 +866,36 @@ Chcete pokračovat?
-
+ PINN se nyní začne aktualizovat ...
-
+ Aktualizace PINNu selhala
-
+ Uložení současné verze
-
+ Probíhá předaktualizace
-
+ Rozbalení aktualizace
-
+ Probíhá aktualizace PINNu
-
+ Aktualizace selhala. Obnovuji předchozí verzi.
- Žádné systémy nejsou vybrány
+ Chyba: Žádné systémy nejsou vybrány
(Nevybírejte RISC OS ani PINN)
@@ -1121,7 +1121,7 @@ Další start jednotky obnoví původní strukturu oddílů PINN's
- Zero'ing start každého oddílu
+ Nulovan'i startu každého oddílu&Show Password
- Zobrazit He&Slo
+ Zobrazit He&slo&Virtual Keyboard
@@ -2612,55 +2612,55 @@ Break
adjustSizesAdjust size of OSes
-
+ Nastavení velikosti OS(ů)Nominal (MB)
-
+ Jmenovitá (MB)Extra (MB)
-
+ Navíc (MB)Total (MB)
-
+ Celkem (MB)Clear
-
+ VymazatBalance
-
+ Vyvážit(*) non-expanding
-
+ (*) nerozšiřitelnéCapacity: 0MB
-
+ Kapacita: 0MBFree: 0MB
-
+ Volno: 0MBUsed: 0MB
-
+ Použito: 0MBUsed
-
+ PoužitoFree
-
+ VolnoCapacity
-
+ Kapacita
@@ -2802,7 +2802,7 @@ Break
Maybe insert source USB stick
- Můžete vložit jako zdroj USB disk
+ Můžete vložit zdrojový USB diskdoes not support re-running the setup script.
diff --git a/sdcontent/postupdate b/sdcontent/postupdate
new file mode 100755
index 000000000..b23e869cb
--- /dev/null
+++ b/sdcontent/postupdate
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -x
+error=$1
+output="/tmp/mnt"
+
+if [ ! $error -eq 0 ]; then
+ #preupdate failed, so restore saved files.
+ cp -a $output/* /mnt
+ exit 1
+fi
+
diff --git a/sdcontent/preupdate b/sdcontent/preupdate
index 315a920e7..26a41fe1b 100755
--- a/sdcontent/preupdate
+++ b/sdcontent/preupdate
@@ -8,6 +8,7 @@ mntsize=`df | grep /mnt | sed 's|\s\+|,|g' | cut -d ',' -f 2`
cd /mnt
+#Save these files
if [ -f recovery.rfs ]; then
cp recovery.cmdline /tmp/cmdline.txt
else
@@ -15,8 +16,25 @@ else
fi
cp config.txt /tmp/config.bak
-#REMOVE ALL BOOT FILES!
-rm -rf *
+#Move all files/folders except /os to tmp
+output="/tmp/mnt"
+mkdir -p $output
+
+for f in *
+do
+ if [ -f $f ]; then
+ mv $f $output
+ fi
+ if [ -d $f ]; then
+ case $f in
+ defaults | overlays | overlays6)
+ mv $f $output
+ ;;
+ *)
+ ;;
+ esac
+ fi
+done
#Restore saved settings
cp /tmp/cmdline.txt /mnt
@@ -32,7 +50,7 @@ if [ $mntsize -lt $orgsize ]; then
sync
fi
-#Use new configuration
+#Use new config.txt file
unzip -o /tmp/pinn-lite.zip config.txt
#Update the cmdline with saved info
@@ -50,9 +68,9 @@ while read a; do
done < /tmp/exclude.txt
pi5minsize=$(expr 1520 + $(unzip -l /tmp/pinn-lite.zip $exclude |tail -n1 | sed 's|\s\+| |g'| sed 's|^ ||' | cut -d ' ' -f 1) / 1024)
+#Find out how much free spaces is left now on /mnt
freesize=`df | grep /mnt | sed 's|\s\+|,|g' | cut -d ',' -f 4`
-
sync
if [ $freesize -lt $pi5minsize ]; then
diff --git a/sdcontent/updatepinn b/sdcontent/updatepinn
new file mode 100755
index 000000000..b23e869cb
--- /dev/null
+++ b/sdcontent/updatepinn
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -x
+error=$1
+output="/tmp/mnt"
+
+if [ ! $error -eq 0 ]; then
+ #preupdate failed, so restore saved files.
+ cp -a $output/* /mnt
+ exit 1
+fi
+