Avoid Interleaved 2 of 5 Code

I was asked to recommend a scanner by a customer who sent me samples of their bar codes. They were all Interleaved 2 of 5 code, which is a numeric only code whose only saving grace is that you can print a lot of digits in a small space. Here are three symbologies encoding the numbers 1 to 8:

You can see that Interleaved 2 of 5 takes up the least space, but Code 128 is pretty close. Interleaved 2 of 5 has a built in defect in that the stop/stop patterns are not unique and if the scanner enters or leaves the code in a spot that resembles a start or stop, the code can be short scanned.

Code 128 is always printed with a check digit anyway and has a unique start/stop pattern, making it a superior code to I 2 of 5.

My customer’s bar code looked like this:

This is a picture from our microscope. Notice that the narrow bar measures .1 mm, or 3 mils. This is a 300 dpi printer. The wide to narrow ration of this code should be 3 to 1; this is printed at 4 to 1. Lastly, the narrow bar under the red arrow should be one element wide, this one is two.

Their printer is doing a bad job printing this code, but fortunately for them modern scanners are pretty forgiving and this code can be read reliably with a Xenon with high density optics.


PM series printer real time clock

All PM series printers have real time clocks in them. They become functional when a battery is inserted in the printer’s motherboard. You’ll have to remove the cover to access this; the PM43c battery slot looks like this:

The printer’s display will show the date and time if a battery is installed.

Only printers configured with 802.11 WiFi boards can be ordered with a battery installed from the factory. You can order the battery separately, part number 318-051-001 , but they are a standard battery that you can get anywhere:

In the newer firmware you can also configure the printer to contact a time server to synch its clock. Select Wizards, Calibration, Date & Time from the main to enable the time server.

If your printer can’t be connected to the Internet you can sill use the real time clock by manually setting the date and time using the Wizard or the System settings.

NB: When you set the time manually make sure that you use GMT time, not your local time. There’s a bug in the firmware that will change the clock setting according to the time zone and DST settings when the printer’s power is cycled after the clock is set.


How accurate are bar code scanners?

We sold some badge scanners to one of our customers who later said he was getting incorrect data from his scanners. We got a sample badge from them, scanned it, printed it, and attached it to a label rewinder. We then took the badge scanner apart and mounted the scan module near the label and recorded each scan into Excel:

We were able to collect over a million characters in just over a day. The result? Zero errors. We looked elsewhere for the customer’s issue.

Determining if it’s Daylight Savings time in Fingerprint

Although the current revision of PC and PM printer firmware supports time zones, any time arithmetic in Fingerprint is done in Greenwich Mean time, so you have to adjust your numbers according to your time zone and if it’s Standard or Daylight Savings time.

For example, if it’s five o’clock local time in the Eastern Time zone and you want to calculate an expiration time two hours later, your result will be two hours earlier than the current time during Daylight Savings, and three hours during Standard time. This isn’t a big deal, you only have to add the time offset, but determining if it’s DST or not isn’t obvious.

There’s a function in the Fingerprint language, WEEKDAY that returns a number for the day of the week where Sunday is 1, Monday is 2, etc. So you can get the number of the first day in November,  subtract it (plus  one) from 7 to calculate the first Sunday in November, when DST ends:

zDST$ = “F”


zSTOPDAY$ = RIGHT$((“0” + STR$(7-A%+1)),2)

Likewise you can calculate when DST begins (the second Sunday in March)with the same function:


zSTARTDAY$ = RIGHT$((“0” + STR$(14-A%+1)),2)


Of course, Daylight Saving begins and ends at 2 in the morning, but the above should be sufficient for most applications.


Writing an RFID tag with Direct Protocol

I recently had to send a customer a Direct Protocol sample that wrote to an RFID tag and printed a bar code. The sample in the manual didn’t work, but this one does:


BARSET “CODE39”,8,3,1,102
PB “1234567890”

PP244,113:NASC 8
FT “Univers”
PT “1234567890”

TAGWRITE “1234567890”


Send this to an RFID equipped PM43 and a bar code with human readable text will print, and an RFID tag will be written with the same values.

NOTE: If you cut and paste this code, your browser may turn the standard double quotation marks (hex 22) into curly open and close quotation marks (“”). The printer won’t like this, so make sure that you use standard double quotes.

PC43, PC23 and 802.11 Roaming

A customer called in with an issue with his PC43T that had a wireless card installed. He had tested it in his conference room without issue but when he took it out to his warehouse it wouldn’t connect to his wireless network, even though he was only 20 feet from an access point.

The issue was roaming; it’s off by default on the PC series printer. You can get to the roaming setting through the web interface (Communications, Wireless 802.11) or through the front panel. There are four settings; set it to 1 and the printer is most willing to roam, 2 less so, and 3 less than that.

Once roaming was enabled, my customer’s printer worked as expected.

Replacing an Intermec PC43T or PC43D printhead

This one bit me, so here’s a tip on replacing an Intermec PC43 printhead.

The printhead comes out very easily, you just move the blue catches on each side outward and it pops right out out.

There’s one connector that attaches the printhead to the printer and you need to remove that. The thing that bit me was getting the replacement printhead inserted properly. This is a side view of a correctly placed printhead:

What is critical here is that the body of the printhead has to be positioned inside the gap of the two plastic holders. A more obvious photo of one holder:

I would always line up the printhead with the guide posts and would miss getting the printhead inside of the gap.

If you get the printhead inside the plastic holders the guide posts will automatically line up. Press the printhead up against the springs until it clicks. Close the printhead assembly. If it’s difficult to manually pull on the label, you’ve done it correctly. If the label moves easily, you’ve missed the plastic holders; try again.

PC43 USB to serial adapter

I recently ordered a USB to serial adapter for a Honeywell PC43 printer and was told that it had been obsoleted without a replacement. I confirmed this with tech support but the marketing department says that the part is still valid.  In any case nobody has this adapter in stock and until this is straightened out there is another USB adapter that works.

I plugged in one of the old cables (part # 203-182-100) into my PC and saw that is used an FTDI driver. I found this cable on Amazon that used the FTDI chip set , plugged it into my PC43 and it worked.

If Honeywell does continue to supply 203-182-100 you are probably better off buying from them for support reasons, but this cable does work in the interim.

UPDATE 7/27/18:  Honeywell has fixed this issue and this cable is now available from them.

How to disable the Label Taken Sensor on Honeywell/Intermec printers

The following applies to printers running Direct Protocol or Fingerprint.

There’s a tech note in the Honeywell knowledge base about turning off the LTS sensor using  the LTS& OFF command, but this only affects the printer when printing a batch of labels, it doesn’t really disable the sensor, it causes the printer to ignore the sensor during batch printing.

To truly disable the sensor you need to execute a setup command and set the LTS value to zero.

First, make a connection to the printer via Telnet (I use Hyperterm) to port 9100. Type the command “VERBON”, press enter and the printer should echo “OK”.

Tell the printer to write its current settings to disk by entering “SETUP WRITE “MYCONFIG”” (quotes around the file name). Now type the “FILES” command to list the files on disk. Use an FTP client to copy MYCONFIG to your computer and open the file with Notepad.

You’ll see the last lines in the file will look something like this:

# MEDIA,TESTFEED,99 146 1 9

Change the number in the last line to zero and save it to disk, naming it MYCONFIG1 and use FTP to copy it back to the printer:


You can save the whole file or just the LTS command.

Return to your Telnet connection to the printer and type the command “FF” to feed out one label.

Type ?PRSTAT to return the printer’s status. It will return 2 which means a label is at self strip point.

Now type “SETUP “MYCONFIG1″” (quotes around the file name) and then sent a ?PRSTAT command again. The printer will now return zero. You have disabled the label taken sensor.

Note that the PM and PC series printer are case sensitive and have a different directory structure than the PX series. When you connect to the PM or PC series printer you have to get the case of the directory name correct (always lower case) and the case of the filename correct too. You can’t FTP anonymously to a PM or PC series, you have to log in as itadmin. Your default directory will be set to /home/user/admin. Change to this directory before you execute the SETUP command:

I’d suggest just copying the above LTS command into notepad and saving it to disk, it’s easier than navigating the PM directory structure.

You could also execute this command with a CF card (PX, PM4i, PF,PD42) or USB thumb drive (PM,PC,PD43) using AUTOEXEC.BAT to execute this command. Make sure your configuration file is in the root of the CF card or USB drive along with the AUTOEXEC.BAT file.

PM43 fonts vs PM4i

I was at a customer site replacing some old Intermec PM4i printers with the PM43s and ran into a font issue. Here’s the bottom part of their label printed on a PM4i printer:

And this is what printed on the PM43:

The character size is looks about the same, but the kerning (spacing between characters) is different, it’s most obvious when you look at the numbers 716 in the drawing number. The result was that the drawing number field ran into the order number field. The solution to this was to turn on legacy mode. This isn’t the old legacy mode which enabled the old Bitstream fonts that were included with some older Intermec printers, but it does substitute fonts (font aliasing) to overcome some of these issues. I enabled legacy mode from the front panel menu under Settings, (down arrow to display the next selection) Languages, IPL, Print Quality, then enabled Legacy Mode. The PM43 then printed this:

I have to give credit to the Honeywell software guys who implemented this feature.