Frequently Asked Questions

James Adam edited this page Nov 6, 2013 · 6 revisions

Feel free to ask other questions by posting to the Google Group, or filing an issue here.

Q: Why would I want to print something rather than view it on my smartphone?

A: This is a great question. I don't have an answer for you either, except that I think the software and tools presented here provide a good foundation to make answering that question easier.

Q: I have a different kind of printer - can I still use it with this?

A: The short answer is yes, it's possible, but not without some work. The software is printer-agnostic, and in theory any printer can be supported. However, it's likely that you'll need to write some software yourself, to translate the pixel map into appropriate data (normally serial control codes) for your specific model of printer.

As long as it identifies its type in the Accept header (e.g. application/vnd.exciting.printer.A2-raw, or application/vnd.exciting.printer.type-of-your-printer), and there's a corresponding PrinterProcessor implementation, then the data that the printer is sent can be tailor for that specific printer model. This is achieved by passing the pixel data through different PrintProcessor subclasses depending on that printer type.

At the moment, the only PrintProcessor implementations are for the A2 printer that is commonly available. However, it should be simple to write others, and if you do, please submit a pull request!

Q: Do I have to use an Arduino? Can't I use a [nanode | Raspberry Pi | Portable router running OpenWRT | something else]?

A: You can use anything you want to talk to the backend server, as long as you're happy to write the software to do so. You can use the [Arduino sketch] as a guide to how your device should operate, but the gist of it is:

  • Generate and store an ID on first boot;
  • Make requests to a server every 10 seconds to the path /print/<printer-id>, including your printer type in an Accept header
  • If some data was returned, download it and then send it to the printer

As long as you can get that to work, the hardware that it is running on is unimportant.

Q: My printouts aren't clear enough

A: Assuming that you are using the A2 printer, there are a few different firmware versions floating around. I have seen versions 2.2, 3.8 and 4.0 "in the wild". To find out your printer version, power on the printer while holding down the line-feed button.

Regardless, to control the darkness of the printing, for the moment you need to modify the type which your printer reports as in the Arduino sketch to include a heat time parameter.

  • For version 4.0, a heat time of 240 seems to work well -- set the type to A2-raw.240
  • For version 2.2, a heat time of 150 is fine -- set the type to A2-raw.150

Q: I have a question that you haven't answered.

A: Feel free to ask other questions by getting in touch on the Google Group, or filing an issue here. If it's something that other people might find useful, we'll update the wiki accordingly.