Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Brother QL-800 Label Printer

From Eugene Makerspace Wiki


This is a single-color high-ish resolution printer that will print and cut labels from a roll. There's more details on the Brother site. We use it primarily for the QR code inventory labels. It should be attached to the PC by the front door at the space.

Software installation & Setup

The printer and the label editor tools should be already installed. Brother does claim to have drivers, but they were iffy at best on linux. Instead we're using the `brother_ql` utility which is a python package. {https://github.com/pklaus/brother_ql brother_ql has its own documentation on github}.

# You'll need pip. On ubuntu, pip is available as a package called python3-pip
pip install --upgrade brother_ql

# We'll put everything in a `ql800` directory and you'll need to create a virtual environment in there
mkdir ql800 && cd ql800
python3 -m venv .

# The user on the PC needs to be in the `lp` group 
sudo usermod -a -G lp ems-l001

# And we need a udev rule to allow access to this device from our scripts and the local flask server behind the web
sudo touch '/etc/udev/rules.d/99-label-printer.rules 

# And the following in 99-label-printer.rules:
SUBSYSTEM=="usb", ATTR{idVendor}=="04f9", ATTR{idProduct}=="209b", MODE="0666", GROUP="lp", SYMLINK+="usb/lp0"' > /etc/udev/rules.d/99-label-printer.rules

# Now, pull down the code from the repo. This has the label editor web app (flask server) and some batch label generation scripts. 
git clone git@github.com:sfoster/ql800-label-maker.git

# And install the dependencies:
pip install -r server/requirements.txt

# Check you can communicate with the printer: 
brother_ql --backend pyusb discover

# And run the server
python server/server.py 

Once the server is running you should be able to load up the web app in a browser. (This is not on the internet - its local only) There's a template picker dropdown, and you can enter the URL you want the QR code to go to and the label text. The "Save Image" button should go green at that point - that'll let you generate the PNG file and save it. If the printer is connected, the "Print to QL-8800" button should be green and pushing that should send the image directly to the label printer.

Printer setup

It wants 12V DC power, and USB to the host computer. Load in the label roll. Make sure the "Editor Lite" LED is *not* lit. And close the cover - it will blink orange at you and refuse to print otherwise.

Label sizes and file format

There's various label sizes available. We're using 29x90mm (DK-1201) where there's room for it. 17x54mm (DK-11204) is smaller. To prepare a file for the printer, you need a PNG image in the correct orientation and dimensions. It is not forgiving - if your image is the wrong size/orientation, it will not figure it out and print it anyway.

The printer prints at roughly 300dpi. For best results, prepare a PNG with the exact pixel dimensions for the label size:

 Name      Printable px   Description               
 17x54      165 x  566    17mm x 54mm die-cut       
 17x87      165 x  956    17mm x 87mm die-cut       
 23x23      202 x  202    23mm x 23mm die-cut       
 29x42      306 x  425    29mm x 42mm die-cut       
 29x90      306 x  991    29mm x 90mm die-cut       
 39x90      413 x  991    38mm x 90mm die-cut       
 39x48      425 x  495    39mm x 48mm die-cut       
 52x29      578 x  271    52mm x 29mm die-cut       
 62x29      696 x  271    62mm x 29mm die-cut       
 62x100     696 x 1109    62mm x 100mm die-cut      
 102x51    1164 x  526    102mm x 51mm die-cut      
 102x152   1164 x 1660    102mm x 153mm die-cut     
 d12         94 x   94    12mm round die-cut        
 d24        236 x  236    24mm round die-cut        
 d58        618 x  618    58mm round die-cut        

Preparing print-ready files

The file preparation can be done with anything that can output a PNG in the correct dimensions. To help make the QR code labels, there's a web app running on the entry PC which lets you enter a URL and label text and lets you either save the output PNG, or - if the printer is attached and ready - print directly from the web UI.

Note that a landscape oriented label is actually printed in portrait orientation. I.e if you want a 90mm x 29mm label, you'll create a 991px x 306px image and save it rotated 90deg.

To send a file to the printer directly, you can invoke brother_ql. You need to tell it which label size you are using - in this case 29x90:

brother_ql --backend pyusb --model QL-800 --printer 'usb://0x04f9:0x209b' print -l 29x90 path/to/label-image.png

If you need to print a bunch of labels, there's a batch-generator folder in the repo you cloned with a `generate.js` script to output images given a .csv. And a print-batch.sh script to send each image in the `output` folder as a job to the label printer.