Druckerverwaltung und Netzwerkdrucker einbinden: Unterschied zwischen den Versionen

Aus
 
(37 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
SEITE IM AUFBAU...
==Einleitung==
==Einleitung==
Synology bringt eine eigene Druckerverwaltung für USB-Drucker mit.
Synology bringt eine eigene Druckerverwaltung für USB-Drucker mit.
Zeile 11: Zeile 9:
Die DSM Firmware der Synology kann einen Airprint Drucker emulieren. Das ermöglicht die Einbindung von nicht airprintfähigen Druckern und das Drucken von IOS-Geräten auf diese Drucker.
Die DSM Firmware der Synology kann einen Airprint Drucker emulieren. Das ermöglicht die Einbindung von nicht airprintfähigen Druckern und das Drucken von IOS-Geräten auf diese Drucker.
Bei dieser Airprint-Emulation erfolgt die gesamte Umwandlung des Druckjobs in die Druckersprache mit Hilfe von Druckertreibern in der Synology. Als Druckertreiber kommt hier Gutenprint zur Anwendung.  
Bei dieser Airprint-Emulation erfolgt die gesamte Umwandlung des Druckjobs in die Druckersprache mit Hilfe von Druckertreibern in der Synology. Als Druckertreiber kommt hier Gutenprint zur Anwendung.  
Die Liste der unterstützten Drucker: http://gimp-print.sourceforge.net/p_Supported_Printers.php
Die Liste der unterstützten Drucker: http://gimp-print.sourceforge.net/p_Supported_Printers.php
In DSM 4.1 ist Gutenprint 5.2.9 integriert.
In DSM 4.1 ist Gutenprint 5.2.9 integriert.
Beim Drucken über Airprint werden deshalb keine Druckertreiber vom Druckerhersteller verwendet, so dass bei den Linux-Druckertreibern ggf. Fehler im Druckbild oder Probleme mit der Druckqualität auftreten können.
 
Hinweis: Beim Drucken über Airprint werden keine Druckertreiber vom Druckerhersteller verwendet, so dass bei den Linux-Druckertreibern ggf. Fehler im Druckbild oder Probleme mit der Druckqualität auftreten können, die beim Druck vom PC nicht auftreten.


'''Netzwerkdrucker Canon/HP'''
'''Netzwerkdrucker Canon/HP'''
Zeile 21: Zeile 22:


Das gilt auch für HP Netzwerk-Drucker (Stichwort: '''Hplip''', im Forum suchen nach "ipkg install hplip")
Das gilt auch für HP Netzwerk-Drucker (Stichwort: '''Hplip''', im Forum suchen nach "ipkg install hplip")
==Schnelleinstieg==
(Stand August 2013)
In DSM 4.2 wurde die aktuelle '''Gutenprint Version 5.2.9''' integriert und '''Airprint für IOS 6''' erweitert.
Somit macht das selber kompilieren derzeit keinen Sinn.
Es reicht aus, einfach das '''CUPS Webinterface nachzuinstallieren''' um die Druckjobs zu verwalten.
siehe
http://www.synology-wiki.de/index.php/Druckerverwaltung_und_Netzwerkdrucker_einbinden#CUPS_Webinterface_installieren


==Voraussetzung==
==Voraussetzung==
*geteste Version: DSM 4.0 / DSM 4.1
*getestete Version: DSM 4.0 / DSM 4.1
*weitere Hinweise im Forum: http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern
*weitere Hinweise im Forum: http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern
*werden eigene Module compiliert sind Unterschiede bei den Toolchains zu beachten (ARM-CPU / Power-PC / Intel-Atom). Weitere Hinweise im Text.
*werden eigene Module compiliert sind Unterschiede bei den Toolchains zu beachten (ARM-CPU / Power-PC / Intel-Atom). Weitere Hinweise im Text.
*geteste Hardware: Syno DS 212+ mit Canon Pixma MP970
*getestete Hardware: Syno DS 212+ mit Canon Pixma MP970


==Installationen==
==Installationen==
Zeile 80: Zeile 92:
====syno DSM CUPS beenden und ipkg CUPS installieren====
====syno DSM CUPS beenden und ipkg CUPS installieren====
<pre>
<pre>
> /usr/syno/etc.defaults/rc.d/S55cupsd.sh stop
> /usr/syno/etc/rc.d/S55cupsd.sh stop
</pre>
</pre>


und syno cups dauerhaft stoppen
und syno cups dauerhaft stoppen
<pre>
<pre>
> mkdir /usr/syno/etc.defaults/rc.d/backup
> mkdir /usr/syno/etc/rc.d/backup
> mv /usr/syno/etc.defaults/rc.d/s55cupsd.sh /usr/syno/etc.defaults/rc.d/backup/
> mv /usr/syno/etc/rc.d/S55cupsd.sh /usr/syno/etc/rc.d/backup/
</pre>
</pre>
Optware Cups installieren
Optware Cups installieren
<pre>
<pre>
> /opt/bin/ipkg install cupsInstalling cups (1.4.6-1) to root...
> /opt/bin/ipkg install cupsInstalling cups (1.4.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/op....4.6-1_arm.ipk
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/cups_1.4.6-1_arm.ipk
Configuring cups
Configuring cups
Successfully terminated.
Successfully terminated.
Zeile 99: Zeile 111:
> /opt/bin/ipkg install cups-doc
> /opt/bin/ipkg install cups-doc
Installing cups-doc (1.4.6-1) to root...
Installing cups-doc (1.4.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/op....4.6-1_arm.ipk
Downloading hhttp://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/cups-doc_1.4.6-1_arm.ipk
Configuring cups-doc
Configuring cups-doc
</pre>
</pre>
Zeile 151: Zeile 163:


start/stop script für cups anlegen:
start/stop script für cups anlegen:
http://www.synology-wiki.de/index.ph...p_Script_cupsd
http://www.synology-wiki.de/index.php/IPKG#Startup_Script_cupsd
<pre>
<pre>
> chmod 666 S55cupsd
> chmod 666 S55cupsd
Zeile 182: Zeile 194:


====die aktuellen Gutenprint Treiber compilieren====
====die aktuellen Gutenprint Treiber compilieren====
Was ist Gutenprint?
*http://de.wikipedia.org/wiki/Gutenprint
*Die Treiber für Canon, Brother, Epson, Kyocera, Lexmark, Sony, Olympus und PCL-Drucker
Wer braucht Gutenprint?
*Benutzer von IOS Geräten, die Airprint verwenden, da hierzu die Synology entsprechende Druckertreiber benötigt
D.h. wer nur seinen Netzwerkdrucker anbinden will und vom PC aus druckt, kann diesen Schritt überspringen
Vorbereitung (hier Version Gutenprint 5.2.8)
<pre>
<pre>
> mkdir /volume1/tmp
> mkdir /volume1/tmp
> cd /volume1/tmp
> cd /volume1/tmp
> wget http://sourceforge.net/projects/gimp...-5.2.8.tar.bz2
> wget http://sourceforge.net/projects/gimp-print/files/gutenprint-5.2/5.2.8/gutenprint-5.2.8.tar.bz2
> tar --bzip2 -xvf gutenprint-5.2.8.tar.bz2
> tar --bzip2 -xvf gutenprint-5.2.8.tar.bz2
> cd gutenprint-5.2.8
> cd gutenprint-5.2.8
Zeile 191: Zeile 214:


diese Stelle ist etwas trickreich
diese Stelle ist etwas trickreich
nachfolgende Einstellung wurde auf '''ARM-CPU (DS212+) getestet und von Intel-Atom (DS1512+) bestätigt'''
*Bei einer '''Synology mit PowerPC (DS213+)sind geringfüge Anpassungen erforderlich'''.
** siehe Link zum Forum: http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=270547&viewfull=1#post270547
** und http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=272126&viewfull=1#post272126
<pre>
<pre>
> ./configure CC="/opt/bin/gcc -std=gnu99 -I/opt/include -L/opt/lib" \
> ./configure CC="/opt/bin/gcc -std=gnu99 -I/opt/include -L/opt/lib" \
Zeile 216: Zeile 245:
Lösung
Lösung


Quelle: http://forum.synology.com/enu/viewto...p?f=90&t=30132 (libpthread.so der Syno verwenden)
Quelle: http://forum.synology.com/enu/viewtopic.php?f=90&t=30132 (libpthread.so der Syno verwenden)
<pre>
<pre>
> mv /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so.bad
> mv /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so.bad
Zeile 241: Zeile 270:
Usage: rastertoprinter job-id user title copies options [file]
Usage: rastertoprinter job-id user title copies options [file]
</pre>
</pre>


====cups Netzwerkzugriff zum Pixma-Drucker mit cups-bjnp====
====cups Netzwerkzugriff zum Pixma-Drucker mit cups-bjnp====
Zeile 255: Zeile 283:
cups-bjnp compilieren
cups-bjnp compilieren
<pre>
<pre>
> wget http://sourceforge.net/projects/cups...p-0.5.5.tar.gz
> wget http://sourceforge.net/projects/cups-bjnp/files/cups-bjnp/0.5.5/cups-bjnp-0.5.5.tar.gz
> tar xzf cups-bjnp-0.5.5.tar.gz
> tar xzf cups-bjnp-0.5.5.tar.gz
> cd cups-bjnp-0.5.5/
> cd cups-bjnp-0.5.5/
Zeile 302: Zeile 330:
<pre>
<pre>
> cd /volume1/tmp/
> cd /volume1/tmp/
> wget http://pypi.python.org/packages/sour...1.9.62.tar.bz2
> wget http://pypi.python.org/packages/source/p/pycups/pycups-1.9.62.tar.bz2
> tar --bzip2 -xvf pycups-1.9.62.tar.bz2
> tar --bzip2 -xvf pycups-1.9.62.tar.bz2
> cd pycups-1.9.62
> cd pycups-1.9.62
Zeile 318: Zeile 346:
syno wget wurde nicht für https compiliert
syno wget wurde nicht für https compiliert
<pre>
<pre>
> /opt/bin/wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/ai...nt-generate.py
> /opt/bin/wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
</pre>
</pre>
Mit dem Script die Avahi "services" erzeugen und installieren:
Mit dem Script die Avahi "services" erzeugen und installieren:
'''Hinweis''': Der Drucker muss vorher in CUPS freigegeben werden. Für lokale Drucker ohne Freigabe wird kein logischerweise kein *.service generiert.
<pre>
<pre>
> /opt/bin/python2.5 ./airprint-generate.py
> /opt/bin/python2.5 ./airprint-generate.py
Zeile 339: Zeile 369:
> /usr/syno/etc/rc.d/S99avahi.sh restart
> /usr/syno/etc/rc.d/S99avahi.sh restart
</pre>
</pre>
Hinweis: Solange man S99avahi.sh nicht neu startet, werden alle Service sofort (1 Sekunde) im Netzwerk veröffentlicht und '''keine fremden *.service gelöscht'''.  
----
'''Hinweis''': Solange man S99avahi.sh nicht neu startet, werden alle Service sofort (1 Sekunde) im Netzwerk veröffentlicht und '''keine fremden *.service gelöscht'''.  
Zum Testen ist somit '''kein''' "S99avahi.sh restart" erforderlich. Es reicht dann ein einfaches kopieren beliebig vieler *.service in den Ordner /usr/syno/avahi/services/.
Zum Testen ist somit '''kein''' "S99avahi.sh restart" erforderlich. Es reicht dann ein einfaches kopieren beliebig vieler *.service in den Ordner /usr/syno/avahi/services/.
----


versucht man jetzt über Airprint zu drucken:
versucht man jetzt über Airprint zu drucken:
Zeile 352: Zeile 384:
> ln -s /usr/local/bin/gs /usr/bin/
> ln -s /usr/local/bin/gs /usr/bin/
</pre>
</pre>
Hinweis: /usr/local/bin/gs ist nur vorhanden, wenn in der DSM 4.1 wenigstens einmal ein Airprint-Drucker eingerichtet wurde.
====letzte Schritte====


====cups mit Airprint und Zugriff auf Drucker im LAN ist jetzt fertig installiert====
cups mit Airprint und Zugriff auf Drucker im LAN ist jetzt fertig installiert


jetzt zur Sicherheit die Syno mal neu starten
jetzt zur Sicherheit die Syno mal neu starten
Zeile 365: Zeile 400:


===Variante 2: Erweiterung des DSM-CUPS-Servers===
===Variante 2: Erweiterung des DSM-CUPS-Servers===
Hier besteht die Möglichkeit mit IPKG die erforderlichen Web_GUI Elemente nachzuinstallieren, so dass über Port 631 der DSM-CUPS-Server erreichbar ist
 
====CUPS Webinterface installieren====
Hier besteht die Möglichkeit mit IPKG die erforderlichen Web_GUI Elemente nachzuinstallieren, so dass über Port 631 der '''DSM-CUPS-Server''' erreichbar ist
 
zuerst die erforderlichen Dateien laden
<pre>
<pre>
#zuerst die erforderlichen Dateien laden
> /opt/bin/ipkg install cups-doc     
> /opt/bin/ipkg install cups-doc     
Installing cups-doc (1.4.6-1) to root...
Installing cups-doc (1.4.6-1) to root...
Installing cups (1.4.6-1) to root...
Installing cups (1.4.6-1) to root...
...
...
</pre>


#jetzt diese ipkg-Dateien in die Syno-DSM kopieren (es wird nichts überschrieben)
jetzt diese ipkg-Dateien in die Syno-DSM kopieren (es wird nichts überschrieben)
 
<pre>
> mkdir /usr/local/cups/cgi-bin
> mkdir /usr/local/cups/cgi-bin
> cp /opt/lib/cups/cgi-bin/* /usr/local/cups/cgi-bin/
> cp /opt/lib/cups/cgi-bin/* /usr/local/cups/cgi-bin/
Zeile 382: Zeile 421:
> cp /opt/lib/cups/daemon/* /usr/local/cups/daemon/
> cp /opt/lib/cups/daemon/* /usr/local/cups/daemon/
> cp /opt/share/doc/cups/cups* /usr/local/doc/cups/
> cp /opt/share/doc/cups/cups* /usr/local/doc/cups/
 
</pre>
ein dummy Nutzer-PW in Cups-Opt anlegen
ein dummy Nutzer-PW in Cups-Opt anlegen
<pre>
> echo "admin:root:00000000000000000000000000000000" > /usr/local/cups/passwd.md5
> echo "admin:root:00000000000000000000000000000000" > /usr/local/cups/passwd.md5
</pre>
</pre>


Webrowser aufrufen http://syno:631/admin
Webrowser aufrufen http://meine_syno_ip:631/admin
bei Änderung von Cups-Einstellungen:  
bei Änderung von Cups-Einstellungen wird ein Login verlangt:  
*login: admin
*login: admin
*pw: password des useraccounts (nicht o.g. irgendetwaslanges)
*pw: password des useraccounts


und der Druckerverwaltung steht nichts mehr im Wege
und der Druckerverwaltung steht nichts mehr im Wege
es können Canon Netzwerkdrucker eingebunden werden, indem das Modul bjnp wie oben dargestellt compiliert und in den backend-Ordner kopiert wird
 
es können Canon Netzwerkdrucker eingebunden werden, indem das Modul '''bjnp''' wie oben dargestellt compiliert und in den backend-Ordner kopiert wird
<pre>
<pre>
cp ./bjnp /usr/local/cups/backend/
cp ./bjnp /usr/local/cups/backend/
</pre>
</pre>
Airprint bei Netzwerkdruckern weiterhin mit airprint-generate.py (s.o.)


'''to do'''
Airprint bei Netzwerkdruckern einrichten mit '''airprint-generate.py''' (s.o.)
 
====to do====
<pre>
<pre>
solange an der Syno kein USB-Drucker hängt, laufen keine Syno-Scripte los und die printers.conf.O enthält die mit der Cups-GUI hinzugefügten Drucker
solange an der Syno kein USB-Drucker hängt, laufen keine Syno-Scripte los  
erkennt die Syno einen USB-Drucker schmeißt das Syno-Script alle per Cups-Webinterface hinzugefügten Drucker aus der printers.conf.* raus
und die printers.conf.O enthält die mit der Cups-GUI hinzugefügten Drucker
 
erkennt die Syno einen USB-Drucker schmeißt das Syno-Script alle per Cups-Webinterface  
hinzugefügten Drucker aus der printers.conf.* raus


weiterhin stoppt die DSM den Syno-Cups-Server regelmäßig wenn kein USB-Drucker angeschlossen ist, dadurch sind über LAN angeschlossene Netzwerkdrucker nicht mehr erreichbar
weiterhin stoppt die DSM den Syno-Cups-Server regelmäßig wenn kein USB-Drucker angeschlossen ist,  
dadurch sind über LAN angeschlossene Netzwerkdrucker dann nicht mehr erreichbar


Lösungsansatz:
Lösungsansatz:
Man muss seine eigene printers.conf sichern und nach einem Systemstart wieder nach /usr/local/cups/printers.conf kopieren.
Man muss seine eigene printers.conf sichern und nach einem Systemstart wieder nach /usr/local/cups/printers.conf kopieren.
Die gleichzeitige Verwaltung von USB und Netzwerkdruckern erfordert eine Deaktivierung von
Die gleichzeitige Verwaltung von USB und Netzwerkdruckern erfordert eine Deaktivierung von
/usr/syno/etc.defaults/rc.d/S55cupsd.sh
/usr/syno/etc/rc.d/S55cupsd.sh
 
und ein Start von cups mit einem eigenen Start/Stop-Scripts
und ein Start von cups mit einem eigenen Start/Stop-Scripts
siehe http://www.synology-wiki.de/index.ph...p_Script_cupsd
siehe http://www.synology-wiki.de/index.php/IPKG#Startup_Script_cupsd
mit /usr/syno/sbin/cupsd -C /usr/local/cups/cupsd.conf
mit
> /usr/syno/sbin/cupsd -C /usr/local/cups/cupsd.conf
 
Dann müssen auch USB-Drucker über das CUPS-Webinterface hinzugefügt werden.
Dann müssen auch USB-Drucker über das CUPS-Webinterface hinzugefügt werden.


Problem: Die Treiberdatei *.ppd erhält man nur wenn man einmal den Drucker an USB steckt, damit diese ppd vom Syno-Server heruntergeladen wird.
Problem: Die Treiberdatei *.ppd erhält man nur  
wenn man einmal den Drucker an USB steckt,  
damit diese ppd vom Syno-Server heruntergeladen wird.
</pre>
 
====DSM: Airprint lädt die erforderlichen Druckertreiber von download.synology.com nach====
 
die Steuerung der Druckertreiber erfolgt über
* /usr/syno/etc/rc.d/s55cupsd.sh
 
dieses Script startet/stoppt den CUPS-Daemon und verarbeitet folgende Parameter
(es wurden in Kurzfassung die Parameter ergänzt und was in dem Script ausgeführt wird)
<pre>
get_driver_list
Treiberliste herunterladen
wget http://download.synology.com/airprint/DSM4.1/_list_
add /dev/usb/deviceNodeName printer.ppd
        Drucker hinzufügen
/usr/syno/bin/synoprint --ppd /dev/usb/deviceNodeName printer.ppd
 
uninstall usbprinter1.ppd
        Drucker deinstallieren
rm -f /usr/local/cups/ppd/usbprinter1.ppd
PRINTER_NAME=`$GET_SECTION_KEY_VALUE /usr/syno/etc/printer.conf $ID cups\ printer\ name`
/usr/syno/bin/lpadmin -x $PRINTER_NAME
/usr/syno/bin/lpadmin -p $PRINTER_NAME -E -L $(hostname) -v usb:/dev/usb/$2
/usr/syno/bin/cupsdisable $PRINTER_NAME
 
install lp0 /ppd/xxxxxx.ppd.tgz
/bin/mkdir /tmp/_airprint
wget http://download.synology.com/airprint/DSM4.1/ppd/xxxxxx.ppd.tgz -O /tmp/_airprint/driver.tgz
/bin/tar zxvf /tmp/_airprint/driver.tgz -C /tmp/_airprint
rm /tmp/_airprint/driver.tgz
/bin/sh /tmp/_airprint/install.sh lp0 http://download.synology.com/airprint/DSM4.1 &
 
start
 
stop
 
restart
</pre>
</pre>
'''Beispiel: Installation des Druckers Canon MP970 auf einer Synology DS212+ (Marvell '''88F6282''') mit DSM 4.1'''
* die '''Treiberliste''' wird von http://download.synology.com/airprint/DSM4.1/_list_ heruntergeladen
** Aus dem Block "Canon PIXMA MP970" wird der Zielpfad "/ppd/stp-bjc-MULTIPASS-MP970.5.2.ppd.tgz" extrahiert
* Download des Treibers von http://download.synology.com/airprint/DSM4.1/ppd/stp-bjc-MULTIPASS-MP970.5.2.ppd.tgz nach /tmp/_airprint/driver.tgz
** extrahieren von driver.tgz in
*** '''install.sh'''
*** '''printer.ppd''' (enthält *NickName:      "Canon PIXMA MP970 - CUPS+Gutenprint v5.2.9" )
* jetzt wird das heruntergeladene Installations-Script install.sh gestartet
** extrahiert aus /etc.defaults/synoinfo.conf den Hardware-String unique="synology_88f6282_212+"
** der mittlere Teil zeigt die CPU an '''88f6282'''
** jetzt ist der Zielpfad für gesamte Druckertreiberumgebung vollständig:
*** '''http://download.synology.com/airprint/DSM4.1/88f6282/common.tgz'''
*** extrahieren von common.tgz [18MB!] in die Ordner
**** bin
**** cups
**** '''ghostscript'''
**** '''gutenprint'''
**** lib
**** share
** zum Schluss werden diese Ordner nach /usr/local kopiert


===Variante 3: Airprint Drucken mit IOS 6===
===Variante 3: Airprint Drucken mit IOS 6===
Änderung 02.10.12
ein urftopdf Filter ist nicht notwendig, urf kann mit dem vorhandenen Filter pdftops verarbeitet werden
siehe Forum-Beiträge:
# http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=274778&viewfull=1#post274778
# http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=273563&viewfull=1#post273563
zusammengefasst:
'''Ab IOS6 druckt Apple nicht mehr im Format pdf sondern setzt einen Druckjob im Format urf ab.'''
1. editiere /usr/syno/avahi/services/3rdparty.MeinDruckerName.service
    image/urf (ergänzen)
    URF=DM3 (anstatt urf=none)
2. ergänze in  /opt/share/cups/mime/mime.types
    image/urf                  urf (0,UNIRAST)
3. ergänze in /opt/share/cups/mime/mime.convs
    image/urf                  application/vnd.cups-postscript 66      pdftops
4. cups neustart
    /opt/etc/init.d/S55cupsd restart
fertig
----
----
'''alter Eintrag: IOS 6 printing mit dem urftopdf-Filter:'''


Ab IOS6 druckt Apple nicht mehr im Format pdf sondern setzt einen Druckjob im Format urf ab.
Ab IOS6 druckt Apple nicht mehr im Format pdf sondern setzt einen Druckjob im Format urf ab.
Zeile 441: Zeile 577:
> make install
> make install
</pre>
</pre>
2) Installation des urftopdf Filters
2) Installation des urftopdf Filters
<pre>
<pre>
Zeile 447: Zeile 584:
> cd superna9999-urftopdf-6f69800
> cd superna9999-urftopdf-6f69800
> gcc urftopdf.c -lhpdf -lcups -o urftopdf -lm
> gcc urftopdf.c -lhpdf -lcups -o urftopdf -lm
</pre>
Kopieren der Dateien nach IPKG-CUPS...
<pre>
> cp urftopdf /opt/lib/cups/filter/
> cp urftopdf /opt/lib/cups/filter/
> cp urftopdf.types /opt/share/cups/mime/
> cp urftopdf.types /opt/share/cups/mime/
> cp urftopdf.convs /opt/share/cups/mime/
> cp urftopdf.convs /opt/share/cups/mime/
> /opt/etc/init.d/S55cupsd restart
> /opt/etc/init.d/S55cupsd restart
</pre>
... bzw. wer original Syno-DSM-CUPS verwendet kopiert nach /usr
<pre>
cp urftopdf /usr/local/cups/filter/
cp urftopdf.convs /usr/local/cups/
cp urftopdf.types /usr/local/cups/
/usr/syno/etc/rc.d/S55cupsd.sh restart
</pre>
</pre>


Zeile 457: Zeile 606:
In den von avahi genutzten services Dateien muss dann noch unter dem Paramter "pdl=" der Eintrag "image/urf" mit Komma getrennt hinzugefügt werden. Jetzt sollte der Drucker auch unter iOS 6 auftauchen und genutzt werden können.
In den von avahi genutzten services Dateien muss dann noch unter dem Paramter "pdl=" der Eintrag "image/urf" mit Komma getrennt hinzugefügt werden. Jetzt sollte der Drucker auch unter iOS 6 auftauchen und genutzt werden können.


===Variante 4: DEBUG Logprotokolle und manuelles Testen der Filter in der Shell===
Hinweis: "image/urf"" wird vom Script airprint-generate.py autoamtisch eingetragen, wenn der Filter urftopdf registriert ist.
Cups ist sehr gesprächig man den Loglevel anpasst.  
 
===Variante 4: DEBUG Logprotokolle und manuelles Testen der CUPS-Filter in der Shell===
Cups ist sehr gesprächig, wenn man den Loglevel anpasst.  


Das geht sehr bequem über das Cups-Web-Frontend (führt gleich Neustart cupsd aus)
Das geht sehr bequem über das Cups-Web-Frontend (führt gleich Neustart cupsd aus)
Zeile 473: Zeile 624:
</pre>
</pre>


oder alternativ in der Shell mit einem Editor (hier vi)
oder alternativ in der Shell mit einem Editor (hier vi und Syno-CUPS-Server, für /opt die Pfade anpasssen)
<pre>
<pre>
> vi /usr/local/cups/cupsd.conf
> vi /usr/local/cups/cupsd.conf
Zeile 481: Zeile 632:
   ErrorLog /var/log/cups/error_log
   ErrorLog /var/log/cups/error_log
> mkdir /var/log/cups/
> mkdir /var/log/cups/
> /usr/syno/etc.defaults/rc.d/S55cupsd.sh restart
> /usr/syno/etc/rc.d/S55cupsd.sh restart
</pre>
</pre>


Zeile 537: Zeile 688:


In diesem Ordner sind nur die im Laufe der Zeit von synology.com nachgeladenen Druckertreiber enthalten (ghostscript, gutenprint etc.)
In diesem Ordner sind nur die im Laufe der Zeit von synology.com nachgeladenen Druckertreiber enthalten (ghostscript, gutenprint etc.)
Die genaue Erklärung, wie die Treiber von der Webseite download.synology.com in diesen Ordner geladen werden steht weiter oben: [[Druckerverwaltung_und_Netzwerkdrucker_einbinden#DSM:_Airprint_l.C3.A4dt_die_erforderlichen_Druckertreiber_von_download.synology.com_nach]]


Dadurch werden bei einem Firmwareupdate nicht die Druckertreiber aktualisiert.
Dadurch werden bei einem Firmwareupdate nicht die Druckertreiber aktualisiert.
Zeile 565: Zeile 719:


Somit bleiben alle DSM Einstellungen erhalten, aber das Betriebssystem ist wieder 100% im Original-Zustand.
Somit bleiben alle DSM Einstellungen erhalten, aber das Betriebssystem ist wieder 100% im Original-Zustand.
----
Hintergrund:
wird ein Airprint Drucker angeschlossen, lädt DSM die Treiber von synology.com nach
dazu wird ein Script gestartet
<pre>
>/bin/sh /tmp/_airprint/install.sh 04a9:1726:2237D4 http://ukdl.synology.com/airprint/DSM4.1
>/usr/syno/bin/wget http://ukdl.synology.com/airprint/DSM4.1/88f6282/common.tgz -O /volume1/@tmp/_airprint1002210646/common.tgz -o /tmp/_airprint/[cnfid_30976].wget
</pre>
eine genaue Erklärung wie DSM die Airprint Treiber nachinstalliert findet sich hier
http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=273188&viewfull=1#post273188

Aktuelle Version vom 12. August 2013, 08:47 Uhr

Einleitung

Synology bringt eine eigene Druckerverwaltung für USB-Drucker mit. Als Unterbau verwendet Synology CUPS. Leider sind die Elemente der Web-GUI von CUPS nicht Bestandteil der DSM-Firmware, so dass Cups auf Port 631 lauscht, aber die CUPS-Admin-Seite http://meine_syno_ip:631/admin nicht darstellen kann.

Für einen allgemein über USB angeschlossenen Drucker der von der Synology im Netzwerk freigegeben ist, benötigt DSM keinen Druckerteiber. Die gesamte Umwandlung des Druckjobs über den Druckertreiber in den RAW-Druckjob erfolgt dabei auf der PC Seite. Hier stehen dann oft die Original Treiber des Druckerherstellers zur Verfügung (optimales Druckergebnis).

Airprint

Die DSM Firmware der Synology kann einen Airprint Drucker emulieren. Das ermöglicht die Einbindung von nicht airprintfähigen Druckern und das Drucken von IOS-Geräten auf diese Drucker. Bei dieser Airprint-Emulation erfolgt die gesamte Umwandlung des Druckjobs in die Druckersprache mit Hilfe von Druckertreibern in der Synology. Als Druckertreiber kommt hier Gutenprint zur Anwendung.

Die Liste der unterstützten Drucker: http://gimp-print.sourceforge.net/p_Supported_Printers.php

In DSM 4.1 ist Gutenprint 5.2.9 integriert.

Hinweis: Beim Drucken über Airprint werden keine Druckertreiber vom Druckerhersteller verwendet, so dass bei den Linux-Druckertreibern ggf. Fehler im Druckbild oder Probleme mit der Druckqualität auftreten können, die beim Druck vom PC nicht auftreten.

Netzwerkdrucker Canon/HP

Weiterhin können in der DSM keine Netzwerkdrucker eingebunden werden. Nachfolgend wird gezeigt wie Canon Drucker im Netzwerk mit bjnp einbindet.

Das gilt auch für HP Netzwerk-Drucker (Stichwort: Hplip, im Forum suchen nach "ipkg install hplip")

Schnelleinstieg

(Stand August 2013)

In DSM 4.2 wurde die aktuelle Gutenprint Version 5.2.9 integriert und Airprint für IOS 6 erweitert. Somit macht das selber kompilieren derzeit keinen Sinn.

Es reicht aus, einfach das CUPS Webinterface nachzuinstallieren um die Druckjobs zu verwalten.

siehe http://www.synology-wiki.de/index.php/Druckerverwaltung_und_Netzwerkdrucker_einbinden#CUPS_Webinterface_installieren

Voraussetzung

Installationen

Variante 1: Deakivierung der DSM-CUPS und Aktivierung eines eigenen IPKG-CUPS-Servers

Bei dieser Variante stehen einem alle Möglichkeiten des Common Unix Printing Systems zur Verfügung:

  • Einbindung von Netzwerkdruckern (CUPS Backend)
  • Verwaltung von Druckern mit der CUPS-GUI
  • Einstellungen der Drucker verwalten (Druckqualität etc.)

Dabei wird der DSM-CUPS-Server deaktviert und über ipkg ein CUPS-Server installiert.

Vereinfacht wird hier alles unter Root ausgeführt. Die Anleitung im Forum zeigt den Weg mit dem eingeschränkten Account admin http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=268258&viewfull=1#post268258

ich habe nicht alles formatiert, ein > bedeutet:

> shell eingabe

Hinweise:


zur Vorbereitung erst einmal Optware installieren und Toolchain laden

Anleitung für Deine Syno: http://www.synology-wiki.de/index.php/IPKG

ggf Syno Startscript anpassen

/usr/local/etc/rc.d/Optware.sh

Pfad kontrollieren

> export PATH=/opt/bin:/opt/sbin:$PATH
> echo $PATH
/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Entwicklungsumgebung

> ipkg update
> ipkg install gcc nano
> ipkg install optware-devel (ganz dicke Keule aber make ist dabei)

syno DSM CUPS beenden und ipkg CUPS installieren

> /usr/syno/etc/rc.d/S55cupsd.sh stop

und syno cups dauerhaft stoppen

> mkdir /usr/syno/etc/rc.d/backup
> mv /usr/syno/etc/rc.d/S55cupsd.sh /usr/syno/etc/rc.d/backup/

Optware Cups installieren

> /opt/bin/ipkg install cupsInstalling cups (1.4.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/cups_1.4.6-1_arm.ipk
Configuring cups
Successfully terminated.

Cups Web GUI installieren

> /opt/bin/ipkg install cups-doc
Installing cups-doc (1.4.6-1) to root...
Downloading hhttp://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/cups-doc_1.4.6-1_arm.ipk
Configuring cups-doc

und für das compilieren anderer Pakete

> /opt/bin/ipkg install cups-dev

da auf der Synology die Befehle adduser und addgroup fehlen (Verwaltung über DSM-GUI), verwenden wir die cups BasicDigest Authentifizierung

der Schlüssel liegt dann in /opt/etc/cups/passwd.md5

> /opt/bin/lppasswd -g root -a admin
Enter password: xxxxxxxxx

cupsd.conf anpassen (nano) - ggf. Loglevel auf debug setzen

> cat /opt/etc/cups/cupsd.conf
LogLevel warn
Port 631ServerAlias *

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS

# Default authentication type, when authentication is required...
DefaultAuthType BasicDigest

# Restrict access to the server...
<Location />
  #AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

# Restrict access to the admin pages...
<Location /admin>
  #AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType BasicDigest
  Order allow,deny
  Allow from All
</Location>

start/stop script für cups anlegen: http://www.synology-wiki.de/index.php/IPKG#Startup_Script_cupsd

> chmod 666 S55cupsd

jetzt mal schnuppern

> /opt/etc/init.d/S55cupsd start

einloggen auf Cups Web GUI https://meine_syno_ip:631/admin/ zum Test ob alle Rechte vorhanden sind den voreingestellten Drucker hp990c löschen

  • Share printers connected to this system
  • Allow printing from the Internet
  • Allow remote administration

Hinweis: bei Problemen mit den CUPS-Rechten zum Einloggen auf der Cups-Web-Frontend ggf. mal den Port 631 zum lokalen Rechner tunneln (geht auch mit putty) und als root/admin einloggen

# ssh -L 8888:localhost:631 root@192.168.1.101

im Browser eingeben: http://localhost:8888

Wann besitzt jetzt in der CUPS-Web-GUI die Rechte des lokalen admin/root


Hinweis: leider ist das usb backend von ipkg-cups defekt - es wird kein usb drucker erkannt verlinke das usb backend der Syno

> mv /opt/lib/cups/backend/usb /opt/lib/cups/backend/usb.bad
> ln -s /usr/local/cups/backend/usb /opt/lib/cups/backend/usb

die aktuellen Gutenprint Treiber compilieren

Was ist Gutenprint?

Wer braucht Gutenprint?

  • Benutzer von IOS Geräten, die Airprint verwenden, da hierzu die Synology entsprechende Druckertreiber benötigt

D.h. wer nur seinen Netzwerkdrucker anbinden will und vom PC aus druckt, kann diesen Schritt überspringen

Vorbereitung (hier Version Gutenprint 5.2.8)

> mkdir /volume1/tmp
> cd /volume1/tmp
> wget http://sourceforge.net/projects/gimp-print/files/gutenprint-5.2/5.2.8/gutenprint-5.2.8.tar.bz2
> tar --bzip2 -xvf gutenprint-5.2.8.tar.bz2
> cd gutenprint-5.2.8

diese Stelle ist etwas trickreich

nachfolgende Einstellung wurde auf ARM-CPU (DS212+) getestet und von Intel-Atom (DS1512+) bestätigt

> ./configure CC="/opt/bin/gcc -std=gnu99 -I/opt/include -L/opt/lib" \
--prefix=/opt \
--includedir=/opt/include \
--with-cups=/opt \
--disable-cups-ppds \
--disable-cups-level3-ppds \
--without-foomatic \
--disable-libgutenprintui2 \
--disable-nls \
--disable-static

es kommt noch Fehlermeldung bei make

#make
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_sa_restorer_v2@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_rt_sa_restorer_v2@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_rt_sa_restorer_v1@GLIBC_PRIVATE'
/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/lib/libpthread.so: undefined reference to `__default_sa_restorer_v1@GLIBC_PRIVATE'
collect2: ld returned 1 exit status

Lösung

Quelle: http://forum.synology.com/enu/viewtopic.php?f=90&t=30132 (libpthread.so der Syno verwenden)

> mv /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so.bad
> cp /lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/libpthread-2.5.so

und noch einmal

> make

Gutenprint nach /opt installieren

> make install
Libraries have been installed in:
/opt/lib
/opt/lib/gutenprint/5.2/
Libraries have been installed in:
/opt/lib/gutenprint/5.2/modules

Kontrolle

> /opt/lib/cups/filter/rastertogutenprint.5.2
Usage: rastertoprinter job-id user title copies options [file]

cups Netzwerkzugriff zum Pixma-Drucker mit cups-bjnp

dafür die Netzerktreiber für Canon Pixma installieren

falls noch nicht getan (siehe Gutenprint):

> ipkg install cups-dev
> cd /volume1/tmp

cups-bjnp compilieren

> wget http://sourceforge.net/projects/cups-bjnp/files/cups-bjnp/0.5.5/cups-bjnp-0.5.5.tar.gz
> tar xzf cups-bjnp-0.5.5.tar.gz
> cd cups-bjnp-0.5.5/
> ./configure --prefix=/opt
> make

ein Test, ob die Netzwerkverbindung zum Drucker steht

> ./bjnp
network bjnp://192.168.1.111:8611 "Canon MP970 series" "Canon MP970 series 192.168.1.111" "MFG:Canon;CMD:BJL,BJRaster3,BSCCe,NCCe,PLI;SOJ:TX T01,BJNP2;MDL:MP970 series;CLS:PRINTER;DES:Canon MP970 series;VER:1.110;STA:10;FSI:03;HRI:OTH;MSIAT,E3;"

das bjnp backend nach cups installieren

> cp ./bjnp /opt/lib/cups/backend/

Cups neu starten

> /opt/etc/init.d/S55cupsd restart

Cups GUI im Browser aufrufen und Drucker hinzufügen

https://meine_syno_ip:631/admin/
"Add Printer" und Netzwerkdrucker hinzufügen
Discovered Network Printers: Canon MP970 series 192.168.1.111 (Canon MP970 series)
[x] Share This Printer
-> Driver: Canon PIXMA MP970 - CUPS+Gutenprint v5.2.8 (color, 2-sided printing)

Drucker-Treiber liegen jetzt hier:

/opt/var/cache/cups/Canon_MP970_LAN.ipp4
/opt/var/cache/cups/Canon_MP970_LAN.pwg3
/opt/etc/cups/ppd/Canon_MP970_LAN.ppd

Airprint mit Bonjour über airprint-generate.py einrichten

zuerst pycups installieren

http://pypi.python.org/pypi/pycups/1.9.62

Dazu wird python benötigt.

python2.5 ist bereits mit dem Toolchain optware-devel in den ipkg Pfad installiert worden.

pycups installieren

> cd /volume1/tmp/
> wget http://pypi.python.org/packages/source/p/pycups/pycups-1.9.62.tar.bz2
> tar --bzip2 -xvf pycups-1.9.62.tar.bz2
> cd pycups-1.9.62
> /opt/bin/python2.5 setup.py install
running install_lib
copying build/lib.linux-armv5tel-2.6/cups.so -> /opt/local/lib/python2.5/site-packages
running install_egg_info
Writing /opt/local/lib/python2.5/site-packages/pycups-1.9.62-py2.6.egg-info

jetzt weiter mit

> cd /volume1/tmp/

syno wget wurde nicht für https compiliert

> /opt/bin/wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py

Mit dem Script die Avahi "services" erzeugen und installieren:

Hinweis: Der Drucker muss vorher in CUPS freigegeben werden. Für lokale Drucker ohne Freigabe wird kein logischerweise kein *.service generiert.

> /opt/bin/python2.5 ./airprint-generate.py

einfaches kopieren der service-Datei nach /usr/syno/avahi/services/ ergibt keinen Sinn, da S99avahi.sh fremde Service-Dateien löscht

einzige Außnahme: sie heißen: 3rdparty.*.service

Achtung: S99avahi.sh akzeptiert nur genau eine 3rdparty.* Datei, bei zwei Dateien wird alles gelöscht

> for a in $(ls *.service); do mv $a "3rdparty.$a"; done
> cp 3rdparty.* /usr/syno/avahi/services/

kontrolliere, dass nur genau eine 3rdparty.* im Ordner /usr/syno/avahi/services/ liegt

avahi neu starten

> /usr/syno/etc/rc.d/S99avahi.sh restart

Hinweis: Solange man S99avahi.sh nicht neu startet, werden alle Service sofort (1 Sekunde) im Netzwerk veröffentlicht und keine fremden *.service gelöscht. Zum Testen ist somit kein "S99avahi.sh restart" erforderlich. Es reicht dann ein einfaches kopieren beliebig vieler *.service in den Ordner /usr/syno/avahi/services/.


versucht man jetzt über Airprint zu drucken:

-> Fehlermeldung im cups job spooler : stopped "Unable to execute gs program: No such file or directory"

Lösung: für airprint pdf drucken fehlt noch "ipkg install ghostscript" oder einfacher

> ln -s /usr/local/bin/gs /usr/bin/

Hinweis: /usr/local/bin/gs ist nur vorhanden, wenn in der DSM 4.1 wenigstens einmal ein Airprint-Drucker eingerichtet wurde.

letzte Schritte

cups mit Airprint und Zugriff auf Drucker im LAN ist jetzt fertig installiert

jetzt zur Sicherheit die Syno mal neu starten

> reboot

oder nur ein einfaches

> /opt/etc/init.d/S55cupsd restart

Variante 2: Erweiterung des DSM-CUPS-Servers

CUPS Webinterface installieren

Hier besteht die Möglichkeit mit IPKG die erforderlichen Web_GUI Elemente nachzuinstallieren, so dass über Port 631 der DSM-CUPS-Server erreichbar ist

zuerst die erforderlichen Dateien laden

> /opt/bin/ipkg install cups-doc    
Installing cups-doc (1.4.6-1) to root...
Installing cups (1.4.6-1) to root...
...

jetzt diese ipkg-Dateien in die Syno-DSM kopieren (es wird nichts überschrieben)

> mkdir /usr/local/cups/cgi-bin
> cp /opt/lib/cups/cgi-bin/* /usr/local/cups/cgi-bin/
> mkdir /usr/local/cups/templates/
> cp /opt/share/cups/templates/* /usr/local/cups/templates/
> mkdir /usr/local/cups/daemon/
> cp /opt/lib/cups/daemon/* /usr/local/cups/daemon/
> cp /opt/share/doc/cups/cups* /usr/local/doc/cups/

ein dummy Nutzer-PW in Cups-Opt anlegen

> echo "admin:root:00000000000000000000000000000000" > /usr/local/cups/passwd.md5

Webrowser aufrufen http://meine_syno_ip:631/admin bei Änderung von Cups-Einstellungen wird ein Login verlangt:

  • login: admin
  • pw: password des useraccounts

und der Druckerverwaltung steht nichts mehr im Wege

es können Canon Netzwerkdrucker eingebunden werden, indem das Modul bjnp wie oben dargestellt compiliert und in den backend-Ordner kopiert wird

cp ./bjnp /usr/local/cups/backend/

Airprint bei Netzwerkdruckern einrichten mit airprint-generate.py (s.o.)

to do

solange an der Syno kein USB-Drucker hängt, laufen keine Syno-Scripte los 
und die printers.conf.O enthält die mit der Cups-GUI hinzugefügten Drucker

erkennt die Syno einen USB-Drucker schmeißt das Syno-Script alle per Cups-Webinterface 
hinzugefügten Drucker aus der printers.conf.* raus

weiterhin stoppt die DSM den Syno-Cups-Server regelmäßig wenn kein USB-Drucker angeschlossen ist, 
dadurch sind über LAN angeschlossene Netzwerkdrucker dann nicht mehr erreichbar

Lösungsansatz:
Man muss seine eigene printers.conf sichern und nach einem Systemstart wieder nach /usr/local/cups/printers.conf kopieren.

Die gleichzeitige Verwaltung von USB und Netzwerkdruckern erfordert eine Deaktivierung von
/usr/syno/etc/rc.d/S55cupsd.sh

und ein Start von cups mit einem eigenen Start/Stop-Scripts
siehe http://www.synology-wiki.de/index.php/IPKG#Startup_Script_cupsd
mit
> /usr/syno/sbin/cupsd -C /usr/local/cups/cupsd.conf

Dann müssen auch USB-Drucker über das CUPS-Webinterface hinzugefügt werden.

Problem: Die Treiberdatei *.ppd erhält man nur 
wenn man einmal den Drucker an USB steckt, 
damit diese ppd vom Syno-Server heruntergeladen wird.

DSM: Airprint lädt die erforderlichen Druckertreiber von download.synology.com nach

die Steuerung der Druckertreiber erfolgt über

  • /usr/syno/etc/rc.d/s55cupsd.sh

dieses Script startet/stoppt den CUPS-Daemon und verarbeitet folgende Parameter (es wurden in Kurzfassung die Parameter ergänzt und was in dem Script ausgeführt wird)

get_driver_list
	Treiberliste herunterladen
	wget http://download.synology.com/airprint/DSM4.1/_list_
		
add /dev/usb/deviceNodeName printer.ppd
        Drucker hinzufügen 
	/usr/syno/bin/synoprint --ppd /dev/usb/deviceNodeName printer.ppd

uninstall usbprinter1.ppd
        Drucker deinstallieren
	rm -f /usr/local/cups/ppd/usbprinter1.ppd
	PRINTER_NAME=`$GET_SECTION_KEY_VALUE /usr/syno/etc/printer.conf $ID cups\ printer\ name`
	/usr/syno/bin/lpadmin -x $PRINTER_NAME
	/usr/syno/bin/lpadmin -p $PRINTER_NAME -E -L $(hostname) -v usb:/dev/usb/$2
	/usr/syno/bin/cupsdisable $PRINTER_NAME

install lp0 /ppd/xxxxxx.ppd.tgz
	/bin/mkdir /tmp/_airprint
	wget http://download.synology.com/airprint/DSM4.1/ppd/xxxxxx.ppd.tgz -O /tmp/_airprint/driver.tgz
	/bin/tar zxvf /tmp/_airprint/driver.tgz -C /tmp/_airprint
	rm /tmp/_airprint/driver.tgz
	/bin/sh /tmp/_airprint/install.sh lp0 http://download.synology.com/airprint/DSM4.1 &

start

stop

restart

Beispiel: Installation des Druckers Canon MP970 auf einer Synology DS212+ (Marvell 88F6282) mit DSM 4.1

Variante 3: Airprint Drucken mit IOS 6

Änderung 02.10.12 ein urftopdf Filter ist nicht notwendig, urf kann mit dem vorhandenen Filter pdftops verarbeitet werden

siehe Forum-Beiträge:

  1. http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=274778&viewfull=1#post274778
  2. http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=273563&viewfull=1#post273563

zusammengefasst: Ab IOS6 druckt Apple nicht mehr im Format pdf sondern setzt einen Druckjob im Format urf ab.

1. editiere /usr/syno/avahi/services/3rdparty.MeinDruckerName.service

   image/urf (ergänzen)
   URF=DM3 (anstatt urf=none)

2. ergänze in /opt/share/cups/mime/mime.types

   image/urf                  urf (0,UNIRAST)

3. ergänze in /opt/share/cups/mime/mime.convs

   image/urf                  application/vnd.cups-postscript 66      pdftops

4. cups neustart

   /opt/etc/init.d/S55cupsd restart

fertig



alter Eintrag: IOS 6 printing mit dem urftopdf-Filter:

Ab IOS6 druckt Apple nicht mehr im Format pdf sondern setzt einen Druckjob im Format urf ab. Dieses Format muss deshalb mit dem zusätzlichen Filter urftopdf erst in pdf umgewandelt werden

die gesamte Druckjob-Kette sieht so aus: urf (Apple) -> pdf (Adobe) -> ps (Postscript) -> ras (Rasterdatei) -> prn (Drucker-RAW/Rasterimage)

Quelle ist der Forumbeitrag:

http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=272126&viewfull=1#post272126

Installation des urftopdf Filters (zur Nutzung von AirPrint unter iOS 6)

1) Installation der benötigten libharu Bibliothek

> wget http://libharu.org/files/libharu-2.2.1.tar.gz
> tar xzvf libharu-2.2.1.tar.gz
> cd libharu-2.2.1
> ./configure --prefix=/opt
> make
> make install

2) Installation des urftopdf Filters

> wget -O urftopdf.zip --no-check-certificate https://github.com/superna9999/urftopdf/zipball/master
> unzip orftopdf-zip
> cd superna9999-urftopdf-6f69800
> gcc urftopdf.c -lhpdf -lcups -o urftopdf -lm

Kopieren der Dateien nach IPKG-CUPS...

> cp urftopdf /opt/lib/cups/filter/
> cp urftopdf.types /opt/share/cups/mime/
> cp urftopdf.convs /opt/share/cups/mime/
> /opt/etc/init.d/S55cupsd restart

... bzw. wer original Syno-DSM-CUPS verwendet kopiert nach /usr

cp urftopdf /usr/local/cups/filter/
cp urftopdf.convs /usr/local/cups/
cp urftopdf.types /usr/local/cups/
/usr/syno/etc/rc.d/S55cupsd.sh restart

3) Anpassung der services Datei

In den von avahi genutzten services Dateien muss dann noch unter dem Paramter "pdl=" der Eintrag "image/urf" mit Komma getrennt hinzugefügt werden. Jetzt sollte der Drucker auch unter iOS 6 auftauchen und genutzt werden können.

Hinweis: "image/urf"" wird vom Script airprint-generate.py autoamtisch eingetragen, wenn der Filter urftopdf registriert ist.

Variante 4: DEBUG Logprotokolle und manuelles Testen der CUPS-Filter in der Shell

Cups ist sehr gesprächig, wenn man den Loglevel anpasst.

Das geht sehr bequem über das Cups-Web-Frontend (führt gleich Neustart cupsd aus) in der Cups-GUI / Edit Configuration File

#LogLevel error
LogLevel debug
#ErrorLog syslog
ErrorLog /var/log/cups/error_log

und nicht vergessen:

> mkdir /var/log/cups/

oder alternativ in der Shell mit einem Editor (hier vi und Syno-CUPS-Server, für /opt die Pfade anpasssen)

> vi /usr/local/cups/cupsd.conf
   #LogLevel error
   LogLevel debug
   #ErrorLog syslog
   ErrorLog /var/log/cups/error_log
> mkdir /var/log/cups/
> /usr/syno/etc/rc.d/S55cupsd.sh restart

Ein Beispiel für ein Druckjob im pdf-Format, ausgegeben auf Backend usb:

> cat /var/log/cups/error_log
...
D [24/Sep/2012:20:06:24 +0200] [Job 3] envp[22]="CONTENT_TYPE=application/pdf"
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/pdftops (PID 4382)
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/pstoraster (PID 4383)
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started filter /usr/local/cups/filter/rastertogutenprint.5.2 (PID 4384)
D [24/Sep/2012:20:06:24 +0200] [Job 3] envp[28]="FINAL_CONTENT_TYPE=printer/usbprinter2"
I [24/Sep/2012:20:06:24 +0200] [Job 3] Started backend /usr/local/cups/backend/usb (PID 4385)

man kann die einzelnen Druck-Schritte aus dem Log-Protokoll auch in der Shell manuell durchspielen. Anbei der Druck der Cups-Testseite

Wer Syno-DSM-CUPS anstatt IPKG-CUPS verwendet muss nur die Pfade von /opt nach /usr (siehe obigen Protollauszug) anpassen und die eigene Drucker.ppd einsetzen

Quelle: http://fedoraproject.org/wiki/How_to_debug_printing_problems

CUPS-BANNER Testseite: /opt/share/cups/data/testprint

Treiberdatei
> export PPD=/opt/etc/cups/ppd/Canon_MP970_LAN.ppd

Postscriptdatei generieren
> /opt/lib/cups/filter/bannertops 1 tim '' 1 '' </opt/share/cups/data/testprint >bannertops.ps
DEBUG: PNG image: 192x128x8, color_type=2 (RGB)

ich denke, dass ist ein Null-Schritt siehe http://www-user.tu-chemnitz.de/~heha/hs_freeware/pstops.htm
> /opt/lib/cups/filter/pstops 1 tim '' 1 '' <bannertops.ps >pstops.ps
DEBUG: Page = 595x842; 0,0 to 595,842
DEBUG: Wrote 1 pages...

Rasterdatei erzeugen
> /opt/lib/cups/filter/pstoraster 1 tim '' 1 ''<pstops.ps >pstoras.ras 
INFO: Rendering completed

jetzt kommt der Druckertreiber ins Spiel, erzeuge Drucker-RAW-Datei 
> /opt/lib/cups/filter/rastertogutenprint.5.2 1 tim '' 1 ''<pstoras.ras >out.prn
DEBUG: Gutenprint: ================ Done printing page 1 ================

und jetzt die fertige prn-Datei rausdumpen
> /opt/bin/lp -d Canon_MP970_series ./out.prn

Variante 5: Bei einem Firmwareupdate wurden die Syno-CUPS-Druckertreiber nicht aktualisiert

Der Ordner /usr/local bleibt beim Firmwareupdate unangetastet (getestet DSM Version 4.0, 4.1)

siehe Forum: http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=272671&viewfull=1#post272671

In diesem Ordner sind nur die im Laufe der Zeit von synology.com nachgeladenen Druckertreiber enthalten (ghostscript, gutenprint etc.)

Die genaue Erklärung, wie die Treiber von der Webseite download.synology.com in diesen Ordner geladen werden steht weiter oben: Druckerverwaltung_und_Netzwerkdrucker_einbinden#DSM:_Airprint_l.C3.A4dt_die_erforderlichen_Druckertreiber_von_download.synology.com_nach


Dadurch werden bei einem Firmwareupdate nicht die Druckertreiber aktualisiert.

Man benötigt diese Druckertreiber eigentlich nur, wenn man Airprint verwendet. Falls vom PC aus gedruckt wird, dann wird i.A. der Druckjob vollständig auf der PC-Seite verarbeitet, so dass auch mit veralteten CUPS-Modulen keine Probleme auftretren werden.

Man kann aber direkt vor einem Firmewareupdate den Ordner umbennnen.

> mv /usr/local /usr/local.bak

Dann wird local.bak während des Updates gelöscht und /usr/local neu aufgebaut (entspricht Druckertreiber-Werkseinstellung, aktuelle Treiber werden vom Syno-Server download.synology.com/airprint/DSM4.1/ppd/ nachgeladen)

DSM 4.1 verweigert das drüberinstallieren der gleichen Fimwareversion.

Die aktuelle Firmwareversion ist in der Datei /etc.defaults/VERSION hinterlegt. Es reicht aus, vor dem Firmwareupdate mit einem Texteditor (hier vi) die buildnumber um eine Ziffer zu verkleinern.

> vi /etc.defaults/VERSION 
majorversion="4"
minorversion="1"
buildphase="0"
buildnumber="2635"
builddate="2012/08/29"

Jetzt kann man die gleiche Firmware-Version manuell oder automatisch installieren. Bei dem Firmwareupdate wird auch die Verknüpfung zum Opt-Pfad aufgehoben.

Somit bleiben alle DSM Einstellungen erhalten, aber das Betriebssystem ist wieder 100% im Original-Zustand.


Hintergrund: wird ein Airprint Drucker angeschlossen, lädt DSM die Treiber von synology.com nach dazu wird ein Script gestartet

>/bin/sh /tmp/_airprint/install.sh 04a9:1726:2237D4 http://ukdl.synology.com/airprint/DSM4.1

>/usr/syno/bin/wget http://ukdl.synology.com/airprint/DSM4.1/88f6282/common.tgz -O /volume1/@tmp/_airprint1002210646/common.tgz -o /tmp/_airprint/[cnfid_30976].wget

eine genaue Erklärung wie DSM die Airprint Treiber nachinstalliert findet sich hier http://www.synology-forum.de/showthread.html?32614-HowTo-Airprint-mit-aktuellen-Gutenprint-Treibern&p=273188&viewfull=1#post273188