Key takeaways
- A USB reader in keyboard-emulation (HID) mode needs no driver or software: it types the card number into whatever field has focus, usually followed by Enter.
- Use virtual COM when software must listen in the background or send commands to the reader, and PC/SC (CCID) when an application must read or write card memory, not just the UID.
- One EM card can type 0444314222, 1A7BB26E or 12345678 depending on the output setting, so set the USB reader to the format your access panel or database already stores.
- Most 'wrong number' problems come from the output format, byte order, leading zeros or the PC's keyboard layout, not from a faulty reader or card.
- A UID typed by a keyboard-emulation reader identifies a card but does not authenticate it; use secure sector or application reads where cloning matters.
Most USB RFID readers need no software at all: in keyboard-emulation mode the reader types the card number into whatever field has the cursor, usually followed by Enter. What does need setting up is the number format (decimal, 8H10D, Wiegand 26, hex or reversed bytes), which must match what your attendance, POS or access control database already stores. This guide explains the three USB modes, compares the common formats with worked examples, and covers setup and troubleshooting on each operating system.
Keyboard wedge vs virtual COM vs PC/SC
A USB reader presents itself to the computer as a standard USB device class, and that class decides what software you need. USB desktop RFID readers are usually built in one of three ways, and some models can switch between them.
Keyboard emulation (HID keyboard, “keyboard wedge”). The reader enumerates as a USB keyboard. When a card is presented, it sends the card number as keystrokes, typically followed by Enter. There is no driver to install, and it works with any program that accepts typed text, including web forms and spreadsheets. The trade-offs are that data flows one way only, a text field must have focus, and the characters that appear depend on the computer’s keyboard layout. See keyboard emulation in the glossary.
Virtual COM port (USB CDC or USB-serial). The reader appears as a serial port. Your software opens the port and reads each card as a line of text or as a binary frame defined by the reader’s protocol. Because no focused text field is involved, a background service can capture reads while the user works in other windows. The link is two-way, so software can also drive the buzzer and LED or, on reader/writers, write to tags.
PC/SC (USB CCID smart-card class). The reader appears as a smart-card reader, and applications talk to it through the operating system’s PC/SC interface by sending APDU commands. The standard PC/SC “Get Data” command (FF CA 00 00 00) returns the card UID. Depending on the reader and card, the application can also authenticate and read MIFARE Classic sectors, DESFire files or NTAG pages. PC/SC readers are mostly 13.56 MHz devices.
| Mode | Appears to the OS as | Driver needed | Data direction | Needs a focused text field | Best for |
|---|---|---|---|---|---|
| Keyboard emulation | USB keyboard | No (built in) | Reader to PC only | Yes | Enrollment desks, attendance, POS lookups |
| Virtual COM | Serial port (COM, /dev/tty*) | Built in for CDC; bridge chips may need one | Two-way | No | Kiosks, background services, reader control |
| PC/SC (CCID) | Smart-card reader | Built in on Windows and macOS; pcsc-lite on Linux | Two-way, APDU commands | No | Secure card reads, card memory, encoding |
Why the typed number differs from the number printed on the card
The chip stores a binary ID. The number printed on the card is one conversion of that ID, chosen by whoever printed the card, and the number your reader types is another conversion, chosen by its output setting. When they differ, one of these is usually the reason:
- A different slice of the ID. A 125 kHz EM4100 card carries a 40-bit ID. Printed numbers and reader outputs may use all 40 bits, the low 32 bits or only the low 24 bits.
- Hex versus decimal. 1A7BB26E and 0444314222 are the same 32-bit value.
- Byte order. A 13.56 MHz UID is a string of bytes. Some readers type it in the order the card transmits it, others reverse it, and the decimal result changes completely.
- Leading zeros. Some readers pad every number to a fixed length and others do not. 0444314222 and 444314222 are equal as numbers but not as text.
- UID length. ISO/IEC 14443 UIDs can be 4, 7 or 10 bytes. A 7-byte UID is 14 hex digits, or up to 17 decimal digits, and a reader set to a 10-digit output cannot show it in full.
- A printed number unrelated to the chip. Some card suppliers print a sequence number rather than a conversion of the chip ID. When you order RFID cards and key fobs, specify which conversion to print.
- A random UID. Phones emulating a card usually present a random UID, and some cards can be configured to do the same for privacy. The number can change from one tap to the next because the credential is designed that way.
Card number formats compared: decimal, 8H10D, Wiegand 26, hex and reversed bytes
The table shows two example credentials. The first is a 125 kHz EM4100 card with the 40-bit ID 3C1A7BB26E. The second is a 13.56 MHz card with the 4-byte UID A1 B2 C3 D4, listed in the order the card sends it. Format labels vary between readers, so match by the example values rather than by name.
| Output setting (common labels) | What the reader types | EM4100 example | 13.56 MHz UID example | Length typed |
|---|---|---|---|---|
| Hex, full ID (10H) | Every ID byte as hex | 3C1A7BB26E | A1B2C3D4 | 10 or 8 characters |
| Hex, reversed bytes | Byte order swapped, then hex | 6EB27B1A (low 4 bytes) | D4C3B2A1 | 8 characters |
| Decimal of full ID (10H13D) | All 40 bits as decimal | 0258142351982 | Same as 8H10D for a 4-byte UID | 13 digits |
| 8H10D | Low 32 bits as decimal, zero-padded | 0444314222 | 2712847316 | 10 digits |
| 8H10D, reversed bytes | Low 4 bytes swapped, then decimal | 1857190682 | 3569595041 | 10 digits |
| 6H8D | Low 24 bits as decimal | 08106606 | Depends on which 3 bytes the reader keeps | 8 digits |
| Wiegand 26 style (FFF,CCCCC) | 8-bit facility code + 16-bit card number | 123,45678 (often typed 12345678) | Depends on which 3 bytes the reader keeps | 8 digits |
| Wiegand 34 style | Two 16-bit halves of the low 32 bits, in decimal | 6779 and 45678 | Depends on reader | Varies by reader |
Three rules come out of the table:
- The 10-digit number printed on many EM cards is usually 8H10D. Set the USB reader to 8H10D when your software stores that number.
- The “123,45678” style printed number is the Wiegand 26 facility code and card number. You cannot recover the 10-digit number from it, because 26-bit output drops the top 8 bits of the 32-bit ID.
- Neither byte order is “correct” for 13.56 MHz UIDs. Readers and software simply differ, so compare one known card on both systems.
For the bit layout behind the Wiegand columns, and a calculator for converting between them, see the Wiegand 26-bit format guide.
Setup on Windows, macOS, Linux and Android
Start the same way on every system: plug the reader in, open a plain text editor, click inside it and present a card. If a number appears followed by a new line, the reader is working in keyboard mode. Everything after that is format and software configuration.
Windows. A keyboard-mode reader appears under Keyboards and Human Interface Devices in Device Manager. A virtual COM reader appears under Ports (COM & LPT); note the COM number and set the baud rate and frame settings from the reader’s datasheet. A PC/SC reader appears under Smart card readers and relies on the Windows Smart Card service. Many reader configuration utilities run only on Windows, so it can be easier to set the output format on a Windows PC before deploying the reader elsewhere.
macOS. When a keyboard-mode reader is first connected, macOS may open the Keyboard Setup Assistant and ask you to press a key the reader cannot press. Close the assistant; the reader still types. Virtual COM readers usually show up as /dev/cu.usbmodem… (CDC class) or /dev/cu.usbserial-… (bridge chip); the exact name depends on the chip. PC/SC readers work through the built-in smart-card framework.
Linux. Keyboard-mode readers work in desktop sessions and on the text console with no setup. For a kiosk that must capture reads without a focused window, read the device’s /dev/input/event* node and grab it so keystrokes do not leak into other applications. Virtual COM readers appear as /dev/ttyACM0 (CDC) or /dev/ttyUSB0 (bridge chip); on Debian and Ubuntu, add the user to the dialout group to open the port. For PC/SC, install the pcsc-lite daemon and the CCID driver package, then confirm detection with pcsc_scan from pcsc-tools.
Android. Connect through a USB OTG adapter or a USB-C port on a device that supports USB host mode, and check that it can supply the reader’s current. A keyboard-mode reader types into the focused field. Android may hide the on-screen keyboard while a hardware keyboard is connected; re-enable it in the keyboard settings if users also need to type. Virtual COM and PC/SC readers need an app that includes its own USB communication code.
iPads with USB-C generally accept keyboard-mode readers the same way; test with your app before rolling out.
Integrating with attendance, POS and access software
Access control enrollment. A desktop reader at the admin desk saves walking every new card to a door. It must type the same number the controller stores: if the panel shows a facility code and card number, use Wiegand 26 output; if it stores a 32-bit decimal, use 8H10D. The door reader and the desktop reader must also read the same card technology; our guide to 125 kHz vs 13.56 MHz covers that choice.
Time attendance and visitor kiosks. Many attendance screens treat Enter as “submit,” so leave the Enter suffix on. For unattended kiosks, a virtual COM reader and a background service avoid the risk of a pop-up window stealing focus and swallowing the number.
POS, membership, loyalty and library systems. Store card numbers as text, not integers, so leading zeros and long 7-byte UIDs survive. Fix one output length and case for the whole site, and make the lookup field accept exactly that.
Web applications. Keyboard-mode readers type into browser forms like any keyboard. Chromium-based desktop browsers can also read virtual COM readers through the Web Serial API after the user grants permission.
UHF desktop readers. Desktop UHF reader/writers used for windshield-tag enrollment often type the EPC in hex, which is 24 characters for a standard 96-bit EPC. The same rules on focus, suffix and text storage apply.
Security. A UID typed by a keyboard-mode reader is an identifier, not proof that the card is genuine. 125 kHz IDs and many 13.56 MHz UIDs can be copied to a writable card. Where cards carry stored value, payments or high-security access, read an authenticated sector or application through PC/SC instead; MIFARE Classic vs DESFire explains the options.
Troubleshooting: leading zeros, Enter suffix, keyboard layout
| Symptom | Likely cause | Fix |
|---|---|---|
| Leading zeros missing | Spreadsheet or numeric field strips them | Format the column or field as text; use fixed-length output |
| Long numbers end in zeros in a spreadsheet | Spreadsheets keep about 15 significant digits | Format cells as text before reading 7-byte UIDs |
| Form submits twice, or not at all | Enter suffix does not match the software | Set the suffix to Enter, Tab or none |
| Symbols instead of digits, or Q instead of A | Non-US keyboard layout such as French AZERTY | Switch the input layout, use numeric-keypad output or use COM mode |
| Missing or jumbled characters | Keystrokes too fast for the app or a remote-desktop session | Slow the keystroke rate if configurable; run the app locally or use COM mode |
| Hex letters change case | Caps Lock is on | Compare card numbers case-insensitively |
| Reader beeps but nothing appears | No text field has focus, or a Chinese, Japanese or Korean input method (IME) is active | Click into the field; switch to direct input |
| No beep at all | Card technology not supported by the reader | Check frequency and chip; consider a dual-frequency reader |
| Different number on every tap | Random UID from a phone or privacy-mode card | Enroll a different identifier, such as a secure application ID |
| Card reads repeatedly while resting on reader | Continuous read mode | Set single-read mode or a repeat delay |
Keyboard layout is the least obvious cause on this list. A keyboard-mode reader sends key positions, not characters, and the computer maps them through its active layout. On AZERTY the digit row needs Shift, so an unshifted “1” appears as “&”, and the key where US layouts have A produces Q.
Checklist before you order a USB reader
- Card technology and frequency: 125 kHz EM or Prox-compatible, 13.56 MHz MIFARE, NTAG or DESFire, or UHF EPC Gen2
- USB mode: keyboard emulation, virtual COM or PC/SC, or a model that switches between them
- One sample card number exactly as your existing system stores it
- Output format that reproduces it, including byte order, hex case and leading zeros
- Suffix and prefix: Enter, Tab or none
- Keyboard layouts and languages of every PC that will use the reader
- Operating systems, plus USB OTG support and power on any tablets
- Read-only, or read/write for encoding cards and tags
- How the format is configured (utility, configuration card or preset before dispatch)
- Cable length and connector (USB-A or USB-C); USB 2.0 cables are limited to 5 m (16 ft) without extenders
Next steps
Send us one card number as your software shows it, the card type, and the operating systems you use. We will confirm which reader and output setting reproduce that number, preset the format before dispatch where the model allows, and ship a sample for testing at your enrollment desk. Request a quote or sample and we will reply within 24 hours.
Frequently asked questions
Do USB RFID readers need drivers or software?
A reader in HID keyboard-emulation mode uses the operating system's built-in keyboard driver, so nothing needs installing on Windows, macOS, Linux or Android devices with USB host support. Virtual COM readers built on a USB-serial bridge chip may need that chip's driver, and PC/SC readers use the operating system's smart-card service plus your own application.
What is the 8H10D card number format?
8H10D takes the last 8 hex digits of the card ID (32 bits) and types them as a 10-digit decimal number with leading zeros. On many 125 kHz EM4100 cards this is the 10-digit number printed on the card.
Why does my USB reader type a different number from the one printed on the card?
The reader is using a different output format from the one the card supplier printed: a different part of the ID, hex instead of decimal, reversed byte order or no leading zeros. Change the reader's output setting to match, or convert the number, rather than editing numbers by hand.
Can a USB RFID reader work with an Android phone or tablet?
A keyboard-emulation reader types into Android apps through USB OTG if the device supports USB host mode and can power the reader. Virtual COM and PC/SC readers need an app that includes its own USB communication code, because Android has no general-purpose serial or PC/SC service for USB readers.
Why does my reader type symbols instead of numbers?
The computer's keyboard layout is not US English. Keyboard-emulation readers send key positions, so on a French AZERTY layout the digit row produces symbols such as & and é; switch the input layout, use a reader that can send numeric-keypad codes, or use virtual COM mode.
Can I use a USB reader to enroll cards into my access control system?
Yes, as long as it outputs the same format the controller stores, such as a Wiegand 26 facility code and card number or an 8H10D decimal. Present one card at a door reader and at the USB reader and compare the numbers before enrolling a batch.
Want a second opinion on your spec?
Send us your controller, credential type and environment — we'll recommend compatible hardware and quote within 24 hours.