Discovery II Talk about the Land Rover Discovery II within.
Sponsored by:
Sponsored by:

Definitive answer on Key Fob Reprogramming

Thread Tools
 
Search this Thread
 
  #1  
Old 11-28-2011, 10:26 AM
ruffram's Avatar
Mudding
Thread Starter
Join Date: Aug 2011
Location: Springfield, MO
Posts: 135
Likes: 0
Received 0 Likes on 0 Posts
Default Definitive answer on Key Fob Reprogramming

I am attempting to buy a used key fob for a disco II. I have read several posts and threads with conflicting info on wether a shop can reprogram a key without a bar code. I bought my Disco II without a remote at all and I was planning to buy a used key fob and have it programmed to work on my truck. It seems like there is a 6 digit code inside the remote itself, but i have read posts that suggest the shop will have to have a bar code to go with it to program it. Does anyone know for SURE how that works? I had read that some people claim then can figure out the bar code from the 6 digit code. Is that correct?

Thanks as always
 
  #2  
Old 11-28-2011, 10:28 AM
Disco Mike's Avatar
Administrator
Join Date: Apr 2006
Location: Denver, Colorado
Posts: 25,709
Likes: 0
Received 99 Likes on 81 Posts
Default

Without a bar code, your FOB can not be programmed with the ecu.
 
  #3  
Old 11-28-2011, 11:05 AM
ruffram's Avatar
Mudding
Thread Starter
Join Date: Aug 2011
Location: Springfield, MO
Posts: 135
Likes: 0
Received 0 Likes on 0 Posts
Default

Is there anyway to acquire a bar code for a given fob based on the six digit code inside the transmitter?
 
  #4  
Old 11-28-2011, 01:40 PM
jafir's Avatar
Super Moderator
Join Date: Nov 2009
Location: Arkansas
Posts: 5,847
Received 95 Likes on 90 Posts
Default

Originally Posted by ruffram
Is there anyway to acquire a bar code for a given fob based on the six digit code inside the transmitter?
Yes. You can get the complete code from the 6 digit code. I will PM with a couple of people that might be able to help.
 
  #5  
Old 11-28-2011, 01:44 PM
ruffram's Avatar
Mudding
Thread Starter
Join Date: Aug 2011
Location: Springfield, MO
Posts: 135
Likes: 0
Received 0 Likes on 0 Posts
Default

That would be great man, thanks. I would prefer to buy a used one to save money, but I don't want to buy a used one that is of no use.
 
  #6  
Old 11-29-2011, 08:28 AM
JBreckeen's Avatar
4wd Low
Join Date: Jun 2011
Posts: 12
Likes: 0
Received 0 Likes on 0 Posts
Default Autologic . . .

From experience, I know an Autologic Diagnostic machine can use the Key Fob's code to program it. I do not know how many Indie's have an Autologic, but luckily mine does. As long as the Fob has the bar codes inside, you can get it done.

My local European Indie was able to do it for $25.00 and about 5 minutes labor. Now first time I asked my shop, they said they could not do it, but after some extensive research I was able to find it could be done.

I do not remember exactly where in the menu system it was, but it was like one more menu down from the normal Bar Code input screen.

Good luck . . . .
 
  #7  
Old 12-06-2012, 11:23 AM
brad_ramsey's Avatar
Drifting
Join Date: Sep 2012
Location: Denver, CO
Posts: 41
Likes: 0
Received 7 Likes on 2 Posts
Default

I spent a couple of hours researching and finally deciphering the algorithm to generate disco2 barcodes. I have written some Octave code to create the barcodes given an inner code and a prefix. My function, plipcodes, is posted below. But first, some caveats:

- The procedure produces correct barcodes for all the valid barcode examples that I could find via a google search, mostly from Youtube videos showing how a Nanocom (or similar device) is used to program keys. I did find a few hits that reported bad codes.

Here are my examples:

1. Inner code: 26AFA7
Reported barcodes:
*G26AFA726AFA6FFG*
*FFFFFFFFD95058V*

plipcodes output:
octave:2> [code1,code2] = plipcodes('G','26AFA7')
code1 = *G26AFA726AFA6FFG*
code2 = *FFFFFFFFD95058V*

2. Inner code: 404223
Reported barcodes:
*J404223404222FFZ*
*FFFFFFFFBFBDDCN*

plipcodes output:
octave:3> [code1,code2] = plipcodes('J','404223')
code1 = *J404223404222FFZ*
code2 = *FFFFFFFFBFBDDCN*

- The first code starts with a letter that cannot be gleaned from the inner code. I suspect that this letter indicates the market for the FOB (North America, Europe, etc.) but I have no way to verify this. All of the keys that I have seen example codes for start with 'G' or 'J'. If anyone has information about this letter I would appreciate learning about it.

- I still cannot get my Hawkeye to program a used key using my generated codes.
I have a key that used to work, but stopped and has possibly "lost sync." I generated the barcodes using my algorithm and then used the Hawkeye to program those codes, but no luck. Unlike the Nanocom, the Hawkeye does not support a separate "sync key" function that may explain the failure. BearMach (the makers of the Hawkeye) do not claim to be able to program used keys.

- The function below is written for Octave, a Matlab-like program available free from http://www.gnu.org/software/octave/download.html.
To use this function, save the text below into a file called plipcodes.m and start Octave. Change the current working directory to the one that contains the new file. Then try a command like one of the examples above.

# This function generates the Land Rover barcodes
# for a Discovery II remote
# Input: prefix letter and inner code from sticker inside the key fob as strings
# Output: Two codes for use with a programming tool
# Example: [code1,code2] = plipcodes('G','26AFA7')
# code1 = *G26AFA726AFA6FFG*
# code2 = *FFFFFFFFD95058V*
# Copyright Brad Ramsey 4 April 2013
# This program is free for non-commercial use. *For commercial use please send an email to bradley.ramsey at gmail.com
# Revision History
# 3 April 2013: Added a missing space character to the code39 character set.
# Added the ability to compute codes from an inner code that ends in a '0'
# 4 April 2013: Fixed decrement string length bug

function [code1Str,code2Str] = plipcodes(prefix,innercode)
#Generate the first code
if size(innercode) != 6
disp('Code is not 6 chars [0-9,A-F]')
return;
end
innercode = toupper(innercode);
decrementedValStr = ['0' dec2hex(hex2dec(innercode)-1)];
buildStr = ['*' prefix innercode decrementedValStr(end-5:end) 'FF'];

# Generate the check character based on the code 39 barcode standard
code39Chars = ['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%'];
code39Sum=0;
for i = 2:16
charVal = findstr(buildStr(i),code39Chars)-1;
code39Sum = code39Sum + charVal;
end
checkVal = mod(code39Sum,43);
checkChar = code39Chars(checkVal+1);
code1Str = [buildStr checkChar '*'];
#code1StrHawkeye = [buildStr '*']

# Generate the second code
build2Str = "*FFFFFFFF";
invertedInnerCode = dec2hex(bitxor(hex2dec(innercode),hex2dec('FFFFFF' )));
build2Str = [build2Str invertedInnerCode];
# Generate the check character based on the code 39 barcode standard
code39Sum=0;
for i = 2:15
charVal = findstr(build2Str(i),code39Chars)-1;
code39Sum = code39Sum + charVal;
end
#code39Sum
checkVal = mod(code39Sum,43);
checkChar = code39Chars(checkVal+1);
code2Str = [build2Str checkChar '*'];
#code2StrHawkeye = [build2Str '?*']
 

Last edited by brad_ramsey; 04-04-2013 at 12:19 PM. Reason: bug fix
  #8  
Old 12-06-2012, 11:34 AM
jfall's Avatar
TReK
Join Date: Mar 2012
Posts: 3,171
Likes: 0
Received 44 Likes on 37 Posts
Default

Brad,
Thank you for introducing us to your algorithm. Very kind of you.
And, thanks for the intro to Octave.
 
  #9  
Old 12-06-2012, 12:01 PM
04duxlr's Avatar
Pro Wrench
Join Date: Nov 2011
Location: Duxbury MA
Posts: 1,462
Received 32 Likes on 27 Posts
Default

Or you could have a shop with an Autologic do this: http://www.autologic-diagnostics.com...rogramming.pdf
 
  #10  
Old 12-06-2012, 06:17 PM
Rovin4life's Avatar
TReK
Join Date: Dec 2009
Location: Albany, NY
Posts: 2,243
Likes: 0
Received 10 Likes on 9 Posts
Default

Sorry but I have the algorhythm for the last six years. Its a word document given to us techs. You just put in the code and away you go.
 


Quick Reply: Definitive answer on Key Fob Reprogramming



All times are GMT -5. The time now is 09:51 AM.