Wie können nicht AirPrint fähige Drucker mit Raspberry Pi als AirPrint Server via CUPS Server eingerichtet werden?

Mit AirPrint kann von einem iPad, iPhone, iPod touch und Mac sofort gedruckt werden, ohne vorher Treiber installieren oder Software laden zu müssen. Einfach einen AirPrint-Drucker auswählen und drucken.

Wer keinen AirPrint fähigen Drucker hat, kann ihn mit einen rPi und CUPS dazu leicht verwenden, so das über das iPhone, iPad bzw. Mac gedruckt weden kann.

Es gibt dazu diese gute Anleitung die super mit meinem HP LJ 2600n über das Netzwerk funktioniert. Es sollte aber auch alle anderen Drucker laufen.

Diese Seite kurz zusammengefasst:

Über Browser die Adresse

aufrufen und Option “Freigeben von Druckern welche mit diesem System verbunden sind” aktivieren und den Drucker einrichten.

CUPS Drucker Seite
CUPS Drucker Seite

CUPS Seite Verwaltung
CUPS Seite Verwaltung

AirPrint einrichten mit dem Py-Script:

Restart:

So jetzt kann von jedem Apple Gerät über AirPrint gedruckt werden. Oder über den Mac.

Tip: Wer Fehler suchen muss, kann in der
/etc/cups/cupsd.conf
Datei den LogLevel warn auf
LogLevel debug2
setzen. Dann werden mehr Ausgaben nach /var/log/cups/error_log geschrieben. Man kann sich diese Datei auch mit
tail -n 100 -f /var/log/cups/error_log
ausgeben lassen. Damit die geänderten Einstellungen wirksam werden, muss der CUPS Server mit
sudo service cups restart
restartet werden.

Wenn ein virtuelle PDF-Drucker mit cups-pdf eingerichtet wird, werden die PDFs default mäßig in
/var/spool/cups-pdf/ANONYMOUS
gespeichert. So können, ohne das ein Drucker angeschlossen ist, jederzeit von iPhone, iPad und Mac nach PDF „gedruckt“ werden.
Der PDF-Drucker kann so eingestellt werden:
Bildschirmfoto 2013-12-25 um 10.32.32

Super! Klappt es bei Dir auch?

Habe noch diese gute Anleitung mit vielen Fotos in engl. gefunden.

Wie kann ich auf einem Mac den Fortschritt beim kopieren auf einer SD-Karte mit DD für einen Raspbeery Pi erkennen?

Hin und wieder muss man mal ein Backup für ein Raspbeery Pi oder auch bei sonstigen SD-Karten erstellen.
Das Backup wird eingespielt mit dem DD Kommando im Terminal eines Mac OS X z.b.

sudo dd if=ini-rot-backup.img of=/dev/disk3 bs=1m
Bildschirmfoto 2013-11-13 um 15.36.06

Bei einer 8 GB-SD-Karte dauert dieser Kopiervorgang über eine Stunde, und da keine Ausgabe auf der Konsole kommt, kann man den Fortschritt nicht beobachten.

Wenn man aber in einem neuem Terminal Fenster die PID mit
ps -Af
herausfindet. Hier die 600.

Bildschirmfoto 2013-11-13 um 16.11.58
Kann man mit
sudo kill -siginfo 600
wobei die 600, die oben ermittelte PID ist, in dem anderen Terminalfenster die Fortschrittsausgabe erzeugen. Dies kann auch mehrfach erzeugt werden. Wenn man beide Terminal-Fenster nebeneinander anordnet, kann leicht der Fortschritt des Kopiervorgangs beobachtet werden.

Wie kann ein VNC-Server auf ein Raspberry Pi installiert und mit VNC-Client von Mac, iPad und Windows darauf zugegriffen werden?

Ein Virtual Network Computing (VNC) zeigt den Bildschirminhalt auf einen entfernten Rechner (VPN-Client) an.

Ein VNC-Server ist auf dem rPi schnell eingerichtet. In der Konsole folgende Befehle eingeben:

sudo apt-get update
sudo apt-get install tightvncserver

Und dann starten des VNC-Servers mit:
vncserver :1
es muss ein 8-Stelliges Passwort vergeben werden und bei der Frage nach view-only mit nein antworten.
Der VNC-Server startet dann mit
Bildschirmfoto 2013-11-02 um 17.40.43

Jetzt können wir mit einem VNC-Client über das Netzwerk zugreifen. Wir verwenden für den Mac OS X den kostenlosen TightVNC. Diesen Client gibt es auch für Windows.
Nach dem Download von TightVNC Java Viewer (Version 2.7.2) und auspacken des Archives kann der Client gestartet werden mit:

java -jar tightvnc-jviewer.jar
in dem Verzeichnis wo das Archiv ausgepackt wurde. Es öffnet sich dieser Dialog:
Bildschirmfoto 2013-11-02 um 17.46.22
Dort die IP-Adresse des rPi eingeben. Nach klick auf connect wird das SSH Passwort abgefragt und dann das VPN-Server Passwort.
Schon erscheint der Deskop vom rPi über das Netzwerk per VNC:
Bildschirmfoto 2013-11-02 um 17.49.16
Von dort kann dann ziemlich schnell alles mit Maus und grafisch gestartet werden. Z.b. der Browser:
Bildschirmfoto 2013-11-02 um 17.30.40

Stoppen kann man den TightVNC VNC-Server mit:
vncserver -kill :1

Mit einem iPad oder auch mit Windows kann man über das kostenlose Programm Mocha VNC Lite auf den rPi zugreifen. Dort braucht dann nur in der Konfiguration die VNC Server Adresse, der Server Port 5901 und das VNC Passwort eingegeben werden. Dann zurück zum Menü und klick auf Connect. Schon ist der Desktop vom rPi zu sehen.

Greift man nur mit dem iPad auf den Server zu, kann man den Server auch etwas optimiert starten mit
vncserver :1 -geometry 1024×768 -depth 24

Und will man den VNC-Server automatisch nach dem Neustart des rPi starten dann, einfach ein neues Verzeichnis anlegen:
mkdir /home/pi/.config/autostart und dort eine Datei mit Namen tightvnc.desktop anlegen mit folgenden Inhalt:

[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false

Was muss getan werden damit unter OS X Mavericks MacPorts 2.2.1wieder läuft?

Nach dem Update auf OS X Mavericks läuft Mac Ports nicht mehr. Es gibt eine neue Version von Ports V. 2.2.1.
Was ist nötig?

1. Update neue Version von Xcode.

2. Neue Version von Command Line Developer Tool für Mavericks laden:
Bildschirmfoto 2013-10-26 um 12.53.44

3. Es müssen die Lizensbedingungen bestätigt werden:
sudo xcodebuild -license

4. Port updaten mit
sudo port upgrade selfupdate
sudo port upgrade outdated

das ganze dauert dann ein paar Minuten (ca. 30-60 min) je nach dem was installiert wird.

Dann kommt es zu dieser Fehlermeldung:

sudo port upgrade outdated
---> Fetching distfiles for llvm-3.2
Error: llvm-3.2 is not supported on Mavericks or later.
Error: org.macports.fetch for port llvm-3.2 returned: unsupported platform
Please see the log file for port llvm-3.2 for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_llvm-3.2/llvm-3.2/main.log
Error: Unable to upgrade port: 1
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets

Ok, dann im Internet gesucht und Ticket mit Lösung gefunden, das die Version 3.2 nicht unterstüzt wird. Deshalb habe
ich die Version 3.3 und 3.4 installiert:

sudo port install llvm-3.3
sudo port install llvm-3.4

Dann ist es noch zu folgenden Abbruch mit gstreamer1 gekommen:

---> Building gstreamer1
Error: org.macports.build for port gstreamer1 returned: command execution failed
Please see the log file for port gstreamer1 for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gnome_gstreamer1/gstreamer1/main.log
Error: Problem while installing gstreamer1
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets

Dazu habe ich das Ticket 40963 erstellt.
[UPDATE] Das Problem wurde gefixt, es gab auch schon einige ähnliche Tickets. Super und Danke das das so schnell gefixt wurde.
Jetzt gibt es noch einen Abbruch in lrzsz für das Modem, dazu habe ich das Ticket 41028 erstellt. Konnte es selbst fixen, in dem ich minicom reinstalliert habe.

Wie checkt man die Geschwindigkeiten von DNS-Servern und kann da was optimiert werden?

Das geht mit dem kostenlosen Programm namebench 1.3.1 für Mac und Windows.

Nach dem Downloaden und starten des Programms, erscheint eine einfach GUI. Hier können oben die eigenen DNS-Server Adressen eingegeben werden und dann klick auf Start. Nun dauert der Check einige Minuten und öffnet dann im Browser das Ergebnis mit einigen schönen Grafiken. Da kann man durch wechseln des DNS sein Internet Surfen mitunter beschleunigen.

Wenn das Ergebnis nicht im Browser geöffnet wird, kann es unter Mac im Verzeichnis separat geöffnet werden.

z.B.
//var/folders/bt/_4l4fvvn0s3332pr68td_m980000gn/T/namebench_2013-10-04_1713.html

Das Verzeichnis wo die Ergebnisse gespeichert werden, wird unten in der GUI für einige wenige Sekunden angezeigt.

Folgende Ergebnis Seiten werden z.B. generiert (gekürzt):

Gui namebench
Gui namebench

Bildschirmfoto 2013-10-04 um 17.22.05

Ergebnis Grafik
Ergebnis Grafik
Ergebnis Grafik
Ergebnis Grafik

Es gibt auch noch ein Command-line Version.

Wie wird ein VPN Client (Tunnelblick) auf einem Mac OS X installiert?

Um auf VPN Server von einem Mac zugreifen zu können, kann der kostenlose VPN-Client Tunnelblick verwendet werden. Also zuerst den Tunnelblick downloaden.
Ich habe die Version 3.3 verwendet.

Dann installieren, so wie hier beschrieben.

Dann die Datei config.ovpn Anlegen mit folgenden Inhalt:

dev tap
proto udp

# Hier die IP-Adresse des VPN Servers eintragen
remote 192.168.2.XXX 1194

resolv-retry infinite
nobind
mute-replay-warning

# Der Name des Static Key
secret secret.key

verb 3

und in ein Verzeichnis mit der Endung .tblk verschieben. In dieses Verzeichnis muss auch der Key (Static Key) kopiert werden.

Nach dem doppelklick auf das Verzeichnis mit der Endung .tblk startet der VPN Client. Oben rechts in der Menüleiste erscheint dann das Icon.

Drei Tipps zum einfachen öffnen des Finders in Mac OS X per cmd-Taste

Wenn man im Mac OS X mit gedrückter cmd Taste ein Icon im Dock anklickt, öffnet sich der Finder mit der selektierten Anwendung an der Stelle wo die Anwendung gespeichert ist.

Das gleiche passiert auch, wenn in der Spotlight suche ein Ergebniss gefunden wurde, dann cmd und Return drücken.

Auch öffnet sich ein neues Finder-Fenster wenn man mit gedrückter cmd Taste in der offenen Sidebar auf einen Eintrag (Favoriten) klickt.

Wie kann unter Mac OS X das Terminal screen verwenden?

Um Kontakt zur seriellen Schnittstelle aufzubauen kann unter Mac OS X das Programm: screen
verwendet werden. Einfach auf der Kommandozeile aufrufen
screen [ -optionen] [ Kommando [Argumente]] wie hier gezeigt um die USB Schnittstelle anzusprechen:

screen /dev/cu.usbserial-A9YLHVRN

Bildschirmfoto 2013-08-31 um 15.01.40

bitlash unter screen
bitlash unter screen

Beendet kann das Terminal mit: ctrl+a k werden

Wie kann mit Arduino die serielle Ausgabe über TCP ausgegeben werden auf dem TP-WR703N Gerät?

Der Arduino (NANO) wird per USB an den TP-WR703N (12.09) angeschlossen. Wie kann nun von einem anderen Rechner darauf per TCP (Telnet) zugegriffen werden?

Dazu erst socat auf den WR703 installieren mit

opkg update
opkg install socat

Socate (Version 1.7.2.1) kann bidirektionale Verbindungen aufbauen. Es verbindet den USB Port mit dem TCP Port.
Dann das folgende Script erstellen start-temp.sh, und evl noch die Schnittstelle DEV und den PORT und BAUD anpassen.

#!/bin/bash

DEV=/dev/ttyUSB0
PORT=1234
BAUD=9600

while true; do
if [ -e $DEV ]
then
socat tcp-l:$PORT,reuseaddr,fork file:$DEV,nonblock,raw,echo=0,waitlock=/var/run/tty,b$BAUD
else
sleep 2
fi
done

und ausführbar machen mit

chmod +x start-temp.sh

Dann kann das Script mit ./start-temp.sh & im Hintergrund auf dem WR703N gestartet werden.

Nun kann von einem anderen Rechner mit
telnet ip-adresse 1234 die Ausgabe ausgegeben werden.

Will man das das Script autom. beim hochfahren des WR703N startet, muss es noch in der /etc.rc.local eingetragen werden (aber vor exit 0). Das geht auch über Luci:

Luci Startskripte
Luci Startskripte

Evl. muss der USB Port einmal reconnected werden.

Installieren der Bourne-again shell (bash) auf WR-TR703N anstatt der Almquist-Shell (ash)

Nach dem Installieren von OpenWrt ist die Almquist-Shell (ash) installiert. Da die ash im Vergleich zu anderen modernen Shells sehr geringe Ansprüche an Speichergröße und Rechnergeschwindigkeit stellt, wird sie in OpenWrt und anderen Embedded-Linux-Systemen verwendet.

Welche Shell aktiv ist kann mit

echo $SHELL

auf der Konsole angezeigt werden. Obwohl der Befehl ja nur den Inhalt der Variable SHELL ausgibt, und die muss ja nicht immer richtig gesetzt sein.
Es reicht auch ein
echo $0

welches dann
-bash
oder je nach Shell einen Wert ausgibt.

So nun wollen wir die bash installieren weil sie komfortabler und gebräuchlicher ist.
opkg update
opkg install bash

in /etc/passwd
in der ersten Zeile, der root Zeile die bash eintragen:
root:x:0:0:root:/root:/bin/bash

dann eine Datei .bash_profile anlegen mit folgenden Inhalt:

echo ". $HOME/.bashrc" > /root/.bash_profile

dann eine eigene .bashrc Datei mit den User-Einstellungen anlegen, oder diese verwenden:

wget -P /root/ http://wenzlaff.de/download/linux/.bashrc

Nach dem ausloggen und einloggen steht die bash zur Verfügung, was leicht mit

$ echo $SHELL
getestet werden kann, es wird dann ausgegeben:
/bin/bash

Wie kopiere ich nun vom Mac OS X Dateien auf den WR703N?

Das geht mit scp – Secure copy to copy files to/from a remote computer.

Zum Beispiel wenn im aktuellen Verzeichnis die Datei TWSerial.jar lieg und die in das Root Verzeichnis des WR703N kopiert werden soll.
Wobei der User: root und die IP des WR703: 192.168.2.122 ist (evl. noch anpassen):

scp TWSerial.jar root@192.168.2.122:/root

Das Ergebnis:
TWSerial.jar 100% 170KB 169.8KB/s 00:00

Weiter Infos zu scp:

usage: scp [-12346BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 ... [[user@]host2:]file2

Oder auf dem Mac Dateien vom WR703N kopieren, z.B. alle my*.gplot Dateien im lokalen Verzeichnis sichern:

scp root@192.168.2.122:/usr/src/fhem/www/gplot/my*.gplot .

Wie kann eine Java VM auf TP WR 703N installiert werden?

Über den Paketmanager jamvm installieren (jamvm_1.6.0-git-2_ar71xx.ipk).
Dazu ja* eingeben und suchen klicken. Anschließend das Paket installieren:

Gui von OpenWrt - Luci - Paketverwaltung
Gui von OpenWrt – Luci – Paketverwaltung

Anschließend testen ob die Version richtig installiert ist mit:
jamvm -version
es wird dann folgendes ausgebeben:

JamVM - Java VM - Ausgabe der Version mit: jamvm -version
JamVM – Java VM – Ausgabe der Version mit: jamvm -version

Wie kann die Java VM verwendet werden:
jamvm
ergibt folgendes:

Verwendung von jamvm - Java VM
Verwendung von jamvm – Java VM

Weiter tests folgen …

Startpunkt zu embeddet Java.

Vergleich zweier Temperatursensoren DS18B20 mit gnuplot

Eine kurze Messung mit zwei an das Arduino-Board angeschlossene Temp.-Sensoren DS18B20 ergibt diese Daten.

Daraus läßt sich mit diesen gnuplot Befehlen

set title "Temperaturverlauf"
set ylabel "Temperatur in Grad/Celsius"
set xlabel "Messzeitpunkt"
set xdata time # x-Achse wird im Datums/Zeitformat skaliert
set timefmt "%Y.%m.%d_%H:%M:%S" # Format Zeitangaben yyyy.mm.dd_hh:mm:ss
set format x "%H:%M" # Format für die Achsenbeschriftung
set yrange [26:28] # die y-Achse geht von:bis
set terminal png
set output "temperaturverlauf.png"
plot "temperatur.log" using 1:2 title "Innen Sensor" with lines, "" using 1:3 title "Aussen Sensor DS18B20" with lines

diese Grafik plotten:

gnuplot zweier Temperatursensoren
gnuplot zweier Temperatursensoren

Die Sensoren sind mit +-0,5 Grad Celsius bei -10 bis +85 Grad angegeben.
Die Differenz beider Werte ergibt mit diesen gnuplot Befehlen:

set title "Temperatur Differenz zweier Sensoren"
set ylabel "Temperatur Differenz in Grad/Celsius"
set xlabel "Messzeitpunkt"
set xdata time # x-Achse wird im Datums/Zeitformat skaliert
set timefmt "%Y.%m.%d_%H:%M:%S" # Format Zeitangaben yyyy.mm.dd_hh:mm:ss
set format x "%H:%M" # Format für die Achsenbeschriftung
set yrange [-1:1] # die y-Achse geht von:bis
set zeroaxis # die 0 Linie
set terminal png # erzeugt eine PNG Datei
set output "differenztemperaturverlauf.png" # Name der PNG Datei
plot "temperatur.log" using 1:($2-$3) title "Temperatur-Differenz" with lines
set terminal aqua # wieder auf Terminal
replot # nochmal in Terminal plotten

folgendes Ergebnis.

Differenz zweier Temperaturmessungen
Differenz zweier Temperaturmessungen

Mit welchem gnuplot Befehl bekomme ich eine horizontale Linie bei 0,5 und -0,5 Grad hin, die mit min und max Beschriftet ist? Ok, hier die Lösung.

Per Java über die Serielle-Schnittstelle auf den Arduino zugreifen mit dem Mac OS X 10.8.4

Wie kann nun über die Serielle-Schnittstelle per Java auf den Arduino mit dem Mac zugegriffen werden?

Wie in dieser Anleitung beschrieben vorgehen.

1. Auf den Arduino den „Hallo Welt“ Sketch laden.

void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println("Hello world");
delay(1000);
}

2. Den RXTX-Treiber in Version >= 2.2pre2 laden. Die 1.7 Version macht mit Mac OS X 10.8.4 Probleme, es kommt die Meldung, das der Port belegt ist.
3. Die zwei Dateien aus dem entpackten Archiv librxtxSerial.jnilib und RXTXcomm.jar in das /Library/Java/Extensions Verzeichnis kopieren
4. Die RXTXcomm.jar dem Classpath des Projektes hinzufügen.
5. Im Testprogramm den PORT_NAMES „/dev/tty.usbserial-A501U7KD“ entsprechend setzen. Im Arduino-IDO Menü Werkzeuge-Serieller-Port schauen, wie er genau heißt.
6. SerialTest starten. „Hello World“ wird auf den Konsole ausgegeben.
„Per Java über die Serielle-Schnittstelle auf den Arduino zugreifen mit dem Mac OS X 10.8.4“ weiterlesen

Arduino Software für Mac OS X installieren

So vorgehen, wie in der Arduino-Anleitung beschrieben.

1. Virtual Com Device Treiber 2.2.18 von FTDICHIP laden und wie in der Anleitung beschrieben installieren.
Für Mac OSX 10.8.3 und 10.8.4 ist es nötig die FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg zu installieren. Nun muss das Arduino Board an den USB-Port angeschlossen werden. Wird es nicht angeschlossen sind die installierten Treiber nicht im /dev Verzeichnis sichtbar.
Dann im Terminal im Verzeichnis /dev überprüfen ob die *usbserial* Treiber installiert wurden.

2. Entwicklungsumgebung downloaden und installieren. Starten.

3. Seriellen Port unter dem Menü: Tools – Serieller Port – /dev/cu.usbserial-A5001U7KD auswählen.

4. Beispiel auswählen und überprüfen und auf den Arduino uploaden.