Problèmes et questions concernant le noyau et le support matériel.
Répondre

Problème installation pilote d'impression Kyocera FS-C8525MFP

#1Messageil y a 1 an

Bonjour

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.

Fichier Kyocera_FS-C8525MFP.ppd

*FileVersion: "9.1303"
*FormatVersion: "4.3"
*LanguageEncoding: ISOLatin1
*LanguageVersion: English
*Product: "(FS-C8525MFP)"
*PSVersion: "(3011.103) 1"
*Manufacturer: "Kyocera"
*ModelName: "Kyocera FS-C8525MFP KPDL"
*ShortNickName: "FS-C8525MFP"
*NickName: "FS-C8525MFP KPDL"
*PCFileName: "KC8525EE.PPD"

*1284DeviceID: "MDL:FS-C8525MFP;MFG:Kyocera"

*cupsPreFilter: "application/pdf 0 kyofilter_pre_H"
*cupsFilter: "application/vnd.cups-postscript 0 /usr/lib/cups/filter/kyofilter_H"

*% Basic Device Capabilities
*SupportsCustomJobName: True
*SupportsCustomBox: False
*SupportsUserLogin: True
*SupportsPrivatePrint: True
*Wren: True
*JobFinishNotice: True
*LanguageLevel: "3"
*ColorDevice: True
*DefaultColorSpace: CMYK
*ContoneOnly: False
*AccurateScreensSupport: True
*TTRasterizer: Type42
*?TTRasterizer: "
  save
  42 /FontType resourcestatus
  { pop pop (Type42) }{ (None) } ifelse
  = flush restore"
*End
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

Problème installation pilote d'impression Kyocera FS-C8525MFP

#2Messageil y a 1 an

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

Problème installation pilote d'impression Kyocera FS-C8525MFP

#3Messageil y a 1 an

Merci pour ta réponse lemust83.

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.

Problème installation pilote d'impression Kyocera FS-C8525MFP

#4Messageil y a 1 an

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:

https://www.kyoceradocumentsolutions.ch ... wTUZQ.html

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?

Problème installation pilote d'impression Kyocera FS-C8525MFP

#5Messageil y a 1 an

Bonjour.
Franck_Little a écrit :Kyocera fournit un .deb
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.

Problème installation pilote d'impression Kyocera FS-C8525MFP

#6Messageil y a 1 an

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

Problème installation pilote d'impression Kyocera FS-C8525MFP

#7Messageil y a 1 an

Ça me paraît radical :o
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.

Problème installation pilote d'impression Kyocera FS-C8525MFP

#8Messageil y a 1 an

J'aimerai bien m'en passer en effet.
Je ne connaissais pas docker, je m'y attelle de suite ;) merci

Problème installation pilote d'impression Kyocera FS-C8525MFP

#9Messageil y a 1 an

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?

Problème installation pilote d'impression Kyocera FS-C8525MFP

#10Messageil y a 1 an

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.

Bonne soirée
Répondre