Eigener Mapserver mit Openstreetmap, Mapnik und OpenLayers

Visits: 5421

Damit die Anfragen unserer Programme nicht immer die Openstreetmap-Server belasten, und ich damit mit besserem Gewissen auch ein paar Versuche durchführen konnte, habe ich mich mit Mapnik etwas auseinander gesetzt. Unter Switch2OSM gibt es schon Anleitungen, wie das umgesetzt werden kann, allerdings hatte ich die erst später gefunden. Und viele andere Informationen, die man so findet, sind falsch oder veraltet.

In dieser Anleitung finden Sie, wie Sie aus den Source-Dateien von mod_tile und vorkompilierten Paketen einen eigenen Tile-Renderer aufbauen können.

Zunächst die Vorbereitungen

Ubuntu 16.04 / 17.04

Alle benötigten Pakete sollten sich installieren lassen mit

$ sudo apt-get install libmapnik-dev mapnik-utils git subversion \
dh-autoreconf apache2-dev apache2 unzip postgis make cmake g++ \
libboost-dev libboost-system-dev libboost-filesystem-dev \
libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev \
lua5.2 liblua5.2-dev

Debian 8

Mapnik ist hier nur als Version 2.2 vorhanden. Da es dann Probleme mit Umlauten in der Karte geben kann, ist das keine valide Option. Daher müssen Pakete von Testing mit installiert werden. Da dies einiges im System auf neue Versionen updatet, ist diese Methode nicht für jeden empfehlenswert. Zum Testen kein Problem, aber auf Produktivsystemen ist die Gefahr, bestehende Funktionen zu zerstören, durchaus gegeben.

Also: Sie wurden gewarnt.

In /etc/apt/sources.list müssen die Testing-Quellen hinzu gefügt werden:

deb http://deb.debian.org/debian testing main contrib non-free

Und dann neu laden:

$ apt-get update

Mit dem Folgenden sollten sich alle benötigten Pakete installieren lassen:

$ apt-get install libmapnik3.0 libmapnik-dev mapnik-uitls subversion \ 
    unzip git dh-autoreconf apache2-dev apache2 cmake make cmake \ 
    g++ libboost-dev libboost-system-dev libboost-filesystem-dev \ 
    libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev lua5.2 \
    liblua5.2-dev postgresql postgis

Mapnik-Style

Als nächsten laden wir den Mapnik-Karten-Style:

$ mkdir ~/src
$ cd ~/src
$ svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style
$ cd ~/src/mapnik-style
$ sudo ./get-coastlines.sh /usr/local/share

im Verzeichnis ‘inc’ befinden sich Definitionen, die noch aus den Templates angepasst werden müssen:

$ cd inc
$ cp fontset-settings.xml.inc.template fontset-settings.xml.inc
$ cp datasource-settings.xml.inc.template datasource-settings.xml.inc
$ cp settings.xml.inc.template settings.xml.inc

Die settings.xml.inc wird geändert (wie auch in den Kommentaren beschrieben) in:

<!--
Settings for symbols, the spatial reference of your postgis tables, coastline s$
-->

<!-- use 'symbols' unless you have moved the symbols directory -->
<!ENTITY symbols "symbols">

<!-- use the '&srs900913;' entity if you have called osm2pgsql without special $
<!ENTITY osm2pgsql_projection "&srs900913;">

<!-- used for 'node in way' ST_DWithin spatial operations -->
<!-- Use 0.1 (meters) when your database is in 900913     -->
<!-- Use 0.000001 (degrees) when your database is in 4326 -->
<!ENTITY dwithin_900913 "0.1">
<!ENTITY dwithin_4326 "0.00001">
<!ENTITY dwithin_node_way "&dwithin_900913;">

<!-- use 'world_boundaries', which is the usual naming for the local folder the$
<!ENTITY world_boundaries "/usr/local/share/world_boundaries">

<!-- use 'planet_osm' unless you have customized your database table prefix usi$
<!ENTITY prefix "planet_osm">

datasource-settings.xml.inc:

<!--
Settings for your postgres setup.

Note: feel free to leave password, host, port, or use blank
-->

<Parameter name="type">postgis</Parameter>
<!-- <Parameter name="password">%(password)s</Parameter> -->
<!-- <Parameter name="host">%(host)s</Parameter> -->
<!-- <Parameter name="port">%(port)s</Parameter> -->
<!-- <Parameter name="user">%(user)s</Parameter> -->
<Parameter name="dbname">gis</Parameter>
<!-- this should be 'false' if you are manually providing the 'extent' -->
<Parameter name="estimate_extent">false</Parameter>
<!-- manually provided extent in epsg 900913 for whole globe -->
<!-- providing this speeds up Mapnik database queries -->
<Parameter name="extent">-20037508,-19929239,20037508,19929239</Parameter>

mod_tile und renderd

Der Teil, der dann die Karten-Tiles erzeugt und ausliefert, wird über mod_tile im Apache gesteuert. renderd wird nur dann angesprochen, wenn die entsprechende Kachel noch nicht erstellt worden war.
Alos müssen wir dann jetzt mod_tile und renderd von github holen und kompilieren:

$ cd ~/src
$ git clone git://github.com/openstreetmap/mod_tile.git
$ cd mod_tile
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$ sudo make install-mod_tile

Die Konfiguration für den Render-Daemon muss noch nach /etc/ geschrieben werden, damit der auch weiß, was er tun soll. In ~/src/mod_tile/ besteht schon eine renderd.conf, die allerdings angepasst werden muss:
Unter [mapnik]:

plugins_dir=/usr/lib/mapnik/3.0/input/

Unter [default]:

URI=<Pfad, unter dem die tiles geliefert werden sollen, default: /osm_tiles/>
HOST=<hostname>
XML=<Pfad zum Mapnik-Style>

Der XML-Pfad muss lesbar sein für den User, unter dem renderd laufen wird. In diesem Beispiel ist es der aktuelle Benutzer, der auch die mapnik-styles in seinem src-Verzeichnis hat. Also wäre es

XML=/home/<MeinBenutzer>/src/mapnik-style/osm.xml

Die so geänderte Datei muss dann nach /etc/renderd.conf kopiert werden:

$ sudo cp renderd.conf /etc/renderd.conf

Damit ist mod_tile und mapnik verfügbar. Damit der Apache das Modul auch läd ist in /etc/apache2/mods-available ein entsprechendes Load-Script notwendig:

$ sudo sh -c 'echo "LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so" > /etc/apache2/mods-available/tile.load'

Das Modul muss dann noch aktiviert werden:

$ sudo a2enmod tile

… und in der Website-Konfiguration konfigriert werden:

$ sudo nano /etc/apache2/sites-enabled/000-default.conf

unter ServerAdmin folgendes hinzu fügen:

LoadTileConfigFile /etc/renderd.conf
ModTileRenderdSocketName /var/run/renderd/renderd.sock
# Timeout before giving up for a tile to be rendered
ModTileRequestTimeout 3
# Timeout before giving up for a tile to be rendered that is otherwise missing
ModTileMissingRequestTimeout 30

Noch nicht den Apachen neu starten. Erst testen wir, ob die Konfiguration unseren Vorstellungen entspricht:

$ sudo apachectl -t

Die Ausgabe sollte lauten:

[Thu Apr 20 10:39:32.261241 2017] [tile:notice] [pid 10497:tid 139902994429824] Loading tile config default at /osm_tiles/ for zooms 0 - 20 from tile directory /var/lib/mod_tile with extension .png and mime type image/png
Syntax OK

Das Laufzeit-Verzeichnis für den renderd muss noch erstellt werden, und die Rechte dem Benutzer zugewiesen werden. Das gleiche auch für den tile-cache:

$ sudo mkdir /var/run/renderd /var/lib/mod_tile
$ sudo chown `whoami` /var/run/renderd /var/lib/mod_tile
$ sudo chmod 777 /var/run/renderd /var/lib/mod_tile

Importieren von Kartendaten

Damit auch sinnvolle Tiles erzeugt werden können, müssen Kartendaten vorhanden sein. Diese können aus verschiedenen Quellen bezogen werden. Geofabrik stellt netterweise Auszüge zur Verfügung. Um erstmal das Setup zu prüfen sollte nicht mit dem Import des World-Files begonnen werden, eine kleine Region reicht aus. Bremen z.B. hat im Moment 16.3 MB (zu finden unter http://download.geofabrik.de/europe/germany.html)

$ mkdir ~/osm && cd ~/osm
wget http://download.geofabrik.de/europe/germany/bremen-latest.osm.pbf

Und dann osm2pgsql zum Laufen kriegen:

Also besorgen wir uns das von github und kompilieren es:

$ cd ~/src
$ git clone git://github.com/openstreetmap/osm2pgsql.git
$ cd osm2pgsql
$ mkdir build && cd build
$ cmake ..
$ make -j3
$ sudo make install

Benutzer, Datenbank und Erweiterungen für Postgres müssen erstellt werden:

$ sudo -u postgres createuser `whoami`
$ sudo -u postgres createdb gis
$ sudo -u postgres psql -d gis -c 'CREATE EXTENSION postgis; CREATE EXTENSION hstore;'

Und dann importieren wir die Bremen-Daten, die wir vorher herunter geladen haben.

$ osm2pgsql --create --database gis ~/osm/bremen-latest.osm.pbf

Für diesen kleinen Datensatz reicht der Aufruf auf den meisten Rechnern, weitere Parameter (insbesondere -C und –flat-nodes) werden in der Dokumentation von osm2pgsql erklärt.

Und dann mal alles starten

Somit ist alles installiert, was wir brauchen, und wir können den Render-Daemon starten.

$ cd ~/src/mod_tile
$ ./renderd

Dann koppelt sich renderd von der startenden Shell ab und läuft im Hintergrund. Für Fehlersuche empfiehlt sich die Version mit Output:

$ ./renderd -f -c /etc/renderd.conf

Weiterhin muss der Webserver neu gestartet werden, damit die Konfiguration auch greift:

$ sudo systemctl restart apache2

Darstellung mit OpenLayers 4

Zum Abschluss noch ein einfaches Beispiel, wie die Ergebnisse dann auch im Browser angezeigt werden können. Dazu schreiben wir folgendes in eine Datei map.html:

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="https://openlayers.org/en/v4.1.0/css/ol.css" type="text/css">
    <style>
      .map { height: 95vh; width: 100%; }
    </style>
    <script src="https://openlayers.org/en/v4.1.0/build/ol.js" type="text/javascript"></script>
    <title>OpenLayers example</title>
  </head>
  <body>
    <div id="map" class="map"></div>
    <script type="text/javascript">
    var map = new ol.Map({
      target: 'map',
      layers: [
        new ol.layer.Tile({
            source: new ol.source.OSM({url: '/osm_tiles/{z}/{x}/{y}.png', maxZoom: 20})
        })
      ],
      view: new ol.View({
        center: ol.proj.fromLonLat([8, 53]),
        zoom: 8
      })
    });
    </script>
  </body>
</html>

Dann sollte unter http://mein.server/map.html eine Karte mit den Kartendaten von Bremen gerendert werden.

Openstreetmap Karte nur mit Bundesland Bremen

Beim ersten Aufruf kann das durchaus seine Zeit dauern, da die Kacheln noch alle erstellt werden müssen. Je nach Zoomstufe und erzeugendem Server ist eine Minute Bearbeitungszeit nicht ungewöhnlich. Je näher man rein zoomt, desto mehr Details müssen auch von der Datenbank abgefragt werden, daher variiert das Erstellen der Kacheln mit dem Zoomlevel.
Sind die Kartendaten einmal als Bild vorhanden, werden sie danach aus dem Cache geliefert (der steht in /var/lib/mod_tile, der Aufbau der Karte im Browser ist dann erheblich schneller.

Windows 10 Drucker und HTTP-Service

Visits: 1200

Manchmal frage ich mich schon, was in den Köpfen bei Microsoft so vor sich geht. Bei Windows 10 ist der Druckdienst mit dem HTTP-Service gekoppelt. Also: es läuft ein Webserver auf meinem Rechner, wenn ich überhaupt Drucken können möchte.

Einem Kunden hatte ich eine komplexe Webanwendung erstellt, die neben einem Richclient in HTML5 und Javascript auch eine Serverkomponente zur Aufbereitung von Daten beinhaltet. Entwickelt wurde alles unter Linux, der Kunde jedoch hostete das Projekt unter Windows. Da gab es dann einen sporadischen Fehler, der nicht auf meinem Linux-Server nachvollziehbar war. Entsprechend musste ich das Setup nachstellen, und einen Apachen auf meinem Entwicklungsrechner zum Laufen bringen. Nein, der Kunde hostet nicht unter Windows 10, dieser Entwicklungsrechner läuft aber damit.

Erstaunlicherweise meldete XAMPP, dass Port 80 schon von einem Dienst belegt sei, Apache daher nicht starten könne. Also auf einem Rechner, der bisher keinerlei Server-Funktion übernommen hatte. Da war schon von Microsoft ein HTTP-Service vorinstalliert. In meiner Welt ist es einfach so, dass Programme, die einen Rechner von außen erreich- und ggf. steuerbar machen, nur dann installiert und aktiviert werden dürfen, wenn sie absolut notwendig sind. Ist halt eine simple Sicherheitsüberlegung – je weniger Türen ein Haus hat, desto weniger potentielle Schwachstellen. Aber ich wollte ja vor allem Port 80 für meine Zwecke nutzen, also habe ich den Dienst deinstalliert.

Ich konnte mich noch daran erinnern, dass Windows sich dann beschwert hatte, dass irgendwas mit dem Drucker dann sei. Aber da ich diese Meldung in sich unsinnig fand, habe ich die einfach ignoriert. Von diesem Rechner aus muss ich auch selten Drucken. Gut, Neustart – bis ich mich einloggen konnte, dauerte es ewig. Es lief erstmal so, wie ich mir das vorgestellt hatte.

Kürzlich musste ich etwas von diesem Rechner aus drucken. Natürlich hatte ich überhaupt nicht mehr an diese dubiose Meldung gedacht. Aber obwohl ich in der Druckerliste alle mir bekannten Drucker stehen hatte, meldete der Acrobat Reader, dass ich keinen Drucker hätte. Dabei konnte ich ihn doch von meinem Schreibtisch aus sehen. Angeschaltet war er auch. Dann fiel mir ein, dass da doch irgendwas mit diesem HTTP-Service war.

Und ja, tatsächlich: per Standard benötigt die Druckerwarteschlange den HTTP-Service. Absolut unglaublich und unverständlich. Und – wie sich herausstellte – auch in dieser Absolutheit falsch. Nur steht in der Registry, dass der Druckdienst abhängig vom HTTP-Dienst ist. Und wenn der nicht installiert ist, kann da nichts starten. Aber man kann das in der Registry ändern, und dann braucht der Druckdienst den HTTP-Dienst nicht mehr, und funktioniert dennoch einwandfrei:

Unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler gibt es einen Eintrag “DependOnService“, in dem RPCSS und HTTP stehen. Entfernt man nun HTTP und startet den Rechner neu – bei mir hat es wieder ewig bis zum Einloggen gedauert – ist nun alles so, wie ich es eigentlich erwarte. Der Lokale Druckdienst funktioniert, ohne dass ein Webserver auf Port 80 ein unerwartetes Leben führt.

Es ist schon wirklich unverständlich.

Installation Force.com IDE

Visits: 307

Um die Entwicklungsumgebung für Salesforce zu installieren, muss man den Anleitungen bei developer.salesforce.com folgen. Wie leider üblich, erzählt diese Dokumentation nur die halbe Wahrheit. Zumindest bei meinen Versuchen hat es mit Eclipse 4.5 nicht funktioniert, es kam zu nicht-behebbaren Abhängigkeits-problemen.

Im Moment funktioniert es, wenn Eclipse Neon.2 (4.6.2) benutzt wird. Am einfachsten ist es, den Installer für Neon zu benutzen, da dann Eclipse IDE for Java Developers auswählen. Danach kann man der Dokumentation folgen, und es sollte funktionieren. Leider kommen ein paar der Pakete aus unsignierten Quellen, daher muss diese Installation nochmal extra bestätigt werden.

LG Hamburg und Links – was habt ihr denn geraucht?

Visits: 306

Das LG Hamburg hat entschieden, dass Links setzen eine extrem überzogene und unmögliche Verantwortung birgt. Ein Urheber eines Bildes wurde um seine Rechte gebracht, indem jemand sein Bild unter Misachtung der Lizenz veröffentlicht hat.

Schlimm genug, und der Veröffentlichende soll und mag zur Rechenschaft gezogen werden. Allerdings hat nun jemand anderes einen Link auf die Webseite desjenigen gesetzt, der wiederum das Urheberrecht verletzt hat. Nun möchte das LG Hamburg, dass der Link setzende für die Urheberrechtsverletzung zur Rechenschaft gezogen wird.

Es ist kein einfacher Fall, wo der Link auf offensichtlich rechtswidrige Inhalte zeigt, sondern auf Inhalte, die auf einen ersten, und auch zweiten Blick dem Recht nicht widersprechen. Erst auf genaues, sehr intensives Hinsehen wird klar, dass das Bild nicht im Einklang mit dem Willen des Urhebers veröffentlicht wurde. Das LG Hamburg allerdings sieht darin einen Verstoß, dass jemand auf dieses – erst nach intensiver Prüfung nicht korrekt veröffentlichte Bild einen Link setzt. Es fordert letzlich, dass jeder, der einen Link setzt, sich intensiv mit den Urheberrechten eines Inhalts auseinander setzt, den man nicht selbst zu verantworten hat.

Ich verstehe und begrüße durchaus, dass man mit dem Hinweis auf offenbar illegale Inhalte (halt nicht eigene) durchaus eine Verantwortung übernimmt. Nicht jedoch, wenn man per Link auf etwas verweist, was nicht allgemein gültig Rechtsnoren widerspricht. Das LG Hamburg jedoch postuliert, dass die Prüfungspflicht fremder Inhalte soweit geht, dass man sich letztlich von dem Anbieter rechtsverbindlich bestätigen lassen muss, dass der Inhalt, auf den man verlinkt, bar jeder Rechtsverletzung ist.

Das ist ein voller und sinnloser Angriff auf das gesamte Konzept des WWW. Ich garantiere, dass es auf Facebook Inhalte gibt, die dem deutschen Recht, insbesondere dem Urheberrecht widersprechen. Somit darf ich überhaupt nicht auf Facebook verlinken (was ich sowieso nicht tue, aber das hat ganz andere Gründe). Aber ich übernehme für einen Link auf eine Seite mit scheinbar nicht illegalen Inhalten dann also die Verantwortung für alle Rechtsverstöße, die möglicherweise auf dieser Seite erfolgen? Ist ein Link auf eine Wikipedia-Seite automatisch gleichbedeutend damit, dass ich mir alle potentiellen Urheberrechtsverstöße zu eigen mache?

Liebes LG Hamburg, ich frage hiermit höflich: was habt ihr denn da geraucht? Welcher Ego-Trip hat Euch dazu gebracht, die gesamte Funktionalität des World Wide Web unter das deutsche Urheberrecht zu stellen? Verursacher einer Urheberrechtsverletzung sind klar zu belangen, Helfer im Sinne von Links zu offensichtlichen Rechtsverstößen dürfen sich auch nicht mit Unwissenheit schützen, aber eine Prüfpflicht, die so manchen promovierten Anwalt vor unlösbare Probleme stellen können, dürfen schlicht nicht normalen Personen auferlegt werden.

Schämt euch!

Chrome und die Größe des Appcache

Visits: 304

Ein Kunde von mir hat eine größere Javascript-App, die prinzipiell offlinefähig ist. Da ich die Weiterentwicklung und den Support übernommen habe, hatte ich jetzt das Problem zu lösen, dass eine neue Version eben nicht korrekt offlinefähig war.
Beim Laden des Manifests gab es keine Beschwerden von Chrome, chrome://appcache-internals/ zeigte auch, dass es einen Eintrag gäbe. Sobald man aber die Netzverbindung trennt, um dann offline Chrome mit der App aufzurufen, gab es nur eine Fehlermeldung, dass keine Verbindung zum Server bestünde.

Nachdem ich geprüft hatte, dass alle referenzierten Dateien auch verfügbar sind, keine einzelne Datei zu groß ist (die größte war 4.9 MB), und auch der Code keine Probleme an der Stelle erzeugt, musste es die Gesamtgröße sein.
Leider gibt es zwar viele Informationen über Appcache, aber nichts darüber, wieviel Platz der einnehmen darf. In diesem Test wird geprüft, wieviel gespeichert werden kann, allerdings maximal 256 MB, außerdem wird nicht der Roundtrip getestet: was passiert, wenn nach dem Speichern der Browser geschlossen wird? Durch Rantasten hat sich dann gezeigt, dass es 256 MB sind. Dies stimmt für 4 Rechner, auf denen ich das ausprobiert habe. 262 MB sind auf jeden Fall zuviel.

Wirklich Testen ist auch ein größerer Aufwand, da zu große Appcache-Einträge offenbar erst beim Schließen von Chrome gelöscht werden.

Open Data NRW

Visits: 280

Das freut mich ja, dass es in NRW offene Daten gibt. Damit kann man dann z.B. Karten mit Recyclingstandorten in Bonn aufbauen, und so auf seinem Mobiltelefon nachsehen, wo man am nahesten sein Altglas los wird. Kann Zeit und Geld sparen.

Jetzt wohne ich aber nicht in Bonn, sondern in Königswinter, was wieder zum Rhein-Sieg-Kreis gehört. Da gibt es diese Daten aber nicht, und das, obwohl doch die Open-Data-Initiative der Bundesregierung schon 2010 ins Leben gerufen wurde.

Ich frage mich natürlich, ob der Rhein-Sieg-Kreis diese Informationen nicht hat (manchmal würde mich so etwas nicht wundern), oder ob es einfach zu aufwändig ist. Einiges ist auch in Bonn in Kooperation mit den Freiwilligen von Openstreetmap entstanden, und mindestens diese Art von Daten existiert schon in dem OSM-Karten.

Ich bin mal gespannt, ich habe gerade gefunden, dass die Linke und FUW-Piraten einen Antrag gestellt haben.

git – Synchronisieren von allen repos und branches

Visits: 274

Wenn ich das richtig sehe, dann sollte folgendes alle Repositories (und alle Branches) innerhalb eines Verzeichnisses aktuell halten. Ein wenig Output zum Prüfen wird mit erstellt. Dies ist nur, damit ich es selbst behalte. Außerdem dürfte es schon overkill sein.

for i in `ls`; do
    cd $i;
    pwd;
    git branch;
    echo "--------------";
    git branch -a;
    for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do
         git checkout ${branch##*/};
         git fetch --all;
         git pull --all;
    done;
    cd ..;
done

Atmel Mikrocontroller Programmieren mit Olimex AVR-ISP-MK2

Visits: 367

Ich wollte ein Projekt mit AVR Mikrocontrollern machen. Zum einen, weil ich glaube, dass das für mein aktuelles Problem eine gute Idee ist, zum anderen, weil ich mal einen µC programmieren wollte. Auf Mikrocontroller.net gibt es ein Tutorial, das am Ende der Hardwareeinführung schön schreibt, dass man erst weiter machen soll, wenn die IDE mit der Hardware spricht….

Dafür habe ich mir bei Pollin den Olimex AVR-ISP-MK2 Programmer gekauft. (Bei Pollin 34,95€ + 4,95€ Versand, bei Olimex direkt 19,95€ + 15,76€ Versand).
Mit dem Atmel Studio 7 unter Windows 7 wollte der zunächst nicht laufen, die Fehlermeldung war “Unable to connect to tool AVRISP mkII (000200212345)”. In dieser Diskussion habe ich zum Glück eine Lösung dafür gefunden: Zadig mit dem Treiber libusb-win32. Allerdings habe ich auch Meldungen gefunden, dass das nicht zuverlässig sei, mal sehen.

Alleine mit dem Umstellen des USB-Treibers hat es bei mir immer noch nicht funktioniert. Erst, als der Olimex Programmer direkt an einem USB-Port am Rechner hing, und nicht – wie vorher – an einem USB-Hub, konnte ich das erste Programm tatsächlich zum Laufen bekommen.

CnMemory: Support scheint nicht zu existieren

Visits: 294

Vor einigen Tagen hatte ich etwas Probleme mit CnMemory beschrieben. Leider sind die bis heute nicht behoben. Unter der Telefonnummer geht immer noch nur ein Band dran, meine inzwischen mehrfachen Mails wurden nur mit dem selben Autro-responder beantwortet, es scheint, als wenn Support zwar groß geschrieben wird, aber leider nicht gelebt wird.

Egal, was die mögliche Antwort von CnMemory oder I-Onik gewesen sein könnte, wenn ich bei Problemen gar keine Reaktion kriege, ist das ganz klar für mich das Zeichen, dass dieser Laden gar nichts taugt. Zum Glück sind es bei mir nur recht billige Teile gewesen, aber der Laden produziert auch etwas teurere Geräte. Wenn ich mir nur vorstelle, dass ich etwas Teures von CnMemory oder IOnik gekauft hätte, bei dem etwas nicht funktioniert, dann wird mir ganz schlecht. So vollkommen ohne Support, das halte ich für fahrlässig und extrem kundenfeindlich.

CnMemory Spaceloop externes USB 3.0 Festplattengehäuse – Revision 1.1

Visits: 465

Hier freute ich mich noch darüber, wie gut ich die Gehäuse finde, allerdings gilt das leider nicht mehr so ganz. Ich habe ein paar nach bestellt, und leider eine neue Variante erhalten. Diesmal kamen sie von Pollin auch nicht in einer Retailpackung, sondern in Plastiktüten, aber das nur am Rande.

CnMemory hat ein paar Sachen geändert, statt eines KTec-Netzteils gibt es jetzt eins von Asian Power Devices. Aber vor allem gibt es eine andere Platine, die Revision 1.1.

Der große Unterschied ist, dass die alte Version Festplatten mit einer Sektorengröße von 512 Byte meldete, die neue aber Sektorengrößen von 4096 Byte nimmt. Damit ist die gesamte Plattengeometrie durcheinander, und auf der Platte befindliche Daten sind nicht mehr lesbar. Schon die Partitionierungsdaten sind nicht lesbar. Damit ist die neue Revision nicht nur nicht kompatibel zu Platten, die mit der alten Version genutzt wurden, sondern insbesondere auch nicht mit Platten, die am internen Festplattencontroller eines PCs genutzt wurden.

Nur um auszuschließen, dass es sich um spezifische Probleme mit Treibern oder Festplatten handelt, habe ich verschiedene Kombinationen probiert. Windows 7 / 8.1, Linux auf PC und Raspberry Pi, Festplatten von Western Digital, Toshiba und Seagate, mit Größen von 160 GB bis 3 TB: immer das Gleiche.

 

Ich habe heute versucht, den “Technischen Support” zu erreichen. Auf der Webseite sind 2 Telefonnummern angegeben 01805 / 00251 sowie eine Festnetzdurchwahl. Die 01805-Nummer funktioniert nicht, kann sie auch nicht, da eine 01805-Nummer immer 6-stellig ist. Bei der Festnetzdurchwahl kommt sofort Musik, und nach längerer Zeit die Meldung, dass alle Serviceplätze belegt seien, ich solle es später versuchen, oder eine Email schreiben. Sechs (6!) mal habe ich es versucht… Ich glaube nicht daran, dass dort wirklich jemand erreichbar ist.

Auf meine Email kam eine automatische Antwort:
Betreff:
Abwesend: CnMemory Spaceloop USB 3.0 externes Festplattengehäuse
Inhalt:
Sehr geehrter Kunde,

Ihre E-Mail ist bei uns eingegangen und wird umgehend von uns bearbeitet.

Ich bin gespannt, wahrscheinlich muss ich die 3 Gehäuse als defekt zurück schicken.