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
 
Old Nov 28, 2011 | 10:26 AM
  #1  
ruffram's Avatar
Thread Starter
|
Mudding
Joined: Aug 2011
Posts: 135
Likes: 0
From: Springfield, MO
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
 
Reply
Old Nov 28, 2011 | 10:28 AM
  #2  
Disco Mike's Avatar
Administrator
Joined: Apr 2006
Posts: 25,707
Likes: 107
From: Denver, Colorado
Default

Without a bar code, your FOB can not be programmed with the ecu.
 
Reply
Old Nov 28, 2011 | 11:05 AM
  #3  
ruffram's Avatar
Thread Starter
|
Mudding
Joined: Aug 2011
Posts: 135
Likes: 0
From: Springfield, MO
Default

Is there anyway to acquire a bar code for a given fob based on the six digit code inside the transmitter?
 
Reply
Old Nov 28, 2011 | 01:40 PM
  #4  
jafir's Avatar
Super Moderator
Joined: Nov 2009
Posts: 5,847
Likes: 106
From: Arkansas
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.
 
Reply
Old Nov 28, 2011 | 01:44 PM
  #5  
ruffram's Avatar
Thread Starter
|
Mudding
Joined: Aug 2011
Posts: 135
Likes: 0
From: Springfield, MO
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.
 
Reply
Old Nov 29, 2011 | 08:28 AM
  #6  
JBreckeen's Avatar
4wd Low
Joined: Jun 2011
Posts: 12
Likes: 0
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 . . . .
 
Reply
Old Dec 6, 2012 | 11:23 AM
  #7  
brad_ramsey's Avatar
Drifting
Joined: Sep 2012
Posts: 41
Likes: 7
From: Denver, CO
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; Apr 4, 2013 at 12:19 PM. Reason: bug fix
Reply
Old Dec 6, 2012 | 11:34 AM
  #8  
jfall's Avatar
TReK
Joined: Mar 2012
Posts: 3,171
Likes: 45
Default

Brad,
Thank you for introducing us to your algorithm. Very kind of you.
And, thanks for the intro to Octave.
 
Reply
Old Dec 6, 2012 | 12:01 PM
  #9  
04duxlr's Avatar
Pro Wrench
Joined: Nov 2011
Posts: 1,462
Likes: 32
From: Duxbury MA
Default

Or you could have a shop with an Autologic do this: http://www.autologic-diagnostics.com...rogramming.pdf
 
Reply
Old Dec 6, 2012 | 06:17 PM
  #10  
Rovin4life's Avatar
TReK
Joined: Dec 2009
Posts: 2,243
Likes: 10
From: Albany, NY
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.
 
Reply



All times are GMT -5. The time now is 12:39 AM.