Tuesday, December 17, 2013

Review: Generic 5890 thermal receipt printer

If you ever shopped ebay or amazon for a cheap thermal receipt printer, you must have seen this one offered by an array of sellers.


Some of them come in slightly different enclosure, but from the specification and placement of buttons etc, you can tell it is the same machine.

My theory is that, this model 5890 (T-5890, 5890G, FT-5890, etc.) is manufactured by several different manufacturers in China.  They must be based on the same ODM scheme. Another thing in common is that they all comes in brown box and no marking of manufacturer's address or so.  (generic - no brand)

Hardware

As usual, I take it apart and see what's inside.
Very easy to disassemble.


In case you can't see the marking on IC, it is using:
- NUVOTON nuc501adnarm
This is the controller, ARM-M0

- A3906
I think this is the motor driver.

- Winbound 25016BVSIG
SpiFlash

* NUVOTON / Winbound is the same company.






To be fair, this solution isn't bad.  The choice of ARM-M0 and 16mbit ROM is capable of many things.  However, the problem is in the manufacturing part
  • For this particular unit I got, there are components look like scrapped off used electronics and soldering job isn't great.  
  • The power supply which comes with the printer feels flimsy.
  • Compatibility under windows. (I'll get to this below)


The printer head (JRP-2RA1) has manufacturer's sticker.  It's website states that this printer head is electronically compatible with Fujitsu FTP-628MCL101, which is a popular model used in many thermal receipt printers.

Software  -  Linux

Connecting it to a linux machine through USB, it shows up as /dev/usb/lp0.  Since it does not supply Linux driver with the machine, I can not use CUPS.  Just plain old serial connection.

[root@alarmpi ~]# lsusb
Bus 001 Device 005: ID 0416:5011 Winbond Electronics Corp. Virtual Com Port
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
cat test.txt > /dev/usb/lp0

#For this to work, I have to disable CUPS

The printer comes with ESC/POS manual on a CD. It appears to be compatible with Epson TM-T88, with some exceptions. However, as I tested the unit, some compatible ESC/POS command are only partially supported.
  • ESC ! n     This shorthand setting works, but does not take mixed setting well.  Stick with individual command for safe.
  • Underline does not show in some cases involving line wrapping.
  • Other small differences from EPSON ESC/POS.

Here is the sample print out:

Software - Windows 7  (it does not work)

I can not get it to work on win7.  The device shows up and driver installed without complaint, it just does not print anything.  Anything submitted to the printer shows as error.

I have tried the following:
  • change printer port USB - LPT - COM
  • re-install printer driver
  • unplug / plug in again
It shows on my device list. But does not print anything.

I have only windows 7 at home, therefore can not vouch for XP/Vista/8.  If any reader has success with this printer on windows machine, please share your method.


Overall

This is a cheap thermal receipt printer with partial ESC/POS support.  The general concern with these printers are the printer head is not durable.  If working continuously, overheating might reduce printer head's useful life quickly.

What it does:
  • Print out English/European/Chinese characters, symbols.
  • Basic formatting such as double height, double width, underline.
  • Easy to work on Linux.

What it doesn't do:
  • Work under Windows 7.
  • Drop-in replace your Epson TM-T20.

30 comments:

  1. Hello,

    Thank you for posting this. One of these has also come into my hand, but trying to play with it i am experiencing big problems. When I want to print something using python-escpos it says "inapropriate ioctl for this device" and then terminates. Doing something like "echo hello > /dev/usb/lp0" prints a small "hello", so it's not completly broken. How have you come to the test printing? Can you give me some code or something?

    Thank you very much,

    Merlin

    ReplyDelete
    Replies
    1. I don't recommend using python ESC/POS library with non-epson printers. Because that library is tricky to setup and it is based on standard epson ESC command, where most Chinese printers are not 100% compatible.

      Instead, I write raw ESC command in python. For example:
      printer = open('/dev/usb/lp0','w')
      string = "\x1b\x21\x10 ESC ! 16 2xheight\n"
      printer.write(string)

      Delete
    2. Just is missing end line (without this doesn't print):

      printer.close()

      Delete
  2. Hi, Thanks for this article, i have the same printer and i want to open up the cash drawer.

    Can you send me the command? Thank you!!!

    ReplyDelete
    Replies
    1. [Name] Generate pulse for drawer
      [Format] ASCII ESC p m t1 t2
      Hex 1B 70 m t1 t2
      Decimal 27 112 m t1 t2
      [Range] m=0,1,48,49; 0≤t1≤255; 0≤t2≤255
      [Description] This command is to generate pulse for controlling the cash drawer.
      • The pulse ON time is [t1 x 2 ms] and the OFF time is [t2 x 2 ms].
      • If t2 < t1, the OFF time is [t1x 2 ms].

      Delete
    2. This is taken from my POS58 printer's manual, no guarantee that it will work for anyone. I never tested because I don't have a cash drawer.

      Delete
  3. This comment has been removed by a blog administrator.

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. hay,
    I've lost drivers CD of FT-5890 printer,Then I'm looking drivers for printer. If anyone can please give me drivers link or drivers for printer,This is very urgent...

    ReplyDelete
  6. hi Reed,
    I'm wondering how would you write a generic python code for this printer. Usually I do this :
    import usb.core,usb.util
    a = usb.core.find(idVendor=0x0416,idProduct=0x5011)
    cfg=a.get_active_configuration()
    ep = usb.util.find_descriptor(cfg[(0,0)],custom_match=lambda e:usb.util.endpoint_direction(e.bEndpointAddress) ==usb.util.ENDPOINT_OUT)
    ep.write("test")

    in this particular case, I get an error
    usb.core.USBError: [Errno 19] No such device (it may have been disconnected)

    How would you write this to work out-of-the-box. Extra cookies, if it is compatible with python on windows as well ;)

    thanks!

    ReplyDelete
    Replies
    1. Your USB config(idVendor=0x0416,idProduct=0x5011) is wrong. Use "lsusb" to find out the correct device.

      Delete
  7. I know this is an old post but I was hoping you could help me in installing this printer under linux. I know you mentioned it doesnt work with CUPS but is there a certain driver you installed to get this printer up and running? I am not sure the steps to take!

    Thanks!

    ReplyDelete
    Replies
    1. It works with CUPS. I have a POS-5890G and with the correct driver works fine under ubuntu 14.04 - 14.10 and 15.04.

      Grab it here

      milantrend.com/POS58linux.zip

      if you haven't resolved yet. But if you need a fully ESC/POS compatible printer this is not for you.

      Delete
    2. This comment has been removed by the author.

      Delete
  8. Hi guys!
    I have a similar printer i bought from China just the other day, but the problem i am facing is that i cant get it to work with linux at all. The model i have is XP-350B witch is a USB model, when i plug it in it shows up on /dev/usb/lp0 but when i try to send any data it dose not do anything. The printer is made by a company named Xprinter.net and the drivers they say you should use are from a company named Seagull that makes the BarTender software. On windows it works without problems.
    On linux after i execute a .sh file i get a .ppd file in cusp and a filter named "rastertoxp" every time i try a testpage it gives some type of error on this file. I tried to reverse engineer what the filter dose but its written in C and all the disassemblers i have tried have failed.
    I want to use the printer to print sticky labels from a PHP app, that i am currently developing.
    If anyone can help please contact me!

    ReplyDelete
    Replies
    1. You can use TSC Printer Driver for Linux.
      Please see https://gempur.wordpress.com/2015/06/18/xprinter-xp360b-di-linux/

      Delete
  9. Hi Reed, does this printer support barcodes

    ReplyDelete
  10. Thank you for the info, I would like to connect one of these printer with Raspberry PI, But I am getting Cups Filter Failed Error, Any clue how to fix the issue?

    ReplyDelete
  11. how to install this in ubuntu14? completely noob here

    ReplyDelete
  12. can give some gambas code to print TXT without CUPS? thanks..

    ReplyDelete
  13. heloo it works fine with my windows 7 all i did was install drivers from cd and it prints i use quickbooks pos 2009 but can you guys tell me which cash drawer is compatible with this printer - kimforbesforbestech@gmail.com

    ReplyDelete
    Replies
    1. the cash drawer appears to be generic no info on it except its 24v and this printer push 12v is that the issue

      Delete
    2. the cash drawer appears to be generic no info on it except its 24v and this printer push 12v is that the issue

      Delete
  14. heloo it works fine with my windows 7 all i did was install drivers from cd and it prints i use quickbooks pos 2009 but can you guys tell me which cash drawer is compatible with this printer - kimforbesforbestech@gmail.com

    ReplyDelete
  15. heloo it works fine with my windows 7 all i did was install drivers from cd and it prints i use quickbooks pos 2009 but can you guys tell me which cash drawer is compatible with this printer - kimforbesforbestech@gmail.com

    ReplyDelete
  16. I installed it in windows 8 and it appears as a generic bulk device on printers and other divices, has anyone made it work yet in windows. I did install the drivers from the cd but no luck.
    I need to make this work, any ideas? please help?

    ReplyDelete


  17. Excellent post and wonderful blog, I really like this type of interesting articles keep it u


    123hpremoteassistance Officejet 7510 Printer Setup

    ReplyDelete
  18. It is a quite nice site with really good article. I have really enjoyed reading your blog posts. Any way I hope you post again soon.
    buy all in one printers 2017

    ReplyDelete