Index: server/Slim/Utils/OS/SqueezeOS.pm =================================================================== --- server/Slim/Utils/OS/SqueezeOS.pm (revision 30728) +++ server/Slim/Utils/OS/SqueezeOS.pm (working copy) @@ -25,10 +25,13 @@ while ( <$fh> ) { if ( /^Serial\s+:\s+([0-9a-f]+)/ ) { my $serial = $1; - my $mac = '000420' . substr( $serial, -6, 6 ); - $mac =~ s/(.{2})/$1:/g; - $mac =~ s/:$//; - $class->{osDetails}->{mac} = $mac; + + if ( $serial !~ /000000$/ ) { + my $mac = '000420' . substr( $serial, -6, 6 ); + $mac =~ s/(.{2})/$1:/g; + $mac =~ s/:$//; + $class->{osDetails}->{mac} = $mac; + } } elsif ( /^UUID\s+:\s+([0-9a-f-]+)/ ) { my $uuid = $1; @@ -38,6 +41,18 @@ } close $fh; } + + # fall back to reading the stored macaddress if an invalid Serial was stored in /proc/cpuinfo + if ( !main::SCANNER && !$class->{osDetails}->{mac} && -r '/etc/macaddress' ) { + open my $fh, '<', '/etc/macaddress'; + while (<$fh>) { + if ( /^([0-9a-f]{2}([:]|$)){6}$/i ) { + $class->{osDetails}->{mac} = $_; + last; + } + } + close $fh; + } return $class->{osDetails}; }