Author Topic: Microchip KeeLoq Classic - New firmware for garage door receiver + new fobs  (Read 18739 times)

0 Members and 1 Guest are viewing this topic.

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
My remote control garage door stopped working and it turned out to be a failed IO pin on the PIC16 micro in the receiver unit. The micro firmware was locked of course to protect the manufacturers KeeLoq 'secret' key. This is an old unit with no replacement parts available from supplier (Abon Ultra). Although there are third party remote control systems available that I could have hacked into place I decided to write new firmware using XC8 (free version) and a PIC18 (which has a PLL which boosts clock speed to help compensate for slower XC8 Free compiled code).

I have attached an MPLAB X project which provides a skeleton app for decoding KeeLoq Classic bitstream. In essence, you need a keyfob with a MicroChip HCS301 (or similar) encoder programmed with your own 'manufacturer code'. That bitstream is decoded by the PIC18 interrupt routine (samples the received signal at fixed rate) and verifies against its 'manufacturer code' and database of 'paired' keyfobs (in eeprom). Some of the encrpyt/decrypt code is, ahem, tricky to find but its all out there on the web, I've just gathered it into one buildable project.

Just to be clear - existing fobs cannot be used unless they contain a MicroChip HCS300/301 encoder and can be reprogrammed with your 'manufacturer' key. For new fob options see next post below.

I don't expect this to be particularly useful to many people so I'm too lazy to dcoument properly, this is just a code dump really.

Be aware that KeeLoq Classic has been hacked to some extent;

http://lmgtfy.com/?q=keeloq+hack

https://youtu.be/l_crMuwBp8I

Edit: 06APR2020 Updated source so it compiles with XC8v2.10 (Original was XC8v1.33)
Edit: 01OCT2020 Source code tidy up, minor bugs fixed.
Recommend using MPLABX v5.35 (last version with MPASMX for keyfob programming).
Edit: 24FEB2024 Received a report that this firmware only works if the last digit of the user serial number is '7' ...to be investigated...see reply#18 below
« Last Edit: February 24, 2024, 11:05:21 am by voltsandjolts »
 
The following users thanked this post: edavid, mikerj

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
KeeLoq Keyfob Options

I bought a bunch of cheap keyfobs on ebay hoping to find one that used a HCS300/301 encoder, or something pin compatible with it. But, no luck.

The cheapest HCS300 based keyfob I could find is from RF Solutions. Its well made and priced at around GBP15, probably the easiest solution - de-solder the HCS300, reprogam with your key.
https://www.rfsolutions.co.uk/remote-control-systems-c9/hornet-2-button-150m-433mhz-keyfob-transmitter-p226



*** STOP *** See further down this thread (Reply #13) for a better option than the cludge shown here:

Ebay has lots of fixed code 433 MHz (for UK) keyfobs which come in a very nice case with battery for under GBP2 delivered. Use the search term “cloning remote control keyfob”. Some claim to clone rolling codes but they certainly won't work with KeeLoq systems.





Both the fixed code and rolling code types use identical PCB, just the IC is different; “M&C 001” or “M&C 002”, neither of which I have any info on. They are not directly pin compatible with the HCS300/301 but soldering it upside down almost works :o

Partial schematic:


Remove original IC:


Fit HCS upside down, couple of links to make:


Remove Q3 and add link:


I agree, its not pretty, but it works!
« Last Edit: September 18, 2020, 06:38:32 pm by voltsandjolts »
 

Offline kripton2035

  • Super Contributor
  • ***
  • Posts: 2587
  • Country: fr
    • kripton2035 schematics repository
you may also use a pic12f635 with keeloq algo inside it.
(but the pic18 program should be surely modified a little !)
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
you may also use a pic12f635 with keeloq algo inside it.
(but the pic18 program should be surely modified a little !)

That would have saved some time!
I wanted to use a pin compatible (DIP28) device to reuse the motor control PCB.
 

Offline kripton2035

  • Super Contributor
  • ***
  • Posts: 2587
  • Country: fr
    • kripton2035 schematics repository
ebay auction for a complete remote control with hcs301
http://www.ebay.com/itm/271067230571
seller also has the remote controls only.
 
The following users thanked this post: voltsandjolts

Offline Luxkeiwoker

  • Newbie
  • Posts: 3
  • Country: de
Hey guys,

I have a keyfob for my cars aftermarket central lock which has seen better days. I was searching for a replacement so I looked inside to find out if it uses a fixed or rolling code. Turns out it uses the HC300 IC, so using a simple cloning keyfob won't work.

By coincidence I have a few of those silver ebay keyfobs lying around  :). Can I just desolder the HC300 from the old keyfob and resolder it to the new on as shown in your post? Is that enough to make the keyfob work with my car alarm? Or is there some more magic in the old keyfob?
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
The silver ebay fobs are 433MHz with On-Off Keying modulation.
If your car fob uses the same frequency and modulation scheme then it should work.
 

Offline Luxkeiwoker

  • Newbie
  • Posts: 3
  • Country: de
The original keyfob uses 433 MHz as well. I'm not sure about the modulation though. I managed to clone the signal from the original to the silver one and I was able to unlock the car. Obviously it only worked once since it's a rolling code. But I guess that is enough proof that the modulation is the same. Isn't it?
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
Nice test!
Yes, that should work fine if you move the IC to the new fob.
 
The following users thanked this post: Luxkeiwoker

Offline Luxkeiwoker

  • Newbie
  • Posts: 3
  • Country: de
Great!  :)

Two more questions:

I'm unsure about the pinout in the pictures you provided. Is the pinout as shown in the picture below correct?



If so, I see that the LED pin is not connected - does that mean that the LED of the silver fob will be dead?
« Last Edit: January 08, 2018, 07:31:57 pm by Luxkeiwoker »
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
Yes, your pinout is correct. "Schematic"attached below also shows connections of HCS300 when fitted upside down.

The LED in new fob will be driven by the PWM pin so should light up.
 

Offline cesarsoto

  • Newbie
  • Posts: 1
  • Country: us
Can you send the ebay link of the controllers you bought?

Thank you
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
Not sure if you are asking me or Luxkeiwoker.

I bought mine a few years ago now but fobs that look identical are still abound on ebay.com, try searching for "cloning remote control keyfob".

For example:
ebay.com/itm/292504288362
« Last Edit: May 13, 2018, 09:09:49 am by voltsandjolts »
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
Re: Microchip KeeLoq Classic - New firmware for garage door receiver + new fobs
« Reply #13 on: September 18, 2020, 06:31:01 pm »
OK, 4 years have passed, time to replace fobs again.

Looks like remote fobs on eBay with "HCS301" in the title do have the right footprint and circuit for it, although I am sure the chip is fake.
I'll try swapping my HCS301 chip from the old fobs next week...

Edit: Added receiver board schematic.
Edit2: The HCS301 IC moulding looked poor and chip would not program from MPLABX as other HCS ICs have, so I assumed fake. But the the chip die has a microchip logo on it, so I'm not 100% sure now.
Edit3: Swapping the HCS301 to these keyfobs worked. Out of eight of these keyfobs, two had dodgy buttons. Also the battery isn't held very well so I added a little RTV to hold it.
« Last Edit: October 01, 2020, 06:00:03 pm by voltsandjolts »
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
Re: Microchip KeeLoq Classic - New firmware for garage door receiver + new fobs
« Reply #14 on: September 23, 2020, 07:24:01 pm »
Programming KeeLoq keyfob ICs

Just to be clear, you can't program new keyfobs to work with some other manufacturers system - you would need to know their secret 64-bit manufacturer key.

If you code your own receiver (using firmware from first post of this thread), then you can make up your own secret manufacturer key and program keyfob ICs (such as HCS301) to work in your own system.

Recommended setup for this is MPLABX 5.35 with the Keeloq plugin installed (Tools > Plugins > MPLABX KeeLoq Plugin)
Start new project, select your KeeLoq IC, select MPASM as the 'compiler'.
Run the Keeloq plugin which will generate an ASM file which can be assembled and downloaded to the IC.
PicKit4 works for HCS301.

I recommend MPLABX 5.35 because that is apparently the last version which includes MPASM (MPASMX) which is needed for KeeLoq support.
Newer MPLABX versions instead include the xc8 assembler which doesn't support HCS301 or (probably) other KeeLoq ICs.
Older MPLABX may also work.

Settings I have used for the Keeloq Plugin are shown in screenshot attached.
This shows a 64-bit manufacturer key of 0x123456789ABCDEFF which matches that used in the receiver code given in the first post of this thread (see keygen.c).
Only the slowest baud rate (400us) works with these eBay keyfobs (400us timing setup in receiver also, see interrupts.c)
I think user serial can be anything you like (28-bit).
« Last Edit: September 26, 2020, 03:05:34 pm by voltsandjolts »
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
Re: Microchip KeeLoq Classic - New firmware for garage door receiver + new fobs
« Reply #15 on: September 23, 2020, 07:25:02 pm »
The source code in the first post here now has a configuration for PIC18F1330, 18pin micro, which will work with the keyfob programming above (reply #14).
The PIC18F1330 will fit and function in these eBay boards:

(Remember to change the manufacturer code in keygen.c to something unique to you, same code in receiver and all keyfobs)
« Last Edit: October 01, 2020, 06:02:15 pm by voltsandjolts »
 


Offline rtek1000

  • Contributor
  • Posts: 24
  • Country: br
Hello,

Great work with PIC18!

I bought a controller with HCS201, and I would like to make a receiver, I noticed that I can use HCS500, HCS512 or HCS515, in addition to being able to make the receiver with a microcontroller. I'm still seeing the feasibility of using only the microcontroller.

Does anyone know if an alternative code to receive signal from the KeeLoq controller should be subject to the license conditions imposed by Microchip?

Microchip offers the KeeLoq standard under a license to use.

There are 3 types of KeeLoq, Classic (HCSxxx), Advanced (MCS3122) and Ultimate (MCS3142) (AES128).

http://ww1.microchip.com/downloads/en/DeviceDoc/41256A.pdf

http://ww1.microchip.com/downloads/en/DeviceDoc/40001762A.pdf

http://ww1.microchip.com/downloads/en/DeviceDoc/40001747A.pdf


HCxxx:
• HCS200 - KEELOQ Code Hopping Encoder (Up to 7 functions can be implemented / 3.5–13.0V operation)
• HCS201 - KEELOQ Code Hopping Encoder (Up to 7 functions can be implemented / 2.0V min. using the Step up feature / 3.5–13.0V operation)
• HCS300 - KeeLoQ Code Hopping Encoder (Up to 15 functions can be implemented / 2.0V - 6.3V operation)
• HCS301 - KEELOQ Code Hopping Encoder (Up to 15 functions can be implemented / 3.5–13.0V operation)
• HCS320 - KEELOQ Code Hopping Encoder (Up to 16 functions can be implemented / 3.5–13.0V operation)
• HCS360 - KeeLoQ Code Hopping Encoder (Up to 15 functions can be implemented / 2.0V - 6.6V operation / PWM and Manchester modulation)
• HCS361 - KeeLoQ Code Hopping Encoder (Up to 15 functions can be implemented / 2.0V - 6.3V operation / PWM and VPWM modulation)
• HCS362 - KeeLoQ Code Hopping Encoder (Up to 15 functions can be implemented / 2.0V - 6.3V operation / PWM and Manchester modulation)
• HCS410 - KEELOQ Code Hopping Encoder and Transponder (Up to 7 functions can be implemented / Battery-less / 2.0V - 6.6V, 13V encoder only operation)
• HCS412 - KEELOQ Code Hopping Encoder and Transponder (Up to 7 functions can be implemented / Battery-less / 2.0V - 6.3V, 13V encoder only operation)
• HCS500 - KeeLoq Code Hopping Decoder (Serial interface / Stand-Alone 1CH / 3.0 – 5.5V operation)
• HCS512 - KeeLoq Code Hopping Decoder (Serial PWM interface / Stand-Alone 4CH / 3.0 – 6.0V operation)
• HCS515 - KeeLoq Code Hopping Decoder (Serial interface / Stand-Alone 2CH / 4.5 – 5.5V operation)

I found a code for HCS301 (I don't know if it works):
https://forum.arduino.cc/t/solucionado-keeloq-muestra-datos-recibidos-al-reves/587938/7


Code: [Select]
#define LED_PIN        13
#define HCS_RECIEVER_PIN  2    // Pin al que está conectado el receptor para los mandos.
 byte Canal;

class HCS301 {
public:
   unsigned BatteryLow : 1;  // En el llavero estaba la batería.
   unsigned Repeat : 1; // повторная посылка
   unsigned BtnNoSound : 1;
   unsigned BtnOpen : 1;
   unsigned BtnClose : 1;
   unsigned BtnRing : 1;
   unsigned long SerialNum;
   unsigned long Encript;
   

   void print();
};

volatile boolean  HCS_Listening = true;
byte        HCS_preamble_count = 0;
uint32_t      HCS_last_change = 0;
uint32_t      HCS_start_preamble = 0;
uint8_t       HCS_bit_counter;        // счетчик считанных бит данных
uint8_t       HCS_bit_array[66];        // массив считанных бит данных
#define       HCS_TE    400         // типичная длительность имульса Te
#define       HCS_Te2_3 600         // HCS_TE * 3 / 2

HCS301 hcs301;

#define HCS_DEBUG_

#ifdef HCS_DEBUG

uint16_t HCS_PulseDuration[12];
uint16_t HCS_BitDuration[66];
uint32_t HCS_msg_duration;

struct dta_ {
   uint16_t delay;
   byte f;
   byte st;
};

volatile dta_ arr[1000];
volatile int poz_a = 0,poz_b = 0;
#endif

void HCS301::print(){
   String btn;

   if (BtnRing == 1) btn += "Ring";
   if (BtnClose == 1) btn += "Close";
   if (BtnOpen == 1) btn += "Open";
   if (BtnNoSound == 1) btn += "NoSound";

   String it2;

   it2 += " Serie ";
   it2 += SerialNum;
   it2 += " ";

   it2 += "Rolling Code ";
   it2 += Encript;

   it2 += btn;
   it2 += " BatteryLow=";
   it2 += BatteryLow;
   it2 += " Rep=";
   it2 += Repeat;

   //Serial.println(it2);
   Serial.print("Canal ");
   Serial.print(Canal,HEX);
   Serial.print("\t");
   Serial.print("Serie ");
   Serial.print(SerialNum,HEX);
   Serial.print("\t");
   Serial.print("Rolling Code ");
   Serial.print(Encript,HEX);
   Serial.println("");


}

void setup() {
   
   Serial.begin(9600);
   attachInterrupt(0, HCS_interrupt, CHANGE);

   pinMode(LED_PIN, OUTPUT);
   pinMode(HCS_RECIEVER_PIN, INPUT);
}

void loop() {

   if(HCS_Listening == false){

     HCS301 msg;
     memcpy(&msg,&hcs301,sizeof(HCS301));

     msg.print();
     #ifdef HCS_DEBUG
     if(msg.SerialNum != 639){

       Serial.println("Raw >>>>>>>>>>>>>>>>>>>>>>>");
       while(1){
         if(poz_b == poz_a) break;
         Serial.println(String(poz_b)+String("   
")+String(arr[poz_b].delay)+String("   ")+String(arr[poz_b].f == 0 ?
"LOW":"HIGH")+String("   ")+String(arr[poz_b].st));
         poz_b++;
       }
       Serial.println("Data >>>>>>>>>>>>>>>>>>>>>>>");
       for(int i = 0;i<66;i++){  Serial.println(HCS_bit_array[i]);   }
     } else {

     }
     poz_a = 0,poz_b = 0;
     #endif

     HCS_Listening = true;
   }
}

//

void HCS_interrupt(){

   if(HCS_Listening == false){
     return;
   }

   uint32_t cur_timestamp = micros();
   uint8_t  cur_status = digitalRead(HCS_RECIEVER_PIN);
   uint32_t pulse_duration = cur_timestamp - HCS_last_change;
   HCS_last_change     = cur_timestamp;

   #ifdef HCS_DEBUG
   if(poz_a < 999){
     arr[poz_a].delay = pulse_duration;
     arr[poz_a].f = cur_status == HIGH ? 0 : 1;
     poz_a++;
   }
   #endif

   // ловим преамбулу
   if(HCS_preamble_count < 12){
     if(cur_status == HIGH){
       if( ((pulse_duration > 200) && (pulse_duration < 400)) || HCS_preamble_count == 0){
         // начало импульса преамбулы
         if(HCS_preamble_count == 0){
           HCS_start_preamble = cur_timestamp; // Отметим время старта преамбулы
         }
       } else {
         // поймали какую то фигню, неправильная пауза между импульсами
         HCS_preamble_count = 0; // сбрасываем счетчик пойманных импульсов преамбулы
         goto exit;

       }
     } else {
       // конец импульса преамбулы
       if((pulse_duration > 400) && (pulse_duration < 600)){
         #ifdef HCS_DEBUG
           HCS_PulseDuration[HCS_preamble_count] = pulse_duration;
         #endif
         // поймали импульс преамбулы
         HCS_preamble_count ++;
         #ifdef HCS_DEBUG
         arr[poz_a-1].st = HCS_preamble_count;
         #endif
         if(HCS_preamble_count == 12){
           // словили преамбулу
           //HCS_Te = (cur_timestamp - HCS_start_preamble) / 23;  // вычисляем длительность базового импульса Te
           //HCS_Te2_3 = HCS_Te * 3 / 2;
           HCS_bit_counter = 0;
           goto exit;
         }
       } else {
         // поймали какую то фигню
         HCS_preamble_count = 0; // сбрасываем счетчик пойманных импульсов преамбулы
         goto exit;
       }
     }
   }


   // ловим данные
   if(HCS_preamble_count == 12){
     if(cur_status == HIGH){
       if(((pulse_duration > 300) && (pulse_duration < 900)) || HCS_bit_counter == 0){
         // начало импульса данных
       } else {
         // неправильная пауза между импульсами
         HCS_preamble_count = 0;
         goto exit;
       }
     } else {
       // конец импульса данных
       if((pulse_duration > 300) && (pulse_duration < 900)){
         HCS_bit_array[65 - HCS_bit_counter] = (pulse_duration >
HCS_Te2_3) ? 0 : 1; // импульс больше, чем половина от Те * 3 поймали 0, иначе 1

         #ifdef HCS_DEBUG
         HCS_BitDuration[HCS_bit_counter] = pulse_duration;
         #endif
         HCS_bit_counter++;
         #ifdef HCS_DEBUG
         arr[poz_a-1].st = HCS_bit_counter;
         #endif
         if(HCS_bit_counter == 66){
           // поймали все биты данных

           HCS_Listening = false;  // отключем прослушку приемника, отправляем пойманные данные на обработку
           HCS_preamble_count = 0; // сбрасываем счетчик пойманных импульсов преамбулы
           #ifdef HCS_DEBUG
           HCS_msg_duration = cur_timestamp - HCS_start_preamble;
           #endif

           hcs301.Repeat = HCS_bit_array[0];
           hcs301.BatteryLow = HCS_bit_array[1];
           hcs301.BtnNoSound = HCS_bit_array[2];
           hcs301.BtnOpen = HCS_bit_array[3];
           hcs301.BtnClose = HCS_bit_array[4];
           hcs301.BtnRing = HCS_bit_array[5];

           Canal=HCS_bit_array[5]+2*HCS_bit_array[4]+4*HCS_bit_array[3]+8*HCS_bit_array[2];

           hcs301.SerialNum = 0;
           for(int i = 6; i < 34;i++){
             hcs301.SerialNum = (hcs301.SerialNum << 1) + HCS_bit_array[i];
           };

           uint32_t Encript = 0;
           for(int i = 34; i < 66;i++){
              Encript = (Encript << 1) + HCS_bit_array[i];
           };
           hcs301.Encript = Encript;
         }
       } else {
         // поймали хрень какую то, отключаемся
         HCS_preamble_count = 0;
         goto exit;
       }
     }
   }

   exit:;

   //digitalWrite(LED_PIN,cur_status);
}


https://www.microchip.com/en-us/solutions/wireless-connectivity/rf-remotes/ultimate-keeloq-technology

As I understand it, to work with KeeLoq it is necessary to accept the conditions, this one is for the decoder (and it has for the encoder):

https://www.microchip.com/en-us/solutions/wireless-connectivity/rf-remotes/ultimate-keeloq-technology/keeloq-technology-encoder-download

https://www.microchip.com/en-us/solutions/wireless-connectivity/rf-remotes/ultimate-keeloq-technology/keeloq-technology-decoder-download


## Terms and Conditions:

Quote
End User License Agreement for
Microchip KEELOQ(r) Decoder Software and Proprietary Documentation

IMPORTANT - READ CAREFULLY.  This License Agreement is a legal agreement between you (either an individual or a single entity) and Microchip Technology Incorporated and its subsidiary Microchip Technology (Barbados) Incorporated (in the aggregate referred to as "Microchip") for Microchip’s KEELOQ® Software (hereinafter the "Software") and accompanying proprietary documentation (hereinafter the "Proprietary Documentation").  The Software and Proprietary Documentation provided herewith are intended, and supplied to you, for use solely and exclusively in a system that incorporates Microchip encoder and Microchip decoder products and for no other use or purpose whatsoever.  Microchip will license the Software and Proprietary Documentation to you only if you first accept the terms of this agreement.  By indicating acceptance below, or by otherwise installing, copying or using the Software or Proprietary Documentation, you are agreeing to be bound by the terms of this agreement.  If you do not agree to the terms of this agreement, so indicate below and promptly destroy the software or return the unused Software for a full refund of moneys paid, if any.

THE SOFTWARE AND PROPRIETARY DOCUMENTATION MAY BE ACCESSED ONLY IF YOU ACCEPT THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT.  PLEASE INDICATE YOUR ACCEPTANCE OR NON-ACCEPTANCE BY SELECTING "I ACCEPT" OR "I DO NOT ACCEPT" AS INDICATED BELOW.

The Software and Proprietary Documentation are protected by U.S. copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. 

1. Ownership and Title.

      All right, title and interest, including intellectual property rights, in and to the Software and the Proprietary Documentation shall remain in Microchip. The Software and Proprietary Documentation are licensed pursuant to this agreement, not sold.  Microchip owns all proprietary rights to the KEELOQ® secure access control technology, including, but not limited to, code hopping, bi-directional authentication and self learning as implemented in KEELOQ® technology including all hardware and software implementations of the technology. Microchip reserves all rights not expressly granted to you.

2. Grant of Limited License and Restrictions.

      Subject to all of the terms and conditions of this agreement, Microchip grants to you a worldwide, fully paid-up, non-exclusive license to reproduce, have reproduced, market, sell, distribute and use the Software, for the sole and limited purpose of integrating the Software into your own "conforming systems" that you will distribute.  Conforming systems are those systems, which incorporate Microchip encoder and Microchip decoder products in the same system.   No license is hereby granted to the Software for any other purpose and no license is granted to distribute the software in a form other than as part of a conforming system.

Subject to all of the terms and conditions of this agreement, Microchip further hereby grants to you a world-wide, fully paid-up, non-exclusive license to use the Proprietary Documentation provided with the Software internally only. The Proprietary Documentation may not be reproduced, copied or disclosed to parties other than Microchip.

You may enter into agreements or arrangements with individuals or entities other than Microchip for the reproduction of the Software; provided, however, that you, prior to any negotiations or discussion with individuals other than Microchip with respect to the reproduction of Software, first obtain an executed non- disclosure/confidentiality agreement with those individuals or entities in a form and content approved in advance by Microchip that requires all reproductions be incorporated into your conforming products. All copies of the Software created by you or for you must include at least the Microchip’s copyright, trademark and other proprietary notices.

You may not remove or alter any Microchip copyright or other proprietary rights notice contained in any portion of the Software or Proprietary Documentation that bear such a notice or in any reproductions thereof.  You may not remove or alter any identifying screen that is produced by the Software.

You may modify, adapt and prepare derivative works of the Software only as necessary to incorporate the Software into your conforming products, and may distribute any such derivative works as part of your conforming products without additional license or fees, subject to all of the terms and conditions of this agreement.  You may not prepare derivative works of the Proprietary Documentation.

This license is not transferable or sub-licensable. Neither this agreement nor any rights, licenses or obligations hereunder, may be assigned by you without the prior written approval of Microchip.

This license does not allow any sublicense, distribution or disclosure of the Software source code or Proprietary Documentation or any other proprietary rights to any third party in any circumstance or manner, and you agree that you will not engage in any such sublicensing, disclosure or distribution.

You may use the Software only with respect to the manufacture and sale of your own conforming products.  You have no right to sell, assign, lend, rent, lease or otherwise transfer all or any portion of the Software or the proprietary rights for the Software except as expressly set forth herein, and this agreement grants no additional manufacturing, sales or marketing rights.  You may not permit others to use or access the Software or Proprietary Documentation except as expressly permitted.

You may not reverse engineer (by disassembly, decompilation or otherwise) the Software and may not copy or reproduce all or any portion of the Software, except and only to the extent that such activity is specifically allowed by this agreement or expressly permitted by applicable law notwithstanding the foregoing limitations. You may not copy or reproduce all or any portion of the Proprietary Documentation without the express written consent of Microchip.

3. Confidentiality.

      You agree not to disclose confidential information respecting the Software and Proprietary Documentation to any third party.  Confidential information shall not include any information which is in or becomes part of the public domain or which is independently developed or which is independently obtained free from any obligation of confidentiality.

4. Termination of Agreement.

      Without prejudice to any other rights, Microchip may terminate this agreement if you fail to comply with the terms and conditions of this agreement.  Upon termination, you will immediately destroy all copies of the Software and will return all Proprietary Documentation.  You will have a reasonable period after the termination of this Agreement to sell the existing inventory of your conforming systems.

5. Indemnity.

      You will indemnify and hold Microchip, its related companies and its suppliers harmless for, from and against, any claims or liabilities, including without limitation product liability claims, arising out of the use, reproduction or distribution of your products that incorporate the Software, or any unauthorized use or sale by you of your product or any unauthorized use or disclosure of any information regarding the Software, the Proprietary Documentation or any other proprietary rights of Microchip.

6. Limited Warranty and Limited Liability.

      The only warranty made by Microchip is that the original physical media in which the Software is embodied and which are distributed by Microchip shall be free of defects in materials and workmanship for a period of 90 days after delivery to you.  Microchip’s and its suppliers’ entire liability and your exclusive remedy shall be limited to the replacement of the original physical media, if defective, within a reasonable period of time.

EXCEPT AS SPECIFICALLY PROVIDED IN THE PREVIOUS TWO SENTENCES, THE
SOFTWARE AND  PROPRIETARY DOCUMENTATION IS PROVIDED "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESS OR  IMPLIED, INCLUDING WITHOUT
LIMITATION, ANY  WARRANTY OF MERCHANTABILITY, WARRANTY OF FITNESS FOR
A PARTICULAR PURPOSE, AND WARRANTY OF NON-INFRINGEMENT OF ANY
INTELLECTUAL PROPERTY RIGHT OF A THIRD PARTY. 

THE ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE AND
OTHER DOCUMENTATION PROVIDED UNDER THIS AGREEMENT IS ASSUMED BY YOU,
AND MICROCHIP DISCLAIMS ALL RESPONSIBILITY FOR THE ACCURACY OR
APPLICATION OR OF ERRORS OR OMISSIONS IN THE SOFTWARE AND DOES NOT
WARRANT THE FUNCTIONS CONTAINED IN THE SOFTWARE WILL MEET YOUR
REQUIREMENTS OR THAT THE OPERATION OF THE SOFTWARE WILL BE
UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS IN THE SOFTWARE WILL
BE CORRECTED.  IN NO EVENT SHALL MICROCHIP BE LIABLE FOR ANY DIRECT,
INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS
OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR
SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO
ANY DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR
OTHER SIMILAR COSTS.

7. Patent and Copyright Infringement.

      YOU ACKNOWLEDGE THAT (a) KEELOQ® SOFTWARE, EMBEDDED TECHNOLOGY,
      OR SERVICES RELATED THERETO ( HEREAFTER "KEELOQ") PERTAIN TO
      ENCODING AND DECODING FUNCTIONS, (b) THE DESIGN OF ALL ASPECTS
      OF ANY PRODUCT(S) OR SYSTEM(S) EMPLOYING KEELOQ IS SOLELY YOUR
      RESPONSIBILITY, AND (c) IT IS SOLELY YOUR RESPONSIBILITY TO
      DETERMINE WHETHER YOUR PRODUCTS OR SYSTEMS EMPLOYING KEELOQ
      INFRINGE A PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS OF
      THIRD PARTIES. YOU AGREE THAT MICROCHIP SHALL HAVE NO OBLIGATION
      TO INDEMNIFY OR DEFEND YOU IN THE EVENT THAT A THIRD PARTY
      ASSERTS OR PROVES A CLAIM THAT ONE OR MORE OF YOUR SYSTEMS OR
      PRODUCTS EMPLOYING KEELOQ INFRINGE A THIRD PARTY’S PATENTS,
      COPYRIGHTS, OR OTHER PROPRIETARY RIGHTS (HEREINAFTER A "CLAIM").
      YOU HEREBY WAIVE ANY RIGHT TO CAUSE MICROCHIP TO DEFEND OR
      INDEMNIFY YOU OR ANY OF YOUR CUSTOMERS IN CONNECTION WITH A
      CLAIM, INCLUDING BUT NOT LIMITED TO ANY SUCH RIGHT AS MAY BE
      IMPOSED OR IMPLIED BY LAW, STATUTE, OR COMMON LAW.

      IF A SUIT OR PROCEEDING IS BROUGHT AGAINST MICROCHIP BASED ON A
      CLAIM THAT KEELOQ SUPPLIED BY MICROCHIP TO YOU CONSTITUTE
      INFRINGEMENT OF A PATENT, COPYRIGHT, DATA BASE RIGHT, TRADEMARK
      OR OTHER INTELLECTUAL PROPERTY RIGHT WHERE THE ALLEGED
      INFRINGEMENT IS BASED ON (a) MICROCHIP’S COMPLIANCE WITH YOUR
      DESIGNS OR SPECIFICATIONS, OR (b) YOUR USE OF KEELOQ IN
      COMBINATION WITH ANY OTHER PRODUCT OR IN A PROCESS (WHETHER
      DIRECT OR CONTRIBUTORY  INFRINGEMENT), OR (c) YOUR OR ANYONE
      ELSE’S MODIFICATION OF KEELOQ AFTER MICROCHIP DELIVERS IT TO
      YOU, OR (d) YOUR USE OF KEELOQ IN A MANNER FOR WHICH IT WAS NOT
      DESIGNED, YOU SHALL DEFEND MICROCHIP AGAINST SUCH CLAIM AND
      SHALL INDEMNIFY MICROCHIP AND HOLD MICROCHIP HARMLESS FOR, FROM
      AND AGAINST ALL DAMAGES AND COSTS AWARDED AGAINST MICROCHIP.

      THE FOREGOING STATES THE SOLE AND EXCLUSIVE REMEDY AND LIABILITY
      OF THE PARTIES FOR INTELLECTUAL PROPERTY INFRINGEMENT.  IN NO
      EVENT SHALL MICROCHIP BE LIABLE TO YOU OR YOUR CUSTOMERS FOR ANY
      SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES FOR
      INTELLECTUAL PROPERTY INFRINGEMENT, INCLUDING BUT NOT LIMITED TO
      ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION.

8. General.

      Nothing in this agreement constitutes a waiver of Microchip’s
      rights under U.S. copyright laws or any other federal, state,
      local or foreign law.  You are responsible for installation,
      management and operation of the Software.  This agreement shall
      be construed, interpreted and governed by the laws of the State
      of Arizona, without regard to its conflicts of laws provisions.
      If any provision of this agreement is found void or
      unenforceable, the remainder of the agreement will remain valid
      and enforceable according to its terms.  If any remedy provided
      is determined to have failed of its essential purpose, all
      limitations of liability and exclusion of damages set forth in
      the limited warranty shall remain in effect.

You agree to comply with all export laws, restrictions and regulations
of the U.S. Department of Commerce or other United States or foreign
agency or authority.

If you have any questions concerning this agreement, please write
Microchip Technology Inc. 2355 W. Chandler Blvd. Chandler, AZ  85224
USA, ATTN: Legal Department

Copyright © 2006, Microchip Technology Incorporated, 2355 West
Chandler Blvd, Chandler, AZ 85224-6199, U.S.A.  All rights reserved.
Microchip and KEELOQ® are registered trademarks of Microchip
Technology Incorporated. Decoder 071906

KEELOQ HCS1XX/2XX/3XX Encoder Family:
https://ww1.microchip.com/downloads/en/DeviceDoc/41162a.pdf

KEELOQ HCS5XX Decoder Family:
https://ww1.microchip.com/downloads/en/DeviceDoc/41161a.pdf

TB001 - Secure Learning RKE Systems Using KEELOQ Encoders:
http://ww1.microchip.com/downloads/en/AppNotes/91000a.pdf

TB003 - An Introduction to KeeLoq Code Hopping:
http://ww1.microchip.com/downloads/jp/AppNotes/91002a.pdf

TB021 – A Guide to Designing for EuroHomelink Compatibility:
http://ww1.microchip.com/downloads/cn/devicedoc/cn_00711a.pdf

TB042 - Interfacing a KEELOQ Encoder to a PLL Circuit:
http://ww1.microchip.com/downloads/en/Appnotes/91042a.pdf

TB043 - KEELOQ CRC Verification Routines:
http://ww1.microchip.com/downloads/en/Appnotes/91043a.pdf

AN217 - KEELOQ HCS30X, HCS200 Stand-Alone Programmer:
http://ww1.microchip.com/downloads/en/AppNotes/00217a.pdf

AN645 - PIC16C57 Based Code Hopping Security System:
http://ww1.microchip.com/downloads/en/AppNotes/00645C.pdf

AN661 - Code Hopping Decoder Using a PIC16C56:
http://ww1.microchip.com/downloads/en/AppNotes/00661C.pdf

AN662 - KEELOQ Code Hopping Decoder Using Secure Learn:
http://ww1.microchip.com/downloads/en/AppNotes/00662C.pdf

AN663 - KEELOQ Simple Code Hopping Decoder:
http://ww1.microchip.com/downloads/en/AppNotes/00663C.pdf

AN665 - Using KEELOQ to Generate Hopping Passwords:
http://ww1.microchip.com/downloads/en/AppNotes/00665B.pdf

AN672 - PIC MCU Mid-Range Code Hopping Decoder:
http://ww1.microchip.com/downloads/en/AppNotes/00672D.pdf

AN714 - Wireless Home Security Implementing KEELOQ and the PIC Microcontroller
http://ww1.microchip.com/downloads/en/AppNotes/00714B.pdf

AN740 - Decoding the HCS101 for Non-Secure Applications:
http://ww1.microchip.com/downloads/en/AppNotes/00740a.pdf

AN742 - Modular PICmicro Mid-Range MCU Code Hopping Decoder:
http://ww1.microchip.com/downloads/en/appnotes/00742b.pdf

AN744 - Modular Mid-Range PICmicro KEELOQ Decoder in C:
http://ww1.microchip.com/downloads/en/appnotes/00744a.pdf

AN745 - Modular Mid-Range PICmicro KeeLoq Decoder in C:
https://github.com/hnhkj/documents/blob/master/KEELOQ/docs/AN745/00745a_c.pdf

AN1259 - KeeLoq Microcontroller-based Code Hopping Encoder:
http://ww1.microchip.com/downloads/en/Appnotes/01259B.pdf

AN1265 - KeeLoq with AES Microcontroller-Based Code Hopping Encoder:
http://ww1.microchip.com/downloads/en/Appnotes/01265B.pdf

AN1266 - KeeLoq with XTEA Microcontroller-Based Code Hopping Encoder:
http://ww1.microchip.com/downloads/en/Appnotes/01266B.pdf

AN1275 - KEELOQ with Advanced Encryption Standard (AES) Receiver/Decoder:
http://ww1.microchip.com/downloads/en/AppNotes/01275A.pdf

AN1683A - Introduction to Ultimate KeeLoq Technology:
http://ww1.microchip.com/downloads/en/AppNotes/00001683A.pdf

Programming KEELOQ Devices with the PRO MATE II Device Programmer:
http://ww1.microchip.com/downloads/en/DeviceDoc/50033b.pdf

Ultimate KeeLoq Technology, the Next Generation of Security:
http://ww1.microchip.com/downloads/en/DeviceDoc/00001577a.pdf

KEELOQ Code Hopping Devices:
http://ww1.microchip.com/downloads/en/DeviceDoc/keeloq.pdf

KEELOQ Transponder Evaluation Kit:
http://static6.arrow.com/aropdfconversion/2e3484d7effb3dd21ffb2b90310756393ace055/51147e.pdf

KEELOQ EVALUATION KIT USER’S GUIDE:
http://ww1.microchip.com/downloads/en/devicedoc/51044d.pdf

KEELOQ EVALUATION KIT II User’s Guide:
http://ww1.microchip.com/downloads/en/DeviceDoc/41155a.pdf

KEELOQ 3 Development Kit User’s Guide:
http://ww1.microchip.com/downloads/en/devicedoc/41378a.pdf

Wireless Remote Control Development Kit - 433.92 MHz:
https://www.microchip.com/Developmenttools/ProductDetails/DM182017-1

Wireless Remote Control Dev Kit Firmware:
https://ww1.microchip.com/downloads/en/DeviceDoc/Microchip%20Wireless%20Remote%20Control%20Development%20Kit%20Software%20v2012-09-17.zip

Wireless Security Remote Control Development Kit User’s Guide:
https://ww1.microchip.com/downloads/en/DeviceDoc/41646A.pdf

Integrated MCU with RF Transmitter on a Single Chip:
https://ww1.microchip.com/downloads/en/DeviceDoc/41612b.pdf

« Last Edit: July 23, 2021, 05:52:16 pm by rtek1000 »
 

Offline voltsandjoltsTopic starter

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
Re: Microchip KeeLoq Classic - New firmware for garage door receiver + new fobs
« Reply #18 on: February 23, 2024, 07:00:05 pm »
@cinpezzo

your message inbox is full so I can't respond...the message limit will be removed if you make some posts in the forum.

FYI for others, cinpezzo was seeing a Keeloq problem described at this link...haven't investigated myself:

https://forum.microchip.com/s/topic/a5C3l000000MeCbEAK/t384592

Quote
This HCS300 is learned by the HCS515 without issues and works!
With SN 1234568 or ... 566 it does not lean! Receives everything but RES bit is 0, and do not work after learning!
If I select SN xxxx167 and discrimination 167 it works!...
What am I doing wrong?

Quote
Hi,
I'm having the same issues with HCS300 and using my project with Pic18 for decoding. From my investigation the issues seems to be related to the last 4 discrimination bits. The 12 discrimination bits, after the decoding, should be equal to the last 12 bits of the HCS300 user serial number. What I found is that the last 4 discrimination bits have always fixed value of "7", independently from how you set those bits in the HCS eeprom. In this way the decoding works properly just in case you chose a user serial number having "7" as last digit.

Does anyone face this issue? What could be the reason? How to fix it?
Thanks!!

« Last Edit: February 24, 2024, 09:37:06 am by voltsandjolts »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf