[imprimante] Brother DCP-J140W

Reconnaissance et configuration du matériel / kernel linux
Répondre
eusebe
Hankyu
Messages : 13
Inscription : lun. 29 juin 2009, 18:13

[imprimante] Brother DCP-J140W

Message par eusebe »

Bonjour à tous,

Heureux sous Archlinux depuis quelques années, je viens de changer d'imprimante pour une Brother DCP-J140W (http://welcome.solutions.brother.com/BS ... pj140w_all).

La liste des PKGBUILD permettant d'installer les drivers pour les imprimantes Brother est longue sur l'AUR, mais je n'ai malheureusement pas trouvé celui spécifique de mon modèle. Je ne suis pas super confortable quand il s'agit de bidouiller des PKGBUILD un peu complexes (beaucoup appliquent des patchs dont je ne vois pas trop la fonction...) :? .

Quelqu'un aurait-il réussi à installer ce modèle sous Archlinux ? Ou saurait comment le faire ?

Merci d'avance pour votre aide.
Avatar de l’utilisateur
Youpi
yeomen
Messages : 252
Inscription : sam. 16 juin 2012, 22:44

Re: [imprimante] Brother DCP-J140W

Message par Youpi »

salut, deja tu as de la chance, les drivers sous linux existent (driver)

Maintenant, peut être faut il être patient... gutenprint va peut etre gérer ton imprimante...
Arch 64 bit + Kernel ck-corex + Tint2 et fbpanel + OpenBox + Bumblebee + conky + eclipse et matlab
navigateur internet : iron (yaourt iron-bin)
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [imprimante] Brother DCP-J140W

Message par FoolEcho »

Il vaut mieux que tu fasses le PKGBUILD par toi-même, sinon tu risques d'attendre longtemps. :mrgreen:
eusebe a écrit :(beaucoup appliquent des patchs dont je ne vois pas trop la fonction...)
Pour celui que j'ai regardé (histoire de partir d'un nom de modèle proche), brother-dcpj315w, ça consiste à modifier des permissions sur un répertoire (le faire appartenir à root plutôt qu'à lp ici). J'imagine que tu peux partir de celui-ci en utilisant le lien donnée par Youpi (moi ou un autre regardera si tu n'y arrives pas -- mais j'ai moyennement le temps de te proposer quelque chose, là :) ).

EDIT: Le brother-dcpj125 est peut-être meilleur comme base (dans le sens où il est fait mention d'une lib32 en plus si tu es sous x86_64 -- ce type de pilote n'existant en général que pour du 32 bits).
«The following statement is not true. The previous statement is true.» :nage:
mAn
Hankyu
Messages : 40
Inscription : mar. 14 juil. 2009, 17:32
Localisation : Lyon

Re: [imprimante] Brother DCP-J140W

Message par mAn »

Salut.

Pour avoir fait celui de la mienne (j5910dw), je peux te rassurer ce n'est pas trop dur. Grosso modo, tu te retrouves à encapsuler l'installation au sein d'un paquetage. (j'ai bien formulé mesdames et messieurs les Archers ? ^^;)

Tout d'abord tu as à installer le pilote LPR, puis ensuite le wrapper pour CUPS.

Je ne saurais aussi que t'encourager à créer ton paquetage afin d'avoir une installation plus propre et une désinstallation facile. En + ça peut servir à d'autres. ;)
eusebe
Hankyu
Messages : 13
Inscription : lun. 29 juin 2009, 18:13

Re: [imprimante] Brother DCP-J140W

Message par eusebe »

Bonbonbon, OK !

Je vais essayer de le faire, merci pour vos réponses... Bientôt sur AUR (j'espère !).

David
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [imprimante] Brother DCP-J140W

Message par FoolEcho »

Tu peux tester celui-ci (aucune garantie):

PKGBUILD

Code : Tout sélectionner

pkgname=brother-dcpj140w
_printername=dcpj140w
pkgver=1.1.3
pkgrel=1
pkgdesc="CUPS and lpr drivers for Brother DCP-J140W printer"
arch=('i686' 'x86_64')
license=('custom:Brother Industries')
depends=('cups')
if [ $CARCH == "x86_64" ]; then
  depends+=('lib32-glibc' 'lib32-libcups')
fi
url="http://solutions.brother.com/linux/en_us/index.html"
source=(http://www.brother.com/pub/bsc/linux/dlf/${_printername}cupswrapper-$pkgver-6.i386.rpm \
	http://www.brother.com/pub/bsc/linux/dlf/${_printername}lpr-$pkgver-6.i386.rpm)
md5sums=('fa2d50677492bfc83e27184f316061c3'
         '599a7667f2c805d5dbc2fa655832f17c')
install=dcpj140w.install
build() {
   cd "$srcdir"
   cp -r $srcdir/{opt,usr} $pkgdir

   sed -i 's|/etc/init.d/cups|/etc/rc.d/cupsd|' $pkgdir/opt/brother/Printers/dcpj140w/cupswrapper/cupswrapperdcpj140w
}
dcpj140w.install

Code : Tout sélectionner

post_install() {
echo "Remember to add user to lp group using 
  gpasswd -a USER lp
  (and logout after adding groups)
echo ""  
echo "Remember to execute as root the following executable:
  /opt/brother/Printers/dcpj125/cupswrapper/cupswrapperdcpj140w
"
}
«The following statement is not true. The previous statement is true.» :nage:
eusebe
Hankyu
Messages : 13
Inscription : lun. 29 juin 2009, 18:13

Re: [imprimante] Brother DCP-J140W

Message par eusebe »

Bonsoir à tous,

J'ai abouti au même PKGBUILD que celui sympathiquement proposé par FoolEcho.

L'installation du paquet se passe sans erreur. Par contre, la commande qu'il faut se "souvenir d'exécuter en tant que root" passe mal :

Code : Tout sélectionner

sudo /opt/brother/Printers/dcpj140w/cupswrapper/cupswrapperdcpj140w 
/etc/rc.d/cupsd: ligne5: /etc/rc.conf: Aucun fichier ou dossier de ce type
/etc/rc.d/cupsd: ligne6: /etc/rc.d/functions: Aucun fichier ou dossier de ce type
/etc/rc.d/cupsd: ligne5: /etc/rc.conf: Aucun fichier ou dossier de ce type
/etc/rc.d/cupsd: ligne6: /etc/rc.d/functions: Aucun fichier ou dossier de ce type
/etc/rc.d/cupsd: ligne38: stat_busy : commande introuvable
/etc/rc.d/cupsd: ligne48: rm_daemon : commande introuvable
/etc/rc.d/cupsd: ligne49: stat_done : commande introuvable
/etc/rc.d/cupsd: ligne5: /etc/rc.conf: Aucun fichier ou dossier de ce type
/etc/rc.d/cupsd: ligne6: /etc/rc.d/functions: Aucun fichier ou dossier de ce type
/etc/rc.d/cupsd: ligne15: stat_busy : commande introuvable
/etc/rc.d/cupsd: ligne28: add_daemon : commande introuvable
/etc/rc.d/cupsd: ligne29: stat_done : commande introuvable
On a un peu l'impression que c'est un problème avec le fichier rc.conf, qui n'existe pas et pour cause : j'ai une installation reposant entièrement sur systemd, donc plus besoin de rc.conf...

[edit] : voici le fichier /etc/rc.d/cupsd en question. Bizarre qu'il fasse référence au rc.conf, non ?

Code : Tout sélectionner

#!/bin/bash

daemon_name=cupsd

. /etc/rc.conf
. /etc/rc.d/functions
#. /etc/conf.d/$daemon_name.conf

get_pid() {
        pidof -o %PPID $daemon_name
}

case "$1" in
  start)
    stat_busy "Starting $daemon_name daemon"

    PID=$(get_pid)
    if [ -z "$PID" ]; then
      [ -f /var/run/$daemon_name.pid ] && rm -f /var/run/$daemon_name.pid
      # RUN
      $daemon_name
      #
      if [ $? -gt 0 ]; then
        stat_fail
        exit 1
      else
        echo $(get_pid) > /var/run/$daemon_name.pid
        add_daemon $daemon_name
        stat_done
      fi
    else
      stat_fail
      exit 1
    fi
    ;;

  stop)
    stat_busy "Stopping $daemon_name daemon"
    PID=$(get_pid)
    # KILL
    [ ! -z "$PID" ] && kill $PID &> /dev/null
    #
    if [ $? -gt 0 ]; then
      stat_fail
      exit 1
    else
      rm -f /var/run/$daemon_name.pid &> /dev/null
      rm_daemon $daemon_name
      stat_done
    fi
    ;;

  restart)
    $0 stop
    sleep 3
    $0 start
    ;;

  status)
    stat_busy "Checking $daemon_name status";
    ck_status $daemon_name
    ;;

  *)
    echo "usage: $0 {start|stop|restart|status}"
esac

exit 0
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [imprimante] Brother DCP-J140W

Message par FoolEcho »

C'est pour ça que j'aime pas leur cupswrapper. Il cherche à déplacer certains des fichiers depuis /opt vers /usr (j'ai regardé en diagonale, mais le script a déjà du te créer /usr/share/cups/model/Brother et placer des choses de ci de là, comme le ppd, essaie de vérifier)

Pour résumer, si tu as beaucoup de bol, regarde si le fait de relancer cups lui permet de détecter ton imprimante. :)

Sinon, il faudra regarder en détail et placer les fichiers adéquats dans les bons emplacements (en gros, il y a le ppd et quelques binaires sans doute... et le faire par le PKGBUILD tant qu'à faire :D ).
Pas le temps de regarder maintenant, mais si tu peux, fais le tour des paquets sur AUR, s'il y en a un qui place dans /usr au lieu de /opt, ce sera sur ce type de PKGBUILD qu'il faudra s'appuyer.


EDIT: Regarde si le ppd est suffisant en modifiant le PKGBUILD..
Avant de désinstaller le paquet précédent, fais un peu de nettoyage:

Code : Tout sélectionner

/opt/brother/Printers/dcpj125/cupswrapper/cupswrapperdcpj140w -e
Puis tu remplaces la fonction build dans le PKGBUILD par:

Code : Tout sélectionner

package() {
   cd "$pkgdir"
   mkdir -p $pkgdir/usr/share/cups/model
   cp $srcdir/opt/brother/Printers/${_printername}/cupswrapper/brother_${_printername}_printer_en.ppd $pkgdir/usr/share/cups/model/brother_${_printername}_printer_en.ppd
   chmod 644  $pkgdir/usr/share/cups/model/brother_${_printername}_printer_en.ppd
}
Puis redémarre cups et regarde si ton imprimante est détectée (sinon il va y avoir plus de choses à faire, forcément :( ).
«The following statement is not true. The previous statement is true.» :nage:
eusebe
Hankyu
Messages : 13
Inscription : lun. 29 juin 2009, 18:13

Re: [imprimante] Brother DCP-J140W

Message par eusebe »

Rebonjour tout le monde.

Alors, sans modifier le PKGBUILD, mon imprimante semble finalement reconnue. Au départ, elle n'était pas configurée correctement pour imprimer en wifi. J'ai indiqué l'adresse ip de l'imprimante dans la configuration, et tout roule.

Le scanner marche également bien en installant le paquet brscan4-network depuis l'AUR.

Donc, au final, mon PKGBUILD ressemble à ça :

Code : Tout sélectionner

# Contributor: David Hajage <dhajage@gmail.com>

pkgname=brother-dcpj140w
_printername=dcpj140w
pkgver=1.1.3
pkgrel=6
pkgdesc="CUPS driver for Brother DCP-J140W printer"
arch=('i686' 'x86_64')
license=('custom:Brother Industries')
depends=('cups' 'tcsh')
if [ $CARCH == "x86_64" ]; then
  depends=("${depends[@]}" 'lib32-libstdc++5' 'lib32-libcups')
fi
makedepends=('rpmextract')
url="http://solutions.brother.com/linux/en_us/index.html"
source=(http://www.brother.com/pub/bsc/linux/dlf/${_printername}cupswrapper-$pkgver-$pkgrel.i386.rpm \
	http://www.brother.com/pub/bsc/linux/dlf/${_printername}lpr-$pkgver-$pkgrel.i386.rpm)

md5sums=('fa2d50677492bfc83e27184f316061c3'
         '599a7667f2c805d5dbc2fa655832f17c')

install=dcpj140w.install

build() {
   cd "$startdir/pkg" || return 1
   for n in $startdir/src/*.rpm; do
   rpmextract.sh "$n" || return 1
   done 

   sed -i 's|/etc/init.d/cups|/etc/rc.d/cupsd|' $pkgdir/opt/brother/Printers/dcpj140w/cupswrapper/cupswrapperdcpj140w
}
Et le .install :

Code : Tout sélectionner

# new package version
post_install() {
cat <<-EndOfMessage
  NOTE 1: Remember to add user to lp group using 
  gpasswd -a USER lp
  NOTE 2: Remember to logout after adding groups
  NOTE 3: Remember to execute as root the following executable:	
  /opt/brother/Printers/dcpj140w/cupswrapper/cupswrapperdcpj140w
EndOfMessage
}
Par rapport au PKGBUILD de la DCP125, j'ai rajouté lib32-libcups comme une dépendance pour l'archi 64 bit (et donc supprimé la note 4 du .install qui disait de l'installer).

J'hésite un peu à supprimer la NOTE 3, car cette commande n'a pas marché chez moi (cf précédent post), mais l'imprimante fonctionne correctement quand même... Quel est le rôle de cette commande ? Comment savoir si elle a quand même fait quelque chose chez moi, malgré les messages d'erreur ? Et globalement, pensez vous de ce PKGBUILD ? Est-il suffisamment mature pour aller dans l'AUR ?
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [imprimante] Brother DCP-J140W

Message par FoolEcho »

eusebe a écrit :J'hésite un peu à supprimer la NOTE 3, car cette commande n'a pas marché chez moi (cf précédent post), mais l'imprimante fonctionne correctement quand même... Quel est le rôle de cette commande ? Comment savoir si elle a quand même fait quelque chose chez moi, malgré les messages d'erreur ? Et globalement, pensez vous de ce PKGBUILD ? Est-il suffisamment mature pour aller dans l'AUR ?
Je n'ai pas été clair ? :mrgreen:
Le script cupswrapper a fonctionné au moins en partie avant de se planter sur cups (vu qu'avec systemd il faudrait modifier le script :| )...

Perso, je n'aime pas ce script à faire exécuter en root justement parce qu'à moins de l'osculter on ne peut savoir ce qu'il fait.
En l'occurence, il crée des répertoires et place ppd (et autres ?) dans /usr... chose que l'on pourrait faire directement dans le PKGBUILD.

Pour info, cupswrapper est susceptible de t'avoir ajouté:

Code : Tout sélectionner

  rm -f /usr/share/cups/model/Brother/brother_${printer_model}_printer_en.ppd
  rm -f /usr/share/ppd/Brother/brother_${printer_model}_printer_en.ppd
  rm -f /usr/lib/cups/filter/brlpdwrapper${printer_model}
  rm -f /usr/lib64/cups/filter/brlpdwrapper${printer_model}
  rm -f /opt/brother/${device_model}/${printer_model}/cupswrapper/brcupsconfpt1
(et éventuellement des choses venant de commandes annexes comme lpadmin... mais c'est nettement moins grave)
Je n'ai pas fait le tour des paquets sur AUR, mais étant tous sur le même modèle (c'est de bonne guerre), le gros problème est qu'aucun n'effectue le cupswrapper -e à la désinstallation (pre_remove), par conséquent il y a des fichiers qui n'appartiennent à aucun paquet qui traînent à la désinstallation. :aimepas:

C'est pourquoi je te proposais de modifier le PKGBUILD pour installer seulement le ppd (voir message précédent) pour voir si cela suffisait après redémarrage de cups (j'ai un doute sur le fait qu'il faille le lpdwrapper ou pas). Ce qui ferait un PKGBUILD nettement plus KISS que d'installer un tas de trucs dans /opt qui ne serve à rien et qui en plus demande d'exécuter une commande qui rajoute des trucs de ci de là... ;)
Mais avant il faut exécuter le cupswrapper -e pour supprimer les fichiers qu'il a créé sinon on (enfin tu) ne verras rien.

Ce qui me fait dire que le ppd est peut-être suffisant est:
http://welcome.solutions.brother.com/bs ... prn1c.html (en dépit du fait que ton modèle n'est pas dans la liste supposée... le fait est qu'il dispose d'un ppd quand même)
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
nicoals
Hankyu
Messages : 31
Inscription : lun. 21 mai 2012, 21:23
Localisation : La Ferrière (61)

Re: [imprimante] Brother DCP-J140W

Message par nicoals »

Bonjour,

Je ne vois pas le paquet dont il est question ici sur AUR. ça ne s'est pas fait finalement ?

Est-ce que vous pensez que je pourrais comprendre le principe de PKGBUILD, le rédiger moi-même pour ce pilote et le placer sur AUR dans les 24h ?

Je suis très motivé pour apprendre d'autant que j'imagine que j'aurai dans les mois à venir à régler l'installation de nombreuses imprimantes diverses et variées avec des systèmes GNU/Linux de type Arch (Parabola, Manjaro, et Arch elle-même), d'où mon besoin de maîtriser la procédure aux petits oignons, cependant je pars de loin : je n'ai encore jamais réellement utilisé AUR ni yaourt !

Pour l'instant, je lis avidement le cours correspondant sur le site du zéro mais pour l'instant, je reste dans le flou.
- Manjaro KDE 64-bit | Packard Bell EasyNote TE11 (et LE11BZ), ACER Aspire E1-771G
- Dual boot Manjaro XFCE 32-bit / Manjaro Openbox 32-bit | ASUS eeepc 1001HA.
- Archlinux Arm | BeagleBone Black,
- Parabola | ASUS eepc 1000H
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [imprimante] Brother DCP-J140W

Message par FoolEcho »

nicoals a écrit :Je ne vois pas le paquet dont il est question ici sur AUR. ça ne s'est pas fait finalement ?
Ben... eusebe ne l'a peut-être pas publié.
nicoals a écrit :Est-ce que vous pensez que je pourrais comprendre le principe de PKGBUILD, le rédiger moi-même pour ce pilote et le placer sur AUR dans les 24h ?
Le travail a été mâché de toutes manières, donc tu peux voir si ça fonctionne en l'état. :chinois:

Mais ce sujet étant vieux, si tu te lances, ouvres-en plutôt un nouveau (avec lien ici). :chinois:
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
nicoals
Hankyu
Messages : 31
Inscription : lun. 21 mai 2012, 21:23
Localisation : La Ferrière (61)

Re: [imprimante] Brother DCP-J140W

Message par nicoals »

Oui, la rédaction est effectivement réalisée. Mais je n'y comprends rien, or d'une part, je répugne à utiliser une chose que je ne comprends pas ; mais de plus, je pourrais très vite tomber sur une imprimante pour laquelle le travail n'est pas aussi avancé et mon ignorance sera alors un handicap génant : je ne sais même pas quoi faire de ce ficher texte ! Même pas pourquoi ni comment l'utiliser. Lol.

Je vais ouvrir un nouveau topic.
- Manjaro KDE 64-bit | Packard Bell EasyNote TE11 (et LE11BZ), ACER Aspire E1-771G
- Dual boot Manjaro XFCE 32-bit / Manjaro Openbox 32-bit | ASUS eeepc 1001HA.
- Archlinux Arm | BeagleBone Black,
- Parabola | ASUS eepc 1000H
Avatar de l’utilisateur
nicoals
Hankyu
Messages : 31
Inscription : lun. 21 mai 2012, 21:23
Localisation : La Ferrière (61)

Re: [imprimante] Brother DCP-J140W

Message par nicoals »

Remarque : suite à une réinstallation. J'ai découvert qu'un pilote adéquat pour la DCP-J140W faisait partie de gutenprint ! ^^
- Manjaro KDE 64-bit | Packard Bell EasyNote TE11 (et LE11BZ), ACER Aspire E1-771G
- Dual boot Manjaro XFCE 32-bit / Manjaro Openbox 32-bit | ASUS eeepc 1001HA.
- Archlinux Arm | BeagleBone Black,
- Parabola | ASUS eepc 1000H
Répondre