Thermal Printer COM-10438 prints a wrong set of characters


I’m struggling to figure out the problem that a thermal printer COM-10438 prints strange characters like a attached photo.

When I tried test-printing, it correctly prints CP437 table with a normal characters and says its baud rate is 19200.

The prints of photo is printed just when I upload the example file from adafuit’s library,
GitHub - adafruit/Adafruit-Thermal-Printer-Library: Arduino Library for Small Thermal Printers .
with following instruction here.
I guess it prints Serial.write inside setup() but with difference character set.

I’m using 9V2A power.
The thermal printer is COM-10438 and a model is CSN-A2-R written at the back.

Could anyone guess what the problem and how it can be fixed?

Thanks in advance.


Maybe the Adafruit library does not support your printer (I did not check). Have you tried using the Sparkfun example code that is designed for your printer? You may need to change the NewSoftSerial to just SoftwareSerial in the sketch.

Thanks Riva,

Adafruit's one and Sparkfun's are really look similar, so I guess they use a same printer.

But I haven't try Sparkfun's sample yet, so I'll try it now. (I was actually going to try before but gave up because of needs to change Software Serial but I'll try it again.)

One thing I noticed is my printer has different model number: CSN-A2-R while Sparkfun's: CSN-A2-T. It's very small difference but I'll ask a shop if they have same model number as Sparkfun's.

Well.. when I replaced my CSN-A2-R with CSN-A2-T, it perfectly works, so it was just because the packaged model was wrong. The trick was there are two different models with same product code of COM-10438. So if anyone had a same problem, you need to check the model on the back although I don't know if anyone else will have a same issue..

plaster: Well.. when I replaced my CSN-A2-R with CSN-A2-T, it perfectly works, so it was just because the packaged model was wrong.

At a guess I would think the -T version is TTL level serial and the -R is RS232 level. Glad you got it sorted in the end though.

Another alternative to the adafruit printer with a similar issue - but I don’t need to undertake an authoring of a whole new library for my task.
Printing a graphic of data stored on a flash chip attached to the arduino.
Alas, I am not supporting the hard work on open source code by buying adafruit products…but have several old cheap/free thermal printers and got two working. I may need to ultimately drive the thermal head directly, but will need to monitor the control lines while it is correctly functioning before that stage.
The model is Custom s’print-S
can print fine from pc - but tried Serial.write() and can’t get a string or graphics, just garbage. Nicely printed though.
Sending control codes as in attached ‘similar’ model datasheet .
Is responding to serial input, so seems unlikely TTL/true(whatever up to 25v± according to Wiki!)RS232 mismatch.
checked connections and upload by monitoring output on input RX pin of TTL/USB adaptor and LED’s blink as expected.
As was found in the previous thread, the datasheets can be brief and confusing - am I missing additional control codes to actually print the buffer out or something? Does do a line feed though after the garbage.

void setup(){
  //reset printer to default start-up setting 9600baud,8bit,parity Even,1 stop
  Serial.println("Hello Computer");

void loop() {}

s’Print Manual.pdf (2.35 MB)

I have not bothered looking at the printer commands so don't know if the Adafruit libs will work but it looks like you need a RS232 shield/module as the thing does not seem to be outputting TTL level. If you connected it directly to your arduino then it may have damaged the RX input. Also check what serial protocol your using as the default is 9600 8N xon/xoff but the printer could have been set to use different baud and hardware handshaking.