HDA Intel (ICH7-M) integrált hangkari probléma

Kezdőlap Fórumok Hangkártyákkal kapcsolatos problémák HDA Intel (ICH7-M) integrált hangkari probléma

10 bejegyzés megtekintése - 11-20 / 45
  • Szerző
    Bejegyzés
  • #2073012
    smica
    Felhasználó

      Debian Etch alatt sikerült egy illetõnek megoldani a dolgot úgy, hogy feltette a legújabb ALSA -t.
      Így csinálta:
      apt-get install module-assistant alsa-source
      Aztán a module-assistant -el lefordította és felrakta a modulokat és onnantól mûködött.
      Szóval ez a biztos módszer: a legújabb ALSA -t kell használni hozzá. Ha ebben segítség kell, akkor szólj.

      Szerk.: A probléma és a megoldás bõvebben kifejtve itt:
      http://linux-on-laptops.com/forum/archive/
      Ezen belül: Linux on Laptops Forum/Laptop Hardware/Audio/Sound problem with Intel 82801G (ICH7 Faily) címû téma (mondjuk, ahogy elnézem nem csak ez a topic foglalkozik ezzel).

      #2073013
      balev
      Felhasználó

        Érdekes ez HDA. Ha az alaplapi modem nincs engedélyezve a BIOS-ban, az alsa hibát jelez. Ha bekapcsolom, szépen látja az eszközt (és a modemet is).
        Kisebbik probléma (de ez ALSA hiba), hogy az alsactl store nem tárolja el a CAPTURE bekapcsolt állapotát.

        Nagyobbik az, hogy ha az external audio (laptopról van szó, tehát a hangszórók) le van némítva, a hangerő lejjebb esik kb. 60-70%-ra és torzít, ha a PCM-et feljebb veszem. Nem lehet valahogy megkerülni ezt? Ok, hogy jó a minőség, ha be van kapcsolva, de ha fülest akarok használni, akkor ne szóljon, ez lenne a lényeg.

        #2073014
        balev
        Felhasználó

          update…

          Mivel elég idegesítő a fent jelzett probléma, nekifutottam mégegyszer, hátha találok bővebb információt a neten.
          A jelenség: Intel HDA hangchip esetén a line_out-ba dugott csatlakozót nem érzékeli és a külső speaker (alsamixer -> external amplifier) továbbra is szól.
          A kapcsoló némítása nem megoldás, mivel a hangerő így lejjebb esik és torzít.

          Ez egy ismert alsa-hiba, lásd:
          https://bugtrack.alsa-project.org/alsa-bug/view.php?id=2581

          Részletesen le van írva a jelenség, ill. a megoldás (végre!), akinek ilyen gondja van.
          A lényeg, hogy a kernelből ki kell venni a driver-t és helyette fordítani egyet, alkalmazva a fenti linken elérhető patch-et.

          Nekem viszont a következő gondom akadt a fordítással (patch-től független):

          Code:
          ./configure –with-card=hda-intel –with-oss=yes

          szépen lefut, de utána fordításnál error:

          Code:
          /home/balev/install/alsa-driver-1.0.14rc4/include/adriver.h: In function `snd_pci_orig_save_state’:
          /home/balev/install/alsa-driver-1.0.14rc4/include/adriver.h:1168: error: too many arguments to function `pci_save_state’
          /home/balev/install/alsa-driver-1.0.14rc4/include/adriver.h: In function `snd_pci_orig_restore_state’:
          /home/balev/install/alsa-driver-1.0.14rc4/include/adriver.h:1172: error: too many arguments to function `pci_restore_state’

          Hosszabb kutakodás után ráleltem egy 2.6 kernel API changelog-ra, ahol írják, hogy pci_save_state és pci_restore_state függvények második (buffer) argumentuma elhagyható:
          http://lwn.net/Articles/2.6-kernel-api/

          Átírva az adriver.h fájlt ez a probléma meg is lett oldva, viszont itt a következő:

          Code:
          In file included from /home/balev/install/alsa-driver-1.0.14rc4/include/adriver.h:926,
                          from /home/balev/install/alsa-driver-1.0.14rc4/acore/sgbuf.c:13:
          include/linux/pci.h:543: error: syntax error before numeric constant

          A kernel pci.h fájl (az utolsó sor az 543):

          Code:
          void pci_disable_device(struct pci_dev *dev);
          void pci_set_master(struct pci_dev *dev);
          #define HAVE_PCI_SET_MWI
          int __must_check pci_set_mwi(struct pci_dev *dev);
          void pci_clear_mwi(struct pci_dev *dev);
          void pci_intx(struct pci_dev *dev, int enable);
          void pci_msi_off(struct pci_dev *dev);
          int pci_set_dma_mask(struct pci_dev *dev, u64 mask);
          int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask);

          Én ebben nem igazán látok problémát, bár a szintaktikát annyira nem ismerem.

          Mit tudok most tenni? A kernelben lévő alsa-driver, vagy a csomagban lévő nem jó, mert nem tudom patch-elni (vagy igen? fixme!)
          Ergo marad a fordítás, de erre a hibára nem tudtam mit reagálni, pedig rákerestem, de nem találtam megoldást, csak több említést a problémára.
          Korábbi verzióknál pedig a következő hiba van (1.0.14rc3, 1.0.14rc2, 1.0.14rc1, 1.0.13):

          Code:
          make -C /lib/modules/2.6.21.1/source SUBDIRS=/home/balev/install/alsa-driver-1.0.13 O=/lib/modules/2.6.21.1/build CPP=”gcc -E” CC=”gcc” modules
          make[1]: Entering directory `/usr/src/linux-2.6.21.1′
          /usr/src/linux-2.6.21.1/Makefile:491: /usr/src/linux-2.6.21.1/arch//Makefile: Nincs ilyen fájl vagy könyvtár
          make[2]: *** No rule to make target `/usr/src/linux-2.6.21.1/arch//Makefile’.  Stop.

          Az arch könyvtárban tényleg nincs Makefile. Ebben az esetben mi lehet megoldás?

          Vagy egyáltalán, akár a stable 13, akár az 14rc4 hibája esetén van valami ötlete valakinek?

          #2073015
          admin
          Adminisztrátor

            van egy ötletem: láttam ilyen problémát ha a bluetooth be volt kapcsolva és úgy volt indítva a gép…. usb bt és kártyaolvasó esetében is…
            lehet, hogy neked nincs ilyen nem tudom, de az irq körül lesz a gond….

            egyébként nálam vannak ilyen gépek és teljesen jól szól 2.6.17-es kernellel  is

            #2073016
            balev
            Felhasználó

              Kösz az ötletet, de jelenleg a kernelbe nincs befordítva a bluetooth, se wifi, pcmcia, semmi ilyesmi, amíg nincs rá szükségem.
              Igazából egy csomó helyen megtaláltam már ezt a hibát, de a legújabb csomagból elérhető alsa-driver nem segített, ezért lenne jó egy friss forrás, patch-elve. Az viszont ugye nem fordul le, de az meg kernelgond. Nem tudom miért.

              IRQ-t fogalmam sincs, hol kell állítani egy eszköznek, megmondom őszintén.

              Mit kezdjen az ember, mikor egy ilyen szintaktikai hibát kap fordítás során? 2.6.20.4-gyel is ez volt, most a legfrissebb stabil 2.6.21.1 van fent, de ott is a pci.h-ra panaszkodik. Meg vagyok lőve, vagy mi?

              #2073017
              zoltan22
              Felhasználó

                Elso lepeskent bedobnek 1-2 ures sot a problemas ele es moge, hogy biztos legyek, hogy azon a soron van a hiba (ekkor +1 sorral kesobb kell jelezze). majd megproblanek ujra forditani.
                Utana: a make altal kiadott utolso parancsba beleszurnek egy „-E” kapcsoot es atoranyitanam egy fajlba (ez csak a preprocesszort futtatja le), mert olyan erzesem van, hogy valami #define felbolygatta a forrast. A kimenetben kellene megkeresni a problemas sort, es menezni, mi van ott..

                #2073018
                balev
                Felhasználó

                  Kösz az ötletet!
                  Tettem az 543. sor elé és mögé egy sort, így az 544.-ben talál hibát:
                  pci.h

                  int pci_set_dma_mask(struct pci_dev *dev, u64 mask);

                  int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask);

                  void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno);

                  make[1]: Entering directory `/usr/src/linux-2.6.21.1′
                    CC [M]  /home/balev/install/alsa-driver-1.0.14rc4/acore/memalloc.o
                    CC [M]  /home/balev/install/alsa-driver-1.0.14rc4/acore/sgbuf.o
                  In file included from /home/balev/install/alsa-driver-1.0.14rc4/include/adriver.h:926,
                                  from /home/balev/install/alsa-driver-1.0.14rc4/acore/sgbuf.c:13:
                  include/linux/pci.h:544: error: syntax error before numeric constant
                  make[4]: *** [/home/balev/install/alsa-driver-1.0.14rc4/acore/sgbuf.o] Error 1
                  make[3]: *** [/home/balev/install/alsa-driver-1.0.14rc4/acore] Error 2
                  make[2]: *** [_module_/home/balev/install/alsa-driver-1.0.14rc4] Error 2
                  make[1]: *** [modules] Error 2
                  make[1]: Leaving directory `/usr/src/linux-2.6.21.1′
                  make: *** [compile] Error 2
                  balev@lenovo:~/install/alsa-driver-1.0.14rc4$   

                  Milyen parancsot futtassak -E kapcsolóval?

                  Egyébként az adriver.h tartalma a kérdéses résznél:

                  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
                  #ifdef CONFIG_PCI
                  #ifndef CONFIG_HAVE_NEW_PCI_SAVE_STATE
                  void snd_pci_compat_save_state(struct pci_dev *pci);
                  void snd_pci_compat_restore_state(struct pci_dev *pci);
                  static inline void snd_pci_orig_save_state(struct pci_dev *pci, u32 *buffer)
                  {
                          pci_save_state(pci, buffer);
                  }
                  static inline void snd_pci_orig_restore_state(struct pci_dev *pci, u32 *buffer)
                  {
                          pci_restore_state(pci, buffer);
                  }

                  #undef pci_save_state
                  #define pci_save_state          snd_pci_compat_save_state
                  #undef pci_restore_state
                  #define pci_restore_state      snd_pci_compat_restore_state
                  #endif /* !CONFIG_HAVE_NEW_PCI_SAVE_STATE */
                  #endif /* CONFIG_PCI */
                  #endif /* >= 2.4.0 */

                  /* pci_get_device() and pci_dev_put() wrappers */
                  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
                  #ifdef CONFIG_PCI
                  #define pci_get_device  pci_find_device
                  #define pci_dev_put(x)
                  #endif
                  #endif

                  Itt a pirosakat szedtem ki, mivel azt írta az API changelog, hogy ezekre már nincs szükség. Így nem is kaptam „too many arguments” hibát, viszont a ‘pci.h’ fájlban szintén ilyen bufferes résznél van hiba. A kettő gyanítom összefügg.

                  The prototypes to pci_save_state() and pci_restore_state() have changed: the buffer  argument is no longer needed (the space has been allocated in struct pci_dev instead). [GKH]

                  Nem értem egyébként, hogy ha változnak a kernelben használt függvények, akkor ALSA-ék mért nem figyelnek pl. ilyenre.
                  Lehet a pci.h-ban is ki kéne szedni a buffer argumentumokat? Ezért akad össze a kettő?

                  #2073019
                  balev
                  Felhasználó

                    Az ALSA driver és >2.6.19 kernel összeférhetetlensége:
                    http://www.linuxquestions.org/questions/showthread.php?t=507533&referrerid=195877

                    Namost:
                    – kernelben lévő nem jó, mert nem tudom patch-elni
                    – 1.0.14rc4-et fordítanám, de nem fordul

                    Ergo vagy várom, hogy kijöjjön egy újabb, ami lefordul 2.6.21-en,
                    vagy leszedem a HG snapshot-ot, amiről fogalmam sincs, hogy mit tesz.

                    #2073020
                    zoltan22
                    Felhasználó

                      A make beolvassa a makefile-t es meghivja tobbszor a gcc-t, jol felparameterezve. Nalam mindig kiirja hogy eppen mit is csinal (sok szemet a kepernyon), altalaban ugy kezdodik, hogy „gcc & kimenet
                      Eztuan a „kimenet” fajlban meg kell keresni a problemas sort.

                      Egyebkent meg hasbol:
                      ha az 543-as sor ele beirsz egy „#undef pci_set_consistent_dma_mask”-ot, akkor javul a helyzet ?

                      #2073021
                      balev
                      Felhasználó

                        update again…

                        Végre kijött az ALSA 1.0.14 végleges verzió!
                        http://alsa-project.org/

                        A lényeg, hogy ez már nem ütközik a 2.6.21-es kernellel (lásd előzmények) és a patch alkalmazása után fordított alsa-driver már úgy müködik, ahogy kell. A lényeg, hogy az „external_amplifier”-nek bekapcsolva kell lennie, különben gyenge a jel és torzít.

                        És mostmár „érzékeli”, hogy ha be van dugva a Jack-dugó és lenémítja a laptop hangszórókat!

                        Akinek hasonló gondja volt laptopnál hda-intel chippel, annak mostmár van megoldás! Jeee 🙂

                      10 bejegyzés megtekintése - 11-20 / 45
                      • Be kell jelentkezni a hozzászóláshoz.