Index: /Users/mh/Documents/workspace/7.3/server/Slim/Player/Squeezebox1.pm =================================================================== --- /Users/mh/Documents/workspace/7.3/server/Slim/Player/Squeezebox1.pm (revision 23530) +++ /Users/mh/Documents/workspace/7.3/server/Slim/Player/Squeezebox1.pm (working copy) @@ -323,10 +323,11 @@ # if no upgrade path is given, then "upgrade" the client to itself. $to_version = $client->revision unless $to_version; - my $file = catdir( Slim::Utils::OSDetect::dirsFor('Firmware'), "squeezebox_$to_version.bin" ); - my $log = logger('player.firmware'); + my $file = catdir( Slim::Utils::OSDetect::dirsFor('Firmware'), "squeezebox_$to_version.bin" ); + my $file2 = catdir( Slim::Utils::OSDetect::dirsFor('cache'), "squeezebox_$to_version.bin" ); + my $log = logger('player.firmware'); - if (!-f $file) { + if (!-f $file && !-f $file2) { logWarning("File does not exist: $file"); @@ -333,6 +334,10 @@ return 0; } + if (-f $file2 && !-f $file) { + $file = $file2; + } + $client->isUpgrading(1); # Notify about firmware upgrade starting Index: /Users/mh/Documents/workspace/7.3/server/Slim/Player/Squeezebox2.pm =================================================================== --- /Users/mh/Documents/workspace/7.3/server/Slim/Player/Squeezebox2.pm (revision 23530) +++ /Users/mh/Documents/workspace/7.3/server/Slim/Player/Squeezebox2.pm (working copy) @@ -262,9 +262,10 @@ $log->warn("upgrading to same rev: $to_version"); } - my $file = catdir( Slim::Utils::OSDetect::dirsFor('Firmware'), $client->model . "_$to_version.bin" ); + my $file = catdir( Slim::Utils::OSDetect::dirsFor('Firmware'), $client->model . "_$to_version.bin" ); + my $file2 = catdir( Slim::Utils::OSDetect::dirsFor('cache'), $client->model . "_$to_version.bin" ); - if (!-f $file) { + if (!-f $file && !-f $file2) { logWarning("File does not exist: $file"); @@ -286,6 +287,10 @@ return(0); } + if (-f $file2 && !-f $file) { + $file = $file2; + } + $client->stop(); $log->info("Using new update mechanism: $file"); Index: /Users/mh/Documents/workspace/7.3/server/Slim/Utils/Firmware.pm =================================================================== --- /Users/mh/Documents/workspace/7.3/server/Slim/Utils/Firmware.pm (revision 23530) +++ /Users/mh/Documents/workspace/7.3/server/Slim/Utils/Firmware.pm (working copy) @@ -48,7 +48,8 @@ my @models = qw( squeezebox squeezebox2 transporter boom receiver ); # Firmware location -my $dir = Slim::Utils::OSDetect::dirsFor('Firmware'); +my $dir = Slim::Utils::OSDetect::dirsFor('Firmware'); +my $cachedir = Slim::Utils::OSDetect::dirsFor('cache'); # Download location sub BASE { @@ -101,18 +102,19 @@ if ( $version ) { - my $file = "${model}_${version}.bin"; - my $path = catdir( $dir, $file ); + my $file = "${model}_${version}.bin"; + my $path = catdir( $dir, $file ); + my $path2 = catdir( $cachedir, $file ); - if ($files->{$path}) { + if ($files->{$path} || $files->{$path2}) { next; } - - if ( !-r $path ) { + + if ( !-r $path && !-r $path2 ) { $log->info("Need to download $file\n"); - $files->{$path} = 1; + $files->{$path2} = 1; } } }