X-Box Xebian Installieren

Aus VDR Wiki
Wechseln zu: Navigation, Suche

So hier entsteht im laufe der Tage das fertige Howto, um Xebian mit dem x.org Server auf die XBOX zu bekommen.
Gestartet wird automatisch vdr-sxfe (Xinelibout für X-Server).
Außerdem wird LIRC so umgebaut, dass man mit der XBOX Fernbedienung den VDR normal steuern kann. Es funktioniert also auch die Noname-Nachbau FB mit der USB Bus ID ffff:ffff.

Laufen tut das ganze schon bei mir seit 2 Monaten :-) Schreibt mir im VDR-Portal (Phr0zenPhara0) wenn ich etwas vergessen hab.

Der schöne Vorteil an vdr-sxfe ist, dass dieser einfach die Tastatur und LIRC (Infrarot) Eingaben entgegen nimmt und diese zum eigentlichen VDR-Server (bei mir im Keller) schickt.
vdr-sxfe erhält die ganze Zeit eigentlich einen fertigen MPEG2 Stream, welchen er lediglich abspielt inkl. OSD-Display usw.
Es verhält sich praktisch so, als hätte man eine Remotedesktopverbindung zu seinem VDR. Man kann ganz normal das EPG durchsuchen, Aufnahmen steuern und abspielen, einfach auf Pause drücken ohne Angst zu haben, dass die kleine XBOX-Festplatte sofort voll wird, da alle Aktionen auf dem eigentlichen VDR stattfinden.
Der Nachteil: Wenn man mehrere vdr-sxfe Clients gleichzeitig startet, sehen die alle das selbe :-)

Step -1: Xineliboutput Serverplugin auf dem eigentlichen VDR-Server installieren

Diese Einstellungen hab ich in der /etc/vdr/setup.conf für das Plugin

xineliboutput.Audio.Driver = alsa
xineliboutput.Audio.Port = default
xineliboutput.DisplayAspect = automatic
xineliboutput.Frontend = sxfe
xineliboutput.Fullscreen = 0
xineliboutput.Media.BrowseFilesDir = /var/lib/video.00
xineliboutput.Media.BrowseImagesDir = /var/lib/video.00
xineliboutput.Media.BrowseMusicDir = /var/lib/video.00
xineliboutput.Media.CacheImplicitPlaylists = 1
xineliboutput.Media.EnableID3Scanner = 1
xineliboutput.Modeline =
xineliboutput.OSD.AlphaCorrection = 0
xineliboutput.OSD.AlphaCorrectionAbs = 0
xineliboutput.OSD.Downscale = 1
xineliboutput.OSD.HideMainMenu = 0
xineliboutput.OSD.Prescale = 1
xineliboutput.OSD.SpuAutoSelect = 0
xineliboutput.OSD.SpuLang0 = en
xineliboutput.OSD.SpuLang1 = fi
xineliboutput.OSD.SpuLang2 = de
xineliboutput.OSD.SpuLang3 =
xineliboutput.OSD.UnscaledAlways = 0
xineliboutput.OSD.UnscaledLowRes = 0
xineliboutput.OSD.UnscaledOpaque = 0
xineliboutput.Post.pp.Enable = 0
xineliboutput.Post.pp.Mode = de
xineliboutput.Post.pp.Quality = 3
xineliboutput.Remote.AllowHttp = 1
xineliboutput.Remote.AllowHttpCtrl = 1
xineliboutput.Remote.AllowRtsp = 1
xineliboutput.Remote.AllowRtspCtrl = 1
xineliboutput.Remote.Keyboard = 1
xineliboutput.Remote.ListenPort = 37890
xineliboutput.Remote.Rtp.Address = 224.0.1.9
xineliboutput.Remote.Rtp.AlwaysOn = 0
xineliboutput.Remote.Rtp.Port = 37890
xineliboutput.Remote.Rtp.SapAnnouncements = 1
xineliboutput.Remote.Rtp.TTL = 1
xineliboutput.Remote.UseBroadcast = 1
xineliboutput.Remote.UseHttp = 1
xineliboutput.Remote.UsePipe = 0
xineliboutput.Remote.UseRtp = 1
xineliboutput.Remote.UseTcp = 1
xineliboutput.Remote.UseUdp = 1
xineliboutput.RemoteMode = 1
xineliboutput.Video.AutoCrop = 0
xineliboutput.Video.AutoCrop.AutoDetect = 1
xineliboutput.Video.AutoCrop.DetectSubs = 1
xineliboutput.Video.AutoCrop.FixedSize = 1
xineliboutput.Video.AutoCrop.SoftStart = 1
xineliboutput.Video.Brightness = -1
xineliboutput.Video.Contrast = -1
xineliboutput.Video.Deinterlace = tvtime
xineliboutput.Video.DeinterlaceOptions = method=Linear,cheap_mode=1,pulldown=none,framerate_mode=full,judder_correction=1,use_progressive_frame_flag=1,chroma_filter=0,enable=1
xineliboutput.Video.Driver = opengl
xineliboutput.Video.FieldOrder = 0
xineliboutput.Video.HUE = -1
xineliboutput.Video.Overscan = 0
xineliboutput.Video.Port = 0.0
xineliboutput.Video.Saturation = -1
xineliboutput.Video.Scale = 0
xineliboutput.VideoModeSwitching = 1
xineliboutput.X11.UseKeyboard = 1
xineliboutput.X11.WindowHeight = 576
xineliboutput.X11.WindowWidth = 720

Step 0: Die XBOX MUSS über einen Hardware- oder Softwaremod verfügen, mit dem auch andere als nur original XBOX-Software läuft. Dafür schreibe ich jetzt kein Tutorium. Ich schau mal ob ich da evtl. für ganz neue einen Link finde.

Step 1: Wir müssen Xebian auf die Festplatte installieren.
Xebian ist praktisch ein normales Debian Linux mit ein paar (wenigen) Änderungen am Kernel und an den Treibern, so dass es auf der XBOX läuft. Ich kenn mich da auch nicht so aus aber ich glaube, die größten Änderungen sind am PCI-BUS und die Tatsache, dass es auf der XBOX kein richtiges BIOS gibt.

Leider ist Xebian ganz schön veraltet (Der X-Server usw.).
Man kann Xebian aber auf den Stand des aktuellen Debian Etch bringen (bis auf den Kernel).
Das schöne ist, dass Xebian sich auf der XBOX installieren lässt, ohne dass das M$ Dashboard kaputt geht oder andere Dashboards, wie das XBMC zum Beispiel.

Hier bekommst du Xebian 1.1.4 Basic: http://sourceforge.net/project/showfiles.php?group_id=54192

Du benötigst die Datei dist-1.1.4-basic.tar.gz Diese Datei mit WinRAR öffnen und die grosse ISO-Datei daraus entpacken sowie mit Nero auf eine CD (am besten keine CD-RW) brennen.

Diese CD in die XBOX einlegen und die XBOX neu starten. Die XBOX sollte dann anschliessend von dieser CD booten und man sieht nach einer Weile einen Linux Einlogbildschirm.

Dann sich mit z. B. Putty überSSH auf der XBOX einloggen. Die IP ist entweder die selbe wie nach dem Start von XBMC oder ihr findet sie mit einem Broadcast raus:
Ping 192.168.0.255 (ggf. entsprechend eurem Subnetz anpassen) und dann arp -a unter Windows und einfach alle IP-Adressen ausprobieren. Man kann die IP seiner XBOX manchmal auch in seinem Router sehen (z. B. fritz.box).

Alternativ könnte man natürlich mit einem USB-Adapter eine Tastatur an die XBOX anschließen. Aber so etwas hat halt nicht jeder zur Hand. Ich selber habe alles über SSH gemacht.


root/xebian sind die Einlogdaten.

So sieht das dann aus

login as: root
[0m[H[J
[0;37;1m
  Welcome to the : Xebian
  Version : 1.1.4-basic
  Author : Edgar Hucek (hostmaster@ed-soft.at)
  Hostname : xebian.localdomain.local
  Linux Ver. : 2.4.31-xbox


[0m
Using keyboard-interactive authentication.
Password:
Last login: Fri Sep  7 13:22:34 2007
xebian:~# XBOXLinuxInstall

In der letzten Zeile seht ihr, dass ich XBOXLinuxInstall eingegeben habe, damit die Boot-CD sich auf der Festplatte installiert.

Der erste Punkt "Install XBOX Linux inside the Gamesave Partition" ist meiner Meinung nach der beste. Da macht man so schnell nichts kaputt.
Der Rest sollte jedem Anwender, der ein wenig im Umgang mit Linux geübt ist, keine Probleme bereiten. Ich hab leider zu wenig Zeit für ein ausführlicheres Tutorial :-/

Hier aber ein Link zu einem englischem howto.

Wichtig ist, dass man sich bei der Eingabe von Hostname/IP-Adresse/Gateway und so weiter nicht vertippt und Backspace verwendet.
Irgendwie funktioniert sonst dann nach einem Neustart die Netzwerkverbindung nicht und man kommt nicht mehr mit SSH auf die XBOX.
In solch einem Fall hilft dann nur ein erneutes Installieren oder die Netzwerkeinstellungen /etc/networking? über eine USB-Tastatur zu reparieren. Das muss wohl ein Bug im Debianinstaller sein.


Bei mir startet nach dem Einschalten der XBOX erst einmal das XBMC.
Anschließend lässt sich das Xebian Linux mit einem Klick auf eine E:\debian\default.xbe unter Dateien starten.

Das Xebian startet automatisch den X-Server und anschließend vdr-sxfe. Dieser Start über die xbe im XBMC ist manchmal sehr unzuverlässig. Abhilfe schafft das Erstellen einer Boot-CD, die dann das Linux von der XBOX-Festplatte startet. Dies ist sehr zuverlässig.
Dem Archiv, das ihr runter geladen habt, liegen zwei sehr wenige MB große ISO-CD-Images bei zum Erstellen dieser Boot-CD. Eines ist für den Fall, dass euer XBOX-Xebian in der gamesave Partition liegt und die andere, falls euer XBOX-Linux eine eigene Partition hat.

(Hier muss mal einer mehr Details posten)


So jetzt erstmal alles in Kurzform für Leute mit ein paar Wochen Linux Erfahrung.
Ich lade gerne andere dazu ein, das Folgende ausführlichst zu Ergänzen :-)

Step 2: /etc/apt/sources.list anpassen:

#Etch Normal

deb http://ftp.uni-bayreuth.de/linux/Debian/debian/ etch main
deb-src http://ftp.uni-bayreuth.de/linux/Debian/debian/ etch main
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

#Debian Multimedia

deb http://www.deb-multimedia.org etch main
deb-src http://deb-multimedia.org etch main

# VDR

deb http://e-tobi.net/vdr-experimental etch base addons vdr-multipatch

Step 3: apt-get update

Step 4: den aktuellen xorg 7.1 Installeren: apt-get install xserver-xorg

Hier aufpassen. Er sollte alle Abhängigkeiten erfoglreich auflösen.
Ich weiss leider nicht mehr, ob ich es damals nicht mittels "aptitude install xineliboutput-sxfe" gemacht habe. Vorher natürlich "apt-get install aptitude" machen. Aptitude ist irgendwie schlauer bei dem Auflösen der Paketabhängigkeiten.

Step 5: apt-get install xfonts-base Nachinstallieren <- musste ich merkwürdigerweise machen Step 6: apt-get install xdm installieren

modprobe input modprobe xpad modprobe mousedev

Step 7: /etc/X11/xdm/xdm-config editieren

DisplayManager*authorize: false

(Bewirkt, dass man später zum Testen den X-Org-Server auch starten kann, wenn man über SSH eingeloggt ist und nicht direkt mit der USB-Tastatur an der XBOX sitzt.

Step 8: xorg.conf anpassen

# /etc/X11/xorg.conf (xorg X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
# (Type "man /etc/X11/xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "Files"
        RgbPath         "/usr/lib/X11/rgb"
        FontPath        "/usr/share/fonts/X11/misc"
        FontPath        "/usr/X11R6/lib/X11/fonts/misc"
        FontPath        "/usr/share/fonts/X11/cyrillic"
        FontPath        "/usr/X11R6/lib/X11/fonts/cyrillic"
        FontPath        "/usr/share/fonts/X11/100dpi/:unscaled"
        FontPath        "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
        FontPath        "/usr/share/fonts/X11/75dpi/:unscaled"
        FontPath        "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
        FontPath        "/usr/share/fonts/X11/Type1"
        FontPath        "/usr/X11R6/lib/X11/fonts/Type1"
        FontPath        "/usr/share/fonts/X11/100dpi"
        FontPath        "/usr/X11R6/lib/X11/fonts/100dpi"
        FontPath        "/usr/share/fonts/X11/75dpi"
        FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"
        # path to defoma fonts
        FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
   Load        "dbe"
   SubSection  "extmod"
       Option  "omit xfree86-dga"
   EndSubSection
   Load        "type1"
   Load        "freetype"
EndSection

Section "ServerFlags"
   Option "PciProbe1" "false"
   Option "PciProbe2" "false"
   Option "PciForceConfig1" "false"
   Option "PciForceConfig2" "false"
   Option "PciOsConfig" "true"
   Option "AllowMouseOpenFail" "true"
EndSection

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "kbd"
        Option          "CoreKeyboard"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "pc104"
        Option          "XkbLayout"     "de"
EndSection

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "mouse"
        Option          "CorePointer"
        Option          "Device"                "/dev/input/mice"
        Option          "Protocol"              "ExplorerPS/2"
        Option          "Emulate3Buttons"       "true"
EndSection

Section "Device"
   Identifier      "Fb"
   Driver          "fbdev"
   Option          "fbdev" "/dev/fb/0"
   Option          "UseFBDev"
EndSection

Section "Device"
   Identifier      "Nv"
   Driver          "nvxbox"
   Option          "UseFBDev" "1"
   Option          "HWCursor" "0"
EndSection

Section "Monitor"
        Identifier      "SDTV Screen"
        Option          "DPMS"
        HorizSync       30-55
        VertRefresh     45-65
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Device          "Nv"
        Monitor         "SDTV Screen"
        DefaultDepth    24
        SubSection "Display"
                Depth           1
                Modes           "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth           4
                Modes           "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth           8
                Modes           "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth           15
                Modes           "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth           16
                Modes           "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth           24
                Modes           "640x480"
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"
EndSection

Section "DRI"
        Mode    0666
EndSection

Step 9: nvxbox X.Org 7.1 treiberdateien auf die XBOX kopieren

Löschen der Datei /usr/lib/xorg/modules/drivers/nvxbox_drv.o nvxbox_drv.so.bz2 runterladen: http://home.surewest.net/dopey69/nvxbox_drv.so.bz2 Inhalt nach /usr/lib/xorg/modules/drivers/ Entpacken


Step 10: xhost + eingeben. Erlaubt dir Zugriff auf den X-Server über deine SSH Konsole.

Das Eingeben von /etc/init.d/xdm start sollte nun auf dem Fernseher einen Debian - Loginbildschirm erzeugen.

Step 11: VDR-Client Installieren

apt-get install xineliboutput-sxfe.

Hier aufpassen. Er sollte alle Abhängigkeiten erfoglreich auflösen.
Ich weiss nicht mehr ob ich es damals nicht mittels "aptitude install xineliboutput-sxfe" gemacht habe. Vorher natürlich "apt-get install aptitude" machen. Aptitude ist irgendwie schlauer bei dem Auflösen von den Paketen.


Step 12: Hiermit sorgt ihr für den Autostart des VDR-SXFE beim Booten:

apt-get install rungetty

/etc/inittab in einem Editor bearbeitet. Hier ersetzt man die Zeile

"1:2345:respawn:/sbin/getty 38400 tty1" durch "1:2345:respawn:/sbin/rungetty tty1 --autologin root"

Anschliessend "sxfe:2345:respawn:vdr-sxfe -f xvdr:tcp://ip.des.vdr:37890" als neue Zeile einfügen


Jetzt hat man nach einem "shutdown -r now" Neustart eine XBOX, die einem entweder "NO-Signal" oder sogar ein TV-Bild anzeigt. Wenn eins von beiden passiert ist man schon sehr weit.

Bei "No-Singal" oder keinem Bild: Mit SSH wieder einloggen, mit "killall -9 vdr" alles mit VDR killen. Mit "vdr-sxfe -f xvdr:tcp://ip.des.vdr:37890" den Clienten wieder starten und schauen was er für Logmeldungen rausgibt. Das können wir dann im VDR-Portal besprechen was da los ist.

Step 13: Infrarot Adapter zum Laufen bringen.

Jetzt hat man evtl. ein VDR-Bild, aber keine Möglichkeit den VDR zu steuern. Also müssen wir die Fernbedienung ans Laufen kriegen.

Ich hoffe, ich bekomme das noch zusammen:

Zuerst diese Dateien http://www.gossamer-threads.com/lists/mythtv/users/156984#156984 ganz am Ende des Threads xir.o und xpad.o nach /lib/modules/2.4.31-xbox/kernel/drivers/usb/ schieben. BACKUP NICHT VERGESSEN.

auf dem VDR-!!Server!!


/etc/vdr/remote.conf um folgendes ergänzen:


LIRC.Up        UP
LIRC.Down      DOWN
LIRC.Menu      MENU
LIRC.Ok        SELECT
LIRC.Back      BACK
LIRC.Left      LEFT
LIRC.Right     RIGHT
LIRC.Red       SKIP-
LIRC.Green     STOP
LIRC.Yellow    PAUSE
LIRC.Blue      SKIP+
LIRC.0         0
LIRC.1         1
LIRC.2         2
LIRC.3         3
LIRC.4         4
LIRC.5         5
LIRC.6         6
LIRC.7         7
LIRC.8         8
LIRC.9         9
LIRC.Power     Power
LIRC.Volume+   FORWARD
LIRC.Volume-   REVERSE
LIRC.Mute      Mute

Auf der XBOX folgende Dateien anpassen


/etc/lirc/hardware.conf


# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
START_LIRCMD=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER=""
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
DEVICE="/dev/lirc/0"
MODULES="lirc_dev lirc_xir"

/etc/lirc/lircd.conf


# Default configuration files for your hardware if any
LIRCD_CONF="lircd.conf"
LIRCMD_CONF="lircmd.conf"

#
# this config file was automatically generated
# using lirc-0.8.0(serial) on Fri Jun  9 23:24:26 2006
#
# contributed by Jak Spalding 10 July 2006
#
# brand:                       Microsoft
# model no. of remote control: Xbox
# devices being controlled by this remote: Original Xbox
#

begin remote

  name  Microsoft_Xbox
  bits           24
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       4095  3916
  one           591  1909
  zero          591   905
  ptrail        591
  gap          64590
  toggle_bit      0


      begin codes
          DISPLAY                  0x52AAD5
          REVERSE                  0x51DAE2
          PLAY                     0x515AEA
          FORWARD                  0x51CAE3
          SKIP-                    0x522ADD
          STOP                     0x51FAE0
          PAUSE                    0x519AE6
          SKIP+                    0x520ADF
          TITLE                    0x51AAE5
          INFO                     0x53CAC3
          MENU                     0x508AF7
          BACK                     0x527AD8
          UP                       0x559AA6
          DOWN                     0x558AA7
          LEFT                     0x556AA9
          RIGHT                    0x557AA8
          SELECT                   0x5F4A0B
          1                        0x531ACE
          2                        0x532ACD
          3                        0x533ACC
          4                        0x534ACB
          5                        0x535ACA
          6                        0x536AC9
          7                        0x537AC8
          8                        0x538AC7
          9                        0x539AC6
          0                        0x530ACF
      end codes

end remote

Das sollte es gewesen sein. Am Ende hab ich bestimmt was vergessen. Fragen, Ergänzungen oder Korrekturen sind immer Willkommen. Hatte dafür heute nicht mehr Zeit. Aber besser als nichts.