Jump to content
AVIC411.com

pionara

Members
  • Content Count

    736
  • Joined

  • Last visited

Posts posted by pionara

  1. to check the update matches the manifest you can probably run something like this:

    #!/usr/bin/perl
    #
    # parses ALLDATA.VER manifest
    # lists files, sizes, and verifies crc32b
    #
    
    use Digest::CRC; 
    
    my $crc = Digest::CRC->new(type=>"crc32");
    my $filename = "ALLDATA.VER";
    
    if (@ARGV) {
        $filename = $ARGV[0];
    }
    
    open(my $fh, $filename) or die "can't open $filename";
    binmode($fh);
    
    ## check file crc
    # get crc from end
    seek($fh, -4, 2);
    my $filecrcpos = tell($fh);
    read($fh, my $filecrcraw, 4);
    my $filecrc = unpack("L", $filecrcraw);
    # check actual crc of file
    seek($fh, 0, 0);
    read($fh, my $filecontents, $filecrcpos);
    $crc->add($filecontents);
    my $crccalc = $crc->digest();
    $crc->reset();
    if ($filecrc == $crccalc) {
        print "File CRC check OK. ";
    } else {
        printf("File CRC check FAILED. File crc: %08x, calculated crc: %08x\n", $filecrc, $crccalc);
    }    
    
    
    ## now begin read
    # skip magic, 
    seek($fh, 4, 0); 
    
    # filesize
    read($fh, my $filesize, 4);
    
    # skip something?
    seek($fh, 36, 1);
    
    # total file records
    read($fh, my $numrecsraw, 4);
    my $numrecs = unpack("l", $numrecsraw);
    my $fcounter = 0;
    my $isdir = 1; # track directory/filename mode
    my $currdir = "";
    
    while ($fcounter < $numrecs) {
        read($fh, my $sectionsizeraw, 4);
        my $sectsize = unpack("i", $sectionsizeraw);
        for (my $j=0; $j < $sectsize; $j++) {
            read($fh, my $rawtext, 56);
            my @fnameraw = unpack("C*", $rawtext);
            read($fh, my $rawdata, ;
            my ($fsize, $fcrc) = unpack("L L", $rawdata);
            # cant figure out the multibyte magic needed to make perl unpack this to ascii, so must hack/map
            my $fname = join("", map { if ($_ > 0x0 && $_ < 0x80) { chr($_) } } @fnameraw);
            if ($isdir) {
                # build directory path
                $currdir = $currdir . "$fname/";
            } else {
                # list files
               printf("  %s, size: %d, crc: %08x, ", $fname, $fsize, $fcrc);
               my $fullname = "$currdir$fname";
               if ( -e $fullname ) {
                  open(my $testfh, $fullname) or die "can't read $fullname";
                  binmode($testfh);
                  $crc->addfile(*$testfh);
                  my $fcrccalc = $crc->digest();
                  $crc->reset();
                  if ($fcrc == $fcrccalc) {
                      print "CRC OK";
                  } else {
                      printf("CRC BAD. crc calculated: %08x", $fcrccalc);
                  }
               } else {
                  print "FILE $fullname NOT FOUND.";
                  printf(" %x", $fullname);
               }
               print "\n";
               $fcounter++;           
            }
        }
        
        # toggle dir/filename mode
        if ($isdir) {
            print "$currdir\n";
            $isdir = 0;
        } else {
            $currdir = "";
            $isdir = 1;
        }
    }
    
    
  2. to see the structure of the cardinfo.cif, you can run this command (linux/mac) on cardinfo and see where the model codes are placed. I think they can be anywhere in the middle as long as they are on these 6 letter boundaries. Seems like there is alot of obfuscation there.

    sed -e 's/#Pionee//' -e 's/....../&\n/g' CARDINFO.cif
    
  3. cardinfo.cif is just signalling unit that there is an update on the SD card.

    I dont think it has versioned information.

    I do know that there are some special fields at char position 16 and 17. I think they are normally ascii "00" and can be 01, etc but I dont recall exactly what those are used for.

     

    Regarding the rest of the cardinfo, starting at about the 20th char, and every group of 6 chars after that, there could be the model codes that were discussed before. This goes on through much of the rest of the file, and then there may be some other section towards the end of the file, again not sure if thats used or what its used for.

     

    So you can replace or add your own model code in there.

    I think that if your model code is listed in cardinfo.cif and the unit reboots, then cardinfo is finished. So the problem here is not with cardinfo.

     

    The verinfo has a major version and i think an update type (normal vs urgent). I think this is also set correctly to do an update.

    The ALLDATA.VER has a manifest of all the files in the update, including size and crc32. I think this is used by update to verify the files are correct.

     

    I'm suspecting that something else isn't right in the case of "Incorrect SD card" - perhaps there is an os-level "platform" update which is only for certain hardware model.

  4. So after we upgrade the 130bt with 2013 firmware & map, how do I get the navi.exe out to hex edit it and to put it back?

    I did this last year with 2012 but I forgot the procedure. Lol.

    after you have 2013/5.0 installed,

    get the 5.1 update from pioneer site for z140 and install that.

    take the navi.exe from the 5.1 update, mod it, then put it on usb or sd with testmode.key, and use file maintenance (file manager) to copy over to your unit.

     

    recall that if USER/PRG.FLG is present the unit is booting sw in USER/PRG1 instead of USER/PRG0

     

    recall that you will need to delete target navi.exe before copying…

  5. navi.exe - to get rid of nag screen… updated post

     

     

     

    And for those of us who haven't done the upgrade yet, can we make the mod to the file in the distribution before we install it?

     

    Thanks.  John

     

    it's theoretically possible to pre-mod the file, and use the update mechanism to deploy it..

    You would need to edit the EU090APL.VER file which is a "manifest" of files included in the update(including maybe size, but crc32 i think). I recall posting what I discovered in some other threads long ago, but it's too much work when you can just redeploy the patched file through testmode or testmode script after you do the 2013 update, then the 5.1 update.

     

    PS for the 5.1 update one can remove the TESTMODE.KEY and FIRMWARE folder, only leaving AVICZ110 folder with the application update, if you do not have the Z140, but some other upgraded system, say like z130,x930, etc). The testmode.key is for doing a ucom firmware update which only works on specific hardware model (z140), and the BT FW update is already 3.32 i think.

  6. regarding CARDINFO.cif and which values it needs to ahve in it in order for your unit to recognize an update:

     

    see one of my old posts on this... I'm not entirely sure those are all accurate, but you could experiment..

    http://avic411.com/index.php?/topic/35293-challenge-restoring-vr-on-x930bt-and-friends/&do=findComment&comment=257674

     

     

    all the cardinfo.cif file does is signal your device that there is an update on the sd that it should look at.

  7. wow, people trying to make money illegally off of pioneer :(

     

    Doubt if this is a legal version.

     

    I bet 100 dollars that they are using my supereasy method with my verinfo.dat from 2013 EU update.

     

    That is sad because it was only ever meant for legal owners to have an alternate install method, not for people to pirate and sell illegally on ebay.

  8. So Pioneer did away with the UI updates (like the 150) on this one? 

     

    right.

    but makes sense in the pioneer-crack-monkey-product-versioning-number-scheme

    right in the middle of the z110,120,130,140 -> 150 is a major platform and UI update.

    Why wouldnt you call this z210, or even z250 ?

    Same as when they went from x910 -> x920, completely different hardware/software, but looking at the product number you would think it was a minor update!

  9. The update for Z140bh is out too but it's 120$ and it doesn't clearly state what exactly has been updated as in comparison from last year. 

     

    its the maps!

    jk, but seriously - nothing much but maps and pois. I think there is a backup camera overlay, but looking at EU 2013 update, don't expect 50-series UI changes.

     

    You can look at the PDF guide that comes with the upgrade on the navigation website. It gives you some clues as to what is new/changing...

  10. wont happen. Only video played via dvd/cd can be rendered to rear-outputs. This is because they are rendered via a hardware chip which outputs video to the mixer (muxer - aka multi-zone). SD/USB video is rendered in software, and therefore will only play on the display.

×
×
  • Create New...