Forum Linux.noyau bttv & Firmware dans le kernel 2.6.10

Posté par  .
Étiquettes : aucune
0
29
déc.
2004
Bonjour,

Après compilation du noyau 2.6.10, je me suis rendu compte que le firmware de ma carte d'acquisition (Hauppauge WinTV PVR 250) n'était plus chargée par bttv :'( (alors que mon noyau 2.6.9 le fait correctement !)

Je n'ai pas trouvé de réponse ni sur internet, ni dans la documentation du kernel !

Est-ce que quelqu'un ici pourrait me dire comment faire plz !
Merci d'avance !
  • # s/bttv/ivtv/ ?

    Posté par  (site web personnel) . Évalué à 0.

    A ma connaissance, c'est plus ivtv (cf. http://ivtv.sourceforge.net(...)) que bttv qui prend en charge le chargement du firmware... essaye avec un modprobe ivtv
    • [^] # Re: s/bttv/ivtv/ ?

      Posté par  . Évalué à 1.

      Je n'ai trouvé aucun module du nom d'ivtv, même un locate ivtv ou un fgrep -r ivtv /usr/src/linux/* n'a rien donné :'(

      modprobe bttv card=80 (sur un 2.6.9) donne :

      [...]
      bttv0: detected: Hauppauge WinTV [card=10], PCI subsystem ID is 0070:13eb
      bttv0: using: Hauppauge WinTV PVR [card=80,insmod option]
      bttv0: enabling ETBF (430FX/VP3 compatibilty)
      bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
      bttv0: uploading altera firmware [/usr/lib/video4linux/hcwamc.rbf] ...
      bttv0: ... upload ok
      [...]

      modprobe bttv card=80 (sur un 2.6.10) donne :

      [...]
      bttv0: detected: Hauppauge WinTV [card=10], PCI subsystem ID is 0070:13eb
      bttv0: using: Hauppauge WinTV PVR [card=80,insmod option]
      bttv0: enabling ETBF (430FX/VP3 compatibilty)
      bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
      bttv0: no altera firmware [via hotplug]
      [...]
      • [^] # Re: s/bttv/ivtv/ ?

        Posté par  (site web personnel) . Évalué à 1.

        Au temps pour moi alors ...

        En lisant les docs de bttv, il semblerait que sur les nouvelles versions (du moins sur la 0.9.15), le firmware doive se trouver dans le répertoire /etc/pvr, ou alors il faut le spécifier via l'option firm_altera= dans le modprobe.

        En espérant que ca t'aide ...
        • [^] # Re: s/bttv/ivtv/ ?

          Posté par  . Évalué à 2.

          Nop ! (mais merci quand même !)

          /etc/pvr était le repertoire d'une vieille version du kernel. Je ne sais pas a partir de quand ça a changé... Jusqu'au noyau 2.6.9 il fallait mettre le firmware dans /usr/lib/video4linux/ mais ça a de nouveau changé ! (idem pour firm_altera, ce n'est plus une option valide !)
          • [^] # Re: s/bttv/ivtv/ ?

            Posté par  . Évalué à 1.

            Apres avoir lu les sources de bttv voici ce que je peut en dire.
            Avant on liait simplement les firmware dans les drivers mais ce n'est pas bien on ne doit plus le faire(pas de code non source dans le kernel il a dis mrs linus) voir affaire avec la webcam philips par exemple.
            Le fichier que bttv cherche a charger doit etre maintenant

            /lib/hotplug/firmware/hcwamc.rbf

            (voir ici un exemple http://at76c503a.berlios.de/fw_dl.html(...))
            • [^] # aie pas la tete

              Posté par  . Évalué à 1.

              il faut bien sur lire
              /usr/lib/hotplug/firmware/hcwamc.rbf
            • [^] # Re: s/bttv/ivtv/ ?

              Posté par  (site web personnel) . Évalué à 1.


              Avant on liait simplement les firmware dans les drivers mais ce n'est pas bien on ne doit plus le faire(pas de code non source dans le kernel il a dis mrs linus) voir affaire avec la webcam philips par exemple


              A la différence près que Hauppauge a fait un choix particulier pour ses cartes d'acquisition : plutôt que de flasher un firmware et laisser aux utilisateurs courir le risque de griller leur carte en cas de défaillance électrique lors du re-flashage, il n'y a aucun firmware en rom de la carte, ils sont tous chargés dynamiquement dans la ram de la carte. Charge donc au logiciel ou à l'OS de charger ce firmware a chaque initialisation de la carte. D'où la nécessité absolue d'avoir un firmware pour la famille Hauppauge PVRX50 (et peut-être d'autres cartes).

              Maintenant, de là à fournir le source du firmware en question...
              • [^] # Re: s/bttv/ivtv/ ?

                Posté par  . Évalué à 1.

                Maintenant, de là à fournir le source du firmware en question...
                ce n'est pas tellement ce que les modifications dans le kernel cherche a induire. Que le micro de la carte PVR ait besoin de code bin ou de source recompiler avec le kernel n'est pas la question. Cette modification (supression de toute trace de firmware proprio dans le kernel) est motivé par la volonté d'avoir un kernel 100% libre (pas de trace de code qui un jour pourrait poser pb de license)...le pb de propriété/license du firmware est transféré a l'utilisateur qui achete un matériel.
            • [^] # Re: s/bttv/ivtv/ ?

              Posté par  . Évalué à 1.

              ça ne marche toujours pas !

              J'ai aussi fouillé un peu dans les sources, en regardant le patch, on voit bien que la méthode a changée, mais cela ne dit pas ce qu'il faut modifier dans la configuration.
              • [^] # Re: s/bttv/ivtv/ ?

                Posté par  . Évalué à 1.

                la question est comment est configuré ton kernel.
                Si tu as 'Y' dans la configuration de hotplug lorsque tu as recompilé ton kernel alors le module utilise hotplug.
                (CONFIG_FW_LOADER)
                si tu mets 'N' et que tu recompile le tout le modules utilise l'acienne maniere de faire et va chercher " /usr/lib/video4linux/hcwamc.rbf"
                pour charger le firmware (ou ce que tu defini par la ligne de commande)
                • [^] # Re: s/bttv/ivtv/ ?

                  Posté par  . Évalué à 1.

                  J'ai essayé de virer hotplug du noyau, rien a faire, le firmware ne se charge toujours pas :-(

                  # CONFIG_HOTPLUG is not set

                  ~$ modprobe bttv
                  [...]
                  bttv0: enabling ETBF (430FX/VP3 compatibilty)
                  bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
                  bttv0: no altera firmware [via hotplug]
                  [...]
                  • [^] # Re: s/bttv/ivtv/ ?

                    Posté par  . Évalué à 1.

                    bon les grand moyens.
                    tu recupere les sources de bttv-0.9.15 que tu decompress dans un repertoire en etant root.
                    dans le fichier
                    bttv-cards.c l
                    ligne 34, passe les 3 ligne en commentaitre

                    //#ifdef CONFIG_FW_LOADER
                    //# include <linux/firmware.h>
                    //#endif
                    et ajoute
                    #ifdef CONFIG_FW_LOADER
                    #undef CONFIG_FW_LOADER
                    #endif


                    fais dans ce repertoire un coup de make
                    tu doit recuperer un .ko
                    modprobe ce .ko et qu'est ce qui ce passe ?
  • # c'est bien ivtv

    Posté par  (site web personnel) . Évalué à 0.

    cette carte n'es pas compatible avec bttv donc inutile de chercher de se coté la...
    Essaye comme indiqué précédement http://ivtv.sourceforge.net/(...) pour la doc
    et http://205.209.168.201/~ckennedy/ivtv/(...) pour le driver
    le driver est a la version 0.2.0rc3 et est deja tres stable
    • [^] # Re: c'est bien ivtv

      Posté par  . Évalué à 1.

      ... mais j'ai utilisé bttv jusque là, et tout marchait (très) bien !

      Dans la documentation du kernel, elle est présente dans la liste des carte supportée :

      Dans le fichier $KERNELSRC/Documentation/video4linux/bttv/Cards :

      Hauppauge
      ---------
      many many WinTV models ...
      [...]
      WinTV PVR 250
      [...]
  • # ... Success !!!

    Posté par  . Évalué à 1.

    J'ai écrit à kraxel pour lui soumettre mon problème...

    Apparemment le firmware est maintenant chargé par hotplug. J'ai donc mis le firmware dans le répertoire hotplug : /usr/lib/hotplug/firmware (le répertoire peut être modifier dans le fichier /etc/hotplug/firmware.agent), puis j'ai recompilé le noyau avec le support hotplug (CONFIG_HOTPLUG=y)

    Maintenant ça marche.

    Je ne voulais pas utiliser hotplug de peur que cela ralentisse mon système (chargement à chaque niveau de init entrainant des "module already loaded" ... pas très propre (??)).

    Voilà, j'espère que ça en aidera d'autre...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.