It's a generic USB reader for Mifare 1K Classic cards.  The reader puts out
a 13.5 MHz field which is picked up by a few turns of wire embedded in the
card.  The field provides power to the chip, which can then do
bidirectional communication with the reader.  This is a simple reader that
only grabs the CSN, card serial number.  It's a 32-bit code which this
reader gives me as 8 hexadecimal digits.  The range of the card/reader is
about 1-1/2" so a 'tap' of the card on the reader yields a solid read every
time.

It's HID, so it outputs 'scan codes' as detailed above.  Tilghman offers an
interesting approach, still not quite sure how I'd go about that.

If these were Hollerith cards, you'd have to call me Hangin' Chad…

On Mon, Aug 31, 2015 at 1:24 PM, Jack Coats <[email protected]> wrote:

> I am to old... I thought you were talking 80 or (the smaller) 96 column
> cards! ... Many of those readers put out EBCDIC instead of ASCII.
> But as always, I digress into ancient history when mainframes roamed the
> earth.
>
> Now that I am past the 20th century in my thinking, what flavor of card
> reader are you using?  How is it connected?
>
> On Sun, Aug 30, 2015 at 8:19 PM, Tilghman Lesher <[email protected]>
> wrote:
>
>> Sounds like what you're talking about is that the device is acting as
>> a keyboard wedge -- that is, it's inserting a stream of characters
>> into the keyboard buffer, probably through its device driver.  I have
>> a magnetic card reader here that works in precisely the same way.
>>
>> The long and short of it is that your program would need to be running
>> in the foreground; that is, having its stdin being supplied by the
>> console.  Probably the best way to do this in Linux on boot would be
>> to have your program run directly from init, associated with tty1, NOT
>> background itself, and as long as the machine stays on that terminal
>> device (and it should), your program should get all keyboard input
>> directly from stdin (fd 0).
>>
>>
>> On Sun, Aug 30, 2015 at 8:01 PM, Curt Lundgren <[email protected]>
>> wrote:
>> > I'm working on a program for a Raspberry Pi (one of the cool new ones
>> with
>> > the quad-core CPU and a gigabyte of RAM).  The program will run as a
>> daemon
>> > and this unit is headless - there's no keyboard plugged in.  Just a USB
>> > Mifare HID card reader that outputs 8 hex characters when a card is in
>> > proximity, then an 'Enter.'
>> >
>> > It's actually outputting scan codes, but I figure I can convert them to
>> the
>> > appropriate hex codes.
>> >
>> > I understand if I was running on the console, tapping a card on the
>> reader
>> > would cause the hex string to be input wherever my cursor is.  I'd love
>> to
>> > be able to redirect that input to my program, but I'm clueless on how
>> that's
>> > done.  My google-fu isn't working for me here either.
>> >
>> > The card reader does show up as /dev/input/event0 and if I cat that, it
>> > outputs a bunch of binary stuff.  I can send it to a file and a hex
>> dump of
>> > part of that file looks like this:
>> >
>> > 00000000: eba1 e355 6032 0600 0400 0400 2700 0700  ...U`2......'...
>> > 00000010: eba1 e355 6032 0600 0100 0b00 0100 0000  ...U`2..........
>> > 00000020: eba1 e355 6032 0600 0000 0000 0000 0000  ...U`2..........
>> > 00000030: eba1 e355 7251 0600 0400 0400 2700 0700  ...UrQ......'...
>> > 00000040: eba1 e355 7251 0600 0100 0b00 0000 0000  ...UrQ..........
>> > 00000050: eba1 e355 7251 0600 0000 0000 0000 0000  ...UrQ..........
>> > 00000060: eba1 e355 ad70 0600 0400 0400 1f00 0700  ...U.p..........
>> > 00000070: eba1 e355 ad70 0600 0100 0300 0100 0000  ...U.p..........
>> > 00000080: eba1 e355 ad70 0600 0000 0000 0000 0000  ...U.p..........
>> > 00000090: eba1 e355 e48f 0600 0400 0400 1f00 0700  ...U............
>> > 000000a0: eba1 e355 e48f 0600 0100 0300 0000 0000  ...U............
>> > 000000b0: eba1 e355 e48f 0600 0000 0000 0000 0000  ...U............
>> > 000000c0: eba1 e355 26af 0600 0400 0400 2400 0700  ...U&.......$...
>> > 000000d0: eba1 e355 26af 0600 0100 0800 0100 0000  ...U&...........
>> > 000000e0: eba1 e355 26af 0600 0000 0000 0000 0000  ...U&...........
>> > 000000f0: eba1 e355 64ce 0600 0400 0400 2400 0700  ...Ud.......$...
>> > 00000100: eba1 e355 64ce 0600 0100 0800 0000 0000  ...Ud...........
>> > 00000110: eba1 e355 64ce 0600 0000 0000 0000 0000  ...Ud...........
>> >
>> > Don't know if the formatting will display properly, but I've bolded a
>> few
>> > bytes.  The 0x27 is '0' and we see keypress and key release.  This is
>> > followed by 0x1F (2) and 0x24 (7) - we march through the rest of the
>> string
>> > and finally arrive at the 0x28 Enter key:
>> >
>> > 00000300: eba1 e355 3626 0800 0400 0400 2800 0700  ...U6&......(...
>> > 00000310: eba1 e355 3626 0800 0100 1c00 0100 0000  ...U6&..........
>> > 00000320: eba1 e355 3626 0800 0000 0000 0000 0000  ...U6&..........
>> > 00000330: eba1 e355 9145 0800 0400 0400 2800 0700  ...U.E......(...
>> > 00000340: eba1 e355 9145 0800 0100 1c00 0000 0000  ...U.E..........
>> > 00000350: eba1 e355 9145 0800 0000 0000 0000 0000  ...U.E..........
>> >
>> > I don't pretend to understand scan codes, but 48 bytes for keypress and
>> > another 48 for key release?  Seems excessive, but it can be handled.
>> The
>> > hex 0x01 below the scan code is keypress, the 0x00 below the other scan
>> > codes is key release.
>> >
>> > Questions:  Can this data be grabbed from some convenient place in the
>> OS,
>> > preferably as a nice 8-character string?  What does the OS do with HID
>> input
>> > when the Pi is running headless?  The current plan says there will
>> never be
>> > a real keyboard plugged in, just the card reader.
>> >
>> > Does anyone know what Linux does with input from an HID device when
>> there's
>> > no session running from the console?  Does it get intercepted by a login
>> > screen?
>> >
>> > OS is Raspbian Wheezy, apparently version 7 on a 3.18.11 kernel.
>> >
>> > TIA
>> >
>> > Curt
>> >
>> > --
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups
>> > "NLUG" group.
>> > To post to this group, send email to [email protected]
>> > To unsubscribe from this group, send email to
>> > [email protected]
>> > For more options, visit this group at
>> > http://groups.google.com/group/nlug-talk?hl=en
>> >
>> > ---
>> > You received this message because you are subscribed to the Google
>> Groups
>> > "NLUG" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> an
>> > email to [email protected].
>> > For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>> --
>> Tilghman
>>
>> --
>> --
>> You received this message because you are subscribed to the Google Groups
>> "NLUG" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/nlug-talk?hl=en
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "NLUG" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> ><> ... Jack
>
> The Four Boxes of Liberty - "There are four boxes to be used in the
> defense of liberty: soap, ballot, jury and ammo. Please use in that order."
> "Whatever you do, work at it with all your heart"... Colossians 3:23
> "Anyone who has never made a mistake, has never tried anything new." -
> Albert Einstein
> "You don't manage people; you manage things. You lead people." - Admiral
> Grace Hopper, USN
> "Tell me and I forget. Teach me and I remember. Involve me and I learn." -
> Ben Franklin
>
> --
> --
> You received this message because you are subscribed to the Google Groups
> "NLUG" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nlug-talk?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "NLUG" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
You received this message because you are subscribed to the Google Groups 
"NLUG" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nlug-talk?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"NLUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to