Page 1 sur 1
[imprimante] Brother DCP-J140W
Publié : mar. 16 oct. 2012, 15:31
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.
Re: [imprimante] Brother DCP-J140W
Publié : mar. 16 oct. 2012, 16:14
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...
Re: [imprimante] Brother DCP-J140W
Publié : mar. 16 oct. 2012, 18:01
par FoolEcho
Il vaut mieux que tu fasses le PKGBUILD par toi-même, sinon tu risques d'attendre longtemps.
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).
Re: [imprimante] Brother DCP-J140W
Publié : mar. 16 oct. 2012, 18:14
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.

Re: [imprimante] Brother DCP-J140W
Publié : mer. 17 oct. 2012, 22:00
par eusebe
Bonbonbon, OK !
Je vais essayer de le faire, merci pour vos réponses... Bientôt sur AUR (j'espère !).
David
Re: [imprimante] Brother DCP-J140W
Publié : jeu. 18 oct. 2012, 13:53
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
"
}
Re: [imprimante] Brother DCP-J140W
Publié : jeu. 18 oct. 2012, 21:29
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
Re: [imprimante] Brother DCP-J140W
Publié : ven. 19 oct. 2012, 12:02
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

).
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

).
Re: [imprimante] Brother DCP-J140W
Publié : sam. 20 oct. 2012, 16:25
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 ?
Re: [imprimante] Brother DCP-J140W
Publié : sam. 20 oct. 2012, 17:06
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 ?
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.
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)
Re: [imprimante] Brother DCP-J140W
Publié : dim. 26 janv. 2014, 10:46
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.
Re: [imprimante] Brother DCP-J140W
Publié : dim. 26 janv. 2014, 11:27
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.
Mais ce sujet étant vieux, si tu te lances, ouvres-en plutôt un nouveau (avec lien ici).

Re: [imprimante] Brother DCP-J140W
Publié : dim. 26 janv. 2014, 11:39
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.
Re: [imprimante] Brother DCP-J140W
Publié : lun. 24 nov. 2014, 16:29
par nicoals
Remarque : suite à une réinstallation. J'ai découvert qu'un pilote adéquat pour la DCP-J140W faisait partie de gutenprint ! ^^