Notes for Fablab Label Printer installation
1. Installation of Printer-Server
- Install Raspberry PI OS Lite (no desktop needed) on Raspberry
- sudo raspi-config (Enable SSH, set wirless password)
1.1 Raspberyy PrinterServer for Brother Label Printers
Step-by-step:
sudo apt install p910nd sudo nano /etc/default/p910nd
# Printer number, if not 0 P910ND_NUM="" # Additional daemon arguments, see man 8 p910nd P910ND_OPTS="-f /dev/usb/lp0" # Debian specific (set to 1 to enable start by default) P910ND_START=1
Start service:
systemctl restart p910nd.service
Check this web-site for necessary settings in Windows / MacOS
Main steps are:
- Install correct Brother Driver for your operating system
- Add a printer using TCP/IP address
- Un-check Query printer
- Select Customer, Protocol Raw, Port Number 9100
1.2 Python Print Server for JSON Files
sudo apt update sudo apt install python3-pil python3-flask python3-qrcode sudo apt install python3-pip pip install brother_ql
Extend Path-variable with /home/pi/.local/bin (sudo nano /etc/profile)
Grant user access right to USB-port:
sudo usermod -aG lp pi
Restart Raspberry:
sudo shutdown -r now
If you have a label-printer connected via USB, check unique ID of Brother Printer on USB-Port:
brother_ql -b pyusb discover (Should be something like: usb://0x04f9:0x209b)
For printers with WLAN, just set-up the WLAN Infrastructure setting on the printer (Network & Password) and reserver the printers IP - Address in your router. The IP-Address needs to be corrected in the attached Python-program.
Copy Arial Font-File arial.ttf in home-directory
wget https://www.freefontspro.com/d/14454/arial.zip unzip arial.zip
Generate or copy python-file (s.a. attached file WL_BrotherLabelPrinterServer.py)
Make sue the unique ID is correct in the program in line "subprocess.run....."
wget http://wiki.zurich.fablab.ch/Datei:WL_BrotherLabelPrinterServer.zip unzip WL_BrotherLabelPrinterServer.zip
Run server with
python3 WL_BrotherLabelPrinterServer.py
Test with Postman - Post command:
IP: http://10.0.0.81:5000/print_label
Body (raw / json):
{ "QR-ID": "123", "Title": "Sample Product", "Size": "4x3 m2", "Discount": "5% Discount", "Price": "9 CHF", "Labelsize": "standard" "PrinterIP": "xx.x.x.xx", "color": "yes" }
To autostart the programm at startup add crontab job (don't use rc-local). Call on the raspberry
crontab -e
and add the line below:
@reboot cd ~/ && /usr/bin/WL_BrotherLabelPrinterServer.py
Example Labels:
Further Links:
Description command line tool brother_ql: https://pypi.org/project/brother-ql/0.8.3/
Using a Raspberry to make a generic printserver for the Brother Label-Printer: https://www.splitbrain.org/blog/2020-08/18-raspberry_print_server_for_brother_ql-500_label_printer_no_cups