MarketIBM 4610
Company Profile

IBM 4610

The IBM 4610, also known as SureMark, is a thermal point-of-sale printer, originally developed and manufactured by IBM and currently offered by Toshiba Global Commerce Solutions, launched in 1996. It is used by major retailers such as Wal-Mart, Carrefour, Costco, Cencosud, Office Depot, Tesco, Best Buy, Chedraui, King Soopers, London Drugs and Soriana. It had replaced the famous IBM Printer Model 4. With the acquisition of IBM's Retail Store Solutions (RSS) business, the SureMark printers are now produced by Toshiba Global Commerce Solutions.

Model overview
Over the years, IBM released a set of different printers. Usually, the same model is available in two colors to match the color of the point-of-sale system they were released with, but can be operated independently. All TG-models are functionally equivalent to the TI-models with the same number and TF-models match TM-models. TG- and TF—models feature "iron gray" covers, while TI- and TM-models are "pearl white". No color distinction existed at model numbers in the second generation. Features common to all models are: • 256 KB flash memory, used to store custom messages, logos, code pages and journal data. • Barcode generation • Ability to download custom fonts and codepages • Proportional and scalable fonts • Upside-down printing • Updatable microcode • 85mm paper roll (90mm roll for models TG6 / TM6) Printers commonly use RS-232 and RS-485 interfaces, later models added a USB or Ethernet connection. Except for TF6 / TM6, the printers feature a replaceable interface card at the bottom. This card is used for both power and data and can be replaced to offer different interfaces. All second generation models have permanently integrated interface boards, so a customer needed to choose one of these interface options: USB (with power delivered from separate power supply) + PoweredUSB, RS-232 or RS-485. Additionally, there are models with a D instead of a T. This denotes a different warranty service ("Depot repair" instead of "IOR 24x7"). This separation existed only in the first generation of 4610 printers. Some models, especially those that IBM marks for "fiscal use" feature paper journaling in addition to electronic journaling (optionally with CompactFlash-cards) or an RS-232 auditing port. These models include: KR3 / KD3, KR5 / KD5, KC4, KC5, FV5, GR3 / GB3 / GE3, GR5 / GB5. Some of these models have a power supply integrated. Not everywhere, where cash registers and receipt printers are hardware-fiscalized, IBM provided its own fiscal modules, so third-parties were required to do so, using "fiscal-ready" or non-fiscal versions of 4610 printers. No three-station model was developed in the second generation of 4610 printers, as many countries, requiring hardware fiscalization of cash registers and receipt printers or paper journaling, already transitioned to electronic journaling. == Interface ==
Interface
Printers attached using RS-485 are supplied with 35V from the data cable. When using RS-232 or USB (depending on model and interface card), a separate 24V connected is used, either using a PoweredUSB-connection cable plugged into the point-of-sale system or using an external power brick. Note that the PoweredUSB-Cable does not transmit data and is used for power only. Interface speeds are as follows: • RS-232: 9600 and 19200 bit/s, 115200 bit/s for Tx8 and Tx9 • RS-485: 185.5 kbit/s • USB: up to 12 Mbit/s IBM provides extensive documentation Users guide for a large range of 4610 printers including programming information (Retrieved: 2018-01-06 16:31+00) for interfacing with the printer family programmatically. Generally, when connecting the printer via RS-232 or RS-485, the commands are sent in binary along with the text. It is therefor possible to use the printers in different applications. Interface examples The following examples assume a Linux-computer with the printer connected via a USB to serial adapter known to the system as /dev/ttyUSB0 with the port configured for the desired baud rate. Printing text on the thermal printer is as easy as writing to the device: $ echo "Hello World" > /dev/ttyUSB0 Commands are sent as binary. This will cause the paper in the thermal printer to be cut: $ echo -e -n "\x0c" > /dev/ttyUSB0 Printer status The printer responds with a status message to certain commands. The status message consists of two bytes denoting the length of the message including these two bytes. All status messages consist of at least 8 bytes of general status and error information as well as microcode version. If, for example, bit 8 in byte e of the status message is set, the printer reports that its buffer has less than 1k characters left to make the controlling system aware that it should slow down or discard the buffer. A set of bits is used to denote if the message is an answer to an inquiry command such as "Request printer ID". If that is the case the printer appends a command-specific amount of extra information to the end of the status message. The reported size of the message that is encoded in the first two bytes of the printers response is higher, accordingly. The following python-script requests the printer ID in order to identify the printer type and capabilities in use: import serial import struct • select, configure and open the serial interface with serial.Serial("/dev/ttyUSB0", 19200, timeout=5) as ser: # tell the printer to respond with its ID information ser.write(b"\x1d\x49\x01") # read the first two bytes of the response message_length_data = ser.read(2) # convert the data to an integer message_length = struct.unpack(">H", message_length_data)[0] print("Message length: {}".format(message_length)) # read the entire response. keep in mind that the first two bytes have already been read raw_data = ser.read(message_length - 2) # Because the two bytes denoting the length have been read earlier, the response is two bytes shorter # than the length of the message. The first byte of the actual status response is therefor is 1 and the highest is 13 # The status bytes are being pushed into a python list [] object which start its indexing at 0 so 1 must be subtracted # from they byte number reference in the user guide and in the comments. # # Check if the message is indeed a response to a printer ID request: if raw_data[4] & (1 For a TF6-model, the output looks like this: Message length: 15 Type: non-Tx8/Tx9 model, or Tx8/Tx9 in TI4 emulation mode Device ID: Models TF6 and TM6 (512K; thermal CR) Printer microcode level: 44 ==References==
tickerdossier.comtickerdossier.substack.com