# [gelöst] Fehler beim Kompilieren von fcpci

## Moldmaker

Ich versuche gerade, meine Fritz-PCI-ISDN-Karte unter Gentoo zum Laufen zu bringen. Also brauche ich das fcpci-Kernelmodul, das in Portage allerdings maskiert ist. Weil ich aber glaube, daß ich es wirklich brauche, um die Karte ansprechen zu können, habe ich es unmaskiert und versucht zu emergen. Der Vorgang scheiterte mit folgenden Meldungen:

 *Quote:*   

> * ERROR: net-dialup/fcpci-0.1-r1 failed:
> 
>  *   Unable to emake HOSTCC=i686-pc-linux-gnu-gcc CROSS_COMPILE=i686-pc-linux-gnu- LDFLAGS=  KDIR=/usr/src/linux LIBDIR=/var/tmp/portage/net-dialup/fcpci-0.1-r1/work/fritz/src all
> 
>  * 
> ...

 

Hier ist die Ausgabe von 'emerge --info =net-dialup/fcpci-0.1-r1':

 *Quote:*   

> # emerge --info =net-dialup/fcpci-0.1-r1
> 
> Portage 2.1.8.3 (default/linux/x86/10.0/desktop, gcc-4.4.3, glibc-2.11.2-r0, 2.6.32-gentoo-r7 i686)
> 
> =================================================================
> ...

 

Und das ist das Build-Log:

 *Quote:*   

>  [32;01m*[0m CPV:  net-dialup/fcpci-0.1-r1
> 
>  [32;01m*[0m REPO: gentoo
> 
>  [32;01m*[0m USE:  elibc_glibc kernel_linux userland_GNU x86
> ...

 

Was mache ich jetzt? Gibt es eine Lösung dafür?

----------

## Tinitus

Hallo,

was hast Du denn vor mit der Karte. Der Treiber funktioniert schon länger nicht mehr. Aber Opensource Treiber sind im Kernel enthalten.

G. R.

----------

## Moldmaker

Danke für Deine Antwort.

Ich brauche die Karte, um auf meine Telefonanlage zugreifen zu können (Konfiguration bearbeiten, Logfiles auslesen) und (möglicherweise) hin und wieder ein Fax zu versenden und zu empfangen. Eigentlich wichtig ist mir aber der Zugriff auf die Telefonanlage.

Ich habe schon bei der Kernelkonfiguration die entsprechenden ISDN-Optionen aktiviert, war mir aber nicht sicher, ob ich ohne fcpci tatsächlich die Karte ansprechen kann. Beim Booten wird sie jedenfalls nicht erkannt bzw. aktiviert.

Deshalb meine Frage: Gibt es ein aktuelles HowTo zu dem Thema ISDN mit aktuelle Kerneln? Ich finde immer nur die älteren Sachen, die ich auch früher unter Mandrake und Suse benötigt habe (also fcpci, capi usw.) Bei meinem ersten Versuch vor 5 Jahren mit Gentoo, der leider an mangelndem Plattenplatz meines damaligen Uralt-Rechners gescheitert ist, konnte ich ISDN noch relativ einfach zum Laufen bekommen. Leider ist das Thema mittlerweile etwas auf dem Abstellgleis gelandet.

Über weitere Hilfe würde ich mich freuen.

----------

## Tinitus

Hallo,

wie willst Du denn auf die Telefonanlage zugreifen? Welche Software? Capi? Welche Telefonanlage? Hast Du den Treiber als Modul(auch geladen?) oder fest einkompiliert?

G. R.

----------

## Moldmaker

Es handelt sich um eine "AGFEO webphonie 141 plus"-ISDN-Telefonanlage, die ich auf zweierlei Arten ansprechen kann, lokal via USB oder über die ISDN-Leitung. Die Telefonanlage ist aber im Keller installiert und ich sitze hier unterm Dach, wohin die ISDN-Leitung gelegt wurde. Deshalb habe ich bisher mit meinen Systemen seit 2003 (Mandrake 8.2, SuSE 8.2, openSUSE 10.2 und 10.3 und Windows XP) immer über die Fritzkarte darauf zugegriffen. Voraussetzung ist nur, daß das Betriebssystem die Karte aktivieren kann. Die AGFEO-Software zerfällt in zwei Teile, einen Server und einen Client. Der Server startet einen Dienst (tksock), mittels dessen der Client dann via capi mittels des fcpci-Treibers über die Fritzkarte auf die Telefonanlage zugreifen kann. Die Software läuft überaus zuverlässig in jedem Browser und ist unter http://localhost:5080/login erreichbar, und bislang unter allen o.g. Linux-Distributionen ohne Schwierigkeiten. Hier sind weitere Informationen direkt vom Hersteller:

http://www.agfeo.de/agfeo_web/dokulib.nsf/lu_04/2124_1

Den Treiber für die ISDN-Unterstützung habe ich fest in den Kernel einkompiliert. War das falsch? Hätte ich ihn als Modul erzeugen und dann beim Systemstart laden sollen?

----------

## Uli Sing

Mit diesem aktualisierten Ebuild wird es funktionieren:

```
# Copyright 1999-2008 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/net-dialup/fcpci/fcpci-0.1-r1.ebuild,v 1.1 2008/01/30 01:36:37 sbriesen Exp $

EAPI=2

inherit eutils rpm linux-mod versionator

DESCRIPTION="AVM kernel 2.6 modules for Fritz!Card PCI"

HOMEPAGE="http://opensuse.foehr-it.de/"

SRC_URI="http://opensuse.foehr-it.de/rpms/11_2/src/${P}-0.src.rpm

         -> ${P}-0.src-11_2.rpm"

LICENSE="AVM-FC"

SLOT="0"

KEYWORDS="~amd64 ~x86"

IUSE=""

DEPEND="!net-dialup/fritzcapi"

RDEPEND="${DEPEND} net-dialup/capi4k-utils"

S="${WORKDIR}/fritz"

pkg_setup() {

   linux-mod_pkg_setup

   if ! kernel_is 2 6; then

      die "This package works only with 2.6 kernel!"

   fi

   BUILD_TARGETS="all"

   BUILD_PARAMS="KDIR=${KV_DIR} LIBDIR=${S}/src"

   MODULE_NAMES="${PN}(net:${S}/src)"

}

src_unpack() {# Copyright 1999-2008 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/net-dialup/fcpci/fcpci-0.1-r1.ebuild,v 1.1 2008/01/30 01:36:37 sbriesen Exp $

   local BIT="" PAT="01234"

   if use amd64; then

      BIT="64bit-" PAT="1234"

   fi

   

   rpm_unpack "${A}" || die "failed to unpack ${A} file"

   DISTDIR="${WORKDIR}" unpack ${PN}-suse[0-9][0-9]-${BIT}[0-9].[0-9]*-[0-9]*.tar.gz

   if kernel_is ge 2 6 31 ; then

      einfo "Registering additional patches for kernels >= 2.6.31"

      PAT="${PAT}67"

   fi

   cd "${S}"

   epatch $(sed -n "s|^Patch[${PAT}]:\s*\(.*\)|../\1|p" ../${PN}.spec)

   convert_to_m src/Makefile

   for i in lib/*-lib.o; do

      einfo "Localize symbols in ${i##*/} ..."

      objcopy -L memcmp -L memcpy -L memmove -L memset -L strcat \

         -L strcmp -L strcpy -L strlen -L strncmp -L strncpy "${i}"

   done

}

src_install() {

   linux-mod_src_install

   dodoc CAPI*.txt

   dohtml *.html

}
```

Ab Kernel 2.6.34 ist dann allerdings ebenfalls Feierabend.

----------

## Moldmaker

Hallo Uli Sing,

Danke für Deine Antwort, ich hatte schon gar nicht mehr mit einer Reaktion gerechnet und es mit mISDN versucht (was auch nicht klappt).

Egal, ich habe jetzt natürlich ein neues Problem: Wie kann ich denn Portage dieses modifizierte ebuild unterschieben? Wenn ich es einfach in das richtige Verzeichnis reinschiebe, werde ich angemeckert, weil die Dateigröße nicht stimmt und die Datei korrupt sei.

Wie macht man so etwas? Ich finde in "man emerge" keinen Schalter wie --force oder so etwas. Ich kenne mich mit Gentoo noch nicht so richtig gut aus.

----------

## astaecker

Dafür legst du ein lokales Overlay an. Siehe dazu z.B. das Gentoo Wiki.

----------

## Moldmaker

Hallo zusammen!

@arlsair

Danke für den Hinweis, es ist mir gelungen, ein lokales Overlay anzulegen.

@ Uli Sing

Ich habe mir den Text aus Deinem Posting in eine Datei kopiert und die dann wieder fcpci-0.1-r1.ebuild genannt. Dann habe ich diese Datei in meinen lokalen Overlay kopiert und mir ein Manifest gebaut, weil Portage ohne Manifest von einer korrupten Datei ausging. War das richtig soweit? Übrigens ist da noch ein kleiner Fehler in dem ebuild, da fehlt ein Zeilenumbruch:

```
src_unpack() {# Copyright 1999-2008 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/net-dialup/fcpci/fcpci-0.1-r1.ebuild,v 1.1 2008/01/30 01:36:37 sbriesen Exp $

```

Genau vor dem # Copyright muß ein Zeilenumbruch rein. Danach konnte ich das Manifest erzeugen:

 *Quote:*   

> ebuild fcpci-0.1-r1.ebuild manifest
> 
> >>> Downloading 'http://de-mirror.org/distro/gentoo/distfiles/fcpci-0.1-0.src-11_2.rpm'
> 
> --2010-07-22 20:52:12--  http://de-mirror.org/distro/gentoo/distfiles/fcpci-0.1-0.src-11_2.rpm
> ...

 

 Da wurde also ein src.rpm von opensuse runtergeladen. Dann hat Portage mir den ebuild zum Installieren angeboten:

 *Quote:*   

> # emerge -pv fcpci
> 
> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> ...

 

Perfekt! Leider hat der Rest dann nicht so gut funktioniert:

 *Quote:*   

> make: *** [fcpci.ko] Fehler 2
> 
>  * ERROR: net-dialup/fcpci-0.1-r1 failed:
> 
>  *   Unable to emake HOSTCC=i686-pc-linux-gnu-gcc CROSS_COMPILE=i686-pc-linux-gnu- LDFLAGS=  KDIR=/usr/src/linux LIBDIR=/var/tmp/portage/net-dialup/fcpci-0.1-r1/work/fritz/src all
> ...

 

Hier noch mehr Infos:

 *Quote:*   

> # emerge --info =net-dialup/fcpci-0.1-r1
> 
> Portage 2.1.8.3 (default/linux/x86/10.0/desktop, gcc-4.4.3, glibc-2.11.2-r0, 2.6.32-gentoo-r7 i686)
> 
> =================================================================
> ...

 

Und noch mehr Infos:

 *Quote:*   

> # emerge --info =net-dialup/fcpci-0.1-r1
> 
> Portage 2.1.8.3 (default/linux/x86/10.0/desktop, gcc-4.4.3, glibc-2.11.2-r0, 2.6.32-gentoo-r7 i686)
> 
> =================================================================
> ...

 

Um das mal zusammenzufassen: Ich habe verstanden, daß der ebuild nichts anderes tut, als ein Source-RPM von openSUSE 11.2 runterzuladen. Das ist auch auf meiner Platte angekommen. Aber wenn es dann ans Kompilieren geht, geht wieder was schief. Ich habe ganz ähnliche Probleme damit, mISDN zu kompilieren. Immer fangen die Fehlermeldungen an mit

 *Quote:*   

> *   Unable to emake HOSTCC=i686-pc-linux-gnu-gcc CROSS_COMPILE=i686-pc-linux-gnu- usw.usw.

 

Ich muß doch irgendwas falsch konfiguriert haben. Vielleicht den Kernel? Oder ich verwende nicht die richtigen Useflags? 

ISDN unter Linux war immer schwierig zum Laufen zu bekommen.

----------

## Uli Sing

Du solltest nicht alles glauben, was fremde Menschen in Internetforen schreiben, was übersetzt soviel heißt wie:

Uli war zu doof für Copy 'n' Paste.  :Very Happy: 

So wird's gehen:

```
# Copyright 1999-2008 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/net-dialup/fcpci/fcpci-0.1-r1.ebuild,v 1.1 2008/01/30 01:36:37 sbriesen Exp $

EAPI=2

inherit eutils rpm linux-mod versionator

DESCRIPTION="AVM kernel 2.6 modules for Fritz!Card PCI"

HOMEPAGE="http://opensuse.foehr-it.de/"

SRC_URI="http://opensuse.foehr-it.de/rpms/11_2/src/${P}-0.src.rpm

         -> ${P}-0.src-11_2.rpm"

LICENSE="AVM-FC"

SLOT="0"

KEYWORDS="~amd64 ~x86"

IUSE=""

DEPEND="!net-dialup/fritzcapi"

RDEPEND="${DEPEND} net-dialup/capi4k-utils"

S="${WORKDIR}/fritz"

pkg_setup() {

        linux-mod_pkg_setup

        if ! kernel_is 2 6; then

                die "This package works only with 2.6 kernel!"

        fi

        BUILD_TARGETS="all"

        BUILD_PARAMS="KDIR=${KV_DIR} LIBDIR=${S}/src"

        MODULE_NAMES="${PN}(net:${S}/src)"

}

src_unpack() {

        local BIT="" PAT="01234"

        if use amd64; then

                BIT="64bit-" PAT="1234"

        fi

        rpm_unpack "${A}" || die "failed to unpack ${A} file"

        DISTDIR="${WORKDIR}" unpack ${PN}-suse[0-9][0-9]-${BIT}[0-9].[0-9]*-[0-9]*.tar.gz

        if kernel_is ge 2 6 31 ; then

                einfo "Registering additional patches for kernels >= 2.6.31"

                PAT="${PAT}67"

        fi

        cd "${S}"

        epatch $(sed -n "s|^Patch[${PAT}]:\s*\(.*\)|../\1|p" ../${PN}.spec)

        convert_to_m src/Makefile

        for i in lib/*-lib.o; do

                einfo "Localize symbols in ${i##*/} ..."

                objcopy -L memcmp -L memcpy -L memmove -L memset -L strcat \

                        -L strcmp -L strcpy -L strlen -L strncmp -L strncpy "${i}"

        done

}

src_install() {

        linux-mod_src_install

        dodoc CAPI*.txt

        dohtml *.html

}
```

```
#/etc/portage/package.keywords

net-dialup/fcpci

```

```
#/etc/portage/package.unmask

=net-dialup/fcpci-0.1-r1
```

```
cd /usr/local/portage/net-dialup/fcpci/

ebuild fcpci-0.1-r1.ebuild digest
```

```
emerge fcpci
```

Gerade nochmal getestet unter

```
brain@ulising ~ $uname -r

2.6.33-gentoo-r2
```

----------

## Moldmaker

Hallo Uli,

Vielen Dank für Deine Geduld. Leider hat auch das nichts genützt. Irgendwas ist hier doch faul. Also diesmal habe ich mit Deinem Posting wieder ein ebuild erzeugt und das passende Manifest. Danach habe ich dann wieder versucht, den Treiber zu kompilieren. Hier ist das Ergebnis:

 *Quote:*   

> # emerge fcpci
> 
>  * IMPORTANT: 3 news items need reading for repository 'gentoo'.
> 
>  * Use eselect news to read news items.
> ...

 

Jetzt die Ausgabe von emerge --info =net-dialup/fcpci-0.1-r1:

 *Quote:*   

> # emerge --info =net-dialup/fcpci-0.1-r1
> 
> Portage 2.1.8.3 (default/linux/x86/10.0/desktop, gcc-4.4.3, glibc-2.11.2-r0, 2.6.32-gentoo-r7 i686)
> 
> =================================================================
> ...

 

Das ganze unter  *Quote:*   

> # uname -r
> 
> 2.6.32-gentoo-r7
> 
> 

 

Entweder bin ich besonders untalentiert oder hier ist irgendwas faul; bei Dir läuft der Compiler ja durch. Ich habe sogar extra nochmal die Pakete  in /usr/portage/distfiles/gelöscht und beim emergen neu runterladen lassen, wie Du an der Ausgabe sehen kannst.

Und jetzt? Würde mich über weitere Hilfe freuen.

[edit] Ich habe im Open SuSE Capi Forum siehe http://www.foehr-it.de/hlp/viewtopic.php?t=364 einen Hinweis gefunden, daß sich der Treiber mit dem "capi_ctr_down"-Patch kompilieren läßt. Ich werde dort mal nachfragen, was es damit auf sich hat. [/edit]

----------

## Uli Sing

Mal 'ne andere Frage: Weshalb tust Du Dir eigentlich gentoo an?

Sei es, wie es ist, wir können ja gelegentlich 'ne allgemeine Umfrage starten.  :Very Happy: 

Aber zunächst müssen wir Dein Problem in den Griff kriegen. Willst' ja wohl nicht etxra 'ne DIVA Server kaufen wollen, nicht wahr?  :Wink: 

Schau mal hier.

Da wird empfohlen, im ebuild für x86 Installationen

```
local BIT="" PAT="01234"
```

durch

```
local BIT="" PAT="012345"
```

zu ersetzen.

Na dann mal los und nicht entmutigen lassen.  :Very Happy:   :Very Happy:   :Very Happy: 

----------

## Moldmaker

Hallo Uli,

Danke für die Antwort.

Zuerst zur Sache: Du hast mich mit Deinen Hinweisen auf die richtige Spur gebracht, und erst vor wenigen Minuten (!) ist es mir gelungen, mithilfe eines Archives, das ich mir bei https://belug.de/~lutz/pub/fcpci/ runtergeladen habe, das Kernelmodul zu bauen. Es wird geladen, die Karte wird erkannt, ich hab mich schon mit meinem Provider verbunden, es scheint zu funktionieren. Ich werde aber trotzdem noch versuchen, dieses störrische ebuild zur Mitarbeit zu bewegen.

Zu Deiner Frage, warum ich mir Gentoo antue: Ich bin seit 10 Jahren überzeugter und zufriedener Linux-Anwender, und schon vor 5 Jahren habe ich mal damit angefangen, Gentoo zu installieren. Limitierungen bei meiner Hardware und die lahme ISDN-Verbindung (das hat damals übrigens _sofort_ funktioniert!) haben mich wieder davon abgebracht. Ich hatte angefangen im Jahr 2000 mit Caldera OpenLinux 2.3 (ja, genau, das sind _die_), danach Mandrake 8.2 und dann immer SuSE und openSUSE (und ein Ubuntu auf dem Eee-PC). Was mich immer gestört hat, war die Vorkonfiguration durch den Distributor. Bei openSUSE lief dann für die 10.3 (die verwende ich momentan produktiv) die Unterstützung ab, und Gentoo reizt mich einfach, weil ich mir mein System maßschneidern kann. 

Ich probiere jetzt mal aus, ob ich endlich mit dem frisch erzeugten Kernelmodul auf meine Telefonanlage gucken kann, und poste dann nochmal.

----------

## Moldmaker

Hallo Uli,

Ich bin's schon wieder. Mit meinem schönen neuen Kernelmodul gab es dann bald Probleme, denn die Karte wurd ständig als "nicht betriebsbereit" gemeldet. Zur Sicherheit habe ich den Kernel neu konfiguriert und kompiliert und den ganzen mISDN-Kram rausgeworfen, den ich nicht brauche, wenn ich mit fcpci arbeite. Danach ließ sich das neue Kernelmodul nicht mehr laden. Also bin ich zurück zum Deinem fcpci-ebuild gegangen, habe die von Dir vorgeschlagene Modifikation vorgenommen, und voilà:

Der Treiber ließ sich - endlich! - anstandslos bauen! Danke!

Er wird auch beim Systemstart geladen, die Karte wird erkannt usw.

So weit, so gut -- ich kriege von meiner TK-Anlagen-Software trotzdem immer noch die Meldung, die Schnittstelle sei nicht betriebsbereit. Das ist aber ein anderes Problem. Mein Anliegen, dessentwegen ich diesen Thread gestartet hatte, ist erledigt: Das Kompilieren von fcpci. Nochmal vielen Dank für Deine Zeit und Geduld.

----------

## Uli Sing

Schön, dass es doch noch funktioniert hat!

Als Nächstes müssen wir wohl diesem Gentleman helfen. Sein Posting ist schon 'ne Weile her, aber ich gehe jede Wette ein, dass er noch keine Lösung gefunden hat.  :Very Happy:   :Very Happy:   :Very Happy: 

----------

## Tinitus

Hallo,

ihr Leut  :Wink: 

Das sollte doch aber auch ohne den Treiber von AVM gehen eine Capi Verbindung aufbauen zu können? Die Opensource Treiber  im Kernel sollten doch auch gehen, oder?

G. R.

Edit1:

Opensuses ISDN Mailingliste war für mich immer die Anlaufstelle. Seit Fritzbox ffgtk und DSL habe ich aber keine fritzcard mehr verbaut..

Aber ich bin immer am Überlegen, ob ich mir die wieder spare..?

http://de.opensuse.org/Kommunikation/Mailinglisten

http://lists.opensuse.org/opensuse-isdn-de/2009-11/msg00001.html

G. R.

----------

## Moldmaker

Das habe ich auch versucht, aber ich bin auch hier wieder gescheitert. Gentoo will nicht ums Verrecken misdn und misdn-user kompilieren. Es gibt zwar ein howto, nämlich hier http://www.gentoo-wiki.info/HOWTO_MISDN, aber ich scheitere schon gleich ganz am Anfang, wo steht: 

```
emerge -va misdn
```

Also habe ich mich auf den fcpci eingeschossen, den ich ja nun tatsächlich kompilieren konnte.

Warum ist das eigentlich so schwierig? Ich meine, ISDN ist eine erprobte, zuverlässige Technik, und soooo sehr von gestern doch nun auch nicht. Aber allein die Tasache, daß sowohl fcpci und auch die mISDN-Sachen in Portage alle maskiert sind, zeigt, daß das wohl doch als veraltet angesehen wird. Schade drum, finde ich. Also wenn Du weißt, wie man die mISDN-Treiber zum Laufen kriegen kann, wäre das toll. Ich habe es nämlich aufgegeben. Dazu hatte ich im englischen Forum übrigens einen Thread aufgemacht, aber ich habe es dann - wie ich zugeben muß, völlig entnervt, obwohl die Leute mir wirklich helfen wollten - abgebrochen. Siehe hier: https://forums.gentoo.org/viewtopic-p-6361439.html

----------

## firefly

 *Moldmaker wrote:*   

> Aber allein die Tasache, daß sowohl fcpci und auch die mISDN-Sachen in Portage alle maskiert sind, zeigt, daß das wohl doch als veraltet angesehen wird.

 

Nur zur klarstellung:

Nur weil ein paket maskiert ist, heißt es noch lange nicht, dass es als veraltet angesehen wird. Das misdn ebuild ist nur per KEYWORD (~x86 oder ~amd64) "maskiert" sprich ist als testing markiert.

Das fcpci paket dagegen ist hard maskiert. Und eine hard maskierung hat ganz andere Bedeutungen als eine maskierung per Keyword.

Im falle von fcpci wurde das paket aufgrund folgender Tatsache hard maskiert:

 *Quote:*   

> Abandoned upstream. Won't work with current kernels.

 

Sprich das fcpci paket wird von avm nicht mehr weiterentwickelt und ein funktionieren mit neueren kernels ist somit nicht mehr gegeben.

----------

## firefly

ab 2.6.27 ist im kernel misdn enthalten.

Eigentlich brauchst du auch das misdn paket nicht nur das misdnuser paket. Denn das misdn paket installiert nur kernel module. Da misdn seit 2.6.27 im kernel enthalten ist, ist diese paket nicht mehr notwendig.

----------

## Moldmaker

Hallo firefly,

Mit Deinen Ausführungen hast Du mir weitergeholfen. Ich habe versucht, misdn zu emergen, weil das in dem howto so drinsteht (ziemlich am Anfang). Möglicherweise ist das howto nicht auf dem aktuellen Stand. Und als Gentoo-Anfänger hangele ich mich eben durch die howtos (und versuche, sie zu verstehen).

----------

## firefly

 *Moldmaker wrote:*   

> Hallo firefly,
> 
> Mit Deinen Ausführungen hast Du mir weitergeholfen. Ich habe versucht, misdn zu emergen, weil das in dem howto so drinsteht (ziemlich am Anfang). Möglicherweise ist das howto nicht auf dem aktuellen Stand. Und als Gentoo-Anfänger hangele ich mich eben durch die howtos (und versuche, sie zu verstehen).

 

Nur blöd, dass das misdnuser paket unbedingt msidn als Abhängigkeit haben möchte.

Hast du eventuell den capi support aus dem kernel geschmissen, als du mISDN aus dem kernel entfernt hast? Wenn ja, dann ist es kein wunder wieso fcpci sich nicht mehr installieren/laden lässt  :Smile: 

Denn fcpci verwendet das cpi subsystem vom kernel.

----------

## firefly

Des weiteren sind die ganzen howtos von msidn auf mISDN v1 ausgelegt. Aber im kernel ab 2.6.27 ist mISDN v2 enthalten. Und falls deine software für die telefonanlage nur über CAPI funktioniert, wirst du mit misdn scheinbar nicht glücklich, da dieses kein capi mehr unterstützt. Da hilft eigentlich nur noch eine aktive ISDN karte wie AVM B1. Denn diese karte wird vom capi subsystem vom kernel direkt unterstützt.

----------

## Moldmaker

Nein, das ist mir schon klar, ich habe ISDN unter Linux seit 7 Jahren am rennen und weiß, daß es ohne funktionierendes CAPI-Subsystem nicht geht. Das ist im Kernel also drin.

Aber daß mISDN Capi nicht unterstützt, ist mir neu. Also ist mISDN ohnehin nicht sinnvoll für mich, denn ich kauf jetzt keine aktive ISDN-Karte, und meine Telefonanlage kann tatsächlich nur über Capi angesprochen werden. Aber ich habe ja jetzt den fcpci-Treiber, der wird auch geladen und die Karte wird erkannt und capiinfo spuckt ermutigende Meldungen aus. Ich komm zwar immer noch nicht an die Teldefonanalge dran, aber ich arbeite weiter daran.

----------

## firefly

 *Moldmaker wrote:*   

> Nein, das ist mir schon klar, ich habe ISDN unter Linux seit 7 Jahren am rennen und weiß, daß es ohne funktionierendes CAPI-Subsystem nicht geht. Das ist im Kernel also drin.
> 
> Aber daß mISDN Capi nicht unterstützt, ist mir neu. Also ist mISDN ohnehin nicht sinnvoll für mich, denn ich kauf jetzt keine aktive ISDN-Karte, und meine Telefonanlage kann tatsächlich nur über Capi angesprochen werden. Aber ich habe ja jetzt den fcpci-Treiber, der wird auch geladen und die Karte wird erkannt und capiinfo spuckt ermutigende Meldungen aus. Ich komm zwar immer noch nicht an die Teldefonanalge dran, aber ich arbeite weiter daran.

 

Nein mISDN konnte capi. Aber nur in der V1 Variante (z.b. das msidn paket, welches im portage enthalten ist.) Nur im der V2 Variante, welche zu mindestens im 2.6.34 kernel enthalten ist, unterstützt kein capi mehr. Wiso konnte ich nicht herausfinden.

Entweder du installierst dir eine aktive ISDN karte,  du verwendest einen kernel < 2.6.27 und die msidn pakete in portage, oder bekommst es mit dem fcpci modul hin. Ansonsten sehe ich schwarz.

----------

## Moldmaker

Verstehe. Keine einfache Sache.

----------

## Uli Sing

This is an updated ebuild for...

ach ja, wir sind ja im deutschen Bereich.

Und außer uns Deutschen interessiert sich im großen weiten gentoo-Universum ohnedies keine Sau (mehr) für ISDN, obwohl man damit auch ohne zugehörigen Anschluss viele schöne Sachen machen kann.  :Very Happy: 

Wie dem auch sei: hier ein aktualisiertes ebuild für den 2.6.34er Kernel. Getestet unter amd64 2.6.34-r6.  Die nachfolgende diff bitte ins "files" Unterverzeichnis kopieren.

```

# fcpci-0.1-r1.ebuild

# Copyright 1999-2008 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/net-dialup/fcpci/fcpci-0.1-r1.ebuild,v 1.1 2008/01/30 01:36:37 sbriesen Exp $

EAPI=2

inherit eutils rpm linux-mod versionator

DESCRIPTION="AVM kernel 2.6 modules for Fritz!Card PCI"

HOMEPAGE="http://opensuse.foehr-it.de/"

SRC_URI="http://opensuse.foehr-it.de/rpms/11_2/src/${P}-0.src.rpm

         -> ${P}-0.src-11_2.rpm"

LICENSE="AVM-FC"

SLOT="0"

KEYWORDS="~amd64 ~x86"

IUSE=""

DEPEND="!net-dialup/fritzcapi"

RDEPEND="${DEPEND} net-dialup/capi4k-utils"

S="${WORKDIR}/fritz"

pkg_setup() {

   linux-mod_pkg_setup

   if ! kernel_is 2 6; then

      die "This package works only with 2.6 kernel!"

   fi

   BUILD_TARGETS="all"

   BUILD_PARAMS="KDIR=${KV_DIR} LIBDIR=${S}/src"

   MODULE_NAMES="${PN}(net:${S}/src)"

}

src_unpack() {

   local BIT="" PAT="012345"

   if use amd64; then

      BIT="64bit-" PAT="1234"

   fi

   

   rpm_unpack "${A}" || die "failed to unpack ${A} file"

   DISTDIR="${WORKDIR}" unpack ${PN}-suse[0-9][0-9]-${BIT}[0-9].[0-9]*-[0-9]*.tar.gz

   if kernel_is ge 2 6 31 ; then

      einfo "Registering additional patches for kernels >= 2.6.31"

      PAT="${PAT}67"

   fi

   if kernel_is ge 2 6 34 ; then

      einfo "Registering additional patches for kernels = 2.6.34"

      epatch "${FILESDIR}"/fcpci-linux-2.6.34.diff

   fi

   cd "${S}"

   epatch $(sed -n "s|^Patch[${PAT}]:\s*\(.*\)|../\1|p" ../${PN}.spec)

   

   convert_to_m src/Makefile

   for i in lib/*-lib.o; do

      einfo "Localize symbols in ${i##*/} ..."

      objcopy -L memcmp -L memcpy -L memmove -L memset -L strcat \

         -L strcmp -L strcpy -L strlen -L strncmp -L strncpy "${i}"

   done

}

src_install() {

   linux-mod_src_install

   dodoc CAPI*.txt

   dohtml *.html

}

```

[..]/files/fcpci-linux-2.6.34.diff 

```

--- fritz/src.org/driver.c   2010-07-23 10:39:35.889395137 +0200

+++ fritz/src/driver.c   2010-07-23 10:52:45.712457634 +0200

@@ -48,6 +48,8 @@

 #include "defs.h"

 #include "lib.h"

 #include "driver.h"

+#include <linux/proc_fs.h>

+#include <linux/seq_file.h>

 

 /*---------------------------------------------------------------------------*\

 \*---------------------------------------------------------------------------*/

@@ -220,16 +222,6 @@ static void kill_version (card_t * card)

 } /* kill_version */

 

 /*---------------------------------------------------------------------------*\

-\*---------------------------------------------------------------------------*/

-static void pprintf (char * page, int * len, const char * fmt, ...) {

-   va_list args;

-

-   va_start (args, fmt);

-   *len += vsprintf (page + *len, fmt, args);

-   va_end (args);

-} /* pprintf */

-

-/*---------------------------------------------------------------------------*\

 \*-C-------------------------------------------------------------------------*/

 static inline int in_critical (void) {

    

@@ -490,39 +482,33 @@ static char * __kcapi proc_info (struct

 

 /*---------------------------------------------------------------------------*\

 \*---------------------------------------------------------------------------*/

-static int __kcapi ctr_info (

-   char *         page, 

-   char **         start, 

-   off_t         ofs,

-   int         count, 

-   int *         eof,

-   struct capi_ctr *   ctrl

-) {

+static int __kcapi ctr_info (struct seq_file *m, void *v)

+{

+        struct capi_ctr *ctrl = m->private;

    card_t *      card;

    char *         temp;

    unsigned char      flag;

-   int         len = 0;

 

    assert (ctrl != NULL);

    card = (card_t *) ctrl->driverdata;

    assert (card != NULL);

-   pprintf (page, &len, "%-16s %s\n", "name", SHORT_LOGO);

-   pprintf (page, &len, "%-16s 0x%04x\n", "io", card->base);

-   pprintf (page, &len, "%-16s %d\n", "irq", card->irq);

+   seq_printf(m, "%-16s %s\n", "name", SHORT_LOGO);

+   seq_printf(m, "%-16s 0x%04x\n", "io", card->base);

+   seq_printf(m, "%-16s %d\n", "irq", card->irq);

    temp = card->version ? card->string[1] : "A1";

-   pprintf (page, &len, "%-16s %s\n", "type", temp);

+   seq_printf(m, "%-16s %s\n", "type", temp);

    temp = card->version ? card->string[0] : "-";

 #if defined (__fcclassic__) || defined (__fcpcmcia__)

-   pprintf (page, &len, "%-16s 0x%04x\n", "revision", card->info);

+   seq_printf(m, "%-16s 0x%04x\n", "revision", card->info);

 #elif defined (__fcpci__)

-   pprintf (page, &len, "%-16s %d\n", "class", card_id);

+   seq_printf(m, "%-16s %d\n", "class", card_id);

 #endif

-   pprintf (page, &len, "%-16s %s\n", "ver_driver", temp);

-   pprintf (page, &len, "%-16s %s\n", "ver_cardtype", SHORT_LOGO);

+   seq_printf(m, "%-16s %s\n", "ver_driver", temp);

+   seq_printf(m, "%-16s %s\n", "ver_cardtype", SHORT_LOGO);

 

    flag = ((unsigned char *) (ctrl->profile.manu))[3];

    if (flag) {

-      pprintf(page, &len, "%-16s%s%s%s%s%s%s%s\n", "protocol",

+      seq_printf(m, "%-16s%s%s%s%s%s%s%s\n", "protocol",

          (flag & 0x01) ? " DSS1" : "",

          (flag & 0x02) ? " CT1" : "",

          (flag & 0x04) ? " VN3" : "",

@@ -534,20 +520,29 @@ static int __kcapi ctr_info (

    }

    flag = ((unsigned char *) (ctrl->profile.manu))[5];

    if (flag) {

-      pprintf(page, &len, "%-16s%s%s%s%s\n", "linetype",

+      seq_printf(m, "%-16s%s%s%s%s\n", "linetype",

          (flag & 0x01) ? " point to point" : "",

          (flag & 0x02) ? " point to multipoint" : "",

          (flag & 0x08) ? " leased line without D-channel" : "",

          (flag & 0x04) ? " leased line with D-channel" : ""

       );

    }

-   if (len < ofs) {

-      return 0;

-   }

-   *eof = 1;

-   *start = page - ofs;

-   return ((count < len - ofs) ? count : len - ofs);

+

+return 0;

 } /* ctr_info */

+ 

+static int ctr_proc_open(struct inode *inode, struct file *file)

+{

+       return single_open(file, ctr_info, PDE(inode)->data);

+}

+

+const struct file_operations ctr_proc_fops = {

+       .owner          = THIS_MODULE,

+       .open           = ctr_proc_open,

+       .read           = seq_read,

+       .llseek         = seq_lseek,

+       .release        = single_release,

+};

 

 /*---------------------------------------------------------------------------*\

 \*---------------------------------------------------------------------------*/

@@ -626,7 +621,7 @@ int __kcapi add_card (struct capi_driver

    ctrl->release_appl =   release_appl;

    ctrl->send_message =   send_msg;

    ctrl->procinfo =   proc_info;

-   ctrl->ctr_read_proc =   ctr_info;

+   ctrl->proc_fops =   &ctr_proc_fops;

    if (0 != (res = attach_capi_ctr (ctrl))) {

       dec_use_count ();

       stop (card);

```

----------

## rcmc_ronny

Hallo,

falls es noch keiner gesehen hat, unter dem folgenden Link gibt es Anpassungen, welche die alten Fritztreiber auch unter 2.6.34 und 2.6.35 zum laufen bringen, bei mir läuft der fxusb_CZ derzeit unter 2.6.35-r5 (wobei ich den immer selbst aktualisiere mit den Patchen  :Smile: ).

http://www.foehr-it.de/hlp/viewtopic.php?t=364

Ist jedoch nur für User, welche wissen was Sie tun, aber vielleicht kann jemand nen Overlay Ebuild anlegen. 

Wie immer wird die Lizenz geändert, daher kann dies leider nicht im Gentoo Portage eingefügt werden.

Ronny

----------

## rcmc_ronny

Kleines Update, die Patche funktionieren auch unter 2.6.36 und 2.6.37 

Ich habe das Modul soeben erfolgreich unter 2.6.37 ohne Änderungen kompiliert.

Ronny

----------

