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};
 }