Einträge zu Tag: Hardware

Displayport schaltet sich aus aber nichtmehr ein

Erstellt: 15.01.2016 08:58

Der Displayport ist teils ein wenig leidig. Wird der Monitor ausgeschaltet oder ausgesteckt, aktiviert sich der Port nichtmehr. Der Bildschirm bleibt schwarz weil die Grafikkarte kein Signal mehr liefert.

Dagegen gibt es zwei Lösungen, entweder man benutzt (z.B. und sofern möglich) einen Displayport-zu-HDMI-Adapter oder man weckt den Port mit xrandr wieder auf.

Ersteres unterdrückt das vom Displayport genutzte Datenformat welches das Problem verursacht und zwingt die Grafikkarte HDMI-Signale zu senden.
(Sollte diese Erklärung falsch sein, macht mich darauf aufmerksam. ;) )

Nun zur Softwarelösung. Ist der Bildschirm schon dunkel, ist es möglich per SSH mit xrandr das Signal wieder einzuschalten:

$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1200, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
DP2 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
   1920x1200     59.95*+
   1920x1080     60.00 
[...]
DP3 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Auf dem Problemrechner über SSH die DISPLAY-Variable setzen um den Screen zu definieren und mit xrandr den Bildschirm in Standardauflösung aktivieren:

$ ssh user@dunklerrechner

$ export DISPLAY=:0
$ xrandr --output DP2 --auto

Das Ganze geht aber auch von selbst:

...automagisiert mit udev!

Zuerst wird über udevadm ausgelesen was für Events - zum Beispiel beim Ein- und Ausschalten des Monitors - generiert werden:

$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[71528.979723] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV  [71529.116551] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
KERNEL[71531.400604] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV  [71531.598893] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)

Mit den ausgelesenen Event-Parametern (card0, drm, change) kann nun ein udev-Rules-File (/etc/udev/rules.d/70-dp-repair.rules) erstellt werden.

/usr/local/bin/dp-repair.sh ist hierbei das Script welches ausgeführt wird, wenn dieses Event eintritt. "user" sollte gegen den eigenen User ersetzt werden:

# /etc/udev/rules.d/70-dp-repair.rules
KERNEL=="card0", SUBSYSTEM=="drm", ACTION=="change", RUN+="/bin/su user -c /usr/local/bin/dp-repair.sh"

Hier noch das Beispielscript /usr/local/bin/dp-repair.sh. Es grept nach conntecteten Ports und aktiviert diese mit der Standardauflösung. Je nach Setup muss man dieses doch sehr simple Script noch den Bedürfnissen anpassen:

#!/bin/bash
# /usr/local/bin/dp-repair.sh
export DISPLAY=:0
for DPPORTS in $(xrandr | grep " connected " | awk '{ print$1 }'); do
        /usr/bin/xrandr --output $DPPORTS --auto
done;

Ausführbar machen:

# chmod +x /usr/local/bin/dp-repair.sh

Ein komplexeres Script zur Monitorsteuerung gibts unter: https://github.com/geyslan/xrasengan

Nun schaltet udev den Displayport automatisch wieder ein.



Tagged: Debian Hardware Linux ssh udev X11

Kommentar verfassen | Nach oben

Debian-Grundsystem auf CF-Karte installieren

Erstellt: 02.01.2016 13:05

Auf Embedded-Boards wie der Alix, kann ein Betriebssystem meistens nicht direkt installiert werden.
Deshalb installiere ich in diesem Beispiel von einem Debian-Hostsystem mit debootstrap ein bootbares Debian-Grundsystem auf eine CF-Karte.

Hierbei handelt es sich noch nicht um eine optimierte Konfiguration sondern um einen allgemeinen Leitfaden.


In diesem Beispiel wird angenommen, dass die CF-Karte auf dem Hostsystem /dev/sdc ist. Mit dmesg kann man sich informieren, welches Laufwerk zuletzt eingesteckt wurde.

Auf dem Hostsystem werden zuerst parted zum partitionieren, debootstrap für die Installation des Grundsystems und makedev zum initialisieren des /dev auf der CF-Karte installiert:

# aptitude install parted debootstrap makedev

Nun wird die CF-Karte vorbereitet. Dafür werden zuerst vorhandene Partitionen gelöscht, wie die FAT32-Partition(-en), die beim Kauf der Karte meistens vorhanden sind. parted ist ein einfaches Werkzeug dafür. "p" zeigt an, was sich auf der Karte befindet. "?" gibt eine Befehlsübersicht und mit "q" verlässt man parted wieder.

# parted /dev/sdc
(parted) p                                                               
Model: Generic- Compact Flash (scsi)
Disk /dev/sdc: 16.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      4162kB  16.0GB  16.0GB  primary  fat32        boot, lba

(parted) rm 1 # Löscht die Partition Nummer eins

Jetzt kann eine eigene Partitionierung geschrieben werden. Um es einfach zu halten, werden hier nur zwei Partitionen erstellt, eine für das System (8192MiB) und eine für Swap (128MiB). Der Platz dahinter wird freigelassen.

(parted) mklabel msdos
Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes                                                  
(parted) unit MiB
(parted) mkpart primary 0% 8192
(parted) mkpart primary 8192 8320
(parted) set 1 boot on
(parted) p                                                               
Model: Generic- Compact Flash (scsi)
Disk /dev/sdc: 15248MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start    End      Size     Type     File system  Flags
 1      1.00MiB  8192MiB  8191MiB  primary               boot, lba
 2      8192MiB  8320MiB  128MiB   primary               lba
(parted) q

...und /dev/sdc1 mit ext4 sowie /dev/sdc2 mit als swap formatieren:

# mkfs.ext4 /dev/sdc1
# mkswap /dev/sdc2

Ein Verzeichnis zum Mounten der CF-Karte erstellen und diese mounten:

# mkdir /mnt/cfcard
# mount /dev/sdc1 /mnt/cfcard/

Nun kann das Grundsystem installiert werden, debootstrap werden dabei die Architektur (bei der Alix i386), die Distribution (jessie), das Verzeichnis der gemounteten CF-Karte (jessie) und ein Spiegelserver von Debian mitgegeben, hier wäre das der Spiegel vom Schweizer Institut Switch (http://mirror.switch.ch/ftp/mirror/debian/).
Das ganze dauert nun eine Weile, bis am Ende die Meldung über den Abschluss der Installation kommt.

# debootstrap --arch i386 jessie /mnt/cfcard http://mirror.switch.ch/ftp/mirror/debian/
[...]
I: Base system installed successfully.

Eine initiale Struktur im /dev der CF-KArte wird angelegt.

# cd /mnt/cfcard/dev
# MAKEDEV generic

Nun werden die System-Mountpunkte hinzugefügt und das chroot betreten

# mount -t proc proc /mnt/cfcard/proc/
# mount -o bind /dev /mnt/cfcard/dev/
# mount -t sysfs sys /mnt/cfcard/sys/
# chroot /mnt/cfcard /bin/bash

Am besten installiert man nun den Lieblingseditor.

# apt-get install vim

Als nächstes müssen die beiden zu Anfangs erstellen Partitionen nach /etc/fstab eingetragen werden, damit diese beim Booten gemounted werden können

Die dafür nötige UUID erfährt man mit blkid, da die CF-Karte immernoch auf /dev/sdc ist, kann direkt danach gegrept werden:

# blkid | grep sdc
/dev/sdc1: UUID="5a63a141-ac3a-4e8e-a11f-3bc37a8895e7" TYPE="ext4" PARTUUID="2d4512a0-01"
/dev/sdc2: UUID="59bec5fd-811b-436f-b629-9cd6555e150e" TYPE="swap" PARTUUID="2d4512a0-02"

Diese Werte trägt man anschliessend mit dem zuvor installierten Editor nach /etc/fstab ein, zusammen mit den restlichen Parametern:

# /etc/fstab
UUID=5a63a141-ac3a-4e8e-a11f-3bc37a8895e7 / ext4 noatime,errors=remount-ro       0       1
UUID=59bec5fd-811b-436f-b629-9cd6555e150e none swap sw 0 0
tmpfs /tmp tmpfs defaults,noatime 0 0

Eine /etc/hostname und eine /etc/hostname mit dem Hostnamen des Systems werden ebenfalls erstellt oder ergänzt (diese wurden vom Hostsystem übernommen):

# /etc/hosts
127.0.0.1       localhost meinsystem meinsystem.xig.lan
::1             localhost ip6-localhost ip6-loopback meinsystem meinsystem.xig.lan
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

# /etc/hostname
meinsystem

Ebenfalls erstellt und konfiguriert werden sollte /etc/resolv.conf (auch diese wurde vom Hostsystem übernommen und kann so gelassen werden wie sie ist, falls das Gewünschte drinn steht)

# /etc/resolv.conf
nameserver 172.20.1.1
search xig.lan

Damit das Gerät auch über das Netzwerk erreichbar ist, braucht es eine anfängliche Netzwerkkonfiguration in /etc/network/interfaces. Die Alix hat zwei Ethernet-Schnittstellen, für den Anfang konfiguriere ich diese mit DHCP, je nach Vorliebe können auch feste IPs vergeben werden, dies lasse ich hier allerdings aus.

# /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

# The primary network interface
allow-hotplug eth1
iface eth1 inet dhcp
# This is an autoconfigured IPv6 interface
iface eth1 inet6 auto

Damit nach dem ersten Booten Pakete installiert werden können, braucht es in /etc/apt/sources.list für Debian Jessie folgende Einträge:

# /etc/apt/sources.list
deb http://mirror.switch.ch/ftp/mirror/debian/ jessie main non-free contrib
deb-src http://mirror.switch.ch/ftp/mirror/debian/ jessie main non-free contrib

deb http://mirror.switch.ch/ftp/mirror/debian/ jessie-updates main
deb-src http://mirror.switch.ch/ftp/mirror/debian/ jessie-updates main

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

Der erste Eintrag (deb http://mirror.switch.ch/ftp/mirror/debian jessie main) sollte schon vorhanden sein durch debootstrap, je nach Geschmack wird noch mit "non-free contrib" gewürzt, damit nicht-freie Paketquellen mit einbezogen werden.

Jetzt werden noch locales und die Zeitzone konfiguriert:

# apt-get install locales
# dpkg-reconfigure locales
# dpkg-reconfigure tzdata

Wird am System eine Tastatur angeschlossen sein, konfiguriert man noch diese:

# apt-get install console-setup
# dpkg-reconfigure keyboard-configuration

(An dieser Stelle könnte jetzt noch die Serielle Schnittstelle konfiguriert werden, da der Artikel aber schon ziemlich lang ist und man über SSH zugreifen kann, lasse ich dies aus.)

Jetzt braucht das System natürlich noch einen Kernel. Vorhande Kernel auflisten:

# apt-cache search linux-image
linux-image-3.16.0-4-586 - Linux 3.16 for older PCs
linux-image-3.16.0-4-686-pae - Linux 3.16 for modern PCs
linux-image-3.16.0-4-686-pae-dbg - Debugging symbols for Linux 3.16.0-4-686-pae
linux-image-3.16.0-4-amd64 - Linux 3.16 for 64-bit PCs
linux-image-486 - Linux for older PCs (dummy package)
linux-image-586 - Linux for older PCs (meta-package)
linux-image-686-pae - Linux for modern PCs (meta-package)
linux-image-686-pae-dbg - Debugging symbols for Linux 686-pae configuration (meta-package)
linux-image-amd64 - Linux for 64-bit PCs (meta-package)

Die Meta-Pakete zeigen immer auf den jeweils aktuellsten Kernel, deshalb empfielt es sich, sich für einen von diesen zu entscheiden. Für die alte Alix ist linux-image-586 das Richtige:

# apt-get install linux-image-586

Ohne Bootloader geht garnichts, auch dieser muss installiert und auf die CF-Karte (immernoch /dev/sdc) installiert werden:

# apt-get install grub-pc
# grub-install /dev/sdc
# update-grub

Damit per SSH zugegriffen werden kann, braucht es auch noch einen SSH-Server, das Meta-Paket ssh installiert Server und Client.

# apt-get install ssh

root-Passwort setzen:

# passwd

User anlegen (für den SSH-Login):

# adduser user

Aufräumen:

# apt-get clean

Chroot verlassen und die CF-Karte unmounten:

# exit
# cd
# umount /mnt/cfcard/dev
# umount /mnt/cfcard/sys
# umount /mnt/cfcard/proc
# umount /mnt/cfcard

Nun kann die CF-Karte in das System (z.B. die Alix) eingesetzt, das System mit dem Netzwerk verbunden und gebootet werden.

Sollte man wie oben DHCP konfiguriert haben, findet man das System relativ leicht mit nmap, das Netz muss natürlich auf das Eigene angepasst werden:

# nmap -sP 172.20.1.00/24
Nmap scan report for 172.20.1.188
Host is up (-0.10s latency).
MAC Address: 00:0D:B9:15:E6:C9 (PC Engines GmbH)

(Alternativ schaut man im Log des DHCP-Servers ;) )

Nun kann mit dem zuvor angelegten User auf das frische System eingelogt werden:

$ ssh user@172.20.1.188

 



Tagged: Alix Debian Grub Hardware Linux

Kommentar verfassen | Nach oben

Drucker (Lexmark E450dn) druckt mit Firefox Fehlermeldungen

Erstellt: 17.06.2012 12:01

Eines schönes morgens, der Tag war sonnig und ich wollte Totbaumdokumente erstellen,
entschied sich mein Drucker statt der Wegbeschreibung nurnoch folgendes zu drucken:

ERROR:
configurationerror
OFFENDING COMMAND:
setpagedevice
STACK:
--nostringvarl--
false
792
612
0
0
792
612
--nostringval--
5

Was diese Felermeldung genau aussagt kann ich nicht sagen (Eventuell hat jemand eine Beschreibung?).
Da ich von anderen Quellen aus drucken konnte verdächtigte ich allerdings Firefox selbst.

Jedelfalls stiess ich auf diese Lösung welche mir mit folgendem half:

1. about:config öffnen.
2. print.print_printer mit einem Rechtsklick resetten.
3. Wenn es nicht hilft auch alle print.printer-Variablen resetten.

Danach konnte ich wieder problemlos drucken.



Tagged: Browser Firefox Hardware Software

Kommentar verfassen | Nach oben

Asus eeePC 901, Webcam

Erstellt: 06.10.2008 00:15

Die Webcam im Asus eee 901 PC ist eine USB Video Class (UVC). Auf dem
Debian-Wiki gäbe es eigentlich eine schöne kleine Anleitung wie man diese Kamera zum laufen bringen würde. Leider gibt es das Paket linux-uvc-source aktuell nicht (mehr) in den Apt-Sourcen von Lenny.

Deshalb musste ich mir anders helfen. Die Headerdateien des Kernels für den Treiber waren schon heruntergeladen von den Apt-Sourcen.

Nun ist es nicht viel komplizierter das Modul (uvcvideo) zu bauen als auf dem normalen Debian-Weg.

Zuerst holt man sich Subversion (falls man es nicht schon hat):

# apt-get install subversion

Ist das installiert, wechselt man ins Sourcen-Verzeichnis und lädt die Sourcen runter:

# cd /usr/src

# svn co svn://svn.berlios.de/linux-uvc/linux-uvc/trunk linux-uvc

In das neue Verzeichnis wechseln und installieren:

# cd linux-uvc

# make

# make install

Das wars eigentlich schon.

Ein Tool um die Kamera nun zu testen ist zum Beispiel luvcview:

# apt-get install luvcview

Starten:

$ luvcview

Fertig sich freut



Tagged: Debian Etch Hardware

1 Kommentar | Nach oben

Thinkpad mit Intel Graphikkarte - VGA-Ausgang ein-, und ausschalten (mit Fn+7)

Erstellt: 10.09.2008 22:02

Der VGA-Ausgang lässt sich bei Intel-Graphikkarten über das Tool "i810switch" steuern. Diese Steuerung lässt sich über die Funktionstasten automatisieren.
Zuerst i810switch installieren:

# apt-get install i810switch

Funktioniert auch mit anderen Intel-Graphikkarten als mit der 810er. Ich Habe die 950GMA.

Ein-, und auschalten geht ganz einfach:

$ i810switch crt on
Enabling CRT display...

$ i810switch crt off
Disabling CRT display...

Ohne Parameter wird der Status der Schnittstelle angezeigt:

$ i810switch
CRT: off
LCD: off

Um das zu automatisieren habe ich ein kleines Script geschrieben. Es liest mit xrandr aus ob ein Monitor angeschlossen ist. Deshalb sollte man sich dafür per apt-get noch "xrandr" installieren.

Dieses Script kontrolliert nun beim aufrufen ob ein Monitor angeschlossen ist und schaltet dann die VGA-Schnittstelle ein, bzw. aus. Ist kein Monitor angeschlossen, wird überprüft ob die Schnittstelle aktiv ist. Falls sie aktiv sein sollte, wird sie ausgeschalten.

Ich habe die Datei "switch-monitor" genannt.

#!/bin/bash
# Filename: /usr/local/sbin/switch-monitor
# Schaltet Schnittstelle fuer externen Monitor an und aus
# Ist nichts angeschlossen, wird die Schnittstelle deaktiviert
# Benoetigt: xrandr, i810switch
# Aufgerufen durch:
# /etc/acpi/events/ibm-videobtn

monistate=`/usr/bin/i810switch | head -n1 | tail -n1 | cut -f 2 -d " "`

isit=`xrandr | head -n2 | tail -n1 | cut -f 2 -d " "`

if [ $isit = "disconnected" ]
then
echo "VGA disconnected"
if [ $monistate = "on" ]
then
i810switch crt off
fi
else
if [ $monistate = "off" ]
then
i810switch crt on
else
i810switch crt off
fi
fi

Die Datei mit diesem Inhalt sollte noch mit:

$ chmod +x switch-monitor

...ausführbar gemacht werden.

Um das ganze jetzt noch auf die Tastenkombination "Fn+F7" zu legen, geht man wie folgt weiter:

Man kopiert (oder verschiebt) das Script in dieses Verzeichnis:

# cp <Jetziger_Speicherort_der_Datei>/switch-monitor /usr/local/sbin/

Nun wird vorausgesetzt, dass man im Kernel die "Thinkpad ACPI Laptop Extras" aktiviert hat bzw. das Modul geladen. (Eine kurze Zusammenfassung wie man mit Kernel umgeht mit Verweis ist hier zu finden: Kernel compilen unter Debian ) Das Modul wird benötigt um die ACPI-Ereignisse des Thinkpads auszulesen.

In der Datei /etc/acpi/events/ibm-videobtn muss man die 6. Zeile ersetzen mit dem Pfad vom Script. Aktuell sollte sie so aussehen:

# /etc/acpi/events/ibmvideobtn
# This is called when the user presses the video button. It is currently
# a placeholder.

event=ibm/hotkey HKEY 00000080 00001007
action=/bin/true

Danach (Man beachte die Zeile "action"):

# /etc/acpi/events/ibmvideobtn
# This is called when the user presses the video button. It is currently
# a placeholder.

event=ibm/hotkey HKEY 00000080 00001007
action=/usr/local/sbin/switch-monitor

ACPI noch neu starten:

# /etc/init.d/acpid restart


Fertig lacht



Tagged: Bash Debian Hardware Linux

Kommentar verfassen | Nach oben

« ältere Einträge