Zum Inhalt

Kategorie: Hardware

TP-Link TL-WR810N stört Telekom EntertainTV (F104030)

Die Telekom hat es vor kurzem geschafft, endlich meinen Glasfaser/FTTH Anschluss zu schalten. An sich alles gut, nur EntertainTV funktionierte nicht ordentlich. Für ca. 10 Sekunden wird das gewählte Programm ordentlich angezeigt, dann fangen Bild und Ton an zu ruckeln, dann ist Ende und der Fehler F104030 wird angezeigt. Die Systemprüfung des MR400 meldet, die Verbindungsqualität wäre nicht ausreichend. Nach viel hin und her habe ich dann den Übeltäter in meinem Netzwerk identifiziert: TP-Link TL-WR810N. Das Gerät ist an sich sehr gut und hat mir bisher auch sehr zuverlässig mein WLAN im Haus erweitert, aber leider ist es nicht Multicast-fähig bzw. stört die EntertainTV Multicastsignale. Das hat sich nur beheben lassen, indem ich das Gerät aus dem Netzwerk entfernt habe und meinen Router (Speedport W 724V) und Switch (D-Link GO-SW-24G/E) rebootet habe. Seitdem funktioniert auch EntertainTV zuverlässig.

Update: Die technische Ursache scheint zu sein, dass die EntertainTV Signale via IGMPv3 verteilt werden. Es müssen also alle Netzwerkkomponenten dieses Protokoll unterstützen.

Alternative Lösung: Wenn es möglich ist, kann man den MR 400 auch direkt an den Speedport anschließen. Dann kommen die EntertainTV Signale erst gar nicht bei Geräten im Netzwerk an, die mit Multicast nicht umgehen können. Dann lassen sich auch diese betreiben.

Bluetooth Maus verliert die Verbindung

Meine Bluetooth Maus (ja, ich weiß, eine eher billige Version) verliert unregelmäßig die Verbindung zum Notebook. Neue Batterien und Treiber haben leider nix gebracht. Im Endeffekt lag es an den Energiespareinstellungen für die USB Anschlüsse, denn scheinbar ist der Bluetooth Empfänger im Notebook intern über USB angebunden, was wohl keine Besonderheit ist. Nachdem ich die Einstellungen für selektives Energiesparen für USB deaktiviert hatte, war auch das Problem verschwunden:

WLAN Reichweite erweitern

Wenn man einen zweiten WLAN Accesspoint oder auch WLAN Router ins bestehende Netzwerk hängt und einfach den Namen und das Passwort vom bereits aktiven WLAN übernimmt, kann man die Reichweite des WLANs sehr einfach vergrößern, ohne das man bei den Endgeräten (Notebook, Smartphone usw.) ein neues WLAN einrichten muss.

Überprüfen kann man das dann z.B. mit der App Wifi Analyzer.

Mein ursprüngliches WLAN ist das obere auf der Liste, das untere ist ein alter Netgear WLAN Router. Je nachdem, zu welchem der beiden der Empfang besser ist, verbindet sich das Smartphone passend. DHCP ist nur auf dem oberen Router aktiv, auf dem unteren deaktiviert, wie auch alle anderen „Zusatzfunktionen“.

N-135 WLAN auf 54 Mbit beschränkt

Mir ist aufgefallen, dass mein Notebook MSI GE60 (Intel Centrino Wireless-N 135) plötzlich nur noch mit konstant 54 Mbit mit dem WLAN verbunden ist. Die Ursache war eine falsche WLAN Konfiguration:

Nachdem ich die Einstellung „802.11n Kanalbreite für Band 2.4“ von 20 MHz auf Auto geändert habe, habe ich wieder eine 150 Mbit Verbindung zum WLAN:

Quelle: http://www.intel.com/support/wireless/sb/CS-030709.htm

Wenn es nicht daran liegt, könnte es auch eine Einstellung am WLAN Router/Access Point sein: Dort dürfen kein WEP und TKIP aktiv sein. Bei meinem TP-Link WDR3500 N600 sieht die Einstellung so aus:

SSD: Ruhezustand deaktivieren und Auslagerungsdatei verschieben? Sinnvoll?

In meinem MSI GE60 steckt ein SSD Laufwerk (Crucial m4 SSD 256GB) und wegen diversen Anleitungen und Hinweisen habe ich den Ruhezustand unter Windows 7 deaktiviert und auch die Auslagerungsdatei auf die normale Festplatte verschoben. Aber macht das überhaupt Sinn bzw. ist es wirklich ein so großes Risiko, beides auf der SSD zu nutzen? Scheinbar gibts auch gegenteilige Meinungen: Auslagerungsdatei auf SSD (c’t) und eine gute Erklärung aus dem PCGH Forum.

Ich habe nämlich das Problem, dass Windows nach dem Aufwachen aus dem Energiesparmodus/Standby ab und an keine Verbindung mehr zum WLAN herstellen kann, nach dem Ruhezustand tritt das Problem nicht auf.

FRITZ!Box 6320 Update auf FRITZ!OS 05.51

In der letzten Nacht ist tatsächlich von Unitymedia ein Update für die FRITZ!Box 6320 auf Version 05.51 verteilt worden:

Quelle: Facebook

Damit sollen nun u.a die WLAN Probleme behoben sein, wegen denen ich vor einiger Zeit noch einen TL-WR841ND als WLAN Accesspoint hinter die FRITZ!Box gehängt hatte. Ich werde das WLAN der FRITZ!Box 6320 jetzt also mal wieder ausprobieren und evtl. sind die Probleme ja wirklich beseitigt, und ich kann wieder auf den anderen WLAN Accesspoint verzichten. Aber mal abwarten…

Update vom 17.05.2013: Ich habe das WLAN der FRITZ!Box 6320 wieder deaktiviert und nutze lieber meinen TP-Link Accesspoint. Das Update der FRITZ!Box hat das WLAN zwar verbessert, aber es kann weiterhin nicht mit dem TL-WR841ND mithalten. Die Reichweite ist deutlich geringer und falls ein Upload/Download die Bandbreite auslastet, können andere Geräte im WLAN kaum noch Seiten aufrufen. Was allerdings nach dem Update auf 05.51 nicht mehr auftritt, sind die sporadischen WLAN Abbrüche. Jedenfalls bei meiner  FRITZ!Box.

Spindown bei Festplatten verhindern

In meinem Notebook MSI GE60 ist eine Western Digital WD10JPVT Blue als Festplatte verbaut, die leider das tolle Feature besitzt, bereits nach ca. 3 Sekunden einen Spindown durchzuführen. Wenn danach dann wieder auf die Festplatte zugegriffen wird, gibts eine kurze Verzögerung, die nicht wirklich lange dauert, aber bemerkbar ist und nervt. Vom Hersteller Western Digitial gibt es für das Problem leider keine Lösung bzw. ich habe keine gefunden.

Mit ein paar Zeilen Java läßt sich das Problem umgehen: Es werden alle x Sekunden ein paar Zeichen Text in eine Datei geschrieben, die nach x Durchläufen gelöscht und neu erstellt wird. Das kostet kaum Performance, sorgt aber für minimale Last auf der Festplatte.

package de.denniswilmsmann.preventspindown;

import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/*
 * $Log: $
 */

/**
 * <br/>Created: 18.04.2013
 * <br/>Author: Dennis Wilmsmann
 * <br/>Last committed $Date: $
 * @author  $Author: $
 * @version $Revision: $
 */
public class PreventSpindown {

    private static final String PREFIX = "preventspindown_";
    private static PreventSpinDownThread t;
    private static int secondsPerLine = 5;
    private static int linesPerFile = 10;
    private static TrayIcon icon;
    private static Image stopImage;
    private static Image runImage;
    private static String running = "Prevent Spindown - Running";
    private static String stopped = "Prevent Spindown - Stopped";

    /**
     * @param args String[]
     * @throws URISyntaxException
     * @throws IOException
     * @throws AWTException
     */
    public static void main(String[] args) throws URISyntaxException, IOException, AWTException {
        // check command line params
        if (args != null) {
            for (String arg : args) {
                if (arg.startsWith("secondsPerLine")) {
                    secondsPerLine = Integer.parseInt(arg.split("=")[1]);
                } else if (arg.startsWith("linesPerFile")) {
                    linesPerFile = Integer.parseInt(arg.split("=")[1]);
                }
            }
        }

        // at least 1 line per second and 1 line per file
        secondsPerLine = Math.max(1, secondsPerLine);
        linesPerFile = Math.max(1, linesPerFile);

        SystemTray tray = SystemTray.getSystemTray();
        Toolkit toolkit = Toolkit.getDefaultToolkit();

        stopImage = toolkit.getImage("drive.png");
        runImage = toolkit.getImage("drive-green.png");

        PopupMenu menu = new PopupMenu();

        MenuItem startItem = new MenuItem("Start");
        startItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (t == null || !t.isRunning()) {
                    t = new PreventSpinDownThread(secondsPerLine, linesPerFile);
                    t.start();
                    icon.setImage(runImage);
                    icon.setToolTip(running);
                }
            }
        });
        menu.add(startItem);

        MenuItem stopItem = new MenuItem("Stop");
        stopItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (t != null) {
                    t.setRunning(false);
                    icon.setImage(stopImage);
                    icon.setToolTip(stopped);
                }
            }
        });
        menu.add(stopItem);

        MenuItem closeItem = new MenuItem("Close");
        closeItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        menu.add(closeItem);
        icon = new TrayIcon(stopImage, stopped, menu);
        icon.setImageAutoSize(true);

        tray.add(icon);
    }

    public static class PreventSpinDownThread extends Thread {

        private final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HHmmss");
        private int secondsPerLine = 5;
        private int linesPerFile = 10;
        private boolean running = true;

        public void setRunning(boolean running) {
            this.running = running;
        }

        public PreventSpinDownThread(int secondsPerLine, int linesPerFile) {
            this.secondsPerLine = secondsPerLine;
            this.linesPerFile = linesPerFile;
        }

        @Override
        public void run() {
            // remove old files first
            File tmp = new File("");
            File folder = new File(tmp.getAbsolutePath());
            if (folder.isDirectory()) {
                for (File f : folder.listFiles()) {
                    if (f.getName().startsWith(PREFIX) && f.getName().contains("txt")) {
                        System.out.println("remove old file " + f.getAbsolutePath());
                        f.delete();
                    }

                }
            }

            System.out.println("write a new line each " + secondsPerLine + " seconds");
            System.out.println("write a new file each " + linesPerFile + " lines");

            int count = 0;
            File newTextFile = null;
            String filename = null;

            try {
                while (running) {
                    if (newTextFile == null) {
                        filename = PREFIX + df.format(new Date()) + ".txt";
                        newTextFile = new File(filename);
                        System.out.println("create new file " + newTextFile.getAbsolutePath());
                        newTextFile.deleteOnExit();
                    }
                    FileWriter fileWriter = new FileWriter(newTextFile, true);

                    String random = UUID.randomUUID().toString();
                    System.out.println(random);

                    fileWriter.write(random);
                    fileWriter.write("\n");
                    fileWriter.close();
                    count++;

                    icon.setToolTip(PreventSpindown.running + " " + count + "/" + linesPerFile + "\n" + filename);

                    Thread.sleep(1000 * secondsPerLine);

                    if (count >= linesPerFile) {
                        count = 0;
                        System.out.println("remove old file " + newTextFile.getAbsolutePath());
                        newTextFile.delete();
                        newTextFile = null;
                    }
                }
                // delete file after stop
                newTextFile.delete();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        public boolean isRunning() {
            return running;
        }
    }
}

Update vom 18.04.2013: Die Konsole wird per default nicht mehr angezeigt und dafür gibts ein kleines Icon im Systray, um per Rechtsklick zu starten bzw. zu stoppen.



psd3

Ich habe mal alles zusammen in ein ausführbares JAR File gepackt mit dazugehöriger start.bat Datei für Windows. Das sollte eigentlich auf jedem System laufen, auf dem Java 6 (oder aktueller) installiert ist: preventspindown.zip

Das ZIP File irgendwo entpacken und via start.bat starten. Wie oft eine neue Zeile geschrieben werden soll und wann eine neue Datei erstellt wird, wird über die Parameter secondsPerLine (default=5) und linesPerFile (default=10) gesteuert. Einfach nach den eigenen Wünschen in der start.bat anpassen.

Wenn in der start.bat wieder mit java.exe anstatt javaw.exe gestartet wird, erscheint auch wieder die Konsole:

preventspindown

MSI GE60: Turbo Taste immer aktiv

Falls die Turbo Taste beim MSI GE60 dauerhaft leuchtet, d.h. die NVIDIA GPU aktiv ist, abr gerade kein kein Spiel läuft, kann auch ein anderes Programm die Ursache mein. Bei mir war Steam. Es ist allerdings möglich, Programm dauert auf die integrierte Intel HD GPU festzulegen, nämlich via NVIDIA Systemsteuerung (Rechtsklick auf den Desktop):