Jump to content
AVIC411.com

rjoc

Members
  • Content Count

    13
  • Joined

  • Last visited

Posts posted by rjoc

  1. Small update, I completely recovered my HU.. but some some stupid reason my carplay doesn't work, it's gives a 02-60 error on the HU screen (Communication Error during iPod Authentication). 

     

    If carplay is disabled on my iPhone it can authenticate and be used as an ipod so the auth chip works at some level. I am uncertain if this is my phone or my HU. This is running stock firmware.

    So this means that I can't test to see if my nag screen patch works! 

     

    Also, it's important to note that carplay is basically just airplay. The phone does _all_ of the work, the HU basically becomes an external screen and buttons - its similar in concept to how third party apps work on the watch. The actual interface for carplay on the HU is basically auth handshake, and then open up a socket to communicate back and forth. 

    Carplay apps are just apps on your phone with special features/interface for the different screen.

  2. The only major difference between the NEX-4000 firmware and the SPH-DA120 is the model number and the GPS module stuff.

     

    You can cross flash a SPH-DA120 1.07 with the NEX-4000 1.08 back and forwards. There are very few, if any, other differences in my analysis.

     

    I think because SPH-DA120 is basically the same as the NEX and uses the same base software they just decided to sync the numbers to make manufacturing easier - they didn't push and update because there was no update, just a version number changing - leaving us confused :)


  3. I don't have any skin in the game, I have neither of the HUs but I've done a bunch of reversing on Pioneer's firmware and hardware/SD hacking on my unit APPRADIO 4 which has a common software and hardware base.

     

    What's the goal? What do people actually want from the x100 series?

     

    I took a really quick look at the differences between the 4000 / 4100 and it looks like the hardware is super similar, with a few differences:

     

    CPU Unit

     

    * New flash rom - this could mean the BSP has changed (and the SD passwords are different) but can't tell until inspecting the kernel or dumping the flash. The CPU hasn't changed so I'd be surprised if there were significant differences.

     

    Interface Unit

     

    * HD/DAB tuner change

    * System uCom change

     

    Monitor Unit

     

    * New multi touch panel

     

    DVD Unit

     

    * a Mirrorlink chip is gone (or moved)

     

     

    What's the same:

     

    * CPU

    * LCD + backlight

    * Bascially everything (hardware version KM500B vs KM506B)

     

     

    When updating things can be done independantly:

    * Programs

    * Bootloader

    * Boot

    * Recovery Partition

    * Platform

    * Opening Data

    * System uCom firmware

    * Bluetooth firmware

    * GPS firmware

     

    The code for x100 is PJ150 and x000 is PJ140.

    Once updated, unless some core files are manipulated the unit will assume the new hardware's identity.

     

    Its possible to craft an update that mixes and matches units between updates - or leave some out. It's also possible to redo a whole partition.

     

    What this doesn't take into account is sofware and driver versions and how the harware actually talks to each other. e.g. there might many more software than hardware changes that could lead to significant interop issues. I haven't inspected the update to see (an update probbaly isn't detailed enough)

     

    At this stage I don't see any reason to think that the tty assignments have changed on the UART interfaces though.

     

    If I was starting on this from scratch with a x000 unit I think a good first step would be:

     

    * back up internal SD, just in case

    * make the minumum manipulations to the update to make it apply (i.e change no data just names and headers)

    * once updated successfully boot into the service test mode with TESTMODE.KEY and run the hardware diagnostics - these cover basically everything, touchscreen, fans, bluetooth, monitor so should show up any issues easily.

     

    I wouldn't force bluetooth, gps or ucom updates at this point - don't want force the HU to brick those components with an incompatible firmware. 

     

    If I had a x100 unit I'd dump the SD card and take a gander at that. (swapping unlocked sd cards would be an interesting experiment, as the firmwares wouldnt be touched just potential driver issues - if it worked it'd be funny to think you could just order the SD spare part from pioneer from a newer model to "upgrade")

     

  4. Sorry for the lack of updates, I've been really busy at work.

     

    * Looks like I got into a test mode that's not actually supposed to be accessed directly. Touch buttons *should* work on my unit in test mode (assuming if accessed correctly).

    * I've not yet been able to solder on my JTAG connector because the pitch is super fine and I don't solder fine regularly so I'm not confident yet. I trashed all my connectors in testing, so I've got to get some more in.

     

    In the mean time, I'm confident the software patch will work with a crafted update. I just not sure how user friendly it is.

     

    I'm going to replace the CPU board in my unit which will get me up and running again to finish the software hack then root the "bricked" CPU board properly later.

     

    I also need to identify which of the testmode keys I've reversed boots up the proper factory test mode. I think there are two real ones and around 4 more that just go directly to commands skipping the proper load process (one of the ones is what got me stuck!)

     

    So current status is waiting for that part to arrive.

  5. I'm waiting for a last part to arrive to actually get started, but here's where I'm at:

     

    * I'm still stuck in a TESTMODE_N recovery mode.

    * Messing with the file-system and partition table has been basically useless due to Warp!

    * I need to change the BSP to get out.

    * The most straightforward way to modify the BSP is JTAG.

     

    Instead of soldering on wires to the JTAG pads that I'll need to remove when I put the thing back together I've identified the connector, (it's on the way) and I'll solder this on so that I can leave it in place.

     

    I'll also need to make a adaptor board once I've double checked the JTAG pins to go from the CPU board to my JTAG device.

     

    I haven't yet completed my SD card unlocker, I've got the parts sitting here - I just don't have the SD card password so I can't do anything with it yet! (I can bypass the password, just don't know it).

     

    I did spend a couple of hours one night watching the SD traffic with a logic analyzer but didn't follow through to get the right password yet - the password will be sitting in the BSP so I can read that easily once I've got a dump of the flash via JTAG.

     

    I'm also pretty sure I've worked out how to correctly patch the official update to apply my nag-screen patch to allow just updating through the GUI without any hacks, but can't test this until I've got my system back to normal! (I don't really know what will happen with Warp when this update is applied, it looks like it'll take a new snapshot but I'm not certain).

  6. I'm still stuck. Waiting for a new JTAG debugger, and not looking forward to soldering onto those small surface mount pads.

     

    Having some success with modifying file systems to do some strange things though, I should be able to run code and/or get an ADB console soon enough. Conscious of the weird WARP mode though - that could still get in the way. Once I get console there's potential to read and edit the BSP, this would be far better in my mind the actually modding the device - (till now other than disassembling it all I've done is remove the SD card.) I'd love to find that mythical /dev/ttymxc0 though.. 

     

    Fun fact, the system can boot a SD card (with the right filesystem) without a password but on boot it sets the password - meaning your regular computer/card reader can't read the card again (unless you can unlock the password via Linux). This makes it super slow and annoying to experiment as I have to bypass the password manually each time.

     

    I'm thinking about building a small device, based on http://www.seanet.com/~karllunt/sdlocker.html to unlock and clear the password on a SD card when inserted.

    You'd need to know your password but once you've got it then it'd be pretty simple and fast to remove it (after each time you put the card back in the head unit).

     

    This should make iterative testing a bunch faster :)

     

    Update: 

    Lineo Warp!! is a huge pita. I'm going to need a to find that console or go JTAG to recover.

  7. I'm also having SPH DA120. So should i understand that "hardware buttons" on the left side, aren't functionnal because they are part of the touchscreen panel also ?

     

    SPH DA120 has no physical buttons - it's all a touch screen. If you take the front panel apart you'll see it's a glass panel over a piece of black plastic with clear bits in the shape of the "buttons". Underneath them is a light pipe for the single LED that lights them all up. They're just touch targets. 

    Some testmodes don't load the drivers so the "buttons" don't work. 

  8. Try wired remote. It very simple, just few resistors. You can build own in just 10 minutes using resistors, jack and two wires.

     

    Thanks - I built one today and had no success, it didn't work at all. I can't be 100% certain what I built was correct as I haven't been able to test it in a working unit but I tried a lot of different resistances for several hours with a POT.

     

    I also tried the steering wheel interface in my car directly and no good.

     

    I disassembled libraries and found this keys and key's content. Yes, there is 3 different contents for testmode_n for three modes (65, 66 and 66 bytes). Testmode_s contains only one digit (1-4) to select mode, testmode_a runs TestMode.apk. I'm owner of AVIC F960BT, European version of AVIC NEX series. In November the radio just stopped working while I driving. When it powered it loads for 3-5 seconds showing logo and reboots. (Boot loop). Then I disassembled libraries and tried this testmode files and without any success, nothing happens, it just reboots. From November to now my radio in Pioneer's authorized services, service workers says that they are waiting for SD card replacement (my SD card failed) from Pioneer.

     

    I missed the mode selector for TESTMODE_S! I'll have to check this when I get booting again.

    I pulled two different keys for TESTMODE_A both trigger the system to go in to the test mode but I instantly get an error about it failing to launch and to "Turn ACC power off"

  9. I'm actually using a SPH-DA120 and while it has the same software it's hardware appears different (I haven't seen a 5000NEX). The whole front plate is a touch screen - I took it apart and there are no hardware buttons.

     

    Either Pioneer tech's have a different interface or they've shipped a recovery mode that doesn't work with this hardware! 

  10. rjoc, have you tried TESTMODE_A.KEY, TESTMODE_S.KEY, TESTMODE_N.KEY keys? I have content for this files, but can't enter testmode using this files

     

    I found how to access three of the TESTMODE_N functions:
    'copy device', 'easy recovery' and 'mode change'.
     
    I assumed (wrongly) that 'copy device' took from internal to external, turns out it's the opposite, which makes a lot of sense in the context of servicing. Upside it has made future re-images far easier to deploy.
     
    'easy recovery' changes the BootMode in the BSP to boot from recovery partitions. (It appears you can't get out of this mode with just a touch screen)
     
    Not sure what 'mode change' does; it appears to change update and sub-update flags in BSP but not sure the implications of this.
     
    TESTMODE_S.KEY: adds the text "Test Mode" to the screen as an overlay and seems to boot normally - it appears that this enables some inputs that aren't otherwise present, didn't spend much time looking at this.
     
    TESTMODE_A.KEY: I can't get in, I believe the keys I have are wrong or another condition is not met. I believe this to be the service application for testing subsystems and connected interfaces.
     
    TESTMODE_R: currently can't trigger, it's disabled in init and I haven't found how to change Launch Modes yet.
    Unsure how this differs from the easy recovery mode in TESTMODE_N.
     
    I'm reluctant to post my TESTMODE KEY files publically because it's super easy to brick your HU with these!
     
    How come you can't enter test mode?
  11. Yep, I've got several SD backups. However the mode I'm in is the one in Bushing's photo:

     

    gEDv1Lv.jpg

     

    To get here I inserted a USB drive containing a specially crafted TESTMODE_N.KEY, the system automatically picks it up and it flips a bit in the NOR flash ROM to boot to the recovery partition then reboots. So if you boot with any SD card it boots to the recovery partition.

    This persists past reboots and SD card changes so the only way to get out is to flip that bit again - (I can't get out the same way I got in either!)

     

    The issue I've got is my touchscreen doesn't work in this mode so I can't change inputs. I'm currently working on the theory that there's another method of controlling it, maybe via the wired remote port.

     

    Tellingly Pioneer's parts website lists a "SERVICE IF UNIT" for these head units, I'm guessing IF means interface.

  12. Quick update. 

     

    I got the head unit and managed to bypass the SD card password to take an image - just opening it up and swapping the powered SD card into a computer to then read the data off - the HU unlocks the card then I whip it out (powered) and the card stays in an unlocked state.

     

    I then started information gathering in the various the filesystem images and discovered how to access several of the TESTMODE's

     

    I've bricked and recovered my unit about 5 times today, the final time it's stuck ironically on a programming screen (but not responding to touchscreen input) and unless I can thinking of something out of left field I'm going to have to follow in bushing's footsteps and get JTAG on the device to reset the BSP boot mode back to normal.

     

    I have not found a non-rooting way of getting ADB console or an access point for /dev/ttymcx0 (that'd be really nice right now).

  13. Fantastic work by Bushing, thanks! 

     

    SPH-DA120 and 5000NEX seem to be very similar software wise. A firmware update came out for both late last year:



     

    I've got a SPH-DA120 so I'm going to be focusing on that (wrong forum, I know).

     

    This firmware zip contains a bunch of stuff, notably two file types in a few directories:

     



    $ tree AVIC5000NEX
    AVIC5000NEX/
    ├── BLUETOOTH
    │   ├── PJ140BTHBTL.PRG
    │   ├── PJ140BTHSAF.PRG
    │   └── PJ140BTHUDP.PRG
    ├── BOOT
    │   └── PJ140BOT.PRG
    ├── HIBENDIR
    │   └── HIBENDIR.PRG
    ├── HIBENDIR.VER
    ├── PJ140BOT.VER
    ├── PJ140BT.VER
    ├── PJ140BTL.VER
    ├── PJ140DAT.VER
    ├── PJ140ERY.VER
    ├── PJ140OPN
    │   └── PJ140OPN.PRG
    ├── PJ140OPN.VER
    ├── PJ140PLT.VER
    ├── PJ140REC.VER
    ├── PLATFORM
    │   └── PJ140PLT.PRG
    ├── RECOVERY
    │   └── PJ140REC.PRG
    ├── RECOVERYEASY
    │   └── PJ140ERY.PRG
    ├── SNAPSHOT
    │   └── SNAPSHOT.PRG
    ├── SNAPSHOT.VER
    └── USERDATA
        └── PJ140DAT.PRG
     
    9 directories, 21 files


     

    This is from the SPH-DA120, 5000NEX is similar but the images have different contents.

     

    VER files appear to be pointers to PRG files for the different functions or subsystems. 

    Turns out the PLATFORM & USERDATA PRG files are just EXT volumes with a header, can discard the first 512 bytes to get a mountable image.

     

    e.g. using DD.



    dd if=PLATFORM/PJ140PLT.PRG of=PLATFORM/PJ140PLT.img bs=512 skip=1


     

    From there you can mount the EXT images, inside we've got some stuff:

     



    $ tree app
    app
    ├── Av.apk
    ├── Av.odex
    ├── DataLinkInfoCollector.apk
    ├── DataLinkInfoCollector.odex
    ├── DrmProvider.apk
    ├── DrmProvider.odex
    ├── FusedLocation.apk
    ├── FusedLocation.odex
    ├── JupiterHome.apk
    ├── JupiterHome.odex
    ├── LatinIME.apk
    ├── LatinIME.odex
    ├── Launcher.apk
    ├── Launcher.odex
    ├── MediaInfoProvider.apk
    ├── MediaInfoProvider.odex
    ├── MediaProvider.apk
    ├── MediaProvider.odex
    ├── MixTrax.apk
    ├── MixTrax.odex
    ├── MixtraxProvider.apk
    ├── MixtraxProvider.odex
    ├── Mode.apk
    ├── Mode.odex
    ├── Notepadv3.apk
    ├── Notepadv3.odex
    ├── SettingsDevelopment.apk
    ├── SettingsDevelopment.odex
    ├── SettingsProvider.apk
    ├── SettingsProvider.odex
    ├── SystemUI.apk
    ├── SystemUI.odex
    ├── SystemView.apk
    ├── SystemView.odex
    ├── TestMode.apk
    ├── TestMode.odex
    ├── UIService.apk
    └── UIService.odex
     
    0 directories, 38 files


     

    I've patched my Av.odex, JupiterHome.odex and SystemView.odex to always return true for InfoManager::hasConfirmedPLCaution() (as Bushing did) and repacked the platform image.

     

    However I don't have access to my unit right now so I can't tell whether I can actually update the firmware.

     

    I'm unsure what kind of signing there is to ensure the integrity of the update.

    I also need to check on how to mitigate a bad flash, as that's a very real possibility!

     

×
×
  • Create New...