Kezdőlap › Fórumok › Hangkártyákkal kapcsolatos problémák › HDA Intel (ICH7-M) integrált hangkari probléma
- This topic has 44 hozzászólás, 14 résztvevő, and was last updated 17 years, 1 months telt el by
strapal.
-
SzerzőBejegyzés
-
2006-12-07-22:09 #2073012
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).2007-04-20-23:50 #2073013É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.
2007-05-06-03:07 #2073014update…
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=2581Ré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=yesszé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 constantA 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?
2007-05-06-07:07 #2073015van 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
2007-05-06-22:43 #2073016Kö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?
2007-05-07-18:00 #2073017Elso 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..2007-05-07-20:24 #2073018Kösz az ötletet!
Tettem az 543. sor elé és mögé egy sort, így az 544.-ben talál hibát:
pci.hint 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
#endifItt 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ő?2007-05-07-20:48 #2073019Az ALSA driver és >2.6.19 kernel összeférhetetlensége:
http://www.linuxquestions.org/questions/showthread.php?t=507533&referrerid=195877Namost:
– kernelben lévő nem jó, mert nem tudom patch-elni
– 1.0.14rc4-et fordítanám, de nem fordulErgo 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.2007-05-08-06:39 #2073020A 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 ?2007-06-09-14:29 #2073021update 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 🙂
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz