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 Standard PrinterServer to be used with P-Touch Software

Step-by-step:

sudo apt install p910nd
sudo nano /etc/default/p910nd
Edit file 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:

  1. Install correct Brother Driver for your operating system
  2. Add a printer using TCP/IP address
  3. Un-check Query printer
  4. 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:

BrotherLabelSample.jpg

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

Thunkable App für Materialwirtschaft

Google Sheet für Materialwirtschaft