Previous Up Next

4  Hardware und Peripheriegeräte installieren

4.1  Grafik Intel 945GM und Display LVDS

glxinfo # Mit diesem Befehl kann geprüft werden, ob die Grafikbeschleunigung 3D durch ’direct rendering’ unterstützt wird. Der Befehl muss in einer Konsole innerhalb der grafischen Oberfläche X11/xorg (KDE, Gnome, Fluxbox, usw. ) ausgeführt werden.

glxinfo | less # Auf diese Art kann in der Ausgabe gescrollte werden. Mit ’q’ wird ’less’ wieder beendet. Wichtig ist, dass in der Zeile ’direct rendering: Yes’, wie im Beispiel ’Yes’ steht.

glxinfo name of display: :0.0 display: :0 screen: 0 direct rendering: Yes server glx vendor string: SGI server glx version string: 1.2 ...

glxgears # Mit diesem Befehl wird ein Fenster geöffnet mit einer 3D Demo bestehend aus sich drehenden Zahnrädern. Auf der Konsole werden die Frames pro Sekunde ausgegeben (oder umrechnen auf Sekunden). Das Fenster sollte auf die volle Größe des Bildschirmes gezogen werden. Der Wert sollte dann noch mindestens 25 Frames pro Sekunde betragen. Bei meinem Netbook wird dies gerade noch erreicht. Unter 25 Frames/s ruckeln grafische Spiele und unter 10 Frames/s wird es wirklich eine Qual. Aus dem Wert läßt sich auch entnehmen, dass das Netbook mehr für die Büroarbeit taugt, als für animierte Computerspiele.

# little window: 1277 frames in 5.0 seconds = 255.313 FPS # window about half of the screen: 385 frames in 5.0 seconds = 76.884 FPS # window full screen: 135 frames in 5.0 seconds = 26.876 FPS

Bei einigen Programmen kann es sein, dass die Menüs für die Einstellung der Eigenschaften nicht erreichbar sind. Leider wurden bei der Programmierung oft die Scrollfunktion am Fensterrand nicht mit eingebaut. Abhilfe ist hier nur mit einem größeren virtuellen Bilschirm (’virtual screen’) zu erreichen. Mit der Maus am Bildschirmrand kann so der sichbare Ausschnitt verschoben werden. Im Englischen wird das als ’panning’ bezeichnet. Erreicht wird dies durch den Befehl .

xrandr --output LVDS --panning 1024x768 bzw. xrandr --fb 1024x768 --output LVDS --mode 1024x600 --panning 1024x768 in ausführlicher Länge.

Benötigt wird mindestens die Version 1.3 der Anwendung ”xrandr“.

Bei jüngeren Distributionen wurde die automatische Erkennung der Grafikhardware und des Bildschirmes wesentlich erweitert. Für ettliche Grafikkarten ist dies bereits bei der grafischen Oberfläche (X11/xorg) eingebracht. Das geht sogar soweit, dass gar keine Datei ’xorg.conf’ mehr vorhanden ist. Falls eine ”xorg.conf“ Datei vorhanden ist, müßte die ’Section ”Screen” ’ um einen Eintrag, wie z. B. ’Virtual 1280 1024’, erweitert werden. Beim eeepc mit Sidux und dem Treiber “intel”, wird bei einer erstellten “xorg.conf” eine Option “Virtual” trotzdem ignoriert. Hier geht es nur mit “xrandr” ab Version 1.3.

Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 16 Modes "1280x1024" "1280x800" "1024x768" "1024x600" "800x600" "640x480" Virtual 1280 1024 EndSubSection SubSection "Display" Viewport 0 0 Depth 24 Modes "1280x1024" "1280x800" "1024x768" "1024x600" "800x600" "640x480" Virtual 1280 1024 EndSubSection EndSection

Wenn keine xorg.conf vorhanden ist, dann kann diese mit verschiedenen Befehlen erzeugt werden. Falls bereits eine solche Datei vorhanden ist, sollte diese vor dem Befehlaufruf unbedingt gesichert werden, da diese sonst überschrieben wird.

Xorg -configure # habe ich verwendet # oder dpkg-reconfigure -phigh xserver-xorg # oder system-config-display --reconfig

Es folgt ein Beispiel eines Versuches zur Erweiterung eines Modes mit “xrandr”. Wenn “Virtual” entsprechend in der “xorg.conf” eingetragen wurde, sollte der untere Eintrag eigentlich funktionieren. Bei mir funktionierte es nicht, da der Intel Treiber anscheinend diese Angabe ignoriert. Es wird eine Fehlermeldung ausgegeben, die eigentlich nicht weiterhilft.

Zwischen Monitor und Grafikkarte gibt es einen Standard über den Daten von Monitor geholt werden können und die Monitormoden werden automatisch ermittelt. Es gibt leider auch Monitorhersteller und auch Grafikkartenhersteller, die machen manchmal Fehler bei der Umsetzung des Standards. Die Fehlerbehebung wird dann im Treiber realisiert (z.B. bei Windows). Der Automatismus kann hier auch eine notwendiges manuelles Eingreifen über die xorg.conf oder xrandr verhindern, wenn diese Angaben ignoriert werden und ein solcher Fehler vorliegt.

xrandr --newmode 1024x768test 52 1024 1077 1112 1200 768 772 777 795 xrandr --addmode LVDS 1024x768test

Wenn es Probleme mit der grafischen Darstellung gibt, können eventuell die folgendenen Schritte weiterhelfen. Zuerst sollte eine vorhandene “xorg.conf” gerettet werden. Anschließend sollte eine “xorg.conf” gemäß der Anleitung in diesem Kapitel erstellt werden. Als Versuche sollten als Treiber “vesa” und in Folge “vga” oder “svga” probiert werden. Die meisten Optionen sollten auskommentiert oder weggelöscht werden. Wenn das nicht hilft X11/xorg zum Laufen zu bringen, kann es oft der Fall sein, dass weitere Stunden des Probierens vergebens sind. Bei neuer Hardware hilft es oft einfach zu warten und in einem halben Jahr mit einer aktuelleren Linuxversion es erneut zu versuchen (oder mittels Verwendung Linux aus dem Zweig “unstable”).

4.2  WLAN Atheros AR9285

4.2.1  Grundlagen zum WLAN Treiber

Mittels “lspci” ist herauszubekommen, welche WLAN-Karte im Rechner steckt. Bei dem ASUS eeepc ist das eine “Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)”. Mittels “lsmod” ist herauszubekommen, welche Treiber geladen sind. Über Suche im Internet hatte ich herausgefunden, dass es ein Treiber mit “ath” im Namen sein muss. Also durchsuchte ich die Ausgabe nach diesem Schlüsselwort mittels “grep” und erhielt, dass der “ath9k” Treiber geladen ist.

lsmod | grep ath ath9k 229940 0 #mac80211 146188 1 ath9k led_class 4128 1 ath9k ath 7868 1 ath9k cfg80211 89244 3 ath9k,mac80211,ath

Die WLAN-Karte funktioniert zwar mit dem Treiber, aber häufig findet ein Wiederaufbauen der Verbindung statt. Bei meiner Beobachtung fand ich heraus, dass die Signalstärke immer viel zu niedrig angegeben wird. Es liegt hier anscheinend noch ein Problem bei der Steuerung von einstellbaren Verstärkungsstufen des WLAN Chipsatzes vor.

Da die Linux Programmierer leider nur selten Informationen von Seiten der Hardwarehersteller bekommen, müssen diese oft mittels Probieren herausfinden, wie die Hardware geht um einen Treiber zu bauen. Das verschlingt eine Menge an Zeit und daher ist Linux bei der Hardware-Unterstützung öfters leider immer etwas hinterher. Bei Problemen reicht es oft ein halbes Jahr zu warten und mit einer aktuelleren Distribution es erneut zu versuchen. Hin und wieder lassen sich auch Hinweise auf die Vermutung finden, dass gewisse Betriebssystemhersteller mit einigen Hardwareherstellern Exklusivverträge geschlossen haben könnten, die eine Weitergabe oder Freigabe solcher Informationen nicht zulassen würden.

Wir Endnutzer werden es vermutlich nie erfahren, ob diese Vorwürfe stimmen. Einen kleinen Einfluß auf diese Dinge hat der Endnutzer und Käufer allerdings noch durch sein Konsumverhalten. Er kann Produkte meiden, für die es auch keine Treiber für Linux gibt. Auf diese Art und Weise kann auch ein Nicht-Linux-Nutzer die freie Linux-Welt unterstützen.

Auf der anderen Seite bekommt auch ein Nicht-Linux-Nutzer somit in der Regel auch in den Genuß von einigen Vorteilen, die er beim Kauf meistens nicht erkennen kann, aber sich im Betrieb bewähren. Er bekommt so einen Rechner mit solider Hardware, wo in der Regel auch mehr Fehler gefunden wurden, die dann auch in die Treiber von anderen (marktführenden) Betriebssystemen eingeflossen sind. Es läuft öfters auch Hardware für die es offene und freie Treiber für Linux gibt etwas stabiler als Hardware mit nur proprietären Treibern für Linux.

Auf meinen Rechnern (Freunde und Bekannte) bei denen alle Komponenten unter Linux unterstützt wurden, hatte ich tatsächlich mit dem Betriebssystem Windows kaum sogenannte “Blue Screens” und eine Neu-Installation des Betriebssystems war deshalb auch nicht notwendig geworden. Oft waren bei Linux unterstützer Hardware auch viel eher Treiber für mehrere Betriebssystemgenerationen von Windows vorhanden nach meinen Erfahrungen.

Aus diesem Grund kann ich einem überzeugten Windows-Nutzer durchaus empfehlen sich bei der Auswahl seiner Hardware von einem überzeugten Linux-Nutzer beraten zu lassen. Und wenn alle Stricke reißen sollten, dann funktioniert auf jeden Fall noch eine Linux-LiveCD um z.B. wichtige Daten zu retten. Wenn der Virenscanner eine Datei nur noch löschen kann, da der Virus sonst nicht entfernt werden kann, wenn das Betriebssystem nicht mehr hochfahren kann, wegen einem Virus oder defekter Sektoren, seien hier als Beispiele genannt. Nach diesem Exkurs gehen wir wieder über zum eigentlichen Thema.

Wenn die WLAN-Karte funktioniert kann mit folgendem Befehl herausgefunden werden, welche Netze in der Umgebung vorhanden sind. Mit “grep” habe ich aus der sonst umfangreichen Ausgabe gezielt einige Zeilen herausgesucht, die wohl zuerst von Interesse sind. Der Befehl “iwlist” bzw. “/sbin/iwlist” funktioniert meistens auch als “user”.

iwlist wlan0 scanning | grep "ESSID\|Channel\|Quality\|Cell"

Manchmal ist es auch notwendig die Verbindung zu beenden und wieder neu Aufzunehmen. Der Befehl “ifdown” und “ifup” funktioniert meistens nur als “root”.

ifdown wlan0 ; sleep 2 ; ifup wlan0

Mit den Befehlen “iwconfig” und “ifconfig” ohne Parameter/Optionen als “root” wird eine Übersicht ausgegeben, aus der auch entnommen werden, kann welche LAN/WLAN es gibt und wie diese lauten (eth0 oder eth1, wlan0 oder wlan1, usw.).

Bei der Distribution Sidux wird im Menü unter Internet die Anwendung “ceni” zur Netzwerkkartenkonfiguration LAN und WLAN aufgerufen. Es wird hier zuerst ein kleines Fenster geöffnet, wo das “root”-Passwort abgefragt wird. Dann öffnet sich eine Konsole/Terminal mit einer textkonsolenbasierten Menüführung. Etwas unpraktisch finde ich hier, dass die Anwendung jedesmal neu aufgerufen werden muss, wenn ein anderes Netz als Zugang gewählt wird. Aber “ceni” funktioniert dafür auch auf einer “root”-Konsole ohne grafische Oberfläche.

Nach der Einrichtung mit “ceni” einer WLAN-Verbindung wird auch versucht beim Booten diese bereits einzurichten. Ist das WLAN-Netz nicht vorhanden werden einige Versuche durchgeführt bis der Boot-Vorgang fortgesetzt wird.

4.2.2  WLAN Treiber übersetzen und installieren

Allerdings hat der vorhandene Treiber kleine Macken im Betrieb. Bei der Anzeige sind die Empfangsstärken zu gering. Ein paar Meter entfernt werden nur -80 dB angezeigt und ganz nahe am Router -40 dB. Aus dem Grunde gibt es öfters ein Verlieren der Verbindung mit einer Wiederaufnahme der Verbindung. Gemäß einer Antwort auf der Fehlerliste “bugzilla” soll es mit einem neuen Treiber von “linuxwireless.org” funktionieren.

Das ausführliche Listing des Fehlers ist unter folgendem Link zu finden und darunter sind die wichtigsten Auszüge aufgelistet, deren Kommentare (engl.) nur wenige Ergänzungen benötigen.

http://bugzilla.kernel.org/show_bug.cgi?id=14960
pcilist -v: Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01) Subsystem: Device 1a3b:1089 Kernel driver in use: ath9k iwlist wlan0 scanning | grep "ESSID\|Channel\|Quality\|Cell": Distance 10cm from antenna: Cell 01 - Address: ****** Quality=62/70 Signal level=-48 dBm
Asus eee 1005HA-PU1X, Ubuntu 9.10 (karmic), Kernel 2.6.31-19-generic compat-wireless-2009-12-02 (compat-wireless-2.6.tar.bz2) from http://www.linuxwireless.org. http://linuxwireless.org/en/users/Drivers/ath9k Signal level ok and connection steady.
http://linuxwireless.org/ December 3, 2009 Many now in kernel 2.6.32 integrated http://kernelnewbies.org/Linux_2_6_32 So I have three choices: 1) upgrading to kernel "linux-image-2.6.32-9.slh.2-sidux-686" 2) compiling compat-wireless. (make, make install) 3) with git http://linuxwireless.org/en/developers/Documentation/git-guide (apt-get install git-core) After trying (one not busy evening required) I will report.

Also gibt es drei Möglichkeiten die neuen Versionen mit eingebauten Patches auf den Rechner zu bekommen.

Die erste Methode wäre auf einen höheren Kernel zu aktualisieren. Dies würde mit “apt-get dist-upgrade” funktionieren. Dabei würde aber auch das ganze Betriebssystem und seine Anwendungen auf eine neue Version gebracht werden. Bei Debian kann auf diese Art und Weise das Linux auf die nächste Version ohne Neuinstallation gezogen werden. Es werden aber dabei auch tiefergehende Änderungen (z.B. Pakete/Anwendungen die weggefallen sind) durchgeführt, die nicht immer erwünscht sind. Da dies nicht gewünscht wurde, kam diese Methode hier nicht in Betracht.

Die zweite Methode wäre Herunterladen der “compat-wireless” Quellen (fast 3 MB) und das Übersetzen mittels “make” und “make install”.

Die dritte Methode wäre das Verwenden von “git”, bei der die Quellen geladen werden und eine kleine Kernelentwicklungsumgebung dabei ist. Git erlaubt es mehrere lokale Branches zu haben, die voneinander komplett unabhängig sein können. Die Installation benötigt allerdings 400-500 MB zusätzlichen Platz auf der Festplatte, ist aber auch die flexibelste Methode.

# how to see: # http://linuxwireless.org/en/developers/Documentation/git-guide git clone git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git Initialized empty Git repository in /home/dieterd/INSTALL/wireless-testing/.git/ remote: Counting objects: 1660902, done. remote: Compressing objects: 100% (275281/275281), done. remote: Compressing objects: 100% (275281/275281), done. remote: Total 1660902 (delta 1382725), reused 1652564 (delta 1374547) Receiving objects: 100% (1660902/1660902), 340.80 MiB | 568 KiB/s, done. Resolving deltas: 100% (1382725/1382725), done. Checking out files: 100% (31577/31577), done. du --max-depth=0 /home/dieterd/INSTALL/wireless-testing/ 845556 /home/dieterd/INSTALL/wireless-testing/

Theoretisch ließe sich das wieder rückgängig machen, aber da die Megabytes schon heruntergeladen wurden, wurde nun gemäß der Anleitung fortgesetzt.

cd wireless-testing git pull Already up-to-date. git log # output of many lines/pages of changes git log -p drivers/net/wireless/ # output of many lines/pages of changes git log -p net/mac80211/ # output of many lines/pages of changes # but following does not work ./scripts/driver-select ath9k # this script is missing

Da nun in der Anleitung fehlte, dass in einem angelegten Zweig (Branch) mit den Quellen gearbeitet werden müsste, wurde nun doch zur anderen Methode übergegangen.

# download compat-wireless-2.6.tar.bz2 from http://linuxwireless.org/en/users/Drivers/ath9k # with mc or tar # forgotten to do ./scripts/driver-select ath9k # so it compiles all - will take a time make

In dem Falle konnte die Unachtsamkeit noch nachgeholt werden, dass die Einschränkung auf die Atheros Treiber vergessen wurde, da “make install” noch nicht ausgeführt wurde.

./scripts/driver-select ath9k Backing up makefile: Makefile.bk Old build found, going to clean this up first... make[1]: Entering directory `/usr/src/linux-headers-2.6.31-6.slh.2-sidux-686' CLEAN /home/dieterd/INSTALL/sw/wlan_ath9k/compat-wireless-2010-03-01 CLEAN /home/dieterd/INSTALL/sw/wlan_ath9k/compat-wireless-2010-03-01/.tmp_versions make[1]: Leaving directory `/usr/src/linux-headers-2.6.31-6.slh.2-sidux-686' Restoring Makefiles... Restored makefile: ./Makefile (and removed backup) Backing up makefile: Makefile.bk Backing up makefile: drivers/net/wireless/Makefile.bk Backing up makefile: drivers/net/wireless/ath/Makefile.bk Backing up makefile: net/wireless/Makefile.bk Backing up makefile: drivers/net/Makefile.bk Backing up makefile: drivers/ssb/Makefile.bk Backing up makefile: drivers/misc/eeprom/Makefile.bk
# now again ./scripts/driver-select ath9k make # compiles ath9k and some other modules make install # installs ath9k and some other modules # to unload wireless modules sudo make wlunload # to unload bluetooth modules sudo make btunload # to load wireless modules sudo make wlload # to load bluetooth modules sudo make btload # ignore error messages of other modules while un/loading # or do it by rebooting/restarting
iwlist wlan0 scanning | grep "ESSID\|Channel\|Quality\|Cell" Distance 5m and a thin wall Cell 01 - Address: ****** Quality=52/70 Signal level=-58 dBm Distance 10cm from antenna: Cell 01 - Address: ****** Quality=70/70 Signal level=-12 dBm ESSID:"WLAN1"

Und nun wurde es eindeutig besser mit dem WLAN. Die Signalstärken passten und die Verbindung war viel stabiler geworden. Zur Information sind hier noch die Pfade der Treiber angegeben. Wenn “make” nicht geht, kann es sein dass die wesentlichen Kernel Headers/Quellen fehlen. Bei Debian basierten Distros sollten folgenden Pakete installiert sein:

apt-get install gcc apt-get install make apt-get install kernel-header apt-get install build-essential

Interessant ist noch zu erwähnen, dass sowohl das ursprüngliche, wie auch das neue Treibermodul sich in unterschiedlichen Unterverzeichnissen befinden.

# here was/is the old driver located: /lib/modules/2.6.31-6.slh.2-sidux-686/kernel/drivers/net/wireless/ath/ath9k # first 'make' and 'make install' creates a folder update: /lib/modules/2.6.31-6.slh.2-sidux-686/updates/ # here is the new driver located: /lib/modules/2.6.31-6.slh.2-sidux-686/updates/drivers/net/wireless/ath/ath9k

Beim Wiederaufwecken des Rechners oder zwischendurch einen anderen Zugang (LAN oder UMTS-Stick) verwenden, kann es manchmal passieren, dass das WLAN nicht zur Mitarbeit zu bewegen ist. In dem Falle findet iwlist und ceni keine vorhandenen Netzwerke. Mittels Entladen und wieder Laden des WLAN-Treibermoduls kann dies auf der Konsole ohne Rechnerneustart wieder behoben werden.

# first check loaded modules lsmod | grep ath ath9k 75488 0 ath9k_common 3484 1 ath9k mac80211 185512 2 ath9k,ath9k_common ath9k_hw 229360 2 ath9k,ath9k_common ath 8796 2 ath9k,ath9k_hw cfg80211 145928 4 ath9k,ath9k_common,mac80211,ath led_class 4128 1 ath9k # unload module modprobe -r ath9k # load module modprobe ath9k # now check/verify if all was doing well lsmod | grep ath ath9k 75488 0 ath9k_common 3484 1 ath9k mac80211 185512 2 ath9k,ath9k_common ath9k_hw 229360 2 ath9k,ath9k_common ath 8796 2 ath9k,ath9k_hw cfg80211 145928 4 ath9k,ath9k_common,mac80211,ath led_class 4128 1 ath9k # yeah, not less than before # seems all right

4.3  Drucker Brother MFC 5440 Multifunktionsgerät

4.3.1  Druckerinstallation (LPR und CUPS)

Vorbereitende Schritte für die Druckerinstallation

Bei dem Drucker handelt es sich um einen Multifunktionsdrucker der am LAN-Anschluss des DSL-Routers hängt. Der Vorteil dieser Installation ist, dass Jeder Nutzer dieses Gerät über das WLAN/LAN Netz erreichen kann. Der Brother Drucker war zwar etwas teurer als vergleichbare Geräte, da dieser keinen Chip in den Patronen hat um über den Patronenverkauf den versteckten Rabatt (Dumpingpreis) wieder hereinzuholen.

Ein Chip in den Patronen ist also vielmehr eigentlich nur störend und daher können viel einfacher auch billige Noname-Patronen verwendet werden, wenn ein solcher Chip nicht verbaut ist. Die Differenz hatte sich schon in den ersten zwei Jahren über die günstigeren Patronen amortisiert. Ohne Chip sind auch die Marken-Patronen von Brother billiger in der Herstellung und können somit auch günstiger verkauft werden. Daher ist meine Empfehlung an den Verbraucher nur Teile zu kaufen, die keine ähnlichen Blockaden, wie einen solchen Chip besitzen.

Bei der Installation des Druckers ist es auf jeden Fall sinnvoll sich in das Verzeichnis INSTALL ein entsprechendes Unterverzeichnis anzulegen. In dieses werden heruntergeladenen Treiber und am Besten auch die Anleitungen abgelegt.

Wenn der Browser die Dateien als Postscript druckt (*.ps), dann können mit folgendem kleinen Script alle Dateien am Schluß in einem Rutsch in ein PDF umgewandelt werden.

# convert *.ps to *.pdf for i in $(find -type f | grep ".ps" | grep -v ".pdf") ; do ps2pdf $i $i.pdf ; done # delete *.ps for i in $(find -type f | grep ".ps" | grep -v ".pdf") ; do rm $i ; done

Die Druckertreiber sind alle auf der Konsole zu installieren und es wird die Shell “csh” oder “tcsh” benötigt.

# Die folgenden Versuche zeigen, csh oder tcsh # sind nicht vorhanden. dieterd@client3:~/latex/my_know_how$ csh bash: csh: command not found dieterd@client3:~/latex/my_know_how$ tcsh bash: tcsh: command not found dieterd@client3:~/latex/my_know_how$ dpkg -l | grep csh dieterd@client3:~/latex/my_know_how$

Also sind diese noch nachzuinstallieren. Die Shell “tcsh” hat umfangreichere Funktionen. Da beide Anwendungen nur wenig Platz brauchen wurden beide installiert.

# als root oder mit sudo apt-get install tcsh ... 0 upgraded, 1 newly installed, 0 to remove and 33 not upgraded. Need to get 348kB of archives. After this operation, 721kB of additional disk space will be used. Get:1 http://ftp.us.debian.org sid/main tcsh 6.14.00-7 [348kB] ... update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode. apt-get install csh ... 0 upgraded, 1 newly installed, 0 to remove and 33 not upgraded. Need to get 247kB of archives. After this operation, 397kB of additional disk space will be used. ... update-alternatives: using /bin/bsd-csh to provide /bin/csh (csh) in auto mode.

Mit der Eingabe von “csh” und “tcsh” wird die jeweilige Shell gestartet, die durch die Engabe von “exit” wieder verlassen werden kann. Aber Vorsicht, wenn “exit” noch einmal eingegeben wird dann wird die Konsole verlassen bzw. geschlossen.

Um herauszufinden, welche Variante hier zutrifft, kann das vorhanden sein der Pfade mittels “ls” geprüft werden.

ls /etc/init.d/cupsys /etc/init.d/lpd ls: cannot access /etc/init.d/cupsys: No such file or directory ls: cannot access /etc/init.d/lpd: No such file or directory ls /etc/init.d/cups /etc/init.d/lpd ls: cannot access /etc/init.d/lpd: No such file or directory /etc/init.d/cups
# Also trifft bei mir der der Fall 2) zu. Als root ist also einzugeben: ln -s /etc/init.d/cups /etc/init.d/lpd # Der Test zeigt, dass nun der Link auf das Verzeichnis da ist. ls /etc/init.d/cups /etc/init.d/lpd /etc/init.d/cups /etc/init.d/lpd

Mit einem Browser kann das Web-Interface des Drucksystems “cups” unter der Adresse http://localhost:631 erreicht werden. Bei Unix/Linux ist die interne Kommmunikation auch auf IP basiert. Mit dem Begriff “localhost” ist die interne IP gemeint (IP V4 127.0.0.1), das heißt http://127.0.0.1:631 hätte das gleicht bewirkt. Bei der IP V6 ist diese Adresse etwas länger und schwieriger zu merken. Wenn “localhost” verwendet wird, ist es egal ob wir ein IP V4 oder IP V6 Netz haben.

Bei älteren Distributionen mußten die Passworter für den Printer-Zugang neu gesetzt werden und bei der Setzung des Passwortes wurde auch automatisch erzwungen, dass dieses bestimmte Kriterien erfüllt, wie z.B. kein Teil eines Namens (user und root) darf enthalten sein. Hier mußte mit “lppasswd -g sys -a root” erst die entsprechenden Passwörter gesetzt werden. Bei neueren Distributionen auf einem Desktop-PC werden die Passworter nun übernommen oder zumindest das Passwort des “root”. Zu prüfen ist das indem http://localhost:631/admin/ eingeben wird oder der Reiter Administration des CUPS-Menüs gewählt wird. Es erscheint ein Abfragefenster für Nutzernamen (hier “root” eingeben) und Passwort. Solange die Browseranwendung nicht gänzlich beendet wird, wird das Passwort nicht erneut abgefragt. Wenn ein falsches Passwort eingeben wurde, dann kommt keine Abfrage mehr. Hier muss erst die Browseranwendung geschlossen werden und neu gestartet werden. Bei dem hier verwendeten Sidux funktionierte das Passwort des “root” auch bei CUPS. Also war hier nichts weiter zu tun.

Da sich auf dem Rechner eine 32bit Version des Betriebsystems befindet, können die Schritte für eine 64bit Version ausgelassen werden. Es sind noch einige Angaben zu Ubuntu angegeben, das auch auf Debian basiert. Für Ubuntu wäre noch “sudo aa-complain cupsd” notwendig, aber den Befehl gibt es bei Sidux Linux nicht und auch keinen Paketnamen, der so lautet. Vermutlich ist das eine Besonderheit bei Ubuntu. Ebenfalls gibt es die Pfade “/var/spool/lpd” und “/usr/share/cups/model” bei dem Rechner nicht. Wenn der Drucker nicht geht, merke ich mir das vor für einen eventuellen weiteren Lösungsversuch.

Hier stößt der Nutzer bereits auf einige Ungleichheiten bei den Distributionen, die leider manchmal das Leben schwer machen können. Einige sind der Meinung, dass hier “viele Köche den Brei verderben”. Die Ursache ist eigentlich nur diese, dass die vielen freiwilligen Linuxprogrammierer sich in der Welt räumlich weit und erteilt befinden. Ein Einigungsprozess auf eine vollkommen einheitliche Linie von Anfang an wird dadurch erschwert. Wenn es notwendig ist, findet sich meist eine Gruppe Programmierer einer Distribution zusammen und programmiert eine Lösung. Wo anders in der Welt passiert das auch und diese lösen das etwas anders.

Eine Vereinheitlichung findet so öfters erst später statt. Oft ist es auch nicht vorhersehbar, welche Lösung die bessere ist. Erst in Folge des Fortschreitens weiterer Anwendungen ergibt sich das oft. Das ist auch ein Grund für die Vielfältigkeit bei Linux.

Zuletzt ist bei den Voraussetzungen noch zu prüfen ob das Paket “psutils” installiert ist. Herausfinden konnte ich dass “cupsutils” bereits installiert war. Also müssen die “psutils” nachinstalliert werden.

dpkg -l | grep psutils ii python-cupsutils apt-get install psutils 0 upgraded, 1 newly installed, 0 to remove and 33 not upgraded. Need to get 85.4kB of archives. After this operation, 352kB of additional disk space will be used.
Installation LPR Druckertreiber

Nun sind die Vorbereitungen abgeschlossen und es kann losgelegt werden. Zuerst sind die passenden Treiber von der Brother Homepage herunterzuladen. Für Sidux werden die *.deb-Pakete benötigt. Für Fedora und Suse werden die *.rpm-Pakete benötigt. Es kann durchaus sinnvoll sein, beide Paketvarianten herunterzuladen, fall eine der anderen Linuxvarianten später auch auf dem Rechner auf einer anderen Partition oder in einer virtuellen Umgebung (z.B. vmware, virtual pc) installiert werden sollte. Es ist sinnvoll diese in ein Verzeichnis, wie zum Beispiel “INSTALL/sw/printer_MFC5440” abzulegen und zu archivieren.

ls *.deb cupswrapperMFC5440CN-1.0.2-3.i386.deb mfc5440cnlpr-1.0.2-1.i386.deb ls *.rpm cupswrapperMFC5440CN-1.0.0-1.i386.rpm MFC5440CNlpr-1.0.2-1.i386.rpm

Nun wird die Anleitung heruntergeladen in unser Unterverzeichnis und auch in dieses gegangen “cd INSTALL/sw/printer_MFC5440”. Aus der Brother Homepage habe ich die relevanten Abschnitte in folgenden Block kopiert:

4-3. Install LPR driver Command (for dpkg) : dpkg -i --force-all (lpr-drivername) Command (for rpm) : rpm -ihv --nodeps (lpr-drivername) 4-5. Check if the LPR driver is installed Command (for dpkg) : dpkg -l | grep Brother Command (for rpm) : rpm -qa | grep -e (lpr-drivername) 5-1. Check the configuration filename for your distribution. Example: openSUSE, Ubuntu, Debian : /etc/printcap Redhat, fedora, Mandriva : /etc/printcap.local 5-2. Edit the file according to your connection For USB Connection (Default) Check if the parameter of ":lp" is ":lp=/dev/usb/lp0" For Network Connection replace ":lp" line to the following 2 lines :rm=(ip address of your printer)\ :rp=lp\ For Parallel connection replace ":lp" line to the following line :lp=/dev/lp0\ 5-3. Restart the print system Command (for lpr): /etc/init.d/lpr restart Command (for lprng) : /etc/init.d/lprng restart
dpkg -i mfc5440cnlpr-1.0.2-1.i386.deb Selecting previously deselected package mfc5440cnlpr. (Reading database ... 127021 files and directories currently installed.) Unpacking mfc5440cnlpr (from mfc5440cnlpr-1.0.2-1.i386.deb) ... Setting up mfc5440cnlpr (1.0.2-1) ... mkdir: cannot create directory `/var/spool/lpd/MFC5440CN': No such file or directory chown: cannot access `/var/spool/lpd/MFC5440CN': No such file or directory chgrp: cannot access `/var/spool/lpd/MFC5440CN': No such file or directory chmod: cannot access `/var/spool/lpd/MFC5440CN': No such file or directory Restarting Common Unix Printing System: cupsd. dpkg -i --force-all mfc5440cnlpr-1.0.2-1.i386.deb (Reading database ... 127039 files and directories currently installed.) Preparing to replace mfc5440cnlpr 1.0.2-1 (using mfc5440cnlpr-1.0.2-1.i386.deb) ... Unpacking replacement mfc5440cnlpr ... Restarting Common Unix Printing System: cupsd. Setting up mfc5440cnlpr (1.0.2-1) ... mkdir: cannot create directory `/var/spool/lpd/MFC5440CN': No such file or directory chown: cannot access `/var/spool/lpd/MFC5440CN': No such file or directory chgrp: cannot access `/var/spool/lpd/MFC5440CN': No such file or directory chmod: cannot access `/var/spool/lpd/MFC5440CN': No such file or directory ln: creating symbolic link `/usr/lib/libbrcompij2.so.1.0': File exists ln: creating symbolic link `/usr/lib/libbrcompij2.so.1': File exists ln: creating symbolic link `/usr/lib/libbrcompij2.so': File exists Restarting Common Unix Printing System: cupsd.

Nach der Fehlerausgabe muss ich also doch noch das Verzeichnis “/var/spool/lpd” erstellen. Da in der Anleitung “mkdir /var/spool/lpd” steht (nicht sudo mkdir) versuche ich es erst als user. Es ist nicht immer gut alle Verzeichnisse als “root” zu erzeugen, da diese per Standardeinstellung nicht für den “user” schreibbar sind. Das kann zu unverhofften Schwierigkeiten führen.

Als “user” ging es nicht da “mkdir /var/spool/lpd” zu einer Fehlermeldung führte “mkdir: cannot create directory /var/spool/lpd: Permission denied”. Also mußte ich das Verzeichnis als ’“root” oder mit sudo ”mkdir /var/spool/lpd“ erzeugen. Mit ”sudo“ konnte ich das Verzeichnis nicht erstellen, da ich im ”sudoers“-File etwas zu ergänzen vergessen hatte, nähmlich auch das Verzeichnis ”/bin/“ mit anzugeben ”Sorry, user dieterd is not allowed to execute ’/bin/mkdir /var/spool/lpd’ as root on client3“.

dpkg -i mfc5440cnlpr-1.0.2-1.i386.deb (Reading database ... 127039 files and directories currently installed.) Preparing to replace mfc5440cnlpr 1.0.2-1 (using mfc5440cnlpr-1.0.2-1.i386.deb) ... Unpacking replacement mfc5440cnlpr ... Restarting Common Unix Printing System: cupsd. Setting up mfc5440cnlpr (1.0.2-1) ... ln: creating symbolic link `/usr/lib/libbrcompij2.so.1.0': File exists ln: creating symbolic link `/usr/lib/libbrcompij2.so.1': File exists ln: creating symbolic link `/usr/lib/libbrcompij2.so': File exists Restarting Common Unix Printing System: cupsd.

Nach dem das fehlende Verzeichnis erstellt wurde, klappte die Installation anstandslos. Nun muss noch die Konfigurationsdatei bearbeitet werden. Nach kurzem testen konnte verifiziert werden, dass diese ”/etc/printcap“ lautet.

ls /etc/printcap /etc/printcap.local ls: cannot access /etc/printcap.local: No such file or directory /etc/printcap

Als erstes sollten die Konfigurationsdateien angesehen werden, zumindest überflogen werden. Ab und zu stehen dort auch wichtige Informationen. So wie es bei meinem Fall war. Somit würde ich mir also jedesmal mit CUPS hier meine Eintragungen wieder zerschießen.

cat /etc/printcap # This file was automatically generated by cupsd(8) from the # /etc/cups/printers.conf file. All changes to this file # will be lost. MFC5440CN:\ :mx=0:\ :sd=/var/spool/lpd/MFC5440CN:\ :sh:\ :lp=/dev/usb/lp0:\ :if=/usr/local/Brother/lpd/filterMFC5440CN:

Also muss ich mir auch noch ”/etc/cups/printers.conf“ ansehen.

cat /etc/cups/printers.conf cat: /etc/cups/printers.conf: No such file or directory

Da ich noch keinen Drucker installiert hatte, könnte das auch richtig sein, dass es diese Datei noch nicht gibt. Hier sind vielleicht ein paar wichtige Worte zu dem warum notwendig.

Wenn ich hier ein reines Konsolensystem aufgezogen hätte, dann müßte ich diese Datei gemäß den Angaben auf der Homepage editieren. Aus dem Grunde habe ich den Abschnitt auch in mein Dokument hineinkopiert. Bei einer grafischen Oberfläche, wo der Rechner auch mehr Resourcen hat, kann CUPS verwendet werden, das auch eine grafische Verwaltungoberfläche bietet. Bei einer nachträglichen Installation von CUPS sollte diese die Angaben auf der Textebene mit übernehmen. Allerdings verläßlich ist das nicht und somit ist das auch eine der Dateien, die vor einer solchen Aktion gesichert werden sollte.

Wenn CUPS bereits installiert ist (und läuft), dann überträgt dieses die Konfiguration auf die darunterliegende Konsolenebene. In dem Falle wird die ”/etc/printcap“ überschrieben. Ob es einen Ergänzungsmode bei CUPS von der Konsolenebene in die grafische Ebene beim Starten gibt, ist meiner Ansicht nach zu verneinen. Das dürfte der Hochfahrgeschwindigkeit beim Booten zum Opfer gefallen zu sein.

Es könnte allerdings sein, dass der ”cupswrapper“ beim Installieren hier noch etwas übernimmt. Aus den Überlegungen heraus könnte es noch Sinn machen die Datei trotzdem zu editieren. Aber dann darf bevor der cupswrapper nicht installiert wird, auf gar keine Fall bei CUPS im Browser im Adminstriermode irgendetwas konfiguriert werden.

Wer hier die Testseite drucken will, muss wissen, dass er hier die Datei ”/etc/printcap“ editieren muss, und dann den Printserver lpr neustarten muss. Gedruckt wird dann aus der Konsole oder ggf. funktionert es auch aus der grafischen Oberfläche (lp oder lpd als Druckweg wählen.)

dpkg -l | grep Brother ii mfc5440cnlpr

Nach dem Test ist der Druckertreiber ”lpr“ erfolgreich installiert. Also ist nun der cupswrapper zu installieren. Übrigens, wenn die Fehlermeldung mit dem fehlenden Verzeichnis übersehen worden wäre, würde hier auch ausgegeben werden, dass der Treiber installiert ist. Beim cupswrapper habe ich das explizit nachgewiesen.

4-3. Install LPR driver Command (for dpkg) : dpkg -i --force-all (lpr-drivername) Command (for rpm) : rpm -ihv --nodeps (lpr-drivername) 4-4. Install cupswrapper driver Command (for dpkg) : dpkg -i --force-all (cupswrapper-drivername) Command (for rpm) : rpm -ihv --nodeps (cupswrapper-drivername) 4-5. Check if the LPR driver and cupswrapper driver are installed Command (for dpkg) : dpkg -l | grep Brother Command (for rpm) : rpm -qa | grep -e (lpr-drivername) -e (cupswrapper-drivername) Step 5a. (for USB Connection) Check your printer on the cups web interface 5a-1. Open a web browser and go to "http://localhost:631/printers". Check if the Device URI of your printer is "usb://Brother/(your printer's model name)" Example of a USB printer entry If the device URI is different from the example above, please go to "Modify Printer" of your printer to select proper device and driver. If your printer is not listed on "http://localhost:631/printers", please go to "http://localhost:631/admin" and click "Add printer" and select proper device and driver. Step 5b. (for Network Connection) Configure your printer on the cups web interface 5b-1. Open a web browser and go to "http://localhost:631/printers". 5b-2. Click "Modify Printer" and set following parameters. - "LPD/LPR Host or Printer" or "AppSocket/HP JetDirect" for Device - lpd://(Your printer's IP address)/binary_p1 for Device URI - Brother for Make/Manufacturer Selection - Your printer's name for Model/Driver Selection Step 6. Try a test print 6-1. Open a text editor, write something and select "print" from the menu.
Installation CUPS Druckertreiber

Also wird ”cupswrapper“ installiert, wie oben beschrieben. Als experimentierfreudiger Linux-User versuche ist es wieder ohne die Option ”–force-all“.

dpkg -i cupswrapperMFC5440CN-1.0.2-3.i386.deb Selecting previously deselected package cupswrappermfc5440cn. (Reading database ... 127039 files and directories currently installed.) Unpacking cupswrappermfc5440cn (from cupswrapperMFC5440CN-1.0.2-3.i386.deb) ... Setting up cupswrappermfc5440cn (1.0.2-3) ... touch: cannot touch `/usr/share/cups/model/brmfc5440cn_cups.ppd': No such file or directory /usr/share/cups/model/brmfc5440cn_cups.ppd: No such file or directory. dpkg: error processing cupswrappermfc5440cn (--install): subprocess installed post-installation script returned error exit status 1 Errors were encountered while processing: cupswrappermfc5440cn
dpkg -l | grep Brother ii mfc5440cnlpr iF cupswrappermfc5440cn

Aus der Fehlermeldung ist zu entnehmen, dass das Verzeichnis ”/usr/share/cups/model“ fehlt und auch zu erstellen ist. Die Angabe, dass dieses Verzeichnis nur für Ubuntu zu erstellen wäre, stellte sich also als nicht ganz richtig heraus. Nach dem Test mit ”dpkg -l | grep Brother“ wären jetzt die Treiber ”lpr“ und ”cupswrapper“ installiert.

Übrigens, wenn die Fehlermeldung mit dem fehlenden Verzeichnis übersehen worden wäre, würde auch ausgegeben werden, dass alle Treiber installiert wären. Beim ”cupswrapper“ habe ich das explizit nachgewiesen. Es gibt noch einen kleinen leicht übersehbaren Hinweis, dass etwas bei der Installation nicht geklappt haben könnte. Im vorherigen Listing steht am Zeilenanfang ”iF“ statt ”ii“.

Wichtig ist, dass nach dem beheben des Fehlers die Installation noch einmal durchgeführt werden muss. Wenn es immer noch Probleme geben sollte, dann sollte die Option ”–force-all“ in Betracht gezogen werden. Für einen Anfänger kann das unter Umständen eine große Hürde sein.

Als ”user“ ließ sich das Verzeichnis nicht erstellen. Als ”root“ oder mit ”sudo“ konnte das Verzeichnis mit ”mkdir /usr/share/cups/model“ erstellt werden. Auf jeden Fall muss nun nochmal die Installation (eventuell besser mit –force-all) durchlaufen.

dpkg -i cupswrapperMFC5440CN-1.0.2-3.i386.deb (Reading database ... 127044 files and directories currently installed.) Preparing to replace cupswrappermfc5440cn 1.0.2-3 (using cupswrapperMFC5440CN-1.0.2-3.i386.deb) ... lpadmin: The printer or class was not found. Restarting Common Unix Printing System: cupsd. Unpacking replacement cupswrappermfc5440cn ... Setting up cupswrappermfc5440cn (1.0.2-3) ... rm -f /usr/lib/cups/filter/brlpdwrapperMFC5440CN Stopping Common Unix Printing System: cupsd. Restarting Common Unix Printing System: cupsd.

Und nun erfolgt noch der Test mit ”dpkg -l“, ob die Pakete installiert sind. Wer ganz aufmerksam ist, sieht vielleicht dass nun am Anfang jeweils ”ii“ steht und vorher je einmal ”ii“ und ”iF“. Die Ursache war der Fehler bei der Installation. Das ist auch noch ein kleiner Hinweis, der allzuleicht übersehen wird.

dpkg -l | grep Brother ii mfc5440cnlpr ii cupswrappermfc5440cn

Nun gibt es eine Datei ”/etc/cups/printers.conf“. Wenn ich die Daten bereits eingetragen hätte in der ”/etc/printcap“, wären diese vielleicht übernommen worden.

cat /etc/cups/printers.conf [sudo] password for dieterd: Sorry, try again. [sudo] password for dieterd: # Printer configuration file for CUPS v1.4.2 # Written by cupsd on 2010-01-17 12:41 # DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING <Printer MFC5440CN> Info MFC5440CN MakeModel Brother MFC-5440CN CUPS v1.1 DeviceURI usb:/dev/usb/lp0 State Idle StateTime 1263750047 Type 8392780 Filter application/vnd.cups-raw 0 - Filter application/vnd.cups-postscript 0 brlpdwrapperMFC5440CN Filter application/vnd.cups-command 0 commandtops Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer </Printer>

Wie oben zu entnehmen ist, wurde die Datei ”printers.conf“ bereits mit Standardwerten vorbefüllt. Diese würden benötigt, wenn der Drucker am USB-Anschluss hängen würde. Hier ist dieser aber im Netzwerk am LAN-Anschluss des DSL-Routers angeschlossen. Im folgenden werden mit CUPS die entsprechende Konfiguration durchgeführt.

Add Printer Busy Indicator Looking for printers... add-printer Local Printers: scsi SCSI Printer hal Hal printing backend hp HP Printer (HPLIP) hpfax HP Fax (HPLIP) Discovered Network Printers: socket://192.168.2.22|Brother MFC-5440CN Brother MFC-5440CN (Brother MFC-5440CN) Other Network Printers: socket AppSocket/HP JetDirect http Internet Printing Protocol (http) ipp Internet Printing Protocol (ipp) lpd LPD/LPR Host or Printer smb Windows Printer via SAMBA beh Backend Error Handler

Ich bin positiv überrascht, dass CUPS meinen Drucker im Netzwerk gefunden hat und diesen auch als Option bereits anzeigt. Wenn die IP-Adresse manuell eingegeben werden muss, müssen alle führende Nullen weggelassen werden. Die Stellen werden sonst als Oktalzahlen interpretiert. Eine Superfalle um einen Drucker leider niemals zum Laufen zu bringen. Also bitte 192.168.2.22 und niemals 192.168.002.022 eingeben.

Im nächsten Menü wird für den ”Brother MFC-5440CN CUPS v1.1(en)“ als Blattgröße A4 eingestellt.

Allerdings ist der Drucker nun 2x bei CUPS eingetragen. Papier A4 ist bei beiden einzutragen.
Brother_MFC-5440CN Brother MFC-5440CN KO_HOME Brother MFC-5440CN CUPS v1.1 Idle - ”Ready to print.“
MFC5440CN MFC5440CN Brother MFC-5440CN CUPS v1.1 Idle

sudo cat /etc/cups/printers.conf [sudo] password for dieterd: # Printer configuration file for CUPS v1.4.2 # Written by cupsd on 2010-01-17 15:12 # DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING <Printer Brother_MFC-5440CN> Info Brother MFC-5440CN Location KO_HOME MakeModel Brother MFC-5440CN CUPS v1.1 DeviceURI socket://192.168.2.22 State Idle StateTime 1263758994 Type 8392780 Filter application/vnd.cups-raw 0 - Filter application/vnd.cups-postscript 0 brlpdwrapperMFC5440CN Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer Attribute marker-colors \#000000,#000000,#000000,#000000 Attribute marker-levels -1,-3,-3,-3 Attribute marker-names LC900BK,LC900C,LC900Y,LC900M Attribute marker-types inkCartridge,inkCartridge,inkCartridge,inkCartridge Attribute marker-change-time 1263758994 </Printer> <Printer MFC5440CN> Info MFC5440CN MakeModel Brother MFC-5440CN CUPS v1.1 DeviceURI usb:/dev/usb/lp0 State Idle StateTime 1263750047 Type 8392780 Filter application/vnd.cups-raw 0 - Filter application/vnd.cups-postscript 0 brlpdwrapperMFC5440CN Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer </Printer>

Die Datei ”/etc/cups/printers.conf“ gibt Auskunft was passiert ist. Es wurde eine Druckerkonfiguration des gleichen Druckers mit Standardwerten am USB-Anschluss zusätzlich übernommen. Die Eintragungen blieben zu meiner Überaschung in der ”/etc/printcap“ unberührt, trotz des Hinweises, dass diese von CUPS überschrieben werden. Bei der Auswahl der Drucker muss also aufgepasst werden, damit nicht alles an den falschen Drucker, das heißt nicht existenten Drucker am USB-Anschluss gesendet wird. Diese Dateien werden im Drucker-Spoolerverzeichnis aufgehoben. Daher sollte auch bei CUPS die ”Jobs“-Seiten im Browser aufgerufen werden und nachgesehen werden, ob sich dort unerledigte Aufträge angesammelt haben. Die Spooler-Verzeichnisse sollten auch mit einem Dateimanager angesehen werden, ob hier Datenschrott liegt, wenn der Platz auf der Festplatt sich dem Ende zuneigt.

Das Drucken der ”Test Page“ hat auf Anhieb funktioniert. Wenn der Testdruck nicht klappt ist eine der ersten Adressen zum Nachsehen die Job-Verwaltung bei CUPS mit dem Web-Browser. Vorhergehende hängende Jobs können hier im Wege stehen und jedeglichen Ausdruck um den Drucker zu testen blockieren.

Das Kapitel Drucker ist eines der Kapitel, in dem ich bewußt “etwas ungeschickt” angefangen habe zu installieren oder konfigurieren. Da nur so aufgezeigt werden kann, wo und welche Hinweise zu finden sind, um wieder auf den richtigen Weg zu kommen. Im Anschluß folgt noch die knappeste Form der Auflistung, der Schritte für die Druckerinstallation. Diese enthält natürlich keine Hiweise, was vorher geprüft werden sollte und wie mit dem Ergebnis zu verfahren wäre.

# download drivers and descriptions sudo apt-get install tcsh sudo apt-get install csh sudo ln -s /etc/init.d/cups /etc/init.d/lpd apt-get install psutils sudo mkdir /var/spool/lpd sudo mkdir /usr/share/cups/model dpkg -i --force-all mfc5440cnlpr-1.0.2-1.i386.deb dpkg -i --force-all cupswrapperMFC5440CN-1.0.2-3.i386.deb # now configure printer, use CUPS http://localhost:631 in browser

4.3.2  Scanner-Treiber des Multifunktionsdruckers installieren

Als nächstes werden die Treiber für die Scanner-Funktionen installiert. Zunächst wird nachgesehen auf der Beschreibung auf der Homepage, was zu tun wäre. Es gibt dort eine Zusammenstellung, welche Vorbereitungen getroffen werden müssen, damit für die folgende Treiberinstallation alle vorausgesetzten SW-Komponenten und Konfigurationen bereits vorliegen. Die Anleitungen sind sehr oft nur in Englisch verfügbar. Einige Anwender kann dies auch wieder vor Herausforderungen stellen, für die sie Hilfe von versierteren Linux-Nutzern benötigen.

Pre-required Procedure (8) Related distributions Debian, Ubuntu Related products/drivers brscan, brscan2, brscan3 Requirement sane-utils is required to be installed. Pre-required Procedure (9) Related distributions Distributions using firewall Related products/drivers scan-key-tool Requirement UDP Port 54925 is required to be open. Example of the setting location; OpenSUSE10.0: Yast-> Security and Users-> Firewall-> Allowed Service->Advanced Fedora10: System-> Administration-> Firewall-> Other Ports

Voraussetzung ist, dass sane und sane-utils installiert sind. Gemäß Prüfung sind diese bereits vorhanden. Auf dem Rechner ist auch keine extra Firewall aktiv (Port 54925), und ein Paket “scan-key-tool” gibt es anscheinend bei Sidux nicht. Der Drucker ist in der Liste ”brscan2 models“. Von der Homepage werden die entsprechenden Treiber heruntergeladen in das Verzeichnis ”INSTALL/sw/printer_MFC5440”.

dpkg -l | grep sane ii libksane0 ii libsane ii libsane-extras ii sane ii sane-utils ii xsane ii xsane-common

Nach dem die Voraussetzungen geprüft wurden, wird die Installationsanleitung für den Treiber unter die Lupe genommen.

3-2. Download the driver Scanner Driver download page Step 4. Install the driver 4-1. Turn on your MFC/DCP and connect to the network. 4-2. Open the terminal and go to the directory where the driver is. 4-3. Install the scanner driver Command (for dpkg) : dpkg -i --force-all (scanner-drivername) Command (for rpm) : rpm -ihv --nodeps (scanner-drivername) 4-4. Check if the driver is installed Command (for dpkg) : dpkg -l | grep Brother Command (for rpm) : rpm -qa | grep -e (scanner-drivername) Step 5. Setting for your network scanner ***Use brsaneconfig (for brscan models), brsaneconfig2 (for brscan2 models) or brsaneconfig3 (for brscan3 models) accordingly. 5-1. Add network scanner entry Command : brsaneconfig2 -a name=(name your device) model=(model name) ip=xx.xx.xx.xx 5-2. Confirm network scanner entry Command : brsaneconfig2 -q | grep (name of your device) Step 6. Try a test scan 6-1. Open a scanner application and try a test scan.

Wenn die IP-Adresse manuell eingegeben werden muss, müssen alle führende Nullen weggelassen werden. Die Zahl wird sonst als Oktalzahl interpretiert. Eine Superfalle um den Drucker nicht zum Laufen zu bringen. Also bitte 192.168.2.22 und niemals 192.168.002.022 eingeben. Ob das Multifunktionsgerät erreichbar ist, prüfe ich mit “ping”. Das zweite Beispiel zeigt die fatale Wirkung der führenden Null in der IP-Adresse.

# example 1 ping -c 4 192.168.2.22 PING 192.168.2.22 (192.168.2.22) 56(84) bytes of data. 64 bytes from 192.168.2.22: icmp_seq=1 ttl=60 time=3.96 ms 64 bytes from 192.168.2.22: icmp_seq=2 ttl=60 time=3.85 ms 64 bytes from 192.168.2.22: icmp_seq=3 ttl=60 time=5.09 ms 64 bytes from 192.168.2.22: icmp_seq=4 ttl=60 time=4.16 ms --- 192.168.2.22 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 3.857/4.270/5.091/0.489 ms # example 2 ping -c 1 192.168.002.022 PING 192.168.002.022 (192.168.2.18) 56(84) bytes of data. From 192.168.2.7 icmp_seq=1 Destination Host Unreachable --- 192.168.002.022 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Nun wird wieder versucht den Treiber zu installieren auf der Konsole als “root”. Die Ausgabe zeigt, dass alles funktioniert hat.

dpkg -i brscan2-0.2.5-1.i386.deb Selecting previously deselected package brscan2. (Reading database ... 127044 files and directories currently installed.) Unpacking brscan2 (from brscan2-0.2.5-1.i386.deb) ... Setting up brscan2 (0.2.5-1) ... dpkg -l | grep brscan ii brscan2

So sieht die Ausgabe aus, wenn noch nichts konfiguriert wurde.

brsaneconfig2 -q | grep MFC-5440 39 "MFC-5440CN"

Nun soll mit brsaneconfig2 der Scanner konfiguriert werden. Das Ganze scheitert, wenn die Namen nicht genau stimmen. Gut ist, wenn diese aufgeschrieben wurden. Dies sollte eigentlich so selbstverständlich sein, dass es keines Hinweises mehr bedarf. Aus der “/etc/cups/printers.conf” oder CUPS im Browser kann dieser auch abgelesen werden

brsaneconfig2 -a name=(name your device) model=(model name) ip=xx.xx.xx.xx brsaneconfig2 -a name=Brother_MFC-5440CN model=MFC-5440CN ip=192.168.2.22 # and now a second time brsaneconfig2 -a name=Brother_MFC-5440CN model=MFC-5440CN ip=192.168.2.22 "Brother_MFC-5440CN" is already registered.
brsaneconfig2 -q | grep MFC-5440 39 "MFC-5440CN" 0 Brother_MFC-5440CN "MFC-5440CN" I:192.168.2.22

Der Scanner ist nun erfolgreich installiert. Nun wird “xsane” gestartet. Wenn xsane keine Quelle findet, beendet es sich sofort wieder. Auf der ersten Seite wird unter den Quellen das Multifunktionsgerät angezeigt und somit war die Installation erfolgreich. Bei Bildschirmdarstellungen mit weniger als 768 Zeilen werden bei einem der Fenster nicht die unteren Buttons erreicht. Auch hier ist die Verwendung von “xrandr” zum grafischen Bildschirm scrollen (engl. “panning”) unerläßlich.

Alternativ kann auch mit “sane” von der Konsole gearbeitet werden. Die Probe einen Stadtplan auf A4 mit 200dpi (dots per inch - ca. 2,5cm) funktionierte auf Anhieb. Eine gescannte Datei in Farbe ergibt eine nicht gerade kleine Datei. Damit lassen sich schnell Festplatten füllen, wenn nicht auf eine geeignete Komprimierung geachtet wird und auch schwarz/weiß verwendet, wenn es möglich ist.

Zu letzt sei hier wieder die knappeste Kurzform der Installation aufgeführt. Anzumerken sei noch, dass ich den Rechner seit Beginn der Druckerinstallation nicht einmal habe Neustarten müssen.

# pritnter needs drivers brscan2 apt-get install sane apt-get install sane-utils # no special firewall (open UDP Port 54925) dpkg -i --force-all (scanner-drivername) brsaneconfig2 -a name=(name your device) model=(model name) ip=xx.xx.xx.xx # test for your scanner brsaneconfig2 -q | grep (name of your device)

4.3.3  FAX-Treiber Multifunktionsdrucker

Exkurs zum Thema FAX und Sicherheit

Und zuletzt sind die Treiber für die FAX-Funktionen zu installieren. Eine kleine Warnung soll hier noch gegeben werden für den unbedarften Surfer im Internet, der alle möglichen Programme und Anwendugen aus allen möglichen Quellen installiert. Auch wenn Linux ein sehr sicheres Betriebssystem ist, gibt es in Verbindung gerade mit einem FAX auch Möglichkeiten den Geldbeutel abzuzocken.

Über Umwege (z.B. Java auf Seiten, oder Installation einer Zugangssoftware (sogar für Mac und selten auch für Linux) für bestimmte Seiten (hier nicht näher genannt, Bereich der Grauzone) könnte ein FAX am Computer dazu verwendet werden, um parallel eine kostenpflichtige Telefonnummer anzurufen. Aus diesem Grund gibt es FAX-Geräte, bei denen der Mithörton (das unangenehme Piepsen) nicht vollständig abschaltbar ist. Der Mißbrauch ist allerdings in der Regel nur nutzbar, wenn der Treiber für das FAX-Gerät installiert ist. Wenn das FAX-Kabel des Druckers gezogen ist, dann ist die Gefahr auch deutlich reduziert, aber wenn der Drucker zum FAX empfangen später wieder angesteckt werden kann, dann ist die Maßnahme wiederum widersprüchlich.

Die FAX-Nutzung sollte auf dem Netzwerk nicht freigegeben werden, wenn es nicht unbedingt erforderlich ist. Wer also mit dem Rechner im Internet hier nicht näher genannte Seiten besuchen möchte, oder Seiten die mit Pop-ups dieser Seiten öfters verseucht sind, installiert aus Sicherheitsgründen keine FAX-Treiber und vermeidet auch Internetbuchungen mit Kontodaten oder Kreditkarten (In Ausnahmefällen wird ein anderer Browser verwendet, der keine Daten aus der anderen Browseranwendung übernimmt oder noch besser eine Live-Distribution auf einer CD/DVD).

Auch auf normalen Seiten kann eine Werbung für dubiose Angebote erscheinen, oder auch Spam-Emails enthalten Links auf solche Seiten. Wer sich ansehen möchte, wo diese Hinführen, kopiert die Links in einen Textbrowser, entfernt aus dem Link irgendwelche Zahlenfolgen/Buchstabenfolgen (aus dieser Ergänzung entnimmt der Versender, dass seine Nachricht angesehen wurde und es den Empfänger gibt. Es kommt in Zukunft mehr Spam an) und verwendet zum Ansehen solcher Seiten eine Linux-Live-File CD/DVD (keine USB-Stick Variante) ohne Profil/Ergänzungsspeicherungen auf der lokalen Festplatte. Das wären meine Sicherheitsratschläge für diese Fälle.

Eigentlich ist das ein Tabuthema, über das nicht gesprochen wird und erst recht nicht geschrieben wird. Die Betroffenen werden es daher auch nicht erzählen und vorziehen zu zahlen. Auf einem längeren Lehrgang für einen Kameraden dessen Kreditkartendaten mißbraucht wurden und er Ärger bei der Sperrung hatte, bestand die Notwendigkeit eben aus solchen dubiose Internet-Seiten Informationen zu holen. Bei Bier und Spezi am Abend entstanden die hier geschilderten Vorsichtsmaßnahmen.

Treiber LPR für FAX installieren

Zunächst wird der LPR Treiber installiert, damit auch Faxen von der Konsole aus möglich ist.

# Pre-required Procedures Debian, Ubuntu Requirement (superuser authorization is required to run the command) "mkdir /var/spool/lpd" command is required if the folder does not exist. Debian 64 bit version, Ubuntu 64 bit version ia32-libs or lib32stdc++ is required to be installed. Distributions that do not have csh or tcsh by default Printer drivers for DCP-310CN, MFC-5440CN csh or tcsh is required to be installed.
brmfcfax LPR driver rpm brmfcfax LPR driver deb
Step 1. Login as a superuser ( or use "sudo" option if it is required ) Step 2. Check if pre-required procedures are completed Check your fax device is connected to the telephone line outlet by telephone line cable. Step 3. Download a driver Step 4. Install the drivers 4-1. Turn on the MFC/FAX and connect the cable. 4-2. Open the terminal and go to the directory where the drivers are. 4-3. Install PC-FAX LPR driver Command (for dpkg): dpkg -i --force-all (PC-FAX-LPR-drivername) Command (for rpm): rpm -ihv --nodeps (PC-FAX-LPR-drivername) 4-4. Check if the LPR driver and cupswrapper driver are installed Command (for dpkg): dpkg -l | grep Brother Command (for rpm): rpm -qa | grep (PC-FAX-LPR-drivername) Example(for dpkg) | Example(for rpm) Step 5. Try a test fax 1. Set a fax number 1-1. Open /usr/local/Brother/inf/brFAXrc 1-2. Input fax number # Paper # A4 : A4 # LTR : Letter # LGL : Legal Paper=A4 # Quality # FINE : resolution 200x200 # STD : resolution 200x100 Quality=FINE fax_number=XXXX-XXXX fax_number_list= 2. Send a fax Command: lpr -P BRFAX (filename)

Nicht so schön ist, dass die Fax-Nummer in einer Konfigurationsdatei eingetragen werden muss.

Treiber CUPS für FAX installieren

Anschließend wird der CUPS Treiber installiert um auch von der grafischen Oberfläche aus ein Fax zu versenden.

brmfcfax cupswrapper driver rpm brmfcfax cupswrapper driver deb
# Pre-required Procedures 1. "sudo aa-complain cupsd" command is required before the installation. 2. "sudo mkdir /usr/share/cups/model" command (as it is) is required before the installation.
Step 1. Login as a superuser ( or use "sudo" option if it is required ) Step 2. Check if pre-required procedures are completed Check your fax device is connected to the telephone line outlet by telephone line cable. Step 3. Download drivers Download PC-FAX LPR driver and PC-FAX cupswrapper driver. PC-FAX Driver download page Step 4. Install the drivers 4-1. Turn on the MFC/FAX and connect the cable. 4-2. Open the terminal and go to the folder where the drivers are. 4-3. Install PC-FAX LPR driver Command (for dpkg): dpkg -i --force-all (PC-FAX-LPR-drivername) Command (for rpm): rpm -ihv --nodeps (PC-FAX-LPR-drivername) Example(for dpkg) | Example(for rpm) 4-4. Install PC-FAX cupswrapper driver Command (for dpkg): dpkg -i --force-all (PC-FAX-cupswrapper-drivername) Command (for rpm): rpm -ihv --nodeps (PC-FAX-cupswrapper-drivername) Example(for dpkg) | Example(for rpm) Note for Ubuntu: You may see an error message "Unable to copy PPD file!". In that case, please issue the following 2 commands and go to the step 4-5. Restart cups by /etc/init.d/cups or /etc/init.d/cupsys according to your Ubuntu version. Command : cp /usr/share/cups/model/brfax_cups.ppd /usr/share/ppd /etc/init.d/cupsys restart /etc/init.d/cups restart 4-5. Check status of the LPR driver and cupswrapper driver Command (for dpkg): dpkg -l | grep Brother Command (for rpm): rpm -qa | grep -e (PC-FAX-LPR-drivername) -e (PC-FAX-cupswrapper-drivername) Example(for dpkg) | Example(for rpm) Step 5a. (USB Connection) Check your fax device on the CUPS web interface 5a-1. Open a webbrowser and go to "http://localhost:631/printers". 5a-2. Click "Modify Printer" of "BRFAX" and set following parameters. - Your PC-FAX device for Device Selection - Brother for Make/Manufacturer Selection - Brother BRMFCFAX for CUPS(en) for Model/Driver Selection Device URI is supposed to be "usb://Brother/(your printer's model name)" Example of a USB PC-FAX entry Step 5b. (Network Connection) Configure your printer on the CUPS web interface 5b-1. Open a webbrowser and go to "http://localhost:631/printers". 5b-2. Click "Modify Printer" of "BRFAX" and set following parameters. - LPD/LPR Host or Printer for Device Selection - lpd://(Your device's IP address)/binary_p1 for Device URI - Brother for Make/Manufacturer Selection - Brother BRMFCFAX for CUPS(en) for Model/Driver Selection Note for Ubuntu8.10: Please set "AppSocket/HP JetDirect" for Device menu Example of a network PC-FAX entry Step 6. Try a test fax Command: brpcfax -o fax-number=(fax-number) (filename) Available file format: .ps

4.4  Aldi Surfstick HUAWEI E220

Vor der Installation des Sticks am USB-Port hatte ich im Internet recherchiert, welche Möglichkeiten es der Installation für den USB-UMTS/GRPS Stick von ALDI gibt.

lsusb # Der Befehl ’lsusb’ sollte zuerst ohne den Stick ausgeführt werden. Anschließend wird der Stick angesteckt und ’lsusb’ nochmal ausgeführt werden. Bei einige Distributionen benötigt ’lsusb’ unter Umständen ’root’-Rechte. Wenn der Stick erkannt wird, wie in folgenden Listings, dürften die weiteren Schritte funktionieren.

# without USB stick plugged in: lsusb Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 002: ID 1bcf:0007 Sunplus Innovation Technology Inc. Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 13d3:5071 IMC Networks Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
# with USB stick plugged in: lsusb Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 003: ID 1bcf:0007 Sunplus Innovation Technology Inc. Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 008: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E270 HSDPA/HSUPA Modem Bus 001 Device 002: ID 13d3:5071 IMC Networks Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Die Recherche ergab, dass es zwei Methoden gibt den Stick zu verwenden. Eine Methode geht über Anwendungen, die eine grafische Oberfläche benötigen (’umtsmon’, ’usb-modeswitch’) und die andere Methode über die Konsole (’wvdial’, ’usb-modeswitch’). Zur ersteren Methode konnte ich aus Blogeinträgen entnehmen, dass diese bei Sidux nicht mehr im Repositorium ist, da ’umtsmon’ dort nicht mehr enthalten ist.

Mit ”sudo“ konnte später ein Verzeichnis nicht erstellt werden bei der Druckerinstallation, da ich im ”sudoers“-File etwas zu ergänzen vergessen hatte, nähmlich auch das Verzeichnis ”/bin“ mit anzugeben ”Sorry, user dieterd is not allowed to execute ’/bin/mkdir /var/spool/lpd’ as root on client3“. Zur Editierung des ”sudoers“-File sollte ”vim“ als Editor verwendet werden. Der Grund liegt darin, dass die Datei nur von ”root“ beschrieben werden kann und nur Leserechte gesetzt sind. Aus dem Editor ”vim“ kann mit ”:exitਐ‘ das übersteuert werden. Bei ”vim“ führt die Eingabe eines Buchstabens ”i“ zum Übergang in den Editormode (insert/einfügen). Mit der Escape-Taste wird dieser verlassen. Mit dem Zeichen ”:“ wird der Befehlsmode in der untersten Zeile erreicht.

# User privilege specification root ALL=(ALL) ALL ALL ALL = NOPASSWD: /sbin/umount /CDROM,\ /sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM dieterd ALL = PASSWD: /bin/,/sbin/,/usr/bin/
Im Internet konnte ich noch folgende Informationen entnehmen:
Wenn beenden der Verbindung nicht klappt, dann ’run poff ppp0 as root’.
’Most likely then the usb-ports are not ttyUSB0 and ttyUSB1 but ttyUSB3 and ttyUSB2. So then start umtsmon like umtsmon -s /dev/ttyUSB3,/dev/ttyUSB2 or - if using ppp directly - change ttyUSB0 to ttyUSB2 in your configfile. Be sure to change things back next time you start your system or start umtsmon like umtsmon -s /dev/ttyUSB1,/dev/ttyUSB0 next time, cause it remembers the settings.’

Die Kofigurationsdatei ist zu finden unter: /etc/qt3/umtsmonrc

ActiveProfile=medion_dayfl medion_dayfl/prof/DefaultRoute=true medion_dayfl/prof/apn=tagesflat.eplus.de medion_dayfl/prof/doWarnOnThreshold=false medion_dayfl/prof/homeDataLimit=0 medion_dayfl/prof/homeTimeLimit=0 medion_dayfl/prof/noAuth=false medion_dayfl/prof/noCCP=false medion_dayfl/prof/noCompression=false medion_dayfl/prof/noIpDefault=false medion_dayfl/prof/password=gprs medion_dayfl/prof/replaceDefaultRoute=true medion_dayfl/prof/roamingDataLimit=0 medion_dayfl/prof/roamingTimeLimit=0 medion_dayfl/prof/thresholdPercentage=50 medion_dayfl/prof/usePeerDns=true medion_dayfl/prof/username=eplus [device] ATPortName=/dev/ttyUSB1 DeviceType=0x600a1000 PPPPortName=/dev/ttyUSB0

Die andere Möglichkeit ist über ppp (point to point protocol) mit wvdial. Hier sind im Prinzip die Pakete, wie bei ’umtsmon’ auch zu installieren notwendig. Die Verbindungsdaten müssen in eine Datei ”wvdial.conf“ eingetragen werden. Mit Pfadangabe ist diese normalerweise unter ’/etc/wvdial.conf’ zu finden. Es ist aber sinnvoller eine eigene wvdial.conf anzulegen und als Option bei dem Befehlsaufruf mitzugeben. Somit ist sichergestellt, dass nicht aus Versehen über den Stick gesurft wird, wenn er noch angesteckt ist, da ”ppp“ bzw. ”wvdial“ über ein anderes Programm angestoßen wurde.

wvdial ../surfstick/wvdial.conf umts-dayflat wvdial -C ../surfstick/wvdial.conf umts-dayflat cat ../../../surfstick/wvdial.conf [Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Modem Type = Analog Modem Baud = 460800 New PPPD = yes Modem = /dev/ttyUSB0 ISDN = 0 [Dialer umts-pin] Init3 = AT+CPIN=1234 [Dialer umts-internet] Dial Command = ATD Carrier Check = no Phone = *99# Password = gprs Username = eplus Stupid Mode = 1 Init4 = AT+CGDCONT=1,"IP","internet.eplus.de" Dial Attempts = 2 (Wenn keine Monatsflat gebucht wurde, kann das teuer werden. ) [Dialer umts-dayflat] Dial Command = ATD Carrier Check = no Phone = *99# Password = grps Username = eplus Stupid Mode = 1 Init4 = AT+CGDCONT=1,"IP","tagesflat.eplus.de" Dial Attempts = 2 (so wird die tagesflat gebucht)

Offen war noch, wie die Bestätigungs-SMS abgeholt werden kann von dem Stick. Bei ”www.linux-community.de“ fand ich im Januar 2010 die Information: “Umtsmon kann keine Kurznachrichten anzeigen”. “Empfangen werden sie aber trotzdem”. “Du kannst die SIM-Karte in ein Handy einlegen, um die Nachrichten anzuschauen oder zum Beispiel mit KMobiletools darauf zugreifen. Vodafone Mobile Connect kann SMS-Nachrichten verschicken und anzeigen.

Mit dieser Anwendung sollen sms empfangen und eingesehen werden. Nach der Installation wurde der UMTS-USB-Stick angeschlossen und die Anwendung ’kmobiletools’ gestartet. Im Menü war diese nicht unter Internet sondern Utilities zu finden. Es erschien zunächst ein Textmeldungsfenster mit einer Anleitung. Bei nur 600 Zeilen wird der ok-Button nicht erreicht. Nach dem Drücken des ok-Button, erfolgt eine Fehlermeldung und es erscheint das Konfigurationsmenü. Hier habe ich ”/dev/ttyUSB0“ als Mobil-Phone-Device angegeben und ”apply“ gedrückt. Bis auf den Batteriestatusfehler scheint alles zu funktionieren. Die SMS-Liste ist leer. Das Windows-Programm hatte wohl die SMS beim Lesen auch jweils auf der Karte gelöscht. Das Senden von einer Test-SMS zu einem anderen Mobiltelefon in beide Richtungen hat einwandfrei funktioniert. Mit der Anwendung kann somit die Bestätigungs-SMS der Tagesflatrate angesehen werden.

Mit den obigen Einstellungen wird der Stick zwar erkannt, aber es gibt immer noch ein Verbindungsproblem bei umtsmon und wvdial. Nun wird systemmatische Fehlersuche versucht.

# try this in case of trouble umtsmon -v4 # if you find this: P1 t=216: binary '/usr/sbin/usb_modeswitch' is not SUID -> needs fixing # then in mc menue chmod: # - set sticky bit # - set user ID on execution # - set group ID on execution # now this error message disapears # # how to check status of file: # file /usr/sbin/usb_modeswitch # /usr/sbin/usb_modeswitch: setuid setgid sticky ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped # stat /usr/sbin/usb_modeswitch # File: `/usr/sbin/usb_modeswitch' Size: 29120 Blocks: 64 IO Block: 4096 regular file Device: 808h/2056d Inode: 809918 Links: 1 Access: (7755/-rwsr-sr-t) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2010-01-03 10:47:11.000000000 -0500 Modify: 2009-11-06 11:24:18.000000000 -0500 Change: 2010-03-08 12:32:56.000000000 -0500 # dieterd@client3:~/surfstick$ ls -l /usr/sbin/usb_modeswitch # -rwsr-sr-t 1 root root 29120 Nov 6 11:24 /usr/sbin/usb_modeswitch

Der erste Fehler bei ”usb_modeswitch“ mit den tiefergehenden höheren Ausführungsrechten ist somit behoben. Es kann sein, dass das auch mit der Installation als ”root“ oder ”user“ zusammen hing. Es gibt hier also zwei mögliche Fehlerquellen. Werden bei der Installation Dateipfade neu erstellt, dann kann es sein, dass als ”root“ auf den Pfad zugegriffen werden kann. aber als ”user“ nicht . Diese Fehler sind schwer aufzuspüren. Umgekehrt kann es sein, dass Dateien angelegt werden, die tiefergehende höhere Berechtungen erfordern, die als ”user“ bei der Installation nicht eingerichtet werden. Diese Fehler sind schwer aufzuspüren. Die Einrichtung des Surf-Sticks ist hierfür ein gute Beispiel, auf das ich stieß und hiermit dokumentiere.

Nun wird umtsmon noch einmal gestartet und es ergibt sich ein anderer Fehler (The remote system is required to authenticate itself but I couldn’t find any suitable secret (password) for it to use to do so.).

sudo umtsmon -v5 TempSerialPort::~TempSerialPort() ##P3 t=543: SerialPort::closeDev() for FD 8 ##P5 t=543: 0xbf9a4cb4 = Query::setSerial(0x84dc250) ##P2 t=543: thePPPConnection.startPPP() returned without indicating problems ##P2 t=543: isDone is true ##P4 t=543: *****output of PPP to stdout ##P4 t=543: *****end-of-output ##P4 t=543: *****output of PPP to stderr ##P4 t=543: * /usr/sbin/pppd: The remote system is required to authenticate itself ##P4 t=543: * /usr/sbin/pppd: but I couldn't find any suitable secret (password) for it to use to do so. ##P4 t=543: *****end-of-output ##P3 t=543: PPPConnection::setNewPPPState state 1 to 4 ##P2 t=543: MainWindowObserver::newPPPState 4 ##P3 t=543: mainwindow::newPPPState() ##P5 t=543: mainwindow::updateNetworkData() ##P3 t=543: PPPConnection::setNewPPPState state 4 to 0 ##P2 t=543: MainWindowObserver::newPPPState 0 ##P3 t=543: mainwindow::newPPPState() ##P5 t=543: The PPPDState is 0 ##P4 t=543: ConnectionInfo:InhibitionCount ++, now is 3 ##P3 t=543: SerialPort::closeDev() for FD 7 ##P6 t=545: dosmallsleep of 0 s, 200000 us ##P3 t=545: Opened '/dev/ttyUSB1' as FD 7 ##P5 t=545: 0x84dc250 = Query::setSerial(0x84dc250) ##P6 t=545: read after reset: '' 0 ##P4 t=545: ConnectionInfo:InhibitionCount --, now is 2 ##P4 t=545: ConnectionInfo:InhibitionCount --, now is 1

Nach dem es immer noch nicht geht, versuche ich also wieder den anderen Weg mit wvdial. Im Internet fand ich noch ein weiteres Beispiel, das ich von o2 auf die Aldi-Flatrate umschrieb. Das folgende Listing funktioniert nun im Betrieb (mit deaktivierter PIN). Angemerkt sei noch, dass wvdial vielleicht auch bei einer der vielen Änderungen, die ich mit anderen Beispielen versucht hatte, funktioniert hätte, wenn der Fehler bei usb_modeswitch früher behoben gewesen wäre. Also gibt es hier wieder eine Fehlermöglichkeit, die schwer zu finden ist.

# create a file wvdial01.conf only with this content: [Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,"IP","tagesflat.eplus.de" Modem Type = USB Modem Baud = 460800 New PPPD = yes Modem = /dev/ttyUSB0 ISDN = 0 Phone = *99# Password = gprs Username = eplus Auto DNS = 1 # In this example - PIN of mobil phone # was deactivated. # With PIN you have to add/change: Init3 = AT+CPIN=1234 Init4 = AT+CGDCONT=1,"IP","tagesflat.eplus.de" # now call wvdial sudo wvdial -C wvdial01.conf # now successfull connected

Und wieder wird ein Versuch mit umtsmon gestartet, und zeigt ohne Änderungen ein anderes Verhalten. Mit einem Erfolgreichen wvdial sind irgendwelche Dateien angelegt oder geändert worden, die umtsmon es ermöglichen wieder ein paar Schritte weiter zu kommen. Die PIN aktivieren/deaktivieren funktioniert allerdings unter “umtsmon”. Das sind wieder Fehler die wirklich schwer zu finden sind.

sudo umtsmon -v5 pppd options in effect: debug debug debug # (from command line) updetach # (from command line) idle 7200 # (from command line) dump # (from command line) noauth # (from command line) user eplus # (from command line) password ?????? # (from command line) /dev/ttyUSB1 # (from command line) 460800 # (from command line) lock # (from command line) crtscts # (from command line) modem # (from command line) asyncmap 0 # (from command line) lcp-echo-failure 4 # (from /etc/ppp/options) lcp-echo-interval 30 # (from /etc/ppp/options) hide-password # (from /etc/ppp/options) noipdefault # (from command line) defaultroute # (from command line) replacedefaultroute # (from command line) proxyarp # (from /etc/ppp/options) usepeerdns # (from command line) noccp # (from command line) noipx # (from command line) using channel 3 Using interface ppp0 Connect: ppp0 <--> /dev/ttyUSB1 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x3c2cd0dd> <pcomp> <accomp>] ... sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x3c2cd0dd> <pcomp> <accomp>] LCP: timeout sending Config-Requests Connection terminated. Receive serial link is not 8-bit clean: Problem: all had bit 7 set to 0 Modem hangup

Und so würde die Konfigurationsdatei für O2 aussehen:

Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,?IP?,?surfo2? Modem Type = USB Modem Baud = 460800 New PPPD = yes Modem = /dev/ttyUSB0 ISDN = 0 Phone = *99***1# Password = o2 Username = o2 Auto DNS = 1

Bei der Inbetriebnahme wurde, vorher unter einem anderen Betriebssystem unter Verwendung der mitgelieferten Anwendung die Tagesflatrate gebucht.

Ein Versuch wäre noch gksu zu verwenden, aber das brachte auch keinen Erfolg.

# another try: gksu "umtsmon -v4" # output - when tried I will document /usr/sbin/pppd: The remote system is required to authenticate itself /usr/sbin/pppd: but I couldn't find any suitable secret (password) for it to use to do so. /usr/sbin/pppd: (None of the available passwords would let it use an IP address.) # still not working

Bei der Suche im Internet fand ich, dass es noch eine weitere Anwendung für Mobiltelefone/UMTS-Sticks namens “gammu” gibt. Mit entsprechenden Modembefehlen können dabei weitere Funktionen für die Buchungen und Statusabfragen genutzt werden.

sudo apt-get install gammu # # configuration of gammurc: cat gammurc # [gammu] port = /dev/ttyUSB1 connection = at115200 # http://forum.ubuntuusers.de/topic/umts-guthabenabfrage/ # Money left on your account: gammu -c gammurc getussd '*100#'

Jede Anwendung hat Stärken und Schwächen beim Surfen mit einem Mobiltelefon oder einem USB-UMTS-Stick. Leider decken die Anwendungen nicht alles meines Erachtens in einer Anwendung ab, so dass hier mehrere Anwendungen zugleich benutzt werden müssen. Vor allem trifft dies zu, wenn mit einzeln zu buchenden Tarifen, wie zum Beispiel eine Tagesflatrate das Internet genutzt wird.

Mit den vier erwähnten Anwendungen ist möglich, alle wichtigen Funktionen auszuführen ohne ein anderes Betriebssystem oder Mobiltelefon bemühen zu müssen.

Monatsflat buchen: gammu -c gammurc getussd '*121*004#' Monatsflat kündigen: gammu -c gammurc getussd '*122#' Status anzeigen: gammu -c gammurc getussd '*123#' Restguthaben anzeigen: gammu -c gammurc getussd '*100#' Guthaben aufladen: gammu -c gammurc getussd '*104*${16stellige_Guthabennummer}#' gammu -c gammurc getussd '*104*123412345678#' Press Ctrl+C to break... USSD received Status : No action needed Service reply : "Ihre Aufladung in Höhe von 15.00 Euro wurde erfolgreich ausgeführt." Alle SMS lesen und ausgeben: gammu -c gammurc --getallsms Infos des Sticks ausgeben: gammu -c gammurc --identify Device : /dev/ttyUSB1 Manufacturer : huawei Model : E160 (E160) Firmware : 11.608.xx.xx.xx IMEI : xxxxxxxxxxxxxxx SIM IMSI : xxxxxxxxxxxxxxx Anmerkung: Der Stick E220 wird von gammu wie der E160 angesprochen.

Auf der Konsole kann durch einmaliges Drücken von “ctrl-c” die Anwendung “wvdial” kontrolliert beendet werden. Wenn obige Zeichenfolgen bei gammu nicht gehen, dann hilft es diese in Anführungszeichen setzen.

# look output after pressed ctrl-c once: ^CCaught signal 2: Attempting to exit gracefully... --> Terminating on signal 15 --> pppd: ... --> Connect time 76.3 minutes. --> pppd: ... --> Disconnecting at Wed Mar 10 09:27:57 2010

Manchmal ist es notwendig wvdial ein zweitesmal zu starten. Falls vorher eine WLAN-Verbindung exestiert hat, kann es notwendig sein, diese mittels “ifdown wlan0” zu beenden. Die Anwendungen (Browser) versuchen sonst meistens noch den falschen Weg ins Internet zu benutzen.

4.5  DVB-T Stick von Digittrade

Die Inbetriebnahme des DVB-T USB-Sticks verlief auch nicht ganz glatt, wie das folgende Vorgehen belegt. Zuerst wurde der Stick während der Rechner betrieben wurde angeschlossen. Es wurde der Bildschirm schwarz und der Rechner mußte neu eingeschaltet werden. Das Verhalten ist reproduzierbar. Der Stick zieht beim Einstecken einen zu hohe Strom, so dass eine Schutzschaltung des Netbooks anspricht. Dies passiert unabhängig vom Betriebssystem.

Also wurde das Netbook mit bereits angeschlossenem DVB-T-Stick gebootet. Der Player Kaffeine zeigt zunächst nichts an betreffend des Sticks. Auf einigen Internetseiten zu DVB-T unter Linux wurden verschiedene Pakete genannt, die ich nachinstallierte und nachprüfte, ob die neueste Version bereits auf dem Rechner ist. Die folgenden Schritte sollten zunächst nicht nachgeahmt werden. Gegen Ende des Kapitels steht eine Lösung, die vorher erst versucht werden sollte.

lsusb ID 15a4:9016 Afatech Technologies, Inc. AF9015 DVB-T USB2.0 stick
apt-get install dvbtune apt-get install kdetv apt-get install v4l-conf apt-get install tvtime # menu started and selected PAL and Europe apt-get install tvtool

Damit sind indirekt die meisten Abhängigkeiten auf der Anwendungsebene der DVB-T Player aufgelöst.

# for dvb-t need git-core apt-get install git-core fw-detect: to find out what proprietaire driver installed # Nothing found apt-get update # dvb-usb-af9015 needs but /lib/firmware/dvb-ttpci-01.fw is empty apt-get install dvb-apps apt-get install firmware-linux-free
# downlaoded from digittrade page some linux drivers # Manual_DVB-T-Stick.pdf # dvb-usb-af9015.fw # ubuntu drivers is debian based # ubuntu.tar.gz # decompressed to folder ubuntu # v4l-dvb-2a68332b587c.tar.gz # decompressed to folder v4l-dvbt-2a68332b587c # the other downloaded only for my archive # for rpm based distros and windows # firmware.zip # eeepc_digittrade_dvb-t_stick.tgz # suse.tar.gz # fedora.tar.gz # treiber.tar.gz # eee-pc_windows_treiber.zip # in folder ubuntu: bash ./install.sh # finished with errors # add packets from how to apt-get install gcc apt-get install make # already newest version apt-get install build-essential # already newest version bash ./install.sh # finished with errors # bttv missing was often claimed # now exists file: /lib/firmware/dvb-usb-af9015.fw

Nachdem obiges nicht funktionierte suchte ich im internet nach “bttv” und fand heraus, dass “bttv” bzw. “bttv2” (v4l, v4l2) teilweise etwas davon in den Kernel integriert wurde und im ladbaren Modul “bttv” befinden. Da das Modul nicht automatisch geladen wird, muß dieses manuell geladen werden.

lsmod | grep bttv # shows no bttv is loaded modprobe bttv lsmod | grep bttv # shows bttv is loaded # now works # kaffeine recognized DVB-T

Im Player Kaffeine wird das Gerät nun erkannt. Die Kanalsuche lief erfolgreich durch und die Programme konnten angesehen werden. Allerdings gibt es ein Problem mit “suspend to memory/disk” mit aktivem DVB-T-Stick. Die grafische Oberfläche X11 kommt erst beim zweiten Weckversuch wieder hoch und der Stick wird nicht mehr erkannt.

Vermutlich hätten die folgenden Schritte gereicht, was im nachhinein leider nicht mehr getestet werden kann. Es sollte zunächst nur die Treiber Datei “*.fw” geholt werden und das Modul “bttv” geladen werden. Nur wenn das mit dem DVB-T-Stick dann noch nicht funktioniert, sich im Internet nichts besseres finden läßt, sollten die bis zu dieser Stelle beschriebenen Schritte nachzuvollziehen in Erwägung gezogen werden.

# download dvb-usb-af9015.fw and copy to /lib/firmware/dvb-usb-af9015.fw modprobe bttv

Anmerkung: Mit einem “msi digi vox mini II” und “kaffeine” funktionierte das Fernsehsehen ebenfalls. Ohne Linux hätten meine Kollegen auf die erste Halbzeit der WM leider verzichten müssen, da das Programm des marktführenden Betriebssystem sich weigerte den Sendersuchlauf erneut durchzuführen.

4.6  Web-Cam

Der ASUS eeepc hat eine interne Web-Cam. Unter dem SIP-Phone Program Ekiga (ehemals gnome-meeting) wurde bereits festgestellt, dass diese unterstützt wird und funktioniert.

v4l-info ### v4l2 device info [/dev/video0] ### general info VIDIOC_QUERYCAP driver : "uvcvideo" card : "USB2.0 UVC 1.3M WebCam" bus_info : "usb-0000:00:1d.7-2" version : 0.1.0 capabilities : 0x4000001 [VIDEO_CAPTURE,STREAMING]

Die Ausgabe von “v4l-info” ergibt, dass es sich um eine integrierte USB-Kamera handelt. Als Anwendung wird v4l2 verwendet. Das Kameravideo kann mittels “mplayer” angesehen werden. Sollen Bilder mit der maximalen Auflösung der Web-Cam geschossen werden, dann wird die Anwendung “fswebcam” benötgt.

sudo apt-get install fswebcam # this works, but colours are wrong fswebcam -r 640x480 --jpeg 100 -D 1 --save filename.jpg # this works and colours are ok fswebcam -r 1280x1024 --jpeg 100 -D 1 --save filename.jpg # this works - video size is 640x480 mplayer tv:// -tv driver=v4l2:device=/dev/video0 # this works - pctures saved # mostly 3 to 4 first frames fail mplayer tv:// -tv driver=v4l2:device=/dev/video0:width=1280:height=1024 -frames 10 -vo jpeg # this saves as video mencoder tv:// -tv driver=v4l2:device=/dev/video0 -frames 100 -ovc lavc -o webcamstream.avi # uncompressed you need many megabytes of harddisk space

Das WebCam-Video können auch mit VLC (Auswahl “Open Capture Device” und dort “Video for Linux 2”) angesehen werden und Bilder können auch mit xsane von der WebCam geholt werden. Die beiden Anwendungen fswebcam und mlpayer bieten nach meinen Erfahrungen mehr Möglichkeiten.


Previous Up Next