

Note: while in the examples, I fill in the bytes necessary to make each packet 64 bytes long with zeroes, the actual reader and it's companion software does not and it looks like it justs sends whatever was last in memory where it's reading from (this tripped me up a bunch early on since I was trying to make sense of the whole packet). For example, a header byte of 0b11000010 (0xC2) has the first packet in sequence bit (0b10000000) set, the last packet in sequence bit (0b01000000) set, and has a payload length of 0b00000010 (2). The 1 byte header is made up of a single bit indicating if this packet is the first in the sequence of packets encapsulating a particular message, another single bit that indicates if this is the last packet in a sequence, and a 6 bit unsigned integer representing the length of the payload in the current packet. A 64 byte USB HID packet is then constructed from a 1 byte header, a chunk of the message, and sometimes some extra bytes to make the packet exactly 64 bytes regardless of the size of the chunk. Messages to be sent over USB are split into chunks with a maximum size of 63 bytes. This item: MSR605X USB Card Reader Writer Mag Swipe 3-Track Compatible w/ MSR206 MSR605 MSR606. A power plug adapter may be required to fit UAE sockets. Communication and power supply by USB cable. The MSR605's serial protocol is documented in section 6 of the MSR605 Programmer's Manual. Provide software for Windows and Mac computers. The MSR605X uses 64 byte USB HID packets to encapsulate what appears to be the MSR605's serial protocol. The MSR605X appears as a USB HID device and uses a protocol that appears to be a small wrapper around the older serial protocol used by other MSR This is an in progress library for the MSR605X magstripe reader/writer.

WIP MSR605X magstripe reader/writer library
