2024-11-25 23:10:11 +01:00
# 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.
2024-11-26 19:56:30 +01:00
2024-11-25 23:10:11 +01:00
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.
2024-11-26 19:56:30 +01:00
2024-11-25 23:10:11 +01:00
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 > ]
```
2024-11-26 19:56:30 +01:00
The commands sent to the scanner are prefixed with `>` , the (tokenized) responses from the scanner with `<` .
2024-11-25 23:10:11 +01:00
In general, please refer to your scanner's manual for configuration strings.
2024-11-26 19:56:30 +01:00
Here are some examples.
2024-11-25 23:10:11 +01:00
### Factory Reset
```
2024-11-26 19:56:30 +01:00
$ ./honeywell-config DEFOVR. DEFALT.
> DEFOVR.
< DEFOVR.
> DEFALT.
< DEFALT.
```
### Factory Reset - In one command
```
$ ./honeywell-config "DEFOVR;DEFALT."
> DEFOVR;DEFALT.
< DEFOVR.
< DEFALT.
2024-11-25 23:10:11 +01:00
```
### Switch Operation Mode
USBHID:
```
2024-11-26 19:56:30 +01:00
$ ./honeywell-config PAP131.
> PAP131.
< PAP131.
2024-11-25 23:10:11 +01:00
```
Keyboard:
```
2024-11-26 19:56:30 +01:00
$ ./honeywell-config PAP124.
> PAP124.
< PAP124.
2024-11-25 23:10:11 +01:00
```
### 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:
```
2024-11-26 19:56:30 +01:00
$ ./honeywell-config PREBK246434B41464420.
> PREBK246434B41464420.
< PREBK246434B41464420.
2024-11-25 23:10:11 +01:00
```
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.
2024-11-26 19:56:30 +01:00
### 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.
2024-11-25 23:10:11 +01:00
## Adapting for Other Scanners
The tool currently has hardcoded USB vendor/product IDs for a Honeywell Hyperion 1300G in Keyboard or USBHID modes.
2024-11-26 19:56:30 +01:00
2024-11-25 23:10:11 +01:00
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);
```
2024-11-26 19:56:30 +01:00
1. Recompile the tool with `make`
2024-11-25 23:10:11 +01:00
## License
MIT License