Jump to content
AVIC411.com

challenge: restoring VR on X930BT (and friends)


Recommended Posts

I'm currently working on uncrippling the software so that VR works on x930bt (and maybe a few others).

Looking through the code in various places on 4.001 software, I see some attempts to prevent VR (by not initializing it) for certain "device types"

 

AL_HardwareInfo::GetDeviceType is called in a few places in Av.exe, Voice.exe, AvVr.dll, and very frequently in Navi.exe

It looks like my unit might be type: 2c, and seems like there are various types from 01 up to about 39 right now.

It seems there are a few types that pioneer has intentionally crippled: 2a, 2c, 35, 37, 39.

I suspect that x940bt might by type 37, and I suspect that 2a, 35, and 39 might be one of the euro units (like ?, F930, F940 ?)

I say this because there is some logic that is usually coupled with GetDeviceType, AL_HardwareInfo::GetRegion that returns a code based on geo region? I would think this is same as DVD region code (like US/CAN = 1), but it seems to be 2 for US/CAN.

Anyhow, thats not so important - what I did was patch the crap out of everywhere it appeared to be discriminating against the device types it doesnt like (it has a distinct pattern).

 

Anyhow, I was able to get VR button (the dial) working - almost! The screen comes up, I hear a ding, however, when I say anything it wont register. The ladies voice says excuse me, i dont understand etc. It just did not seem to recognize my voice.

 

So now I want to try to verify which device types "should" be working, vs are "crippled", and start investigating from there.

 

Can you folks tell me which models that VR does work ok on with latest software?

 

 

whoops sorry - i meant to post this in X forum, but it is applicable to Z series, as there is some reason VR is enabled on Z series, but disable on newer X series (it's not because it wont work ....)

Link to post
Share on other sites

ok, i think i was off.. i have found the place where the device type is obtained, along with several other functions that handle similar functionality, all deriving from "AL_HardwareInfo::GetModel" @ 1af94 in AplLib.dll. I can change this to XX 00 a0 e3, where XX is the model number (as an enum unfortunately):

 

 

From what I can tell, there is:

22 = z120 ??

28 = x920 ??

2c = x930

33 = z140 ?

37 = x940 ?

 

I am trying a few different values, and some intersting results, for example:

29 = UK/EU? strange tuner settings

2b = russian?

2d = UK/EU?

2e = UK/EU?

30 = UK/EU?

31 = UK/EU?

32 = UK/EU? + VR, but VR never finishes starting up. Guessing it's cause I dont have UK/EU language files for VR.

33 = US + VR, but voice doesnt recognize anything I say. This seems to be most functional model for me, as everything seems to be working - guessing this is z140

 

UPDATE: See later post for proper ids/models...

 

 

A few interesting things:

1. on most of the UK/EU models, there are a few different menu items in places. Most interesting may be "Safe Mode" on/off in the settings menu.

There is another function ::isUC which my guess determines if unit is "US/CAN" which derives from GetModel, and returns 1/true if model is one of 2, c, f, 12, 1d, 22, 28, 2c, 33, 37

I see isUC called in a few places, interestingly around some parking brake functionality in HMIManager.exe. Need to find more about this. May be a good candidate for soft PKB mod!!

2. tuner settings display a bit differently on some of the UK/EU models. The tuning step is like .05 khz instead of .20, however dont get your hopes up. This appears to just be for display calculation - the actual tuner/presets may be stored in ucom or hw, and the tuner itself may be hw locked to the region. (There was another greyed out menu item, FM tuning step [50 khz] in a/v settings menu which may be of further testing value.)

Link to post
Share on other sites

region code for device types (hex) return fromRegion():

 

0 = 0,A,E,10,1E,23,25,26,2A,32,35,39 (Europe)

1 = 1,B,11,1F,27,2B,36 (Russia)

2 = 2,C,F,12,1D,22,28,2C,33,37 (US/CAN)AL_HardwareInfo::Get

3 = 3,D,13,20,24,29,2D,34,38,3A (Australia)

4 = 4-8,14-1C,2E-31 (Japan)

5 = 9 (?)

6 = 21 (?)

 

note, this is some sort of internal enum used for determining system capabilites along with device type and NOT the same thing as DVD region code..

 

 

more trivia:

---

AL_HardwareInfo::GetGeneration

0 = 2009

1 = 2010

2 = 2011

3 = 2012

 

(not exactly sure about this - but might have something to do with judging upgrade from Cardinfo.cif....)

Just trying to document some info here...

Edited by pionara
Link to post
Share on other sites

ok, so for x930bt (device type = 2c), I verified that if I change my device type to 33, my VR button & prompt now works but still doesnt recognize any voice commands - I must be missing some files since x930 never had voice capabilities.

 

Everything else seems to work fine.

 

Maybe somebody with z130bt or x920bt can give me a directory tree dump of NDATA/NDATA/VBT

Link to post
Share on other sites
  • 3 weeks later...

While poking around on CARDINFO.CIF code in HMIManager.exe, I found the enum that links the internal product/type id to the code:

 

X07EUR (F10BT ?)

0

X07UWR

1

X07UNC (Z110BT ?)

2

X07AUS

3

X05EUR (F310BT ?)

A

X05UNC (U310BT ?)

C

X05AUS

D

X09NJP

4

E69JPN

5

JD06JP

6

5J5JPN

7

E01JPN

8

G500SH

9

X27EUR (F920BT ?)

E

X27UNC (X920BT ?)

F

X30EUR (F20BT ?)

10

X30UWR

11

X30UNC (Z120BT ?)

12

X30AUS

13

X23UNC

1D

X02E3U

1E

X02UW3

1F

X23AUS

20

X02BR3

21

X3UN6C

22

X03E6U

23

X03AU6

24

X03EU4

25

E26JPN

14

JD15JP

15

5J08JP

16

E04JPJ

17

E8JP4N

18

X46NJP

19

X53NJP

1A

X54NJP

1B

X77NJP

1C

X71EUR (F30BT ?)

26

X71UWR

27

X71UNC (Z130BT ?)

28

X71AUS

29

X72EUR (F930BT ?)

2A

X72UWR

2B

X72UNC (X930BT ?)

2C

X72AUS

2D

X88NJP

2E

X90NJP

2F

X89NJP

30

X89MJP

31

X14EU0 (F40BT ?)

32

X14UC0 (Z140BH ?)

33

X14AU0

34

X15EU0 (F940BT ?)

35

X15UW0

36

X15UC0 (X940BT ?)

37

X15AU0

38

X15EUD

39

X15AUD

3A

 

For example, X930BT = 2C = "X72UNC"

(I'm not totally sure about the model number mappings above - put question mark beside it. Would be great if folks can help me confirm.)

 

So I'm seeing that these have to be present (but intentionally obfuscated) in CARDINFO.CIF in order for your device to recognize that there is an update ready.

 

I suspect there is also something else checking version in there (Like current version < new version). I think these control/version bytes are somewhere after 120h in the file. Trying to find a way to generate our own CARDINFO.CIF triggers.

 

WRT VR crippling, it seems to be disabled for 2C, 2A, 35, 37, & 39 model ids.

Edited by pionara
Link to post
Share on other sites

This sounds very interesting. I bought an EU F930bt but I live in Australia and was hoping to "convert" it for use here in Australia. I managed to load Australian maps on it, and it works but it won't let me search for address or enter GPS coordinates because it says "not allowed for this region" as it is still configured for EU. I wonder if by changing the settings you mention above, whether that would allow me to use GPS with Australian maps..

Link to post
Share on other sites

jock, I suspect F930BT AU = NX072/AU = X72AUS or 2D

 

Can you verify the version info of your current system?

This can be done by going into testmode, Version Information, and all the stuff from that screen like Product Number, Navi Information, Nand Data Parts Code, etc.

 

But "managed to load Australian maps on it" - can you elaborate how you did that?

Link to post
Share on other sites

I followed the instructions given here by Ralpharn http://avic411.com/index.php?/topic/31561-avic-x930bt/&do=findComment&comment=244473

 

Essentially just replacing the map folders in NDATA with those from an AU unit. Ralpharn didn't have a copy of the entire NDATA folder from an AU unit unfortunately, so I'm not sure how much of an impact that is having on me not being able to search for address.

 

Here are the screenshots of testmode version information pages:

 

Bit hard to read,

 

NAND Version: PLE1-3-B

 

 

PB010128.jpg

 

PB010127.jpg

Link to post
Share on other sites

so the offset for changing model type (as described above) in AplLib.dll on 3.001 is 1ae84

 

You can try 2D and let us know if that works. If you have a backup and are comfortable with copying files in testmode, then it should not be a problem to try it out. There may be real hardware differences (such as FM tuner offsets, etc) that could cause certain things (like fm frequency display, menu items, etc) to appear strange.

 

If that doesnt work, it could also have something to do with NDATA\PARTCODE.TXT and NDATA\RELEASE.TXT not matching. (Yours are CWW3225- and PLE-1-3-B, respectively. which are for EU region/map) Somebody with 3.x AU unit should be able to provide these two files.

Link to post
Share on other sites

I'm keen to try it, still not exactly sure how to though, is there another thread which explains how to do it? I gather you are editing AplLib.dll with a hex editor? Will I need to install Condis hackmode? I should really get reading through more of these threads, but it takes forever! :P

Link to post
Share on other sites

Ok so from looking at the AplLib.dll that was already on my PC from my backup of NDATA, it looks like my current model code is 05:

 

apllibhex.png

 

Which seems to match up with E69JPN from your list above :? does that sound right?

 

I haven't edited anything yet or tried changing this value to 2D yet. Just thought it was interesting as I was expecting it to maybe be 2A or something...

 

Also, AplLib.dll is in both PRG0 and PRG1. You mentioned in the x930bt-x940bt upgrade thread that if USER\PRG.FLG is not present (which in my case, it is not), then it is using software in PRG0. Does that mean I only need to edit AplLib.dll in that folder, or both?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...