Je suis passé sur Manjaro Manjaro Linux Qonos Rel. 21.2.6.
J'adore cette distri, stable, efficace, de plus j'ai réussi à faire fonctionner entre autre WMWare, la synchro du cloud etc, alors que je suis plutôt débutant sous linux.
Et la, de retour au bureau je coince sur ce qui me semblait le plus simple, le pilote d'impression pour une imprimante Kyocera FS-C8525MFP.
J'ai tenté d'installer l'imprimante sous Cups 2.4.1 en fournissant le fichier PPD que j'ai téléchargé sur le site de Kyocera car mon modèle n’apparaissait pas dans la liste proposée.
L'imprimante est connectée en réseau filaire et est accessible par ping depuis mon PC.
Après installation sous cups je lance un test d'impression et j'obtiens le message suivant
en cours d'impression depuis
Thu Jun 2 12:34:44 2022
"Filter failed"
Après avoir décommenté la ligne
*cupsPreFilter: "application/pdf 0 kyofilter_pre_H"
dans le fichier PPD ci-dessous, l'imprimante imprime le document mais uniquement en noir et blanc.
J'ai l'impression que ça à un rapport avec ces filtres.
Je précise que pour test j'ai également installé l'imprimante sur windows 10 ainsi que sur une linux mint, dans les deux cas elle fonctionne normalement. Pour la linux mint je me suis servi d'un paquet d'installation .deb propriétaire de Kyocera. Kyocera fournit un .deb et un .rpm, mais pas de paquet arch.
Est-ce que quelqu'un aurait une idée? merci d'avance
Bonjour et bienvenue.
Il existe dans AUR https://aur.archlinux.org/kyocera-cups.git. A essayer en repassant par Cups.
Tu peux utiliser Pamac en activant le dépôt AUR dans les préférences, ou le construire en cli:
git clone https://aur.archlinux.org/kyocera-cups.git
cd kyocera-cups/
makepkg -si
Noyau récent MANJARO x86_64 bits: 64 Xfce 4.16
ASUSTeK model: PRIME B350M-A v: Rev X.0x
6-Core: AMD Ryzen 5 2600X
AMD Baffin [Radeon RX 460/560D / Pro
driver: amdgpu v: kernel
Display: x11 server: X.Org driver: amdgpu,ati unloaded: modesetting
OpenGL: renderer: Radeon RX 560 Series
Arch en Dual. Aucun lien publicitaire ne saurait être toléré dans la signature!
J'ai omis de le préciser mais j'avais déjà installé kyocera-cups ver.8.1601-2 par pamac, et c'est le fichier PPD de cette version que j'avais utilisé et qui produisait le message d'erreur "filter failed".
J'ai tout de même suivi ta procédure et téléchargé la paquet sur aur.archlinux.org puis construit et installé le paquet en cli, j'ai réinstallé mon imprimante en utilisant la version fournie de PPD (Vers. 8.160, qui à est plus ancienne que ma première version) et j'ai pu imprimé sans avoir le message d'erreur "filter failed", mais uniquement en noir et blanc.
En allant comparer ce dernier fichier PPD avec celui qui pose problème je constate qu'il manque, entre autre, la ligne suivante:
*cupsPreFilter: "application/pdf 0 /usr/lib/cups/filter/kyofilter_pre_H"
Apparement ce filtre semble nécessaire pour la couleur...
Le fichier PPD de la ver. 8.1601 fait 107kb, alors que celui de la version 8.1601-2 fait 230kb.
J'ai continué à tester diverse chose.
En installant l'imprimante dans cups en utilisant le fichier PPD dernière version sur une linux mint live usb, même problème que sous manjaro, erreur "filter failed" quand je lance une impression,
J'installe ensuite le paquet .deb de pilote d'impression téléchargé sur le site Kyocera:
et tout rentre dans l'ordre, je n'ai même pas besoin de réinstaller le pilote dans cups, l'impression en couleur fonctionne directement. Je me dit que ce paquet .deb install uen ou plusieurs choses qui doivent manquer pour l'impression couleur. Du coup j'ai un peu analysé l'installation du paquet sur la mint live usb et j'ai trouver les 2 scripts d'installation suivants:
Script 1 "preinst"
#!/bin/sh
#Variable Initialization
###############################################################################
PHASE2_PPDS=/usr/share/cups/model/Kyocera/
PHASE3_PPDS=/usr/share/ppd/kyocera/
PHASE4_PPDS=/usr/share/kyocera/ppd4/
PHASE5_PPDS=/usr/share/kyocera/ppd5/
PHASE6_PPDS=/usr/share/kyocera/ppd6/
PHASE7_PPDS=/usr/share/kyocera/ppd7/
PHASE8_PPDS=/usr/share/kyocera/ppd8/
PHASE9_PPDS=/usr/share/kyocera/ppd9/
CUPS_PPDS=/etc/cups/ppds/
KYOCERA_CONFIG=/usr/share/kyocera/
CONFIG_TMP=/tmp/kyocera_config/
#Handle Upgrades
###############################################################################
handle_phase2(){
if [ -d $PHASE2_PPDS ]; then
rm -rvf $PHASE2_PPDS
fi
}
handle_phase3(){
if [ -d $PHASE3_PPDs ]; then
rm -rvf $PHASE3_PPDs
fi
}
handle_phase4(){
#If Phase 4 is installed we need to handle the upgrade
#This copies the existing settings config files and
#records the installed phase 4 printers
#The Post-Installer than looks at the list and handles
#Reinstalling the printers
if [ -d $PHASE4_PPDS ]; then
if [ -d $KYOCERA_CONFIG ]; then
users=`ls $KYOCERA_CONFIG | grep -v 'ppd4\|ppd5\|appicon\|Python'`
create_tmp_folders $users
create_config_copies $user
fi
get_installed_ppds
fi
}
handle_phase5(){
if [ -d $PHASE5_PPDS ]; then
if [ -d $KYOCERA_CONFIG ]; then
users=`ls $KYOCERA_CONFIG | grep -v 'ppd4\|ppd5\|ppd6\|appicon\|Python'`
create_tmp_folders $users
create_config_copies $user
fi
get_installed_ppds
fi
}
handle_phase6(){
if [ -d $PHASE6_PPDS ]; then
if [ -d $KYOCERA_CONFIG ]; then
users=`ls $KYOCERA_CONFIG | grep -v 'ppd4\|ppd5\|ppd6\|ppd7\|appicon\|Python'`
create_tmp_folders $users
create_config_copies $user
fi
get_installed_ppds
fi
}
handle_phase7(){
if [ -d $PHASE7_PPDS ]; then
if [ -d $KYOCERA_CONFIG ]; then
users=`ls $KYOCERA_CONFIG | grep -v 'ppd4\|ppd5\|ppd6\|ppd7\|ppd8\|appicon\|Python'`
create_tmp_folders $users
create_config_copies $user
fi
get_installed_ppds
fi
}
handle_phase8(){
if [ -d $PHASE8_PPDS ]; then
if [ -d $KYOCERA_CONFIG ]; then
users=`ls $KYOCERA_CONFIG | grep -v 'ppd4\|ppd5\|ppd6\|ppd7\|ppd8\|ppd9\|appicon\|Python'`
create_tmp_folders $users
create_config_copies $user
fi
get_installed_ppds
fi
}
handle_phase9(){
if [ -d $PHASE9_PPDS ]; then
if [ -d $KYOCERA_CONFIG ]; then
users=`ls $KYOCERA_CONFIG | grep -v 'ppd4\|ppd5\|ppd6\|ppd7\|ppd8\|ppd9\|ppd9.1\|appicon\|Python'`
create_tmp_folders $users
create_config_copies $user
fi
get_installed_ppds
fi
}
#Phase 4 Handling
###############################################################################
create_tmp_folders(){
if [ ! -z "$1" ]; then
for user in ${1}; do
mkdir -p "$CONFIG_TMP/$user"
done
fi
}
create_config_copies(){
if [ ! -z "$1" ]; then
for user in ${1}; do
cp -a $KYOCERA_CONFIG/$user $CONFIG_TMP/
chown --reference=$KYOCERA_CONFIG/$user $CONFIG_TMP/$user
done
fi
}
#Create files in /tmp that describe each phase 4 printer installed
get_installed_ppds(){
#Search for all installed printers using a kyocera filter
filters="kyofilter_E\|kyofilter_ras_E\|kyofilter_pdf_E\|kyofilter_F\|kyofilter_ras_F\|kyofilter_pdf_F\|kyofilter_G\|kyofilter_ras_G\|kyofilter_pdf_G\|kyofilter_H\|kyofilter_ras_H\|kyofilter_pdf_H"
files=`grep -l $filters /etc/cups/ppd/*.ppd 2>/dev/null`
mkdir /tmp/kyocera_printers 2>/dev/null
for file in ${files}; do
#Get the printer name
ppd=${file#/etc/cups/ppd/}
printer=${ppd%.ppd}
#Get the printer address
stat=`lpstat -v $printer | grep -o ": .*"`
address=${stat#: }
#Get the Make and Model
product=`grep "\*ModelName:" $file | grep -o ": .*"`
model=${product#: }
#Output the results into a temporary folder to be read by
#the postinstall script
loc=/tmp/kyocera_printers/$printer
echo $printer > $loc
echo $address >> $loc
echo $model >> $loc
grep "\*DefaultOption" $file | grep -o "Option.*: .*" >> $loc
done
}
#Execution
###############################################################################
handle_phase2
handle_phase3
handle_phase4
handle_phase5
handle_phase6
handle_phase7
handle_phase8
handle_phase9
Script 2 "postinst"
#!/bin/sh
#Constants
###############################################################################
ALTERNATE_PPD_DIRECTORY=/usr/share/cups/model/kyocera
PRIMARY_PPD_DIRECTORY=/usr/share/ppd/kyocera/
INSTALLED_PPD_DIRECTORY="/usr/share/kyocera/ppd9.1"
TMP_INSTALL="/usr/share/kyocera9.1/"
PYTHON_DIRECTORY=/usr/share/kyocera/Python/
KYOCERA_CONFIG=/usr/share/kyocera
TMP_DIR=/tmp/kyocera_printers
CONFIG_TMP=/tmp/kyocera_config
#Phase 5 post install
###############################################################################
install_from_tmp(){
rm -rf $KYOCERA_CONFIG
ln -s $TMP_INSTALL $KYOCERA_CONFIG
}
install_ppds(){
mkdir -p $PRIMARY_PPD_DIRECTORY
cp -r $INSTALLED_PPD_DIRECTORY/* $PRIMARY_PPD_DIRECTORY
}
fix_file_permissions(){
chmod 777 /usr/share/kyocera
chmod 755 "/usr/bin/kyodialog9.1"
chmod 755 /usr/bin/kyoPPDWrite_H
}
link_alternate_ppds(){
if [ ! -h $ALTERNATE_PPD_DIRECTORY ]; then
ln -s $PRIMARY_PPD_DIRECTORY $ALTERNATE_PPD_DIRECTORY
fi
}
install_pypdf(){
if [ -f /usr/bin/python3 ]; then
if python3 -c 'import PyPDF3' 2> /dev/null ; then
#echo "PyPDF found"
true
else
cd $PYTHON_DIRECTORY/PyPDF3-1.0.1/
python3 setup.py install
fi
else
if python -c 'import PyPDF3' 2> /dev/null ; then
#echo "PyPDF found"
true
else
cd $PYTHON_DIRECTORY/PyPDF3-1.0.1/
python setup.py install
fi
fi
}
fix_mime_file(){
mime_line="application/postscript application/vnd.cups-pdf 66 pstopdf"
cups_conf='/etc/cups/local.convs'
if [ -e "/usr/lib/cups/filter/pstopdf" ]; then
if [ -e $cups_conf ]; then
grep -q -F "$mime_line" $cups_conf || echo "$mime_line" >> $cups_conf
else
echo "$mime_line" > $cups_conf
fi
fi
}
start_knmd(){
user=`logname` 2>/dev/null
if [ -z $user ]; then
/usr/bin/knmd
else
su $user -c /usr/bin/knmd
fi
}
#Phase Upgrade
###############################################################################
upgrade_config(){
if [ -d $CONFIG_TMP ]; then
mv $CONFIG_TMP/* $KYOCERA_CONFIG/
fi
#rm -rf $CONFIG_TMP
}
reinstall_printers(){
if [ -d $TMP_DIR ]; then
for file in $TMP_DIR/*; do
reinstall_printer $file
done
rm -rf $TMP_DIR
fi
}
reinstall_printer(){
printer=`sed '1q;d' $1`
address=`sed '2q;d' $1`
model=`sed '3q;d' $1`
ppd=`get_ppd "$model"`
lpadmin -p "$printer" -E -v "$address" -P "$ppd"
while read -r line
do
if echo "$line" | grep -q "Option" ; then
option=$(echo "$line" | cut -f1 -d:)
choice=$(echo "$line" | cut -f2 -d ' ')
lpadmin -p "$printer" -o "$option"="$choice"
fi
done < "$1"
}
get_ppd(){
ppd=`grep -l "$1" $PRIMARY_PPD_DIRECTORY/*`
echo $ppd
}
print_warning(){
echo ""
lang="$LANGUAGE"
if [ -z "$lang" ]; then
lang="$LANG"
fi
case "$lang" in
*en*) echo "You may need to restart dbus for full functionality." ;;
*fr*) echo "Vous devrez éventuellement redémarrer D-Bus pour obtenir toutes les fonctionnalités." ;;
*de*) echo "Für den vollen Funktionsumfang müssen Sie D-Bus neu starten." ;;
*it*) echo "Per la completa funzionalità, potrebbe essere necessario il riavvio di D-Bus." ;;
*es*) echo "Debe reiniciar D-Bus para una funcionalidad completa." ;;
*pt*) echo "Você pode precisar reiniciar o D-Bus para uma completa funcionalidade." ;;
*) echo "You may need to restart dbus for full functionality." ;;
esac
echo ""
}
#Execution
###############################################################################
install_from_tmp
install_ppds
fix_file_permissions
link_alternate_ppds
install_pypdf
fix_mime_file
start_knmd
upgrade_config
reinstall_printers
print_warning
J'ai éssayé de comprendre ce qui se faisait mais ça dépasse mes compétences
Une idée de ce qui pourrait manquer?
Alors , il existe un utilitaire qui adapte au filesystem d'Archlinux des paquets en .deb. Il s'agit de debtap qui est dispo dans AUR. Pour être franc, c'est un peut crado, mais j'ai souvent réussi a installer des pilotes d'imprimantes qui n'ont pas de version en Arch. Le plus propre serait de créer un paquet ad-hoc depuis les sources, mais c'est un peu fastidieux.
J'ai essayé de construire le paquet en local, mais on se heurte à la dépendance libqtgui4 qui n'a pas de correspondance dans nos dépôts.
A voir avec qtxdg-tools en remplacement de libqtgui4mais c'est sans conviction...
Je crains qu'il faille attendre que Kyocera actualise leur pilote vers une compato Qt >4.
Noyau récent MANJARO x86_64 bits: 64 Xfce 4.16
ASUSTeK model: PRIME B350M-A v: Rev X.0x
6-Core: AMD Ryzen 5 2600X
AMD Baffin [Radeon RX 460/560D / Pro
driver: amdgpu v: kernel
Display: x11 server: X.Org driver: amdgpu,ati unloaded: modesetting
OpenGL: renderer: Radeon RX 560 Series
Arch en Dual. Aucun lien publicitaire ne saurait être toléré dans la signature!
J'ai converti le paquet avec debtap et je l'ai installé, pas grand chose à perdre car de toute façon cette install ne me sert à rien sans imprimante. Comme tu l'as supposé ça ne fonctionne pas
Arghh je vais devoir abandonner ma manjaro que je bichonne depuis des semaines, elle était "presque" parfaite
Tant pis on recommence tout sous une distro debian...
Merci encore pour ton aide
Ça me paraît radical
Essaye déjà de passer par docker. Il existe plein d'images de serveur debian que tu peux construire avec docker-compose.
Une fois docker actif, tu devrais pouvoir imprimer en réseau.
Il y a peut-être la aussi solution de passer par un raspberry-pi en réseau sous raspbian.
Tu t'en servirais de serveur d'impression.
Noyau récent MANJARO x86_64 bits: 64 Xfce 4.16
ASUSTeK model: PRIME B350M-A v: Rev X.0x
6-Core: AMD Ryzen 5 2600X
AMD Baffin [Radeon RX 460/560D / Pro
driver: amdgpu v: kernel
Display: x11 server: X.Org driver: amdgpu,ati unloaded: modesetting
OpenGL: renderer: Radeon RX 560 Series
Arch en Dual. Aucun lien publicitaire ne saurait être toléré dans la signature!
mouai, ça à l'air passionnant mais malheureusement je n'ai vraiment pas le temps d'apprendre à gérer ça, ça va me prendre des jours et je ne suis même pas sur que ça fonctionne ensuite...
Tant pis, comment est ce que je clos le sujet?
A force de tester j'ai fini par comprendre que les documents PDF pouvaient être imprimé en couleur, mais tout ce qui partait sur l'imprimante dans un autre format sortait en niveau de gris.
Apparemment ça serait un problème de conversion de fichier d'impression qui ne se ferait pas. Bon pour moi ça fera l'affaire, je n'ai qu'à transformer les documents en pdf avant de les imprimer. C'est ok pour l'instant et ça me permet de rester sur ma belle Manjaro
Merci pour ton aide.