T-Online Vision S100 als MythTV Frontend mit zenslack-RC1-p11, WLAN und wpa supplicant

Aus MythDeWiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Vorwort

Dieser Artikel dient dazu, die speziell auf die T-Online S100 angepasste und sehr gut funktionierenden Distribution zenslack-RC1-p11 um folgende Funktionen zu erweitern:

  • WLAN-unterstützung der XG-603-Karte
  • Verschlüsselung der WLAN-Verbindung mit wpa_supplicant

Ich beziehe mich dabei auf bereits vorhandene Artikel, im Wesentlichen aus folgenden Quellen:

http://wiki.zenega-user.de/index.php?title=Linux_allgemein_(Intel-Board)[1]

http://forum.zenega-user.de/viewtopic.php?f=36&t=5160[2]

http://forum.zenega-user.de/[3]

http://ingeninge.homelinux.net/ingmar/mms-joomla/[4]

... und hunderte andere Seiten und Foren. Die wenigsten Inhalte sind tatsächlich von mir.

[Bearbeiten] Hinweis

Ich schreibe hier alles aus dem Gedächtnis auf. Ggf. sind manche Angaben hier nicht komplett oder wurden versehentlich falsch wiedergegeben. Es besteht die Gefahr, das die S100 nicht mehr wie gewünscht arbeitet bzw.gar nicht mehr bootet. Wer nach meiner Anleitung vorgeht handelt auf eigene Gefahr.

[Bearbeiten] Ausgangssituation

Ich gehe davon aus, das zenslack-RC1-p11 bereits auf der S100 installiert und konfiguriert ist. Hier [5] findet ihr eine Anleitung zur Installation.

  • In der S100 ist das WLAN Modell XG-603 verbaut.
  • Ich greife mit ssh als root auf die S100 zu.
  • Die S100 hat bei mir die IP 192.168.1.10. Diese Adresse muss durch die IP von eurer S100 ersetzt werden.
  • Als editor nutze ich mcedit
  • Ich habe zenslack auf /dev/hda bzw. /dev/hda1 installiert. Dies muss (speziell bei Installation auf USB-Sticks) angepasst werden (z.B. in /dev/sda bzw. /dev/sda1).

[Bearbeiten] Problem

Unter zenslack-RC1-p11 wird die verbaute Wlankarte nicht unterstützt. Daher kann die S100 nur in einem kabelgebundenem Netzwerk eingesetzt werden.

Ich habe auch keine Möglichkeit gefunden, mit zusätzlichen Paketen (wie ndiswrapper) die Karte zum Laufen zu bringen.

[Bearbeiten] Lösung

Der Treiber p54 unterstützt die XG-603. Der Einsatz von ndiswrapper ist daher nicht mehr nötig. Im verwendeten Kernel (2.6.17) wird dieser Treiber jedoch noch nicht unterstützt. Daher muss ein neuer Kernel her. Da zenslack nicht darauf ausgelegt ist, Programme zu kompilieren habe ich in einer Virtuellen Maschine (VW) Slackware 10.2 installiert und alle Kompilieraufgaben in dieser Umgebung durchgeführt. Dies ist jedoch nicht wirklich nötig aber somit konnte ich mich auch gleich mal mit Slackware beschäftigen und hatte eine passende Testumgebung. zenslack-RC1-p11 basiert auf Slackware 10.2.

[Bearbeiten] wget

Auf einem Linuxrechner wget runterladen und auf die S100 kopieren.

wget ftp://mirror.pacific.net.au/linux/slackware/slackware-10.2/slackware/n/wget-1.10.1-i486-3.tgz
scp wget-1.10.1-i486-3.tgz 192.168.1.10:/tmp/wget-1.10.1-i486-3.tgz

192.168.1.10 ist die IP meiner S100, die muss natürlich ersetzt werden.

Mittels ssh auf der S100 einloggen und wget installieren

cd /tmp
tar xvfz wget-1.10.1-i486-3.tgz -C /

das wars.

[Bearbeiten] Kernel 2.6.26

[Bearbeiten] Die S100 vorbereiten

Auf der S100 einloggen und erstmal die lilo.conf sichern

cp /etc/lilo.conf /etc/lilo.conf.old

dann den vorhanden Kernel sichern

cp /boot/System.map /boot/System.old
cp /boot/vmlinuz /boot/vmlinuz-2.6.17.6

Nun die lilo.conf folgendermaßen anpassen (mcedit lilo.conf). VORSICHT /dev/hda bzw. /dev/hda1 muss ggf. angepasst werden (z.B /dev/sda wenn vom USB-Stick gebootet wird).

# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
boot = /dev/hda
prompt
compact
timeout = 2
# Override dangerous defaults that rewrite the partition table:
change-rules
  reset
# Normal VGA console
vga = normal

# Linux bootable partition config begins
image = /boot/vmlinuz
  root = /dev/hda1
  label = kernel-2.6.26
  append = "pmtmr_good"
  read-only

image = /boot/vmlinuz-2.6.17.6
  root = /dev/hda1
  label = zenslack-1.0
  append = "pmtmr_good"
  read-only
# Linux bootable partition config ends

Wer von einem USB Stick bootet sollte append = "rootdelay=10" statt append = "pmtmr_good" eintragen.

anschliessend

lilo

ausführen.

Noch ein paar vorbereitende Arbeiten:

  • Ein Verzeichnis für die neuen Module anlegen
mkdir   /lib/modules/2.6.26/
  • Das Modul prism54 "blacklisten". Dieses Modul wird sonst per default geladen, funktioniert aber nicht.
echo "prism54" >> /etc/hotplug/blacklist 
  • Die passende Firmware für den p54-Treiber laden
cd /lib/firmware
wget http://daemonizer.de/prism54/prism54-fw/fw-softmac/lmac_2.7.0.0.arm

und umbenennen

mv lmac_2.7.0.0.arm /lib/firmware/isl3886

[Bearbeiten] Den fertigen Kernel 2.6.26 downloaden

hier die schnelle Variante:

Das fertige Image runterladen

cd /tmp
wget http://www.aitsch.bplaced.net/zenslack/zenslack-2.6.26.tar.bz2

Kernel enpacken und in das Verzeichnis /boot verschieben

tar xvjf zenslack-2.6.26.tar.bz2
mv vmlinuz System.map /boot

Nun die Module

wget http://www.aitsch.bplaced.net/zenslack/modules-2.6.26.tar.bz2

und gleich entpacken

tar xvjf modules-2.6.26.tar.bz2 -C /

Ganz wichtig, lilo ausführen

lilo

folgende Ausgabe sollte erscheinen:

Warning: COMPACT may conflict with LBA32 on some systems
Added kernel-2.6.26 *
Added zenslack-1.0

nun einen Reboot der S100 durchführen und den Abschnitt "Kernel 2.6.26 selbst kompilieren" überspringen.

Bootet der 2.6.26er Kernel nicht, kann man im Bootmenü auf den Originalkernel zurückgreifen.

[Bearbeiten] Kernel 2.6.26 selbst kompilieren

WER KEINEN FERTIGEN KERNEL NEHMEN MÖCHTE ODER KANN DER KOMPILIERT HALT SELBST


Nun zum neuen Kernel. Die nächsten Schritte auf einem anderen Linuxrechner durchführen.

In meinem Fall ist das die VM.

Ins src Verzeichnis wechseln und die Kernel Sourcen laden

cd /usr/src 
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2

Kernel Sourcen entpacken

tar xvjf linux-2.6.26.tar.bz2
cd linux-2.6.26

Kernel Config runterladen

wget http://www.aitsch.bplaced.net/zenslack/config-2.6.26
rename config-2.6.26 .config

Nun zum Kernel

make oldconfig
make menuconfig

Keine Ahnung, ob das überhaupt noch nötig war. Den neuen Kernel bauen

make
make modules_install

Nun müssen die erzeugten Module auf die S100 kopiert werden. Dazu packe ich sie mittels tar.

tar -czf modules-2.6.26.tar /lib/modules/2.6.26

Ich habe scp genutzt um modules-2.6.26.tar auf die S100 zu kopieren. 192.168.1.10 ist die IP meiner S100, die muss natürlich ersetzt werden.

scp /lib/modules/2.6.26/modules-2.6.26.tar 192.168.1.10:/lib/modules/2.6.26/

Der nächste Befehl ist gefährlich, weil er auf dem aktuellen Rechner den Kernel installiert!!!!! Danach bootet er wahrscheinlich nicht mehr. Bei meiner VM ist das unkritisch bei jedem anderen Rechner nicht. Man kann sich das Image auch irgendwo aus dem Sourcedirectory rauskopieren. Ich weiss aber momentan nicht so genau wie und wo.

make install

Jetzt wird es kritisch. Die neuen Kerneldateien auf die S100 kopieren.

scp /boot/System.map 192.168.1.10:/boot/System.map
scp /boot/vmlinuz 192.168.1.10:/boot/vmlinuz

Jetzt wieder auf der S100 einloggen

Module entpacken, anschliessend tar-Archiv löschen

cd  /lib/modules/2.6.26
tar xvf modules-2.6.26.tar -C /
rm modules-2.6.26.tar

Lilo aktualisieren

lilo

folgende Ausgabe sollte erscheinen:

Warning: COMPACT may conflict with LBA32 on some systems
Added kernel-2.6.26 *
Added zenslack-1.0

nun einen Reboot der S100 durchführen.

[Bearbeiten] wpa_supplicant

Erstmal openssl installieren

cd /tmp
wget ftp://mirror.pacific.net.au/linux/slackware/slackware-10.2/slackware/n/openssl-0.9.7g-i486-1.tgz
tar xvfz openssl-0.9.7g-i486-1.tgz -C /

mein kompiliertes WPA-Paket runterladen

cd /tmp
wget http://www.aitsch.bplaced.net/zenslack/wpa_supplicant-0.6.3.tgz

und installieren (oder selbst kompilieren).

tar xvfz wpa_supplicant-0.6.3.tgz -C /

nun eine Konfigurationsdatei anlegen

mcedit /etc/wpa_supplicant.conf

und folgendes eintragen: (wenns nicht läuft nochmal google anschmeißen)

##### Example wpa_supplicant configuration file ###############################

ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1

blob-base64-exampleblob={
SGVsbG8gV29ybGQhCg==

network={
    psk="DEINEN_KEY_EINTRAGEN"
    priority=1
    scan_ssid=0
    ssid="DEINE_SSID_EINTRAGEN"
}

und speichern.


Jetzt sollte

wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0 -Dwext
dhcpcd wlan0

eine Verbindung Wlanverbindung herstellen (hoffen ich !! xD )


HINWEIS: Hier kann es nützlich sein, auch die wireless-tools zu installieren (siehe unten).

[Bearbeiten] Konfiguration anpassen

erstmal sichern

cp /etc/zenslack/zen-config/etc/zenslack/zen-config.old

dann anpassen

mcedit /etc/zenslack/zen-config

folgende Einträge habe ich angepaßt:

...
#WLAN: Set up wlan
WLAN="yes"
...
#TVOUT: TV output type ( SCART / VGA / HDVGA )
TVOUT="SCART"
...
#MODEL: Type of set top box ( S100 / S101 )
MODEL=S100
...
#ETH_IP: IP address to use
ETH_IP="192.168.1.1" <--ANPASSEN!!!!!
 
#ETH_NM: Netmask to use
ETH_NM="255.255.0.0"  <--ANPASSEN!!!!!

# ----------------------------------------------------------------------------
#
# WLAN NETWORK CONFIGURATION

#WLA_USE_DHCP: Configure using DHCP ( yes/no )
WLA_USE_DHCP="yes" <-- OPTIONAL!!!

#WLA_ESSID: ESSID to use
WLA_ESSID="DEINE_ESSID"  <--ANPASSEN!!!!!
...
#MYTHTV_USE: Enable MythTV function ( yes/no )
MYTHTV_USE="yes"

#MYTHTV_IP: IP adress (Attention: If the Backend ist not running localy, set
#                       the IP-Adress not to localhost (127.0.0.1)) 
MYTHTV_CLIENT_IP="192.168.1.10" <--ANPASSEN!!!!!
#MYTHTV_BACKEND_IP: IP adress of the MythTV-Backend
MYTHTV_BACKEND_IP="192.168.1.6" <--ANPASSEN!!!!!
#MYTHTV_DATABASE_IP: IP adress of the MySQL server
MYTHTV_DATABASE_IP="192.168.1.6" <--ANPASSEN!!!!!
...

[Bearbeiten] Wlan beim Start aktivieren

BITTE ERST DEN ABSCHNITT "KONFIGURATION ANPASSEN" ABARBEITEN

... hierzu die Datei rc.local editieren. Hier die ersten Zeilen folgendermaßen anpassen:

mcedit /etc/rc.d/rc.local
#!/bin/sh
#
# /etc/rc.d/rc.local:  Local system initialization script.
#
# Put any local setup commands in here:

# Zenslack functions startup

. /etc/zenslack/zen-config

#Set ownership for /video dir
#chown -R nobody:nogroup /video

#if [ ${ZS_SWAP} == yes ]; then
#  if [ ! -f ${ZS_SWAP_FILE} ]; then
#    dd if=/dev/zero of=${ZS_SWAP_FILE} bs=1024 count=65535
#    /sbin/mkswap ${ZS_SWAP_FILE}
#  fi
#  /sbin/swapon ${ZS_SWAP_FILE}
#fi

if [ ${WLAN} == yes ]; then
  /sbin/iwconfig wlan0 essid ${WLA_ESSID} mode managed enc ${WLA_KS}
  /sbin/ifconfig wlan0 up
  wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0 -Dwext
  if [ ${WLA_USE_DHCP} == yes ]; then
    /sbin/dhcpcd -h zenslack-wl -t 20 wlan0
  else
    /sbin/ifconfig wlan0 ${WLA_IP} netmask ${WLA_NM}
  fi
fi
... (Rest kann bleiben wie er ist)

Dann wird WLAN bei jedem Start aktiviert.

[Bearbeiten] Tips und Infos

fertige Pakete werden unter Slackware mit

tar xvfz <Paket> -C /

installiert.


Der Parameter

#TVOUT: TV output type ( SCART / VGA / HDVGA )
TVOUT="SCART"

hat bei mir nicht funktioniert. Das Bild wurde nicht über den SCART-Ausgang ausgegeben. Daher habe ich die passenden X11 Konfigurationsdateien manuell kopiert.

cp /etc/zenslack/configuration/X11/SCART/EDID-1.bin /etc/X11/
cp /etc/zenslack/configuration/X11/SCART/xorg.conf /etc/X11/


Folgende Pakete habe ich bei mir zusätzlich installiert (teilw. um auf der S100 kompilieren zu können):

coreutils-5.2.1-i486-1.tgz
gcc-3.3.6-i486-1.tgz
gcc-g++-3.4.4-i486-1.tgz
less-382-i486-1.tgz
make-3.80-i386-1.tgz
openssl-0.9.7g-i486-1.tgz
pkgtools-10.2.0-i486-5.tgz
wget-1.10.2-i486-1.tgz
wireless-tools-27-i486-2.tgz

[Bearbeiten] nützliche Links

Slackwarepakete selbst erstellen

http://wiki.slackforum.de/SlackwarePaketeErstellen

Fertige Slackware Pakete

http://packages.slackware.it/

http://linuxpackages.net/

Grundwissen zur Installation von Slackware

http://www.linuxforen.de/forums/showthread.php?t=161181&highlight=slackware

[Bearbeiten] Nachtrag

letzte Änderung 14.01.2009.

--Henner 14:49, 14. Jan. 2009 (UTC)

Persönliche Werkzeuge