@@ -15,11 +15,11 @@ rp_module_section="config"
15
15
rp_module_flags=" !x11 !mali"
16
16
17
17
function apt_upgrade_raspbiantools() {
18
+ # install an older kernel/firmware for stretch to resolve newer kernel issues or unhold if updating to a newer release
19
+ stretch_fix_raspbiantools
20
+
18
21
aptUpdate
19
22
apt-get -y dist-upgrade
20
-
21
- # install an older kernel/firmware for stretch to resolve sony bt issues
22
- stretch_fix_raspbiantools
23
23
}
24
24
25
25
function lxde_raspbiantools() {
@@ -43,31 +43,62 @@ function disable_blanker_raspbiantools() {
43
43
}
44
44
45
45
function stretch_fix_raspbiantools() {
46
+ # install an older kernel/firmware and hold it for stretch to resolve sony bt, composite
47
+ # and overscan issues, but also unhold for newer Raspbian versions to allow upgrading.
46
48
local ver=" 1.20190401-1"
47
- # install an older kernel/firmware for stretch to resolve sony bt, composite and overscan issues
48
- if isPlatform " rpi" && [[ " $__os_debian_ver " -eq 9 ]] && hasPackage raspberrypi-kernel " $ver " ne; then
49
- install_firmware_raspbiantools " $ver " hold
49
+ # make sure we are on a rpi and have the raspberrypi-kernel package
50
+ if isPlatform " rpi" && hasPackage raspberrypi-kernel; then
51
+ if [[ " $__os_debian_ver " -eq 9 ]]; then
52
+ # for Raspbian 9 (stretch) we want to install / hold the older kernel
53
+ install_firmware_raspbiantools " $ver " hold
54
+ elif hasPackage raspberrypi-kernel " $ver " eq; then
55
+ # if we are not running Raspbian 9 (stretch), but are running the old kernel
56
+ # we want to unhold it to allow kernel updates again
57
+ install_firmware_raspbiantools " $ver " unhold
58
+ fi
50
59
fi
51
60
}
52
61
53
62
function install_firmware_raspbiantools() {
54
63
local ver=" $1 "
55
64
local state=" $2 "
56
65
[[ -z " $ver " ]] && return 1
66
+
57
67
local url=" http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware"
68
+
58
69
mkdir -p " $md_build "
59
70
pushd " $md_build " > /dev/null
71
+
60
72
local pkg
73
+ local pkgs=(raspberrypi-bootloader libraspberrypi0 libraspberrypi-doc libraspberrypi-dev libraspberrypi-bin raspberrypi-kernel-headers raspberrypi-kernel)
61
74
local deb
62
- for pkg in raspberrypi-bootloader libraspberrypi0 libraspberrypi-doc libraspberrypi-dev libraspberrypi-bin raspberrypi-kernel-headers raspberrypi-kernel; do
75
+
76
+ # download all packages then install later to reduce issues if interrupted or a networking issue
77
+ for pkg in " ${pkgs[@]} " ; do
78
+ if hasPackage " $pkg " " $ver " ne; then
79
+ deb=" ${pkg} _${ver} _armhf.deb"
80
+ if ! wget -O" $deb " " $url /$deb " ; then
81
+ md_ret_errors+=(" Failed to download $deb " )
82
+ return 1
83
+ fi
84
+ fi
85
+ done
86
+
87
+ # install packages if needed
88
+ for pkg in " ${pkgs[@]} " ; do
63
89
deb=" ${pkg} _${ver} _armhf.deb"
64
- wget -O" $deb " " $url /$deb "
65
- dpkg -i " $deb "
90
+ if hasPackage " $pkg " " $ver " ne && [[ -f " $deb " ]]; then
91
+ dpkg -i " $deb "
92
+ rm " $deb "
93
+ fi
94
+ # set package state
66
95
[[ -n " $state " ]] && apt-mark " $state " " $pkg "
67
- rm " $deb "
68
96
done
97
+
69
98
popd > /dev/null
70
99
rm -rf " $md_build "
100
+
101
+ return 0
71
102
}
72
103
73
104
function enable_modules_raspbiantools() {
0 commit comments