Go Down

Topic: Indala ASR 503 (Read 3789 times) previous topic - next topic


Hi everyone,

I just got from a friend a HID device, a Indala ASR 503, and I'd like to use it with my Arduino. Device info is here http://www.hidglobal.com/prod_detail.php?prod_id=133 .

I've seen various topics about how to use wiegand with Arduino, and almost all of them pointing to the amazing Crazy people project. Actually, the wiegand part is not really what bothers me. My problem is that I can't make the device work!

I simply tried to hook up the device on my protoboard (the wiring is pretty simple, +5v - gnd , DATA0, DATA1 and leds wire). The led lights on, the device makes a noise so I guess it started up; but when I try and test it with a 125Khz card, nothing happens. The DATA1 and DATA0 line are totally still.

So yeah, I tried to look for a manual or a datasheet on the internet (the one on the HID page is rubbish) but found nothing...

So does any of you has an advice for me, on how to be able to use this reader? How can I make it respond to me? Maybe the 125Khz card is wrong, any idea how I can spoof it (I saw a code on the internet, but as I'm not that familiar with RFID, didn't know how to use it...)? Any idea of where to find that darn datasheet?


No idea if this is still any use to you...

So, only althogh 125kHz, only Indala cards will work, and they'll need to have been programmed to suit the programming of your reader.

The reader programming is usually indicated by a number appended to the model number.

This is the first successful test I had:

Code: [Select]

volatile unsigned long reader1 = 0;

volatile int reader1Count = 0;
volatile int overallCount = 0;

void reader1One(void) {
  reader1 = reader1 << 1;
  reader1 |= 1;

void reader1Zero(void) {
  reader1 = reader1 << 1;

void setup()

  attachInterrupt(0, reader1Zero, RISING);//DATA0 to pin 2
  attachInterrupt(1, reader1One, RISING); //DATA1 to pin 3
  for(int i = 2; i<4; i++){
    pinMode(i, OUTPUT);
    digitalWrite(i, HIGH);
    digitalWrite(i, LOW);
    pinMode(i, INPUT);
    digitalWrite(i, HIGH);
  reader1 = 0;
  reader1Count = 0;

void loop()
  if(reader1Count >=34){
     int serialNumber=(reader1 >> 7) & 0x3fff;
     int siteCode= (reader1 >> 21) & 0x1ff;

     Serial.print("Site code: ");
     Serial.print("Card No: ");
     reader1 = 0;
     reader1Count = 0;

But this is specific to the particular programming mine has. But it essentially pulls one of the two data lines (green and white on mine) high to correspond to 1s and 0s - a total of 34 bits in my case, buried in there is the sitecode and card number.

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131