Frequently Asked Questions
Clone this wiki locally
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.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
- 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
- For version 2.2, a heat time of 150 is fine -- set the type to