VHL without reader configuration

Use case

This mode covers the same use case as the standard VHL implementation. However, the following restrictions apply:

  • You cannot format cards.
  • You cannot work with complex card structures, e.g. where the data you want to access is distributed across multiple files or blocks.

We only recommend this mode if:

  • You don't want to configure the readers.
  • You don't want to specify the card structure (i.e. the parameters to access the card) before putting readers in operation, but control the parameters flexibly during reader operation.

Implementation overview

What is VHL?

VHL stands for Very High Level card access. It's a set of simplistic, card-type-independent commands (learn more).

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.

This approach is similar to the standard VHL implementation. The only difference: You don't configure readers in advance. Instead, you configure them temporarily at runtime via the host.

Diagram showing a host application interacting with a BALTECH reader via VHL commands, where the card-specific information is stored in the host application

Exceptional cases requiring a configuration

In the vast majority of cases, you won't need to configure the reader. A configuration is only necessary if one or both of the following apply:

Supported interfaces

  • USB HID (recommended with the SDK)
  • USB virtual COM port (recommended when not using the SDK, required for RDP)
  • RS-232
  • Ethernet (client only)

    For Ethernet server implementations, please use VHL & Autoread.

Your workflow

Set up SDK

The easiest way to use VHL is the BALTECH SDK, available for Windows, macOS, and Linux.

Alternative for unsupported platforms

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:

  1. Downloadcall_made the SDK from our website.
  2. Get familiar with its components. We recommend you get started by trying out the app notes.
  3. Integrate the SDK into your application.
  4. Set up a protocol stack to be able to run commands.

Run commands

Card interaction

  1. Run VHL.Selectcall_made to scan for cards.

    Set AcceptConfCard = false

    Readers without a preinstalled configuration are vulnerable to attacks with tampered ConfigCards. To prevent this, set the parameter AcceptConfCard = false, so readers will ignore any ConfigCard presented to them.

  2. Run VHL.Setupcall_made.
    With this command you dynamically create a "VHL file". This is a description of the card's data structure. It's needed to configure the reader for subsequent commands.

    Use a static VHL file for testing

    We recommend you verify the memory location parameters for VHL.Setup and subsequent commands before implementing them in your code. To do so, create a static VHL file and test it in BALTECH ToolSuite.

  3. Run the VHL command(s)call_made required for your operations. Here are the most important ones:

    VHL.Format is not supported

    VHL.Formatcall_made doesn't work with dynamically created VHL files. Please use the standard VHL implementation with a static VHL file.

Reader hardware control

There are various commands to control the reader hardware. You can control reader feedback (e.g. LED and beeper), reboot the reader, check its firmware version, etc.

What's next?

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: