FORUMS
Remove All Ads from XDA

 View Poll Results: What do you wanna see most on a uconnect system

Android!
 
103 Vote(s)
69.13%
Custom programs
 
11 Vote(s)
7.38%
Themes/UI Mods
 
4 Vote(s)
2.68%
Free wifi hotspot
 
9 Vote(s)
6.04%
Something even more awsome
 
2 Vote(s)
1.34%
Remove speed lockout
 
5 Vote(s)
3.36%
Add features (i.e. movies on the screen/games)
 
15 Vote(s)
10.07%

Rooted Jeep Cherokee '14 uConnect

43 posts
Thanks Meter: 18
 
By cm0002, Member on 5th September 2015, 03:40 AM
Post Reply Email Thread
13th April 2016, 07:12 PM |#21  
Senior Member
Flag Louisville, KY
Thanks Meter: 157
 
More
I would be interested in unlocking the gps typing while driving, and anyway to get ANdroid auto on there
 
 
24th April 2016, 03:25 AM |#22  
mpgrimm2's Avatar
Senior Member
Flag Virginia
Thanks Meter: 1,180
 
More
I'm not much of a coder, more of a technical re-writer but definitely interested in what you are doing here. Keep at it.

I've got a 2014 RAM RA4 (same pn as the Cherokee) and several of us at RamForum have upgraded/modified our truck wiring to work fully with them. Also been keeping track of RAM fw here.


Many of us would be interested in unlocking the other features, maybe customizing the text for backup camera, and access/change themes that are already in the swdl.iso update but not available for the specific vehicle.

I've poked around a bit in the my15 VP4 15.17.5 master file using notepad ++, and 7zip. Trying to see if it might be possible to get the 4.05gb /NAV folder to install on 2013/2014 Ra4 for updated maps. Still evaluating the risk.

Sent from my LG G4 on Tapatalk.
24th April 2016, 10:53 PM |#23  
OP Member
Thanks Meter: 18
 
More
Im just now starting to get back into decompiling the lua bytecode, for reference for anyone else wondering how to decompile lua i use this --> https://sourceforge.net/projects/unluac/ it requires the debugging info not be stripped from the lua but thankfully since its enabled to be included by default by the compiler, chrysler didnt seem to bother to disable it
The Following User Says Thank You to cm0002 For This Useful Post: [ View ] Gift cm0002 Ad-Free
25th April 2016, 02:26 PM |#24  
OP Member
Thanks Meter: 18
 
More
Found something interesting, digging further ive found that the app system that is run is the Xlet java framework. Knowing this i went and decompiled the program called kona, which i think is more of a master application manager for the entire system, digging inside the code a found a class file marked OpenNavActiviation.java and the code makes references to the dbus service com.harman.service.opennav.OpenNavActivationImpl. ive posted the code below, however this looks like the key to enabling the Navigation on non-navigation units, like the dealer can, but without having to pay them >
Code:
/*
 * Decompiled with CFR 0_114.
 */
package kona.opennav;

import com.harman.logger.SystemLogger;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import kona.opennav.OpenNavActivationListener;
import kona.opennav.OpenNavException;
import kona.opennav.OpenNaviPackageDescription;
import net.sf.microlog.core.Logger;

public class OpenNavActivation {
    public static final int ACTIVATION_CODE_STATUS_SUCCESS = 0;
    public static final int ACTIVATION_CODE_STATUS_FAILURE = -1;
    private static final String OPENNAVACTIVATION_CLASS_PATH = "com.harman.service.opennav.OpenNavActivationImpl";
    private static OpenNavActivation openNavActivation;
    private Class openNavActivationImplClass = null;
    private Object openNavActivationImplObject = null;

    private OpenNavActivation() throws OpenNavException {
        try {
            this.openNavActivationImplClass = Class.forName("com.harman.service.opennav.OpenNavActivationImpl");
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        if (this.openNavActivationImplClass == null) {
            throw new RuntimeException("OpenNavActivation service is not supported.");
        }
        try {
            Method getInstanceMethod = this.openNavActivationImplClass.getDeclaredMethod("getInstance", new Class[0]);
            if (getInstanceMethod != null) {
                try {
                    this.openNavActivationImplObject = getInstanceMethod.invoke(null, new Class[0]);
                }
                catch (IllegalArgumentException e) {
                    SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
                    this.openNavActivationImplObject = null;
                }
                catch (IllegalAccessException e) {
                    SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
                    this.openNavActivationImplObject = null;
                }
                catch (InvocationTargetException e) {
                    SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
                    e.printStackTrace();
                    this.openNavActivationImplObject = null;
                }
            }
        }
        catch (SecurityException e) {
            SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
            this.openNavActivationImplObject = null;
        }
        catch (NoSuchMethodException e) {
            SystemLogger.LOGGER.error("OpenNavActivation: contructor ", e);
            this.openNavActivationImplObject = null;
        }
        if (this.openNavActivationImplObject == null) {
            throw new OpenNavException("Navigation Service is not available.");
        }
    }

    public static OpenNavActivation getInstance() throws OpenNavException {
        if (openNavActivation == null) {
            openNavActivation = new OpenNavActivation();
        }
        return openNavActivation;
    }

    public void registerOpenNavActivationListener(OpenNavActivationListener activationListener) throws OpenNavException {
        try {
            Class[] arrclass = new Class[1];
            Class class_ = OpenNavActivationListener.class;
            arrclass[0] = class_;
            Method getActivationPkgListMethod = this.openNavActivationImplClass.getMethod("getNaviPackageListForActivation", arrclass);
            try {
                getActivationPkgListMethod.invoke(this.openNavActivationImplObject, activationListener);
            }
            catch (IllegalArgumentException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
            }
            catch (IllegalAccessException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
            }
            catch (InvocationTargetException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
                throw new OpenNavException("Navigation Service is not available.");
            }
        }
        catch (SecurityException e) {
            SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
        }
        catch (NoSuchMethodException e) {
            SystemLogger.LOGGER.error("OpenNavActivation: registerOpenNavActivationListener ", e);
        }
    }

    public int setActivationCode(OpenNaviPackageDescription packageDiscription) throws OpenNavException {
        int code;
        if (packageDiscription == null || packageDiscription.getActivationCode() == null) {
            throw new NullPointerException("OpennaviPackageDescription and activationCode should not be null");
        }
        code = -1;
        try {
            Class[] arrclass = new Class[1];
            Class class_ = OpenNaviPackageDescription.class;
            arrclass[0] = class_;
            Method method = this.openNavActivationImplClass.getMethod("applyActivationCode", arrclass);
            try {
                Object objectCode = method.invoke(this.openNavActivationImplObject, packageDiscription);
                code = (Integer)objectCode;
            }
            catch (IllegalArgumentException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
            }
            catch (IllegalAccessException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
            }
            catch (InvocationTargetException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
                throw new OpenNavException("Navigation Service is not available.");
            }
        }
        catch (SecurityException e) {
            SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
        }
        catch (NoSuchMethodException e) {
            SystemLogger.LOGGER.error("OpenNavActivation: setActivationCode ", e);
        }
        return code;
    }

    public boolean isNavActivated() throws OpenNavException {
        boolean isNavActive;
        isNavActive = false;
        try {
            Method isNavActiveMethod = this.openNavActivationImplClass.getDeclaredMethod("isNavActivated", new Class[0]);
            try {
                Boolean returnVal = (Boolean)isNavActiveMethod.invoke(this.openNavActivationImplObject, new Class[0]);
                isNavActive = returnVal;
            }
            catch (IllegalArgumentException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
            }
            catch (IllegalAccessException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
            }
            catch (InvocationTargetException e) {
                SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
                throw new OpenNavException("Navigation Service is not available.");
            }
        }
        catch (SecurityException e) {
            SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
        }
        catch (NoSuchMethodException e) {
            SystemLogger.LOGGER.error("OpenNavActivation: isNavActivated ", e);
        }
        return isNavActive;
    }
}
The Following User Says Thank You to cm0002 For This Useful Post: [ View ] Gift cm0002 Ad-Free
25th April 2016, 03:27 PM |#25  
Senior Member
Flag Louisville, KY
Thanks Meter: 157
 
More
Quote:
Originally Posted by zzEvilGeniuszz

Have you seen this?

This is exactly what I am looking for. But they want a crazy $560 US for it. #SmokingCrack

https://youtu.be/67cdq2uiNu0

this actually looks pretty cool. anyone actually done this to see if it works?
25th April 2016, 05:01 PM |#26  
zzEvilGeniuszz's Avatar
Senior Member
Thanks Meter: 36
 
More
Quote:
Originally Posted by CadillacMike

this actually looks pretty cool. anyone actually done this to see if it works?


I am going to assume (I may be wrong) but this is still Android 4.4.4. Anyone who pays that amount of money on a device that has Android 4.4.4. is absolutely crazy.
The Following 2 Users Say Thank You to zzEvilGeniuszz For This Useful Post: [ View ] Gift zzEvilGeniuszz Ad-Free
1st May 2016, 11:36 AM |#27  
Junior Member
Thanks Meter: 0
 
More
Android!
2nd May 2016, 03:46 PM |#28  
Junior Member
Thanks Meter: 0
 
More
I'd assume that they didn't actually install android on the uconnect, but are connecting it to a separate android box. I wouldn't think it would be too hard to connect the resistive touchscreen to an adapter for android. After that all you would need is a lockpick to accept a new video input.
16th May 2016, 12:33 PM |#29  
Member
Thanks Meter: 21
 
More
So glad I stumbled upon this thread, I would love to see where this goes. When my gf got her 15 jeep renegade my first thoughts were "how can we hack/modify this u connect thing..." I wish i were more knowledgeable in development and coding to mess with it, don't want to really mess up my gf car and deal with THAT dog house..
6th June 2016, 12:07 AM |#30  
Senior Member
Thanks Meter: 765
 
More
Quote:
Originally Posted by flyingfedora

I'd assume that they didn't actually install android on the uconnect, but are connecting it to a separate android box. I wouldn't think it would be too hard to connect the resistive touchscreen to an adapter for android. After that all you would need is a lockpick to accept a new video input.

That is exactly what I was planning to attempt, but someone smashed my window and stole the uconnect before I got around to it. Ended up going aftermarket AppRadio. The touch controller I found (mimcs-x2)is listed as out of stock and supposedly there will be a newer model. It was Bluetooth enabled so using it and the lockpick air would have been a totally wireless solution.
Here are some links if anyone is interested.
http://www.google.com/url?q=http://w...5qgjB6SuEgwbFw
http://www.google.com/search?q=mimic...52.KtXDldeO6nw

On a side note Joe that makes the Tranzformer and Tazer from post #3 in this thread has mentioned in forum posts he would be willing to share his voodoo with someone wishing to develop an Android app.
16th June 2016, 06:46 PM |#31  
Senior Member
Thanks Meter: 765
 
More
http://carperformance.se/?product=uc...android-system
Post Reply Subscribe to Thread

Tags
blackberry, jeep, qnx, root, uconnect

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes