Suse Linux 8.0 U.S. Robotics ADSL USB Modem Treiber



  • Hallo !

    Ich habe versucht, mein Modem (siehe Titel) unter Linux zum Laufen zu bekommen. Ohne Erfolg.

    Wie das gehen soll ist hier beschrieben:
    [url]
    http://www.usr.com/support/9000/9000-linux-ug/Installing the modem.html
    [/url]

    Gibt es hier zufällig jemanden, der das gleiche Modem hat, das unter Linux läuft ?
    Tips, was ich falsch gemacht haben könnte wären hilfreich.

    Tschüs, Joe



  • versuch mal, das modul einfach zu installieren (vorher compilieren) und dann nach /lib/modules/2.x.x/kernel/drivers/modem oder net zu kopieren und dann bei YaST einfach bei modem neues gerät hinzufügen und bei hardware liste sollte das erscheinen bzw. bei modul-name den name des moduls (also alles vor dem .o) eingeben. falls das geht, sparst du dir nämlich den ganzen kram mit ifconfig/ifup/ppp usw.



  • Hallo !

    Keine Ahnung wie ich das kompilieren soll, aber laut Anleitung soll man erstmal ./inst_mod linux-2.4.18 eintippen.
    Hab ich soweit gemacht, nach einer Menge von Warnungen, kommt zum Schluß die
    Meldung:

    AdiUsbAdslDriver.c:560: structure has no member named 'SwapIntInfo'
    AdiUsbAdslDriver.c:570: structure has no member named 'CmvIntInfo'

    make: *** [AdiUsbAdslDriver.o] Error 1

    Ist das ein Programmierfehler ? Oder meine Schuld ??
    Keine Ahnung !

    Bye, J.



  • schick mir mal die kompletten sourcen an tobiasATdoerffel.de

    das AT entsprechend ersetzen...



  • Hi !
    Danke für das Angebot, aber es hat sich erledigt.

    Es war ein harter Job, aber ich kann jetzt mit Linux online gehen !! :-))
    Es waren tatsächlich einige Unions innerhalb von Strukturen nicht definiert.

    Für den Fall, das es jemandem ähnlich ergeht, schreib ich hier mal die Änderungen rein, die nötig waren, um mein Modem zum Laufen zu bekommen.

    Drei Unions musste ich der Datei Structs.h definieren:

    // Datei Structs.h im Verzeichnis ADI_LINUX/ADIUTIL
    // geändert: SwCm hinzugefügt
    typedef struct
    {
        UInt16 Interrupt;
        union
        {
            INT_IDMA_SWAP_INFO SwapIntInfo;
            INT_IDMA_CMV_INFO  CmvIntInfo;
        } SwCm;
        UInt16 DataSize;
    }  DeviceInt;
    
    // geändert: RwMs hinzugefügt
    typedef struct
    {
        union
        {
            CmvMsg *Msgs[ MAX_CMV_MESSAGES ];
            UInt16 *RawCmd[ MAX_CMV_MESSAGES ];
        }RwMs;
        UInt32 MsgCount;
    } MsgSequence;
    
    // geändert: syfo hizugefügt
    ....
    union
    {
        UInt8  symb_addr[4];
        UInt32 fourcc;
    }syfo;
        UInt32 offset_addr;
    ...
    

    Also einfach nur SwCm, RwMs, syfo hinzufügen. Diese Definitionen fehlten, die
    Namen sind frei wählbar.

    Dann musste ich noch die folgenden Dateien ändern:

    // Datei AdiUsbAdlsDriver.c im Verzeichnis ADI_LINUX
    // geändert: SwCm hinzugefügt
    Zeile 560 : UInt16 SwapData = HSTOLE(pInt->SwCm.SwapIntInfo.SwapData);
    Zeile 570:  ProcessIncomingCmv(pHw, pInt->SwCm.CmvIntInfo.CmvData);
    
    // Datei Makefile im Verzeichnis ADI_LINUX
    // geändert: Option -c anstatt Option -C
    
    Zeile 96:	 $(INSTALLER) -c -m 0664 -o root -g root OTHER/*.bnm $(OTHERDIR) && \
    Zeile 97: $(INSTALLER) -c -m 0664 -o root -g root OTHER/*.conf (OTHERDIR) && \
    
    // Datei  Sm.c   im Verzeichnis ADI_LINUX/ADIUTIL
    // geändert: RwMs hinzugefügt
    Zeile 195: MsgSend(pHw, pAdiSM->MsgSeq_Retrainer.RwMs.RawCmd[pAdiSM->MsgStage]);
    Zeile 211: MsgSend(pHw, pAdiSM->MsgSeq_Retrainer.RwMs.RawCmd[++pAdiSM->MsgStage]);
    Zeile 251: MsgSend(pHw, pAdiSM->MsgSeq_Stat.RwMs.RawCmd[0]);
    Zeile 357: MsgSend(pHw, pAdiSM->MsgSeq_EnaFR.RwMs.RawCmd[0]);
    Zeile 403: MsgSend(pHw, pAdiSM->MsgSeq_Stat.RwMs.RawCmd[0]);
    Zeile 526: MsgSend(pHw, pAdiSM->MsgSeq_OpStat.RwMs.RawCmd[pAdiSM->MsgStage]);
    Zeile 544: MsgSend(pHw, pAdiSM->MsgSeq_OpStat.RwMs.RawCmd[++pAdiSM->MsgStage]);
    
    // Datei  Msg.c    im Verzeichnis ADI_LINUX/ADIUTIL
    // geändert: syfo, RwMs hinzugefügt
    Zeile 108:     Seq.RwMs.Msgs[Seq.MsgCount++] = &Msg;
    Zeile 397:     Msg->syfo.fourcc = 0;
    Zeile 423:     Msg->syfo.symb_addr[0] = ( unsigned char )( ( unsigned short )( temp & 0xff00 ) >> 8 );
    Zeile 424:     Msg->syfo.symb_addr[1] = ( unsigned char )( ( unsigned short )( temp & 0x00ff ) );
    Zeile 426:     Msg->syfo.symb_addr[2] = ( unsigned char )( ( unsigned short )( temp & 0xff00 ) >> 8 );
    Zeile 427:     Msg->syfo.symb_addr[3] = ( unsigned char )( ( unsigned short )( temp & 0x00ff ) );
    Zeile 429:     if ( MsgCheckSymbolicAddress( (char *)(&Msg->syfo.symb_addr[0]) ) == true )
    Zeile 664:     pSm->MsgSeq_OpStat.RwMs.Msgs[pSm->MsgSeq_OpStat.MsgCount++] = &MsgSTAT0b;
    

    Die Änderungen sind also im wesentlichen "nur" das Hinzufügen der neu definierten Unionen im Quellcode.
    Mir ist aufgefallen, das in der Datei Structs.h noch weitere Strukturen und Unionen nicht definiert sind, aber diese Routinen waren für meinen PC nicht wichtig, also habe ich die auch nicht ändern müssen.
    Dies mag bei einem anderen PC anders sein, das Prinzip dürfte aber gleich bleiben.

    Gruß, J.


Anmelden zum Antworten