Via VT82C686 AC97: mpu401 und Gameport in Gang kriegen

  • Auf dem MSI MS-6321 (steckt in diesem System) sitzt u.a. der "Via VT82C686 AC97 Audio Controller", der auch mpu401 (MIDI) und Gameport über eine 15-pol. SUB-D-Buchse zur Verfügung stellt. Im BIOS sind mpu401 (IO = 0x300-0x303) und Gameport (0x200-0x207) aktiviert. Ein IRQ für mpu401 lässt sich im BIOS (aktuelle Herstellerversion) nicht einstellen.

    Weder unter der installierten Slackware 13.0 Kernel 2.6.31.5 noch mit einer Knoppix 8.2 Kernel 4.16.5 lassen sich mpu401 und Gameport aktivieren. Das Modul ns558 (Gameport) wird zwar geladen, aber im syslog führt dies zu genau keiner Meldung und cat /proc/ioports zeigt keinen von ns558 belegten Adressbereich (0x200-0x207) an. Das Modul snd-mpu401 lässt sich nicht laden. Das schmeißt 'ne Fehlermeldung "No such device". Auch die Option "enable=1" oder die Angabe der im BIOS eingestellten Startadresse 0x300 beim Laden des Moduls ändern daran nichts.

    Muss da vor oder bei dem Laden der Module noch etwas mit auf den Weg gegeben werden oder ist das ein Bug im VT82C686?

  • Schau mal, ob du im BIOS den MPU-Port auf Adresse 0x330 setzen kannst - war wimre verbreiteter.

    "I think that computer viruses should count as life. I think it says something about human nature that the only form of life we have created so far is purely destructive. We've created life in our own image."
    (Stephen William Hawking)
    (Igor bevölkert das Winhistory-Forum seit dem 21.09.2006)
    (In the rpg commonly known as rl, Igor got an extra life on March 28, 2009)

    Einmal editiert, zuletzt von Igor Todeshure (1. November 2018 um 10:40)

  • Andere Optionen, die man typischerweise für das Modul im Internet findet, sind in der Form

    Code
    modprobe snd-mpu401 port=0x300 irq=-1 pnp=no


    für Nicht-PnP auf Port 0x300 und ohne IRQ, oder

    Code
    modprobe snd-mpu401 port=0x300 pnp=yes


    für PnP.

    Wenn du noch einen analogen Joystick für den Gameport hast, kannst du ansonsten die Funktionalität mit den Modulen joydev, gameport und analog testen.

    EDIT: Insbesondere sollte gameport nicht geladen sein, wenn du MIDI nutzen willst und umgekehrt. (Zweifelhaft.)

  • Code
    modprobe snd-mpu401 port=0x300 irq=-1 pnp=no


    für Nicht-PnP auf Port 0x300 und ohne IRQ, oder

    Code
    modprobe snd-mpu401 port=0x300 pnp=yes


    für PnP.

    Das untere lädt das Modul nicht, das obere lädt es. Dass man dem Modul für "no IRQ" ein "IRQ=-1" mitgeben muss, war mir gerade nicht gegenwärtig. cat /proc/ioports zeigt 0300-0301 : MPU401 UART an. Das ist merkwürdig, da der im BIOS eingestellte Adressbereich 0x300-0x303 dafür ist – ist übrigens die Standardeinstellung nach einem CMOS-Reset.


    Wenn du noch einen analogen Joystick für den Gameport hast, kannst du ansonsten die Funktionalität mit den Modulen joydev, gameport und analog testen.

    So'n Teil brauche ich mal – nicht zum Daddeln, sondern als alternatives Eingabegerät zur Maus an den alten Kisten. Das soll ja funktionieren.

    Da mpu401 mit der Option pnp=no lädt, kommt mir hinsichtlich ns558, für das modinfo genau keine Optionen ausspuckt, ein Verdacht. ns558 lässt sich für non-PnP-Gameports (ISA, XT) nur laden, wenn daran ein Joystick angeschlossen ist. Aber um herauszufinden, ob hier ähnliches vorliegt, brauche ich einen analogen Joystick …


  • cat /proc/ioports zeigt 0300-0301 : MPU401 UART an. Das ist merkwürdig, da der im BIOS eingestellte Adressbereich 0x300-0x303 dafür ist – ist übrigens die Standardeinstellung nach einem CMOS-Reset.

    Ich hätte dann keine Ahnung, was Port 0x302 und 0x303 sein sollen. MPU-401 definiert normalerweise nur einen Steuer- und Daten-Port.
    http://www.piclist.com/techref/io/serial/midi/mpu.html


    Dass man dem Modul für "no IRQ" ein "IRQ=-1" mitgeben muss, war mir gerade nicht gegenwärtig.

    Das habe ich auch eher über den Quellcode des Moduls hergeleitet.
    https://github.com/torvalds/linux…pu401.c#L84-L88


    Da mpu401 mit der Option pnp=no lädt, kommt mir hinsichtlich ns558, für das modinfo genau keine Optionen ausspuckt, ein Verdacht. ns558 lässt sich für non-PnP-Gameports (ISA, XT) nur laden, wenn daran ein Joystick angeschlossen ist.

    Deine Vermutung dazu ist richtig. ns558 überprüft nur eine begrenzte Anzahl von ACPI-Geräte-IDs als PnP-Gameports, und wenn der Gameport sich nicht darunter befindet (z. B. als "Generic" ACPI\PNPB02F unter Windows), probiert es stattdessen übliche ISA-Ports durch – indem versucht wird, die Positions- und Knopfdaten eines Joysticks auszulesen.
    https://github.com/torvalds/linux…ameport/ns558.c

  • Danke, dann ist das alles soweit klar. Es lebe der Open Source Code!
    MIDI und Gameport sind auf dem Brett also non-PnP, und damit geht ns558 nur, wenn auch ein Joystick am Gameport hängt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!