Fedora 21@Asus UX305 – Was geht?

DSC_0060Das Asus Zenbook UX305 ist eines der neuen lüfterlosen Notebooks mit Intel Core M Prozessor. Das Display misst 13,3 Zoll und kommt als entspiegeltes IPS Panel, entweder mit Full HD Auflösung (1920 x 1080 Pixel) oder mit QHD+ Auflösung (3200 x 1800 Pixel). Die Preise beginnen bei 799 Euro für die Full HD und 899 Euro für die QHD+ Version (jeweils mit 128 GB SSD und 8 GB Arbeitsspeicher; für die 256 GB SSD bezahl man 100 Euro Aufpreis).

Hochauflösendes Display, schlankes Design mit einer “Dicke” von 12,3 mm, ein Gewicht von 1200g, eine echte SSD (mit 128 oder 256 GB) und mit dem Core M einen Prozessor, der im Gegensatz zum Intel Atom auch mal etwas anspruchsvollere Aufgaben erledigen kann.

Wie schlägt sich das neue Asus Zenbook UX305 (bei mir in der Version F mit FullHD-Display) unter GNU/Linux? Mit Fedora 21 von Haus aus ziemlich gut. Die Installation klappt über ein externes CD-Laufwerk mit UEFI und eingeschaltetem Secure Boot problemlos.
Auch Hardwaremäßig gibt es nichts zu meckern:

Hardware Geht?
CPU Throttling Ja
Tochpad TapToClick / 2finger-Scrolling Ja / Ja
Intel Wireless 7265 Wlan Ja
Intel Bluetooth Ja (F2-LED leuchtet sobald Bluetooth angeschaltet wurde)
Intel Audio Ja
SD-Card Reader Ja
Kamera Ja

Viele Sondertasten funktionieren auch auf Anhieb:

Funktion Geht?
F1 – Suspend Ja
F2 – Flugmodus Nein (LED der Taste leuchtet sobald Bluetooth angeschaltet wurde)
F5 – Bildschirm dunkler Nein
F6 – Bildschirm heller Nein
F7 – Bildschirm an/aus Ja
F8 – Externer Bildschirm nicht getestet
F9 – Touchpad an/aus Ja
F10 – Mute Ja
F11 – Ton leiser Ja
F12 – Ton lauter Ja
Fn-A – Autohelligkeit Nein

Zum Regeln der Bildschirmhelligkeit habe ich hier eine Alternative mit Script und Tastenbelegung beschrieben.

Zum Stromverbrauch

Suspend to RAM funktioniert normalerweise problemlos (nur einmal hatte ich eine gpu hanging error beim Aufwachen).
Der Akku des Asus UX305F hat eine Kapazität von 45 Wh. Im Suspend-Modus ging die Akkuladung in 10 Stunden um 0,5 Wh zurück.
Mit installiertem TLP liegt der von powertop angezeigte Verbrauch bei 1/3 Bildschirmhelligkeit und leichtem Surfen, Blog schreiben etc. bei 4-6 Watt (bei HTMl5-Videos 8+ Watt). Die Angaben zur gesamte Akkulaufzeit variieren (powertop bzw. Fedora) unter diesen Bedingungen zwischen 7 und 10 Stunden.

Designsünden

DSC_0061

  1. Das Asus Zenbook UX305F ist mit unter 13mm ziemlich flach, entspricht ansonsten aber den normalen Maßen eines 13zöllers (bzw. denen des MacBook Air 13). Daher ist es schade, das die linke Tastenspalte (Esc bis Strg) doch sehr schmal geraten ist – und das, obwohl links und rechts neben der Tastatur noch jeweils 2,3 cm Platz bis zum Gehäuserand sind.
  2. Da das Gerät so flach ist, schiebt sich das Display beim Aufklappen leicht unter das Gerät und hebt es an. Ergonomisch bringt die sehr leichte Schrägstellung der Tastatur nicht viel, aber der Abstand zum Tisch hilft dem lüfterlosen UX305 wahrscheinlich bei der passiven Kühlung. An sich wäre dieses Design kein Problem, wären da nicht die beiden 3 mm breiten „Plastiknasen“ am unteren Rand des Displays, die für mit für das Anheben zuständig sind (und damit der Aludeckel nicht auf dem Tisch kratzt). Leider sind die Nasen ziemlich hart, so dass beim Tippen und Verschieben das Asus UX305 auf weicheren Holzplatten sofort Schrammen und Einkerbungen hinterlässt.
  3. DSC_0062

  4. Platz im Inneren musste Asus scheinbar beim SD-Kartenslot sparen. Auf jeden Fall steht eine eingesteckte SD-Karte ganze 1,2 cm aus dem Gehäuse heraus.
  5. Leider hat es Asus nur geschafft, ein Micro-HDMI-Port zu verbauen und kein Mini-Displayport. Ob bspw. der Micro-HDMI auf VGA Adapter von Asus Tablets funktioniert konnte ich mangels Adapter (noch) nicht testen.
  6. Dem flachen Gehäuse und/oder dem Preis ist die Tastaturbeleuchtung zum Opfer gefallen. Na ja, finde ich nicht so schlimm. Dafür gibt es ein mattes FullHD-Display, ein lüfterloses Design, drei USB 3.0 Anschlüsse und ein Netzteil, das in der Abmessung in etwa dem des MacBook Air 11 entspricht. Leider verursacht das Netzteil bei mir kontinuierlich rasselnde Geräusche, wenn es an der Steckdose hängt.
  7. DSC_0063

  8. Wer nicht hauptsächlich mit TapToClick arbeitet, sollte sich den Kauf des Asus Zenbook UX305 gut überlegen, denn die Hardwaretasten des Touchpad klicken sehr laut.

Fedora 21@Asus UX305 – Backlight Brightness

Obwohl beim Asus Zenbook UX305 unter GNU/Linux mit Fedora 21 Workstation fast alles Out of the Box funktioniert, gilt das leider nicht für die Tasten, die eigentlich die Helligkeit des Displays regeln sollten. Als Alternative können wir mit einem kleinen Script und den Tastekombinationen Strg+F5 / Strg+F6 aushelfen. Das Script (bspw. backlight.sh; nicht vergessen mit chmod +x ausführbar machen) braucht folgenden Inhalt:

#!/bin/bash
brightness_state=$(cat /sys/class/backlight/intel_backlight/actual_brightness);
brightness_new=$brightness_state;
case "$1" in
        up)
        brightness_new=$(($brightness_state + 100));
        ;;
        down)
        brightness_new=$(($brightness_state - 100));
        ;;
esac

if [ "$brightness_new" -le "0" ]; then
        brightness_new = 0;

elif [ "$brightness_new" -ge "937" ]; then
        brightness_new = 937;
fi

echo $brightness_new > /sys/class/backlight/intel_backlight/brightness;

Über Einstellungen bzw. gnome-control-center / Tastatur können wir jetzt die Tastenkürzel für die Befehle „/VOLLER/PFAD/ZUR/DATEI/backlight.sh down“ bzw. „/VOLLER/PFAD/ZUR/DATEI/backlight.sh up“ mit Strg+F5 bzw. Strg+F6 verbinden.

Jetzt müssen wir noch dafür sorgen, dass nicht nur für root sondern auch für Otto-Normalnutzer die Datei „brightness“ bearbeitbar ist. Dafür erstellen wir zunächst die Datei „/etc/rc.d/rc.local“ (wieder mit chmod +x ausführbar machen) mit folgendem Inhalt:

#!/bin/bash
chmod 666 /sys/class/backlight/intel_backlight/brightness;

Dann mittels „systemctl start rc-local“ sicherstellen, dass die Datei auch abgearbeitet wird und den Status mit „systemctl status rc-local“ überprüfen.

re:oyd (14): Baikal@Raspberry Pi an Speedport W 724V

matriochkaAdressen und Termine zuhause auf dem eigenen Server speichern und mit Notebook und Smartphone abgleichen? Nichts leichter als das, mit einem Raspberry Pi und dem CardDAV / CalDAV Server Baikal.

Zur Vorbereitung muss zunächst der Webserver nginx, die Scriptsprache php und sqlite als Datenbank installiert werden.

sudo apt-get install nginx php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd sqlite php5-sqlite

Bevor wir den Webserver starten, sind noch zwei Einstellungen anzupassen, damit er auf dem nicht ganz so potenten Raspberry Pi auch anständig läuft: in der Daten „/etc/nginx/nginx.conf“ muss die Zahl der „worker_processes“ von 4 auf 1 und die der „worker_connections“ von 768 auf 128 reduziert werden.
Damit wir später unsere wertvollen Daten nicht ungesichert durchs Netz schicken, sollte die Datenübermittlung mittels SSL gesichert werden. Dafür erzeugen wir uns zunächst ein eigenes Zertifikat mit entsprechendem Schlüssel.

sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
sudo openssl genrsa -out baikal.key 4096
sudo openssl req -new -sha256 -key baikal.key -out baikal.csr

Jetzt signieren wir das Zertifikat noch selber (daher moniert der Browser später auch unser Zertifikat, weil es nicht von einer „vertrauenswürdigen“ Institution signiert wurde). Bei den Abfragen braucht nur bei „Country Name“ „DE“ für Deutschland und bei „Common Name“ die verwendete Dynamische DNS (DynDNS) (damit trotz wechselnder IP durch den Internetanbieter unser Server auch von außen erreichbar ist) wie etwa „abc.selfhost.xy“ angegeben werden.

sudo openssl x509 -req -sha256 -days 3650 -in baikal.csr -signkey baikal.key -out baikal.crt

Jetzt geht es daran, nginx richtig einzustellen, damit der Webserver unser Zertifikat kennt, die Verbindung immer verschlüsselt hergestellt und php genutzt wird. Dazu passen wir die Datei „/etc/nginx/sites-available/default“ an:

server { 
    listen 80; 
    listen [::]:80 ipv6only=on; # für den Fall, dass ihr schon ipv6 benutzt
    server_name abc.selfhost.xy; # alternativ kann zum Test auch die lokal IP 192.168.2.X genutzt werden
    rewrite ^ https://$server_name$request_uri? permanent; # immer https verwenden 
}
 
server {
    listen 443 ssl; 
    listen [::]:443 ssl ipv6only=on; # für den Fall, dass ihr schon ipv6 benutzt
    server_name abc.selfhost.xy; # alternativ kann zum Test auch die lokal IP 192.168.2.X genutzt werden
    ssl_certificate /etc/nginx/ssl/baikal.crt;  # unsere Zertifikat benutzen
    ssl_certificate_key /etc/nginx/ssl/baikal.key; # unseren Schlüssel benutzen

        root /usr/share/nginx/www;
        index index.html index.htm index.php;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                allow ::1;
                deny all;
        }

    location ~ ^(.+.php)(.*)$ { # damit PHP richtig genutzt wird
        try_files $fastcgi_script_name =404;
        fastcgi_split_path_info  ^(.+.php)(.*)$;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        include        /etc/nginx/fastcgi_params;
    }

    rewrite ^/.well-known/caldav /baikal/cal.php redirect;
    rewrite ^/.well-known/carddav /baikal/card.php redirect;

    charset utf-8;

    location ~ /(.ht|Core|Specific) {
        deny all;
        return 404;
    }
}

Damit unsere Änderungen auch angenommen werden, starten wir alles neu:

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php5-fpm restart

Als nächstes bereiten wir die Installation von Baikal vor (die aktuelle Fassung des „Flat package“ findet ihr unter http://baikal-server.com.

cd /usr/share/nginx/www
sudo wget http://baikal-server.com/get/baikal-flat-0.2.7.zip
sudo unzip baikal-flat-*.zip
sudo rm baikal-flat-*.zip
sudo mv baikal-flat/ baikal/
sudo chown -R www-data:www-data baikal/
sudo find baikal/ -type d -exec chmod 755 {} ;
cd baikal
sudo touch Specific/ENABLE_INSTALL
sudo chmod 755 Specific/
sudo chmod 755 Specific/db/
sudo chmod 755 Specific/db/db.sqlite

Damit unser Server auch von außen erreichbar ist, muss das Speedport W 724V entsprechend eingerichtet werden. Unter dem Punkt „Internet“ muss unter der Rubrik „Dynamisches DNS“ „Dynamisches DNS verwenden“ angehakt und die entsprechenden Zugangsdaten eingetragen werden. Anschließend muss unter der Rubrik „Portfreischaltung“ die TCP Port-Weiterleitung für 443-443 443-443 sowie 80-80 80-80 auf die IP (oder den vorher vergebenen Gerätenamen) des Raspberry Pi eingestellt werden.
Leider gibt es jetzt beim Speedport W 724V ein Problem: er kann kein NAT Loopback / Hairpin-NAT. Daher ist aus dem lokal Netzwerk unser Raspberry nicht über seine Dynamische DNS erreichbar, sondern nur über seine lokale IP. Für CalDAV und CardDAV, die sich ja wohl sowohl zuhause als auch von unterwegs synchronisieren sollen, ist das ein unhaltbarer Zustand. Eine einfache Lösung gibt es leider nicht. Da der Raspberry Pi aber ja sowieso immer läuft, gibt es einen Ausweg: wir nutzten diesen statt des Speedport als DNS-Server.
Dafür installieren wir DNS / DHCP Server dnsmasq:

sudo apt-get install dnsmasq

und passen anschließend die Datei „/etc/hosts“ folgendermaßen an:

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
192.168.2.X   abc.selfhost.xy

Jetzt noch sicherstellen, dass zunächst die hosts dabei und danach der DNS-Server des Speedport abgefragt wird, indem wir die Datei „/etc/resolv.conf“ wie folgt anpassen:

nameserver 127.0.0.1
domain Speedport_W_724V_01011602_00_001
search Speedport_W_724V_01011602_00_001
nameserver 192.168.2.1

Danach dnsmasq neu starten:

sudo /etc/init.d/dnsmasq restart

Damit jetzt auch der Raspberry Pi als DNS-Server genutzt wird, gibt es zwei Möglichkeiten: 1. ihn gleich mit dnsmasq auch als DHCP-Server betreiben oder 2. bei den Geräten, die auf Baikal zugreifen sollen die IP des Raspberry Pi unter den Netzwerkeinstellungen händisch als DNS-Server eintragen. Da ich die zweite Option nutze, gibt es für 1. hier leider keine Anleitung.
Um Baikal nutzen zu können, braucht der CalDAV / CardDAV Server jetzt nur noch unter „https://abc.selfhost.xy/baikal/admin/install/“ installiert werden.
Nach Installation und der Einrichtung der Benutzer, Kalender und Telefonbücher können diese in den entsprechenden Programmen genutzt werden:

CalDAV (allgemein): https://abc.selfhost.xy/baikal/cal.php/calendars/BENUTZER/KALENDER/
CalDAV (für iOS/OS X): https://abc.selfhost.xy/baikal/cal.php/principals/BENUTZER/
CardDAV (allgemein): https://abc.selfhost.xy/baikal/card.php/addressbooks/BENUTZER/TELEFONBUCH/
CarDAV (für iOS/OS X): https://abc.selfhost.xy/baikal/card.php/principals/BENUTZER/

UPDATE zu Baikal 0.4.5

Da Baikal jetzt auf dav.php statt cal.php / card.php setzt und die Hauptdateien nicht mehr in baikal sondern baikal/html/ liegen, sind folgende Änderungen notwendig:

Geänderte rewrite Rules:

rewrite ^/.well-known/caldav /baikal/html/dav.php redirect;
rewrite ^/.well-known/carddav /baikal/html/dav.php redirect;

CalDav/CardDav (für iOS/OS X):

https://abc.selfhost.xy/baikal/html/dav.php/principals/BENUTZER/

Weiterführende Links und Dank an:
Jan Karres
Andrew Oberstar
ruhezustand.net