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.

Compact Flash card compatibility with PX4, PF4, and PD42 printers

I’ve noticed that a significant number of CF cards purchased over the last few years don’t always work with Intermec printers. This seems to be a recent problem, it may be due to poor quality manufacturing or counterfeit chips.

CF cards are used to upgrade firmware or to provide the printer additional storage space, they’re very useful. The printers have a size limit for CF cards of 2 GB; you should use the smallest one that will do the job, smaller cards work faster.

If you come across a CF card that doesn’t work you can try to fix it by formatting the card  inside the printer.

Put the CF card into the printer and use a Telnet program (HyperTerm, Putty, etc.) and connect to the printer’s IP address on port 9100. Note that this procedure only works when the printer is in Direct Protocol or Fingerprint. If you’re running IPL you’ll need to temporarily run one of these.

Once connected type VERBON and press enter. You should see an OK prompt from the printer. Next, use the FILES command to list any files on the CF card:

Note that the CF card is named “card1:” and must be enclosed in quotes.

First, try to format the CF card using the standard FORMAT command:

FORMAT “card1:”

This will only take a few seconds and it will erase any data on the CF card.

Copy a file from the C: drive to the CF card to test if it’s now usable:


If that doesn’t work, try a low level format command:

FORMAT “card1:”,A

This takes a minute and a half on a 64 MB card; longer with bigger cards. Now try copying a file over. It that doesn’t work do another low level format while changing the sector size:

FORMAT “card1:”,500,256,A

Note that this changes the default sector size from 512 bytes to 256 and increases the number of files that can be stored on the card from 208, the default value, to 500.  This is useful if you are storing a lot of small files on the card.

If the low level format doesn’t work, buy another CF card. I find that I’ve had the best luck with San Disk cards.




IPL on a PX series vs a PM series, label length

IPL (Intermec Printer Language) never specified the length of a label, it relied on the user to format the data properly; if you went over the edge, it would happily print on the next label.

The new PM series printers behave differently. When you define a label size image memory is allocated based on those settings. Anything that falls outside those limits will get chopped off. IPL is now a Fingerprint program that runs on the PM43 so there is a conflict between the two languages on this label size issue.

Here’s the same data sent to a PX (top) and a PM printer (bottom):

This usually won’t be a problem if your labels are set up correctly and don’t run over the edge of the label. However, there’s an IPL command (<SI> L) that’s misnamed “Maximum Label Length” that sets the label length on the  PM and PC series running IPL. To quote from the IPL reference manual “Notes: The printer uses this number for detecting media faults. It does not use this
number to limit the image size of a format on the label.”

I think mapping this configuration command to set the label length is a bug, but I understand how this could happen. They way to get around this is to implement the “Ignore IPL” commands feature in the PM43.

To get the printer to ignore an IPL command you have to turn on this feature; the easiest way is through the web interface. Sign in as “itadmin” using “pass” as the password and click on the Configure tab, then the Languages link on the left, then IPL, and you’ll see the Commands Ignore pull down in the General Settings:

Enable Commands Ignore and press the Save button.

You can enable this from the front panel menu too. Go into Settings, down arrow to Languages, General Settings,  then enable Commands Ignore.

Enabling this will cause the printer to ignore these commands:

<SI> d  dark adjust

<SI>g media sensitivity

<SI>c cutter enable/disable

<SI>D end of print skip distance

<SI>F top of form set

<SI>f label rest point

<SI>L maximum label length

<SI>R label retract enable

<SI>r retract distance

<SI>t self strip enable/disable

<SI>W set label width

<SI>X label origin, X Y adjust

These commands are contained in a file named IGNCMDS.CFG in the /home/user/config/ipl folder. You can add any SI command you want ignored here, or you can delete the command that you still want the printer to respond to. Copy this file to your PC using and FTP client, edit it, then copy if back to the same folder.

Note: Loftware normally sent out the maximum label length configuration of 5 inches (<SI>L1000) with their compiled files or Print Server product when sending data to IPL printers. If you see your label length being reset to 5 inches, it’s likely that Lofware is the source of this IPL data string.


Writing Fingerprint to run on the PM and PX series, part 2

I mentioned in an earlier post that the Dir command (used to rotate images, text, and barcodes) works differently in the PM and PX series when applied to images. The PX series printer can only rotate an image by 180 degrees but the PM series can rotate images at 0, 90, 180, and 270 degrees. Here’s a label that prints an image using all four Dir parameters:

The way around this is to rotate your images (I like IRfanview) ahead of time and print all of your images at Dir 1 and both printer will behave the same.

While we’re on the subject of IRfanview, you can greatly reduce the size of your images by reducing them to 2 bits per pixel. Thermal and thermal transfer printers can only print in black or white, so anything beyond 2 bpp is a waste of space. For example, here’s an image that we had to use in a Fingerprint program:

At 16 bits per pixel this image used 2,718,478 bytes of storage. After conversion to 2 bits per pixel it was only 340,262 bytes, an almost 90% reduction in size with no loss of resolution.


Speeding up batch printing on an Intermec PM43

We recently wrote a Fingerprint application for a large snack food manufacturer. The application prompts the user for the item number they want to print and the number of labels. After printing a sample label for approval, the program prints the requested quantity. There are four different label formats, and the data for the label is retreived from a .CSV look up file.

We issue a “PRINT FEED” command for each label; the labels are serialized so each one is unique.

Here’s a video of the labels printing:   Video

Notice that the printer pauses after each label. On our next release we implemented the command “OPTIMIZE “BATCH” ON” with each of the label formats. According to the manual, this command means that “The program execution will not wait for the printing of the label to be completed, but proceeds executing next label image into the other of the two image buffers as soon as possible.”

The effect was to greatly speed up label printing: Video_1

GS1 Application Identifiers

The stated goal of GS1 (formerly the UPC Code Council) is to “develop and maintains global standards for business communication”. Their most widely know standard is for barcode labels. Here’s a sample GS1 barcode:

A scanner reading this barcode will  output “[C101189010720001501719083110LM123”.  The symbology above is Code 128 which has 106 different symbol patterns in it’s character set, three different start characters, three subsets (A,B, and C), and four function characters (FNC1 to FNC4) that are not printable that are used for special functions.

All GS1 barcodes start with a Start C symbol followed by a Function 1 character; scanners are supposed to interpret this a “[C1”, which indicates to the receiving software that the code follows GS1 rules.

The three pairs of characters enclosed in parenthesis are Application Identifiers; they tell the receiving software what type of data follows. Note that the parentheses are in the human readable only, they are not in the bar code itself.

A full list of AIs can be found here, but in the above example:

01 – Identifies the following data as a GTIN (Global Trade Identification Number)

17 – indicates an expiration date (YYMMDD)

10 – is a lot number, which is variable length field.

Note that if a variable length field (or more precisely, if the FNC1 is required by the GS1 tables) is in front of another field, a separator character must be used to signal the end of the field. This character can be a FNC1 or and ASCII group separator character (Hex 1D).

GS1 barcodes can also be Datamatrix codes; they follow the same rules as Code 128 except that the first three characters output are “[d2” instead of the “[C1” for Code 128.