View Single Post
Old 05-14-2013, 09:58 AM   #18
Runawayhacker
 
Runawayhacker's Avatar
 
Drives: 2012 Camaro 2SS
Join Date: Oct 2011
Location: Atlanta, GA
Posts: 184
Quote:
Originally Posted by spmike View Post
While this thread started out very positive, it's going to end very negative. While my tests with a few test mp3 files worked just fine, after copying several thousand files to the flash drive, nothing will play. "No supported data found"

I started searching, and someone posted that the radio does not support special characters in file names. Mine had parenthesis, hyphens, spaces, etc. Someone else wrote that the radio does not support file names with more than 100 characters in the name. Some of mine had up to 137. So I mounted on the flash drive on a Linux machine and wrote the following Perl script to rename all the files, remove the special characters, and truncate the length of the files to 80 characters:

#!/usr/bin/perl

# rename all music files on a thumb drive to a format
# compatible with the 2011 Camaro radio format.

# where the USB drive gets mounted:
$basedir="/media/CAMARO/music";

# length of file names to truncate to (takes last N characters):
$lengthlimit=80;

chdir($basedir);
@allfiles=`find . -type f -print`;

$maxlength=0;
$renamed=0;

$count=$#allfiles;


for $i (0 .. $count)
{
$file=$allfiles[$i];
$file=~ s/\.\///;
$file=~ s/\n//;
$newfile=$file;
if ($file=~ /.*[A-Za-z0-9]mp3/) #missing .mp3
{
$tempfile=$newfile;
$tempfile=~ s/mp3$//;
$newfile="${tempfile}.mp3";
}
$newfile=~ s/\s/_/g;
$newfile=~ s/\~/_/g;
$newfile=~ s/\!/_/g;
$newfile=~ s/\#/_/g;
$newfile=~ s/\$/_/g;
$newfile=~ s/\%/_/g;
$newfile=~ s/\^/_/g;
$newfile=~ s/\&/_/g;
$newfile=~ s/\*/_/g;
$newfile=~ s/\(/_/g;
$newfile=~ s/\)/_/g;
$newfile=~ s/\-/_/g;
$newfile=~ s/\=/_/g;
$newfile=~ s/\\/_/g;
$newfile=~ s/\|/_/g;
$newfile=~ s/\[/_/g;
$newfile=~ s/\]/_/g;
$newfile=~ s/\{/_/g;
$newfile=~ s/\}/_/g;
$newfile=~ s/\;/_/g;
$newfile=~ s/\:/_/g;
$newfile=~ s/\'/_/g;
$newfile=~ s/\"/_/g;
$newfile=~ s/\</_/g;
$newfile=~ s/\>/_/g;
$newfile=~ s/\,/_/g;
$newfile=~ s/\?/_/g;
$newfile=~ s/\`/_/g;
$file=~ s/\`/\\\`/g;
$mylength=length($newfile);

if ($mylength > $maxlength)
{
$maxlength=$mylength;
$maxname=$newfile;
}

if ($mylength > $lengthlimit)
{
$pos=$mylength - $lengthlimit -1;
print "mylength=$mylength, lengthlimit=$lengthlimit, pos=$pos\n";
$tempname=substr($newfile, $pos);
print "truncating $newfile to $tempname\n";
$newfile=$tempname;
}

if (!("$file" eq $newfile))
{
print "$i: renaming $file to $newfile \n";
system ("mv \"$file\" $newfile");
$renamed++;
print "------------------------------------------------------\n";
}
}

print "\n----------------------------------------------------------\n";
print "\ndone!\n";
print "\n#of files renamed: $renamed\n";

----------------------------------------------------------------

Thinking it will work now, I insert the drive into the car. No supported data found. The cussing begins. Back to searching. someone else posted that they thought the max file length was 32 characters. Again, why can't we get an explicit declaration from GM??? So fine, I write another perl script to rename every song to song1.mp3, song2.mp3 ... songN.mp3:

#!/usr/bin/perl

# where the USB drive gets mounted:
$basedir="/media/CAMARO/music";

chdir($basedir);
@allfiles=`find . -type f -print`;

$renamed=0;

$count=$#allfiles;


for $i (0 .. $count)
{
$file=$allfiles[$i];
$file=~ s/\.\///;
$file=~ s/\n//;
$newfile="song${i}.mp3";

print "$i: renaming $file to $newfile \n";
system ("mv \"$file\" $newfile");
$renamed++;
print "------------------------------------------------------\n";
}

print "\n----------------------------------------------------------\n";
print "\ndone!\n";
print "\n#of files renamed: $renamed\n";


----------------------------------------------------------------------

It has to work now, right? Wrong!!! No supported data found. More searching. Posts say that the radio only supports certain bit rates, like 128Kbps, but my tests were with 256kbps mp3's and they worked. Again, GM WHERE IS THE LIST OF SUPPORTED FORMATS???

Even if I can determine what bit rates work, there is no way I am going though all of my songs, checking the bit rate, and re-encoding them to a supported bit rate. I'm about to give up and subscribe to SiriusXM.

As a programmer, what disgusts me is the (lack of) error handling in this GM radio. If they only support certain formats that is fine, but if they encounter a song they cannot play, they should simply skip over that song and go onto the next one, not invalidate the entire drive!!!! If I had access to the source code I could fix it myself, but I probably have better odds of getting hit by lightning than for that to happen.

I have always loved Chevrolet, but that love is fading fast because of this.
No documentation on supported formats in the owner's manual or the GM web site, very limited mp3 support, yet I can download Winamp for FREE that will play almost any mp3 on the planet. GM, you blew it on this one.

OK, I can personally vouch and say that the radio fully supports 320kbps quality and is allowed to have common special characters like dashes in the FILENAME. The radio identifies and sorts the MP3s based off of the ID3 tags, NOT the filenames. The only limitation I have come across is the ID3 tag version. If you try to use some of the newer versions, it will not work. Try dropping the ID3 tag version down to 1.0 or 1.1 (cannot remember). If you have your self a Linux box (right on!), EasyTag is a good app to do this with. I've been where you are already, so I know exactly what you are experiencing. It's the ID3 tags bro, not the filenames.
Runawayhacker is offline   Reply With Quote