Beyond the standard read, write, and format operations, you want to perform card-type-specific operations, e.g. increment or decrement counters.
What are low-level commands?
Low-level commands are designed for a specific card type. They let you make use of the full feature scope of your project cards. While they're powerful, they also come with certain drawbacks you should be aware of:
- High development effort: Even for simple operations, you need to run a series of commands, which increases complexity.
- Potential performance loss: This is the case for certain card types and especially if the host protocol is slow. Performance loss is due to the large number of commands per operation, the time to wait for the each response, and the fact that large data volumes must be transmitted in several batches.
- Card-type-specific implementation: Your application won't work with a different card type.
- Custom retry mechanisms and error handling: In contrast to our card-type-independent command set VHL, you need to take care of this yourself, especially with regard to potential connection loss due to particularities of the reader's operating volume.
Extensive knowledge of card type required: We assume you are familiar with the specification for the relevant card type.
We cannot provide card-type-specific support.
How it works
This implementation is based on BALTECH Reader Protocol (BRP). To keep your effort low, we provide an SDK for the most common platforms.
- The reader acts as a pass-through and doesn't intervene in the communication with the card: It directly forwards your commands to the card and all card responses back to the host.
- Control reader feedback (e.g. LED and beeper) and other hardware functionality directly via the host.
Exceptional cases requiring a configuration
In the vast majority of cases, you won't need to configure the reader. You only need to create a configuration if one or both of the following applies:
- Your host protocol isn't enabled in the factory settings.
You want to control access permissions and set up authenticated and encrypted communication. In this case, you need to configure Authentication and Encryption.
- USB HID (recommended with the SDK)
- USB virtual COM port (recommended when not using the SDK, required for RDP)
- Ethernet (host as client only)
Use APDU via VHL if you want to interact with ISO 14443-4 cards.
Set up SDK
The easiest way to send low-level commands via BRP is the BALTECH SDK, available for Windows, macOS, and Linux.
My platform's not supported
If you can't use the SDK, you can create the BRP command frames yourself. Please refer to the BRP specification and example frames.
To set up the SDK:
- Download the SDK from our website.
- Get familiar with its components. We recommend you get started by trying out the app notes.
- Integrate the SDK into your application.
- Set up a protocol stack to be able to run commands.
Commands for specific actions: In our overview of supported card types, you can find the commands available per card type.
Generic commands: If the command you're looking for isn't available, use the generic commands below to transmit a command from the card type specification on the bit level. The reader will forward this bit-level command as is.
Card type Generic command FeliCa Felica.GenericCmd ISO 14443 Type A Iso14a.TransparentCmd ISO 14443 Type B Iso14b.TransparentCmd ISO 14443-3 emulation CardEmu.TransparentCmd ISO 14443-4 emulation Iso14CE.ExchangeCardAPDU ISO 15693 Iso15.TransparentCmd ISO 7816 Iso78.ExchangeApdu LEGIC Legic.TransparentCommand4000
Reader hardware control
There are various commands to control the reader hardware. You can e.g. control reader feedback (e.g. LED and beeper), reboot the reader, check its firmware version, etc.
That's it for the development part. You can now install the readers (and, if necessary, deploy the configuration) as described here.
Troubleshooting & support
Got stuck somewhere along the way? Don't worry, we'll help you troubleshoot: