Archiv ‘IT’

Samstag, 5. Dezember 2015

Den Status eines HP-Druckers mit hplip abfragen

Vor 11 Jahren musste ich mir beim Umstieg meiner IT-Infrastruktur auf Mac OS X auch einen neuen Drucker leisten, welcher Postscript sprach (die Treiberunterstützung für dieses Betriebssystem war damals noch nicht so ausgeprägt wie heute). Ich entschied mich für einen HP LaserJet 1300.

Bis vor einigen Tagen verrichtete dieser im Elternhaus mehr oder wenig zuverlässig seinen Dienst. Doch nun will er nicht mehr drucken und blinkt mit dem LED unten links orange vor sich hin.

Mangels eines LCD-Displays muss der herbeigerufene IT-Supporter auf das Handbuch zurückgreifen, wo er erfährt:

Klappe geöffnet, keine Medien geladen, keine Druckpatrone oder Medienstau

Der Drucker befindet sich in einem Fehlerzustand, der den Eingriff durch den Benutzer erforderlich macht.

Quelle: HP LaserJet 1150 and 1300 Series User Manual

Leider halfen die Empfehlungen des Handbuchs nicht weiter.

Als letzter Ausweg machte ich mich auf die Suche nach einem Linux-basierten Tool, mit welchem man über die USB-Schnittstelle den Status des Geräts auslesen kann. Ich erhoffte mir davon weiterführende Informationen, die mit einem aus drei LEDs bestehenden Bedienfeld nicht an den Benutzer zurückmelden kann.

HP hat zur Administration seiner Drucker unter Linux das hplip-Treiberpaket entwickelt, welches auch unter Debian verfügbar ist:

# apt-get install hplip

Als erstes machte ich den Drucker auf dem USB-Bus ausfindig:

$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 003: ID abcd:0001 Unknown 
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 015: ID 03f0:1017 Hewlett-Packard LaserJet 1300
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Der Drucker ist somit an Bus 3 angeschlossen und das 15. Gerät an dem Bus (?). Die eindeutige USB-ID des Peripheriegeräts lautet 03f0:1017.

Mittels des Tools hp-makeuri fand ich die Device URI heraus, mit welcher man angeblich mit Tools des hplip-Pakets HP-Drucker ansprechen kann:

$ hp-makeuri 001:015

HP Linux Imaging and Printing System (ver. 3.14.6)
Device URI Creation Utility ver. 5.0

Copyright (c) 2001-13 Hewlett-Packard Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.

CUPS URI: hp:/usb/hp_LaserJet_1300?serial=000000000000

Done.

Unter cups erfasste ich den Drucker mit der neuen hp:/-Schnittstelle ein zweites Mal.

Anschliessend entdeckte ich das Tool hp-info, das „Device Information Utility“ (unter root, lieber Gott vergebe mir):

# hp-info -i -dhp:/usb/hp_LaserJet_1300?serial=000000000000
warning: hp-info should not be run as root/superuser.

HP Linux Imaging and Printing System (ver. 3.14.6)
Device Information Utility ver. 5.2

Copyright (c) 2001-13 Hewlett-Packard Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.


hp:/usb/hp_LaserJet_1300?serial=000000000000

Device Parameters (dynamic data):
  Parameter                     Value(s)                                                  
  ----------------------------  ----------------------------------------------------------
  agent1-ack                    False                                                     
  agent1-desc                   Black toner cartridge                                     
  agent1-dvc                    0                                                         
  agent1-health                 1                                                         
  agent1-health-desc            Not installed                                             
  agent1-hp-ink                 False                                                     
  agent1-id                     0                                                         
  agent1-kind                   4                                                         
  agent1-known                  False                                                     
  agent1-level                  100                                                       
  agent1-level-trigger          0                                                         
  agent1-sku                    Q2613A/Q2613X                                             
  agent1-type                   1                                                         
  agent1-virgin                 False                                                     
  back-end                      hp                                                        
  cups-printers                 ['LaserdruckerHP']                                        
  cups-uri                      hp:/usb/hp_LaserJet_1300?serial=000000000000              
  dev-file                                                                                
  device-state                  1                                                         
  device-uri                    hp:/usb/hp_LaserJet_1300?serial=000000000000              
  deviceid                      MFG:Hewlett-Packard;CMD:PJL,MLC,BIDI-ECP,PCL,POSTSCRIPT,PC
                                LXL;MDL:hp LaserJet 1300;CLS:PRINTER;DES:Hewlett-Packard  
                                LaserJet 1300;MEM:72MB;COMMENT:RES=10x1;1;                
  duplexer                      1                                                         
  error-state                   102                                                       
  host                                                                                    
  in-tray1                      1                                                         
  in-tray2                      1                                                         
  is-hp                         True                                                      
  media-path                    1                                                         
  panel                         0                                                         
  panel-line1                                                                             
  panel-line2                                                                             
  photo-tray                    0                                                         
  port                          1                                                         
  r                             0                                                         
  revision                      254                                                       
  rg                            000                                                       
  rr                            000000                                                    
  rs                            000000000                                                 
  serial                        000000000000                                              
  status-code                   1805                                                      
  status-desc                   No toner                                                  
  supply-door                   1                                                         
  top-door                      4                                                         

Model Parameters (static data):
  Parameter                     Value(s)                                                  
  ----------------------------  ----------------------------------------------------------
  align-type                    0                                                         
  clean-type                    0                                                         
  color-cal-type                0                                                         
  copy-type                     0                                                         
  embedded-server-type          0                                                         
  fax-type                      0                                                         
  fw-download                   False                                                     
  icon                          hp_LaserJet_1200.png                                      
  io-mfp-mode                   6                                                         
  io-mode                       1                                                         
  io-support                    6                                                         
  job-storage                   0                                                         
  linefeed-cal-type             0                                                         
  model                         hp_LaserJet_1300                                          
  model-ui                      HP LaserJet 1300                                          
  model1                        HP LaserJet 1300 Printer                                  
  model2                        HP LaserJet 1300t Printer                                 
  monitor-type                  0                                                         
  panel-check-type              1                                                         
  pcard-type                    0                                                         
  plugin                        0                                                         
  plugin-reason                 0                                                         
  power-settings                0                                                         
  pq-diag-type                  0                                                         
  r-type                        0                                                         
  r0-agent1-kind                4                                                         
  r0-agent1-sku                 Q2613A/Q2613X                                             
  r0-agent1-type                1                                                         
  scan-src                      0                                                         
  scan-type                     0                                                         
  status-battery-check          0                                                         
  status-dynamic-counters       0                                                         
  status-type                   9                                                         
  support-released              True                                                      
  support-subtype               14214                                                     
  support-type                  2                                                         
  support-ver                   0.9.5                                                     
  tech-class                    ['LJMono', 'Postscript']                                  
  tech-subclass                 ['Normal']                                                
  tech-type                     3                                                         
  usb-pid                       4119                                                      
  usb-vid                       1008                                                      
  wifi-config                   0                                                         

Done.

Die wichtigsten Infos waren in folgenden Zeilen enthalten:

  error-state                   102                                                       
  status-code                   1805                                                      
  status-desc                   No toner                                                  

Am Tag bevor ich diesen Blog-Artikel abfasste hiess es noch:

  error-state                   101                                                       
  status-code                   1806                                                      
  status-desc                   Service request                                           

Wie dem auch sei, eine Lösung für das Problem habe ich immer noch nicht gefunden. Ich habe aber nun entschieden, das Gerät in den Ruhestand zu senden und stattdessen einen HP LaserJet Pro M426fdw zu bestellen.

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 29. November 2015

Nicht umbrechender Bindestrich in Microsoft Word

Will man nicht, dass Microsoft Word zwei mit Bindestrich getrennte Wörter automatisch umbricht, benötigt man einen sogenannten „Non Breaking Hyphen“ oder einen „bedingten Trennstrich“.

Diesen fügt man mittels Ctrl- (Minus) in das Dokument ein — oder über den Reiter „Auswahl 2“ im Sonderzeichen-Dialog.

Via: Inserting a Non-Breaking Hyphen

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 29. Oktober 2015

MacPorts kann das Paket openmotif nicht installieren

Beim monatlichen Update meiner MacPorts-Installation stand ich vor folgender Fehlermeldung:

--> Fetching archive for openmotif
Error: org.macports.archivefetch for port openmotif returned: xorg-libXt must be installed with +flat_namespace.
Please see the log file for port openmotif for details:
   /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_openmotif/openmotif/main.log
To report a bug, follow the instructions in the guide:
   http://guide.macports.org/#project.tickets
Error: Processing of port openmotif failed
Done.

Eine kurze Google-Suche förderte folgenden Diskussions-Thread zu Tage:

openmotif: xorg-libXt must be installed with +flat_namespace

Folgende lokal ausgeführten Befehle lösten das Problem:

# port install xorg-libXt +flat_namespace

Nachdem das neue Paket installiert war, musste ich dieses noch aktivieren, damit es beim Update von openmotif auch effektiv zur Verfügung stand:

# port activate xorg-libXt @1.1.5_1+flat_namespace

Anschliessend konnte ich mit der Aktualisierung fortfahren.

Tags: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 29. Oktober 2015

Adobe Reader zeigt im Internet Explorer keine Toolbar mehr an

Auf dem Arbeitsrechner kämpfe ich seit einigen Tagen mit dem Problem, dass PDF-Dateien, welche ich im Internet Explorer öffne, keine Toolbar mehr anzeigen.

Diese bringt man mit einem Druck auf die Funktionstaste F8 wieder zum Vorschein.

Quelle: My Adobe Reader toolbar that allows you to save, print, email, etc. the document in the browser window/tab has disappeared and I want to know how to get it back.

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 30. August 2015

Mittels Windows PowerShell Abkürzungen aus einer Textdatei auslesen und sortieren

Auf der Arbeit darf ich derzeit ein Dokument mit viel, viel Text überarbeiten. Am Ende des Berichts gibt es eine Liste aller im Lauftext verwendeten Abkürzungen. Um sicherzugehen, dass der vorherige Autor alle Abkürzungen erwischt und erläutert hat, speicherte ich das Word-Dokument als Plain Text (.txt) ab und liess dann folgendes PowerShell-Skript drüberlaufen:

$source = 'source.txt'
$temp = 'acronyms-raw.txt'
$result = 'acronyms.txt'
$regex = '\b[A-Z]{3,}\b'
select-string -Path $source -Pattern $regex -CaseSensitive -AllMatches |
% { $_.Matches } | % { $_.Value } > $temp
gc $temp | sort | get-unique > $result

Tada! Und schon hatte ich in acronyms.txt eine fein säuberlich, alphabetische Liste aller Abkürzungen, die aus drei oder mehr aufeinanderfolgenden Grossbuchstaben bestehen.

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 30. August 2015

Der Papiereinzug eines Fujitsu ScanSnap ix500 funktioniert nicht mehr richtig

Vor zwei Tagen wollte ich kurz vor dem Zu-Bett-gehen noch kurz eine aktualisierte Police meiner Hausratsversicherung scannen — natürlich waren aktualisierte AVBs im Umfang von gefühlten 20 Seiten ebenfalls Teil der neuen Police.

Doch Schreck lass nach: Der Papiereinzug meines Fujitsu ScanSnap ix500 schaffte es knapp noch, ein oder zwei Blätter einzuziehen, versagte aber anschliessend kläglich.

Nach etwas Googeln fand ich folgendes Handbuch:

SCANSNAP IX500 CONSUMABLE REPLACEMENT AND CLEANING INSTRUCTIONS

Darin stand, dass man sich mit der Kontroll-Software (ScanSnap Manager) den Status der Verbrauchsmaterialien — dazu gehören auch die Rollen des Papiereinzuges — anzeigen lassen kann:

Fujitsu ScanSnap ix500 Consumables
image-6407

Da bin ich ja noch meilenweit vom Grenzwert entfernt (200’000 Blatt Papier), um die Rollen auszutauschen. Nichtsdestotrotz funktioniert der Einzug nicht!

Ich folgte deshalb der Anleitung und baute die beiden erwähnten Rollen aus. Da ich nichts besseres damit anzufangen wusste, nahm ich diese Rollen in die Küche und hielt die Plasticrollen unter das laufende Wasser, rubbelte etwas daran und trocknete die Rollen fein säuberlich. Anschliessend baute ich diese wieder in den Scanner ein.

Seit dieser Aktion saugt der Scanner wieder jedes Futter ein, und das auf Anhieb im ersten Versuch.

Tags: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 30. August 2015

In einer Sharepoint 2010-View einer Liste auf die Detailseite eines Datensatzes verlinken

Auf der Arbeit verwenden wir Sharepoint-Listen, um strukturiert vorliegende Informationen als Datensätze abzulegen.

Um in E-Mails auf bestimmte Listenelemente verlinken zu können, war ich auf der Suche nach einer Permalink-Funktion. Diese existiert mit der View DispForm.aspx, welche den mit ID in einer GET-Variable referenzierten in einer eigenständigen Seite anzeigt (sprich: kein Overlay über die Listenansicht, offenbar das Standardverhalten von Sharepoint).

Die Permalink-URL für die Liste „MyServers“ schaut folgendermassen aus:

http://domain.tld/lists/MyServers/DispForm.aspx?ID=1234

Doch wie zeige ich diesen Permalink in der Ansicht der gesamten Liste (AllItems.aspx) als Feld für jeden Datensatz an, ohne Quellcode von Web-Seiten oder den Sharepoint Designer zu bemühen? Ganz einfach:

Man erstelle eine neue „Calculated Column“ in der Listenansicht und definiere dafür folgende Funktion:

="<a href='http://domain.tld/lists/MyServers/DispForm.aspx?ID=" & [ID] & "'>" & [Servername] & "</a>"

Speichert man das Feld, wird einem der HTML-Code im Klartext angezeigt. Damit stattdessen der Link gerendert wird, muss man den Typ der Spalte auf „Number (1, 1.0, 100)“ umschalten. Wie aus Zauberhand interpretiert Sharepoint den HTML-Code, und der Permalink kann kopiert werden.

Via: SharePoint 2010 calculated column and hyperlink (no workflows or scripts needed)

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 14. Juli 2015

In Excel ein Pivot nach Monat und Jahr gleichzeitig gruppieren

Wer von SQL her kommt und gelegentlich Auswertungen mit Excel fahren muss, wird die Pivot-Funktion zu schätzen wissen: Sie bietet annähernd etwas wie die GROUP BY-Klausel in SQL-Statements.

Kürzlich durfte ich auf der Arbeit die zeitlichen Aufwendungen für eine IT-Prüfung analysieren. Dazu erfasste ich alle Meetings mit ihrer Dauer, ihrem Datum und dem Titel in eine Tabelle. Anschliessend wollte ich mir ausrechnen lassen, wie viele Stunden pro Monat aufgewendet wurden.

Da die Prüfperiode im Juli 2014 begann und im Juli 2015 endete, gab es beim ersten Auswertungsversuch das Problem, dass die Aufwendungen im Juli des Vorjahres mit denjenigen des Julis des aktuellen Jahres addiert wurden. Doch wie macht man statt ein GROUP BY month ein GROUP BY month, year?

Stellt sich heraus, dass man in einer Pivot-Tabelle mittels Rechtsklick auf einen Datumswert im Menupunkt „Grouping“ durchaus auch zwei Elemente in der Liste („By“) auswählen kann, also beispielsweise auch „Months“ und „Years“.

Quelle: Pro tip: Group an Excel PivotTable by dates

Tags: , , , , , , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 24. Juni 2015

Raspberry Pi 2 einrichten (10/n): Apple USB-Tastatur sauber einrichten

Bei der einzigen im Haushalt freien USB-Tastatur handelt es sich um ein Apple Aluminium Keyboard mit Schweizerdeutschem Layout. Diese wird für die Installation des neuen Taschencomputers benötigt, solange noch keine Netzwerkverbindung verfügbar ist (dann geht alles viel einfacher mittels SSH).

Die Tastatur kann unter Raspberry Pi und jedem anderen Linux problemlos verwendet werden.

Die Tastatur kann ganz einfach mittels raspi-config eingerichtet werden (Kurzanleitung für die graphische Oberfläche). Leider scheinen nachträgliche Anpassungen mit diesem Tool nur dann möglich zu sein, wenn die Tastatur auch wirklich am USB-Port hängt.

Deshalb kann man die Anpassungen auch manuell an folgender Datei vornehmen:

/etc/default/keyboard

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="applealu_iso"
XKBLAYOUT="ch"
XKBVARIANT="de_mac"
XKBOPTIONS=""

BACKSPACE="guess"

Via: Changing the default keyboard layout from “gb” to “us” in Raspbian “wheezy” for Raspberry Pi

Apple Aluminium-Keyboards gibt es in drei Standards:

  • ANSI
  • ISO
  • JIS

Quelle: How to tell an Apple ISO USB keyboard from an Apple ANSI ISO keyboard

Da ich eine Tastatur mit schweizerdeutschem Layout besitze, vermute ich, dass es sich dementsprechend um ein ISO-Keyboard handelt.

Damit sich die F1-F12-Tasten wie ebendiese Tasten verhalten, musste ich zudem noch folgende Datei erstellen:

/etc/modprobe.d/hid_apple.conf

options hid_apple fnmode=2 iso_layout=0

Die bedeuten der Zahlenwerte für fnmode (0, 1 und 2) sind im Artikel „Apple Keyboard“ beschrieben.

Ist die Tastatur korrekt konfiguriert, kann man mit Druck auf die Tasten Ctrl-Alt-F1 von einer X-Oberfläche in eine Shell wechseln. Zurück ins GUI geht es, in dem man Ctrl-Alt-F7 betätigt.

Tags: , , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (6/n): Automatisch in einen Web-Browser starten

Da ich meinen Raspberry Pi 2 dazu verwende, ein Dashboard anzuzeigen, soll der Taschencomputer nach einem Kaltstart automatisch aufstarten, sich mit dem Standardbenutzer in die graphische Oberfläche einloggen und danach ein Web-Browser-Fenster mit einer bestimmten URL öffnen. Dabei soll nur der Web-Site-Inhalt angezeigt werden, nicht aber die Fensteroberfläche des Window-Managers.

Automatischer Login

Auf der Kommandozeile öffnet man raspi-config und aktiviert dort die Option Enable Boot to Desktop/Scratch. Wichtig ist, dass man die Option mit den Cursortasten auswählt und danach mittels Tabulator auf „OK“ springt und dieses auch betätigt.

Quelle: RASPI-CONFIG

Automatischer Start des Web-Browsers mit einer bestimmten URL

Damit nun die gewünschte Web-Site angezeigt wird, muss man dem Betriebssystem nun noch sagen, dass bei jedem Login in die grafische Oberfläche ein entsprechender Befehl ausgeführt werden soll:

~/.config/lxsession/LXDE-pi/autostart

@xset s off
@xset -dpms
@xset s noblank

@unclutter -idle 1
# PROD
#@chromium-browser --incognito --kiosk http://dashboard.local/

# DEBUG
@chromium-browser --remote-debugging-port=4444 --show-fps-counter --incognito --kiosk http://dashboard.local/

Quelle: How to auto start chromium after boot on the Raspberry 2 (2015-01-31 debian wheezy)?

Ferner: How To Autostart Apps In Rasbian LXDE Desktop

Auch: Raspberry Pi Dashboard Kiosk

Wichtig: In vielen Anleitungen liest man, dass man die Datei /etc/xdg/lxsession/LXDE-pi/autostart (Raspberry Pi 2) respektive die Datei /etc/xdg/lxsession/LXDE/autostart (Raspberry Pi 1) mit den obigen Befehlen ergänzen soll. In meinem Fall hat das zu einer einstündigen Debugging-Session geführt, die erst mit folgendem Hinweis gelöst werden konnte:

Note: If both files are present, lxsession only executes the local file as of v0.4.9

Aus irgendeinem Grund war bei meiner Installation die Datei ~/.config/lxsession/LXDE-pi/autostart vorhanden, weshalb die Einträge in den generischen autostart-Dateien nie berücksichtigt wurden.

Quelle: LXDE

Mauszeiger ausblenden

Damit der Mauszeiger ausgeblendet wird, muss noch folgendes Paket installiert werden:

# apt-get install unclutter

Das Programm wird anschliessend beim Ausführen der Autostart-Datei ausgeführt.

Quelle: Step 16: Hiding the mouse pointer

Alternative: Window Manager umgehen und direkt in ein Browser-GUI starten

Dank an Simon Jenny für den Hinweis — leider bleibt der Bildschirm schwarz, diese Lösung funktioniert also derzeit nicht.

~/.xinitrc

xset -dpms &
xset s off &
unclutter -idle 1 &

exec chromium-browser \
--window-position=0,0 \
--window-size=1080,1920 \
--incognito \
--kiosk \
http://dashboard.local/

Folgende zusätzliche Parameter könnten ebenfalls hinzugefügt werden:

...
--no-first-run \
--disable \
--disable-translate \
--disable-infobars \
--disable-suggestions-service \
--disable-save-password-bubble \
--disk-cache-dir=/tmp/chromium/cache/ \
--user-data-dir=/tmp/chromium/user_data/ \
--show-fps-counter \
--remote-debugging-port=4444 \
...

/etc/rc.local

...
/usr/bin/xinit /home/pi/.xinitrc &
exit 0

Quelle: Raspberry Pi Information Radiator: Booting into a Browser

Tags: , , , , , , , ,
Labels: IT, Linux

4 Kommentare | neuen Kommentar verfassen