@@ -22,6 +22,7 @@ sub binaries {
2222 return @binaries if !$update && scalar @binaries ;
2323
2424 my $os = Slim::Utils::OSDetect::details();
25+ $log -> debug(' OS details; OS :"' .$os -> {' os' } .' " Arch:"' . $os -> {' osArch' }. ' " BinArch:"' . $os -> {' binArch' }.' "' );
2526
2627 if (main::ISMAC) {
2728 @binaries = qw( squeezelite-osx squeezelite-arm64) ;
@@ -31,13 +32,22 @@ sub binaries {
3132 @binaries = qw( squeezelite-x64 squeezelite-win) ;
3233 }
3334 elsif ($os -> {' os' } eq ' Linux' ) {
34- if ($os -> {' osArch' } =~ / x86_64/ ) {
35+
36+ # Some Linux OS examples
37+ # OS :"Linux" Arch:"aarch64-linux" BinArch:"aarch64-linux"
38+ # OS :"Linux" Arch:"x86_64-linux" BinArch:"i386-linux"
39+ # OS :"Linux" Arch:"armv7l-linux" BinArch:"armhf-linux"
40+
41+ if ($os -> {' osArch' } =~ / ^x86_64/i ) {
3542 @binaries = qw( squeezelite-x86-64) ;
3643 }
37- if ($os -> {' binArch' } =~ / i386/ ) {
44+ elsif ($os -> {' binArch' } =~ / ^ i386/i ) {
3845 @binaries = qw( squeezelite-i386) ;
3946 }
40- if ($os -> {' binArch' } =~ / arm/ ) {
47+ elsif ($os -> {' binArch' } =~ / ^aarch64/ ) {
48+ @binaries = qw( squeezelite-aarch64) ;
49+ }
50+ elsif ($os -> {' binArch' } =~ / ^arm/ ) {
4151 @binaries = qw( squeezelite-armhf squeezelite-aarch64) ;
4252 }
4353 else {
@@ -132,14 +142,17 @@ sub start {
132142 eval { $squeezelite = Proc::Background-> new({ ' die_upon_destroy' => 1 }, $path , @params ); };
133143
134144 if ($@ ) {
135-
136145 $log -> warn ($@ );
137-
138146 } else {
139147 Slim::Utils::Timers::setTimer($class , Time::HiRes::time () + 1, sub {
140- if ($squeezelite && $squeezelite -> alive) {
141- $log -> debug(" $bin running" );
142- $binary = $path ;
148+ if ($squeezelite ) {
149+ if ( $squeezelite -> alive) {
150+ $log -> debug(" $bin running" );
151+ $binary = $path ;
152+ } else {
153+ $log -> error(" Squeezelite has not started or crashed: $bin " );
154+ $log -> error(" Enable Squeezelite logging in LocalPlayer Settings and check squeezelite log" );
155+ }
143156 }
144157 });
145158 }
@@ -173,6 +186,15 @@ sub devices {
173186
174187 # run "squeezelite -l" to get devices and parse result
175188 my @devices = ` $myBinary -l` ;
189+ if ($? ) {
190+ $log -> error(" Squeezelite failed to get list of output devices. Eeror code:" . $? );
191+ return ;
192+ }
193+
194+ if (scalar (@devices ) == 0) {
195+ $log -> error(" No output devices found. Command: $myBinary -l " );
196+ return ;
197+ }
176198
177199 main::INFOLOG && $log -> is_info && $log -> info(" Getting devices for $myBinary " );
178200 main::DEBUGLOG && $log -> is_debug && $log -> debug(@devices );
0 commit comments