piątek, 14 października 2011

Canon LBP-2900 na Debianie

Po około godzinie walki z nowo zakupioną drukarką Canon LBP-2900 i z przeświadczeniem że będzie działać, 3xpingwin na LinuxPrinting.Org okazało się że nie jest tak pięknie jak miało być. Google oczywiście przekazało parę informacji ale za Polskę Ludową nie chciało działać... i wtedy.... :)


Konfiguracja kernela i potrzebne pakiety

Jak to zwykle bywa robiąc "własne jajko" człowiek zapomina o istotnych rzeczach :) W kernelu zaznaczyć trzeba

USB Printer support. No chyba że używacie jajka dystrybucyjnego to pewnie jest zaznaczone. Dodatkowo potrzebne nam będą zainstalowane cupsy oraz alien do przekonwertowania rpm na deb ( lub rpm do zainstalowanie ich bezpośrednio - i tak właśnie zrobiłem). Można je zainstalować klepiąc

# apt-get install cupsys rpm alien

Opcje jakie należy zaznaczyć w jajku:
Device Drivers -->
USB support -->
< * > USB Printer support

Oprogramowanie

Oprogramowanie potrzebne znaleźć można na:

Instalacja


Wykonujemy su na roota
$ su -

Zassysamy oprogramowanie
# wget http://software.canon-europe.com/files/soft23675/software/Driver.tar.gz

Rozpakowujemy archiwum
tar -zxvf Driver.tar.gz

Przechodzimy do katalogu
cd Driver/

Konwertujemy rpm do deb
# alien -c cndrvcups-capt-1.30-1.i386.rpm
# alien -c cndrvcups-common-1.30-1.i386.rpm

Instalujemy deb lub rpm
# dpkg -i cndrvcups-capt_1.30-1.i386.deb cndrvcups-common_1.30-1.i386.deb

lub
# rpm -i --nodeps cndrvcups-capt-1.30-1.i386.rpm
# rpm -i --nodeps cndrvcups-common-1.30-1.i386.rpm

!! parametr --nodeps został dodany z powodu że paczki pluły się o zależności, których nie miałem (wy pewnie tez ich nie macie :) więc trzeba go dodać żeby wymusić instalacje
Aby załadować nowe sterowniki musimy najpierw wyłączyć cupsys
# /etc/init.d/cupsys stop

Upewniamy się że cupsy są wyłączone
# ps aux | grep cups

Jeżeli okaże się że nadal działają to je killujemy
# killall cupsd

Tworzymy potrzebną strukturę katalogów ( u mnie zrobiła sie sama )
# mkdir /var/ccpd
# mkdir /var/captmon

Następnie tworzymy kolejkę
# mkfifo /var/ccpd/fifo0

Dajemy dostęp wszystkim do kolejki
# chmod 777 /var/ccpd/fifo0

Zmieniamy prawa do /usr/share/cups/model na bardziej dostępne
# chmod -R a+rX /usr/share/cups/model

Startujemy cupsy
# /etc/init.d/cupsys start

Rejestrujemy kolejkę dla drukarki
# lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp:/var/ccpd/fifo0 -E

Może się zdarzyć że system nie będzie mógł znaleźć pliku ppd wiec robimy symlinka
# cd /usr/share/ppd/
# ln -s /usr/share/cups/model/CNCUPSLBP2900CAPTK.ppd

!!!! Rejestrujemy drukarkę w serwerze ccpd
# ccpdadmin -p LBP2900 -o /dev/usb/lp0

W każdym opisie było to nieszczęsne usblp0 natomiast w debianie (u mnie SID) jest /dev/usb/lp0
Zmieniamy plik /etc/init.d/ccpd na taki
############## Listing pliku
#!/bin/sh
# # ccpd startup script for Canon Printer Daemon for CUPS
# # Modified for Debian GNU/Linux
# by Raphael Doursenaud .
DAEMON=/usr/sbin/ccpd LOCKFILE=/var/lock/subsys/ccpd PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=ccpd DESC="Canon Printer Daemon for CUPS" test -f $DAEMON || exit 0 case $1 in start) echo -n "Starting $DESC: $NAME" start-stop-daemon --start --quiet --exec $DAEMON echo "." ;; stop) echo -n "Stopping $DESC: $NAME" start-stop-daemon --stop --quiet --oknodo --exec $DAEMON echo "." ;; status) echo "$DESC: $NAME:" `pidof $NAME` ;; restart) echo -n "Restarting $DESC: $NAME" start-stop-daemon --stop --quiet --oknodo --exec $DAEMON sleep 1 start-stop-daemon --start --quiet --exec $DAEMON echo "." ;; *) echo "Usage: ccpd {start|stop|status}" exit 1 ;; esac exit 0

Nadajemy potrzebne prawa
# chmod a+x /etc/init.d/ccpd

Sprawiamy aby daemon ccpd startował przy starcie systemu
# update-rc.d ccpd defaults 20

Przewalamy system
# reboot

Przy starcie systemu sprawdzamy czy cups i ccpd wstają
Sprawdzamy czy nasza drukareczka działa
$ captstatusui -P LBP2900
Naszym oczom pojawi się okienko. Jeżeli widnieje w nim zapis "ready to print" to znaczy że możemy już drukować. :)


Prawdopodobnie opis zadziała także na inne LBP. Nie miałem jak sprawdzić, należy jednak pamiętać o plikach ppd przy rejestracji kolejki i drukarki. Pliki ppd maja nazewnictwa CNCUPSLBP[ model drukarki]CAPT[J lub K].ppd