s3lph
18f2d75d91
feat: read and print responses from barcode scanner feat: udev rule docs: add more usage examples
134 lines
3.3 KiB
Markdown
134 lines
3.3 KiB
Markdown
# Honeywell Barcode Reader Config Tool
|
|
|
|
## What?
|
|
|
|
A Linux tool for configuring Honeywell barcode scanners via USB.
|
|
|
|
## Why?
|
|
|
|
I had obtained a used Honeywell Hyperion 1300G scanner, however it was locked down and secured with a password, and the password was unknown.
|
|
|
|
There is a Windows-only configuration tool from Honeywell called "EZconfig" with which the barcode scanners can be configured via USB, even when locked down.
|
|
|
|
To not rely on a Windows VM for configuring the scanner, I sniffed the USB traffic using Wireshark and extracted the relevant messages, and wrapped them in this tool.
|
|
|
|
## Usage
|
|
|
|
First of all, compile the program using `make`. It depends only on `libusb-1.0`.
|
|
|
|
The configuration strings need to be provided as command line arguments. You can provide multiple:
|
|
|
|
```
|
|
./honeywell-config <string1> [... <stringN>]
|
|
```
|
|
|
|
The commands sent to the scanner are prefixed with `>`, the (tokenized) responses from the scanner with `<`.
|
|
|
|
In general, please refer to your scanner's manual for configuration strings.
|
|
|
|
Here are some examples.
|
|
|
|
### Factory Reset
|
|
|
|
```
|
|
$ ./honeywell-config DEFOVR. DEFALT.
|
|
> DEFOVR.
|
|
< DEFOVR.
|
|
> DEFALT.
|
|
< DEFALT.
|
|
```
|
|
|
|
### Factory Reset - In one command
|
|
|
|
```
|
|
$ ./honeywell-config "DEFOVR;DEFALT."
|
|
> DEFOVR;DEFALT.
|
|
< DEFOVR.
|
|
< DEFALT.
|
|
```
|
|
|
|
### Switch Operation Mode
|
|
|
|
USBHID:
|
|
|
|
```
|
|
$ ./honeywell-config PAP131.
|
|
> PAP131.
|
|
< PAP131.
|
|
```
|
|
|
|
Keyboard:
|
|
|
|
```
|
|
$ ./honeywell-config PAP124.
|
|
> PAP124.
|
|
< PAP124.
|
|
```
|
|
|
|
### Add Prefix to Output
|
|
|
|
The following adds the string `FCKAFD ` (ASCII hex `46 43 4B 41 46 44 20`) in front of every scanned barcode:
|
|
|
|
```
|
|
$ ./honeywell-config PREBK246434B41464420.
|
|
> PREBK246434B41464420.
|
|
< PREBK246434B41464420.
|
|
```
|
|
|
|
Note how this behaves differently from if you were to configure the scanner in-band via scanning config barcodes.
|
|
There you would scan a lot of individual codes from the manual:
|
|
|
|
1. `PREBK2.`
|
|
1. `K4K.`
|
|
1. `K6K.`
|
|
1. ...
|
|
1. `K2K.`
|
|
1. `K0K.`
|
|
1. `MNUSAV.`
|
|
|
|
On the USB config interface, all of that goes into a single string instead.
|
|
|
|
### Query Current Beeper Settings
|
|
|
|
```
|
|
$ ./honeywell-config 'BEP?.'
|
|
> BEP?.
|
|
< BEPFQ12550,FQ2100,RPT1,ERR1,BEP1,BIP0,LVL0,EXZ,GRX,EXE,DFT,LED1.
|
|
```
|
|
|
|
### List all Settings and Their Possible Values
|
|
|
|
```
|
|
$ ./honeywell-config '*.'
|
|
> *.
|
|
< BEPFQ1100-5000.
|
|
< BEPFQ2100-5000.
|
|
...
|
|
< AXXMOD0|1|2|3|4|5|6|7|8|9|10.
|
|
```
|
|
|
|
## USB Device Access
|
|
|
|
Please note that this tool normally needs to run as root. Alternatively, you can set up a udev rule to grant access to the USB device to non-root users.
|
|
|
|
An example for this can be found in the file `99-honeywell.rules`.
|
|
Put this file into `/etc/udev/rules.d`, and run `sudo udevadm control --reload` to load the new ruleset.
|
|
|
|
Once you replug the scanner, you should have access to it as a regular user.
|
|
|
|
## Adapting for Other Scanners
|
|
|
|
The tool currently has hardcoded USB vendor/product IDs for a Honeywell Hyperion 1300G in Keyboard or USBHID modes.
|
|
|
|
If you have a different Honeywell scanner, and the tool doesn't find it, you can try making this tool work for it:
|
|
1. Obtain the USB vendor and product IDs for your scanner, e.g. through `lsusb`.
|
|
1. Replace the VID/PID in the following line of code in `honeywell-config.c`:
|
|
|
|
```c
|
|
libusb_device_handle *devh = libusb_open_device_with_vid_pid(ctx, 0x0c2e, 0x0b07);
|
|
```
|
|
1. Recompile the tool with `make`
|
|
|
|
## License
|
|
|
|
MIT License
|