Brother p-touch D450VP

La Brother p-touch D450VP est une petite étiqueteuse destinée à l'impression thermique d'étiquettes bicolores sur rubans laminés ou tissus de 3,5 à 18 mm de large.

Si l'imprimante est autonome, puisqu'elle est dotée d'un clavier et d'un écran, elle peut aussi être reliée à un ordinateur. Bien entendu Brother n'a pas pris la peine de développer un utilitaire compatible Linux mais un utilisateur suisse, Dominic Radermacher, a créé un outil en ligne de commande appelé ptouch-print qui permet d'utiliser l'appareil sous Ubuntu. Voici comment l'installer et utiliser votre p-touch sous Ubuntu.

  • PT-2420PC
  • PT-1230PC
  • PT-2430PC
  • PT-2730 (48 lignes blanches pourraient être imprimées avant le texte souhaité)
  • PT-E500 (espaces blancs intercalaires possibles)
  • PT-D450
  • PT-D450VP (seule testée sous Ubuntu)

Dominic utilise Arch Linux, par conséquent sous Ubuntu il va falloir compiler l'application. Ce n'est pas si difficile mais ça demande un peu de méthode.

Outils

En tout premier lieu, il est nécessaire d'installer tous les outils de compilation :

usr@usr-pc:~$ sudo apt install build-essential fakeroot checkinstall automake libglib2.0-dev gettext

Vous devez également installer git :

usr@usr-pc:~$ sudo apt install git

Dépendances

puis les dépendances de ptouch-print sous Ubuntu :

Avec Ubuntu 20.04

libusb-dev libgd-dev autopoint

usr@usr-pc:~$ sudo apt install libusb-dev libgd-dev autopoint

Avec Ubuntu 24.04 (Noble Numbat) et probablement depuis 21.04 LTS

libusb-dev libusb-1.0-0-dev libgd-dev autopoint

usr@usr-pc:~$ sudo apt install libusb-dev libusb-1.0-0-dev libgd-dev autopoint

En une seule commande pour aller vite

  • Avec Ubuntu 20.04 (Focal)
usr@usr-pc:~$ for paquet in build-essential fakeroot checkinstall automake libglib2.0-dev gettext git libusb-dev libgd-dev autopoint ; do if [[ $(dpkg -l | grep "${paquet}") ]]; then echo "$paquet déjà installé, rien à faire" ; else sudo apt install "${paquet}"; fi; done
  • Avec Ubuntu 24.04 LTS ("Noble Numbat") et probablement depuis Ubuntu 21.04
usr@usr-pc:~$ for paquet in build-essential fakeroot checkinstall automake libglib2.0-dev gettext git libusb-dev libusb-1.0-0-dev libgd-dev autopoint ; do if [[ $(dpkg -l | grep "${paquet}") ]]; then echo "$paquet déjà installé, rien à faire" ; else sudo apt install "${paquet}"; fi; done

Vous pouvez désormais télécharger les sources dans un répertoire temporaire.

usr@usr-pc:~$ mkdir ~/Documents/RepDeTravail
usr@usr-pc:~$ cd ~/Documents/RepDeTravail
usr@usr-pc:~$ git clone https://github.com/Nihlus/ptouch-print

Compilation

Si vous avez de la chance, la compilation va se dérouler sans souci ainsi :

usr@usr-pc:~$ cd ptouch-print
usr@usr-pc:~$ ./autogen.sh
usr@usr-pc:~$ ./configure --prefix=/usr
usr@usr-pc:~$ make
usr@usr-pc:~$ sudo checkinstall
Attention : lorsque checkinstall vous fait saisir les informations d'installation, ne pas oublier d'inscrire un nombre pour le numéro de version, la valeur par défaut - du texte - n'est pas acceptée. Il faut donc :
  • Répondre oui (y) à la question :
Should I create a default set of package docs?  [y]: y
  • Saisir quelques mots de présentation
  • Lorsque checkinstall indique :
This package will be built according to these values: 
0 -  Maintainer: [ root@vous ]
1 -  Summary: [ La Brother p-touch D450VP est une petite étiqueteuse destinée à l'impression thermique d'étiquettes bicolores sur rubans laminés ou tissus de 3,5 à 18 mm de large. Ce paquet permet de l'utiliser sous Ubuntu. Il est dû à Dominic Radermacher. ]
2 -  Name:    [ ptouch ]
3 -  Version: [ print ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ ptouch-print ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Recommends: [  ]
12 - Suggests: [  ]
13 - Provides: [ ptouch ]
14 - Conflicts: [  ]
15 - Replaces: [  ]
16 - Prerequires: [  ]

Enter a number to change any of them or press ENTER to continue:
  • Saisir la valeur 3
Enter a number to change any of them or press ENTER to continue: 3
Enter new version: 
  • Saisir un numéro de version, par exemple 1.3.2

Et voilà le travail :

This package will be built according to these values: 

0 -  Maintainer: [ root@vous ]
1 -  Summary: [ La Brother p-touch D450VP est une petite étiqueteuse destinée à l'impression thermique d'étiquettes bicolores sur rubans laminés ou tissus de 3,5 à 18 mm de large. Ce paquet permet de l'utiliser sous Ubuntu. Il est dû à Dominic Radermacher. ]
2 -  Name:    [ ptouch ]
3 -  Version: [ 1.3.2 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ ptouch-print ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Recommends: [  ]
12 - Suggests: [  ]
13 - Provides: [ ptouch ]
14 - Conflicts: [  ]
15 - Replaces: [  ]
16 - Prerequires: [  ]

Enter a number to change any of them or press ENTER to continue: 
  • Il n'y a plus qu'à appuyer sur entrée
Installing with make install...
sudo make install peut être utilisé à la place de checkinstall mais pour le suivi des paquets, checkinstall est plus adapté. C'est plus simple à désinstaller.

Vous devriez être désormais capable d'imprimer avec votre étiqueteuse :

usr@usr-pc:~$ sudo ptouch-print --text "Ma première étiquette !"

En cas de problème lors de la compilation

Lorsqu'on utilise une application créée par un particulier, il est souvent nécessaire d'adapter l'installation, notamment aux changements de version d'Ubuntu : il n'y a pas un collectif de programmateurs qui peuvent adapter les paquets en temps réel. Toutefois avec quelques recherches le problèmes se résolvent et l'étiqueteuse fonctionne. Voici quelques "recettes" mises au point après avoir passé le retour des erreurs dans le moteur de recherche

Avec Ubuntu 20.04 (Focal)

Si jamais configure ou autogen.sh rencontrent des difficultés (ils le diront), les manipulations suivantes ont permis de régler le problème sous une Ubuntu 20.04 (on suppose que le terminal est ouvert dans le répertoire cloné ptouch-print)

usr@usr-pc:~$ cp /usr/share/automake-1.16/missing ../ (à adapter à votre version d'automake)
usr@usr-pc:~$ cp config.rpath ../
usr@usr-pc:~$ aclocal
usr@usr-pc:~$ autoconf
usr@usr-pc:~$ autoheader
usr@usr-pc:~$ automake --add-missing

puis :

usr@usr-pc:~$ ./autogen.sh
usr@usr-pc:~$ ./configure --prefix=/usr
usr@usr-pc:~$ make
usr@usr-pc:~$ sudo checkinstall

Avec Ubuntu 21.04 (Hirsute Hippo)

Difficulté rencontrée avec libusb pourtant installé : la difficulté a été contournée en téléchargeant manuellement les paquets. La compilation affiche l'erreur suivante :

E: Impossible de trouver le paquet libusb-1.0-dev
E: Impossible de trouver de paquet correspondant à l'expression rationnelle « libusb-1.0-dev »

La difficulté a été contournée en téléchargeant manuellement les paquets libusb-dev_0.1.12-32_amd64.deb et :

sudo dpkg -i libusb-1.0-0-dev_1.0.23-2build1_amd64.deb
Cette installation a rencontré des problèmes de version MAIS un sudo apt-get -f install a permis de tout remettre d'aplomb … et de finaliser la compilation de l’utilitaire : voir ce post sur le forum.

Avec Ubuntu 23.10 (Mantic)

Erreur relative à gettext se traduisant par exemple par :

 'AM_GLIB_GNU_GETTEXT' not found in library

ou

 cannot stat ‘t-bg.gmo’: No such file or directory

Erreur résolue par l'installation du paquet gettext :

sudo apt install gettext
J'ai également installé manuellement le paquet déjà installé libglib2.0-bin mais je ne sais pas si c'était utile.
sudo dpkg -i /home/usr/Téléchargements/libglib2.0-bin_2.76.1-1_amd64.deb
sudo apt-get -f install

Avec Ubuntu 24.04 LTS ("Noble Numbat")

Erreur liée à la version de la bibliothèque libusb-dev qui provoque de la part de .configure une bordée de jurons :

checking for libusb-1.0/libusb.h... no
configure: error: libusb headers missing - maybe you need to install package libusb-dev or libusb-devel?

L'erreur se résout en installant le paquet libusb-1.0-0-dev :

$ sudo apt install libusb-1.0-0-dev

sudo ? mais pourquoi sudo ? Essayez sans :

usr@usr-pc:~$ ptouch-print --text "Ma première étiquette !"
PT-D450 found on USB bus 1, device 30
libusb_open error :LIBUSB_ERROR_ACCESS

Que se passe-t-il ? L'étiqueteuse est attribuée à l'utilisateur root, pas à l'utilisateur courant. Une petite règle udev va régler tout ça.

Identifiants USB

Première étape : repérer les identifiants de l'étiqueteuse

Si vous voulez aller vite, vous pouvez essayer avec idVendor=="04f9" et idProduct=="2073". Avec un peu de chance ça fonctionnera chez vous, sinon il faut chercher un peu (pas trop, rassurez-vous).

Le plus simple pour repérer les caractéristiques de l'étiqueteuse : commencer par la débrancher puis la rebrancher. Saisir alors :

usr@usr-pc:~$ find /dev/bus/usb/ ! -type d -mmin -5
/dev/bus/usb/001/032

Cette commande va afficher la liste des périphériques branchés depuis moins de 5 mn. Si vous vous débrouillez bien il n'y en aura qu'un : l'étiqueteuse ! On peut alors utiliser udevadm pour afficher les caractéristiques de la machine (à adapter selon les retours de find) :

usr@usr-pc:~$ udevadm info /dev/bus/usb/001/032 | grep -E "VENDOR|PRODUCT"
E: PRODUCT=4f9/2073/100
E: ID_VENDOR=Brother
E: ID_VENDOR_ENC=Brother
E: ID_VENDOR_ID=04f9
E: ID_VENDOR_FROM_DATABASE=Brother Industries, Ltd

idVendor est donc 04f9 et idProdut est donc 2073 (et pas 4f9 !)

Création de la règle udev

On peut alors créer une règle udev.

On commence par vérifier qu'une règle portant le nom envisagé n'existe pas déjà (peu probable mais par principe, on vérifie) :

usr@usr-pc:~$ if [[ -f "/etc/udev/rules.d/41-brother-ptouch.rules" ]]; then echo "Changer de nom"; else echo "Vous pouvez utiliser ce nom de fichier"; fi

Si le retour est "Changer de nom", ben changez le nom. Peu importe lequel, il est cependant conseillé de respecter la syntaxe en commençant par un numéro (ordre d'exécution des règles) suivi d'un tiret et de ne pas faire comme dans l'exemple qui a pris 41 comme numéro d'ordre. Commencer à 50 :

sudo echo 'SUBSYSTEM=="usb",ATTRS{idVendor}=="04f9",ATTRS{idProduct}=="2073",GROUP="users",MODE="0666"' > /etc/udev/rules.d/41-brother-ptouch.rules

Ou bien, si

bash: /etc/udev/rules.d/41-brother-ptouch.rules: Permission non accordée

Essayer la méthode alternative :

echo 'SUBSYSTEM=="usb",ATTRS{idVendor}=="04f9",ATTRS{idProduct}=="2073",GROUP="users",MODE="0666"' > 41-brother-ptouch.rules
sudo mv 41-brother-ptouch.rules /etc/udev/rules.d/

Attention à bien respecter la syntaxe des guillemets et apostrophes. Dans users mettre un group auquel vous appartenez (cat /etc/group).

Pour lister les groupes auxquels vous appartenez :
cat /etc/group | grep $USER
adm:x:4:syslog,utilisateur1,utilisateur2
cdrom:x:24:utilisateur1,utilisateur2
sudo:x:27:utilisateur1,utilisateur2
dip:x:30:utilisateur1,utilisateur2
plugdev:x:46:utilisateur1,utilisateur2
users:x:100:utilisateur1,utilisateur2
lpadmin:x:114:utilisateur1,utilisateur2
utilisateur1:x:1000:

Rechargez les règles udev (ou redémarrez votre système) :

sudo udevadm control --reload

Et là tout va bien :

usr@usr-pc:~$ ptouch-print --text "Ma première étiquette !"

Syntaxe

ptouch-print [options] <paramètres d'impression>

options

  • –font <nom police> utiliser une police spécifique
  • –font <fichier> utiliser un fichier de police <fichier>
  • –writepng <fichier> au lieu d'imprimer sur l'imprimante, la sortie d'impression est envoyée dans un fichier png. Fonctionne uniquement pour le texte (paramètre –text) et accepte un seul et unique paramètre de texte
  • –help pour afficher l'aide

paramètres d'impression

  • –image <fichier> imprime le fichier d'image passé en paramètre. Format noir et blanc png impératif.
  • –text <texte> imprime 1 à 4 lignes de textes. Si le texte contient des espaces, utiliser des guillemets anglais "". Lorsqu'il y a plusieurs lignes, entourer le texte de chaque ligne par des guillemets, chaque groupe étant séparé par un espace. Ex. : –text "ligne 1" "ligne 2" "ligne 3"
  • –cutmark imprime une marque de découpe sur le ruban.
  • –fontsize fixe manuellement (pas automatique, qui est par défaut le plus grand possible compte tenu du nombre de lignes et de la hauteur du ruban) la taille de la police.
  • –pad <n> ajoute n pixels de marge (espaces blancs).

Exemples

usr@usr-pc:~$ ptouch-print --text "Texte sur une seule ligne"
usr@usr-pc:~$ ptouch-print --text "Première ligne" "Deuxième ligne" "Troisième ligne"
usr@usr-pc:~$ ptouch-print --text "Etiquette de test" --writepng EtiquetteDeTest.png
usr@usr-pc:~$ ptouch-print --pad 4 --text "Texte précédé de 4 pixels de marge"
usr@usr-pc:~$ ptouch-print --text "Un texte suivi d'une image" --image image.png
usr@usr-pc:~$ ptouch-print --help
usr@usr-pc:~$ ptouch-print --font "Ubuntu:bold" --fontsize 23 --text "Texte Ubuntu gras, 23 pixels"
usr@usr-pc:~$ ptouch-print --text "Etiquette 1" --cutmark --text "Etiquette 2"
  • imprimante_brother_ptouch_d450.txt
  • Dernière modification: Le 05/09/2024, 23:55
  • par zococo