BenQ Joybook S52 built-in sound card partially work with ALSA
Wow! It has been about 7 months since I migrated to Ubuntu Dapper in my laptop, BenQ Joybook S52, with on sound. During that time, I live with a USB sound card. As I mentioned in the past, this issue has been posted about 19 months ago. Fortunately, this issue has big progress last week or two. Congratulation for all you having BenQ Joybook S52 and S53 series!
For now, my operating system is Ubuntu 6.10 Edgy Eft. It comes with sound drivers from ALSA 1.0.11. I supposed it might be too old since discussion in the issue only confirmed to work with ALSA 1.0.14rc1 with full debugging option. Let's see what I did.
-
Install all essential packages.
sudo apt-get install build-essential fakeroot linux-headers-$(uname -r) alsa-source kernel-package
-
Download the latest ALSA driver.
wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.14rc1.tar.bz2
-
Extract the archive.
tar xjf alsa-driver-1.0.14rc1.tar.bz2
-
Copy all debian changed to rebuild it.
tar xjf /usr/src/alsa-driver.tar.bz2 cp -Rp modules/alsa-driver/debian alsa-driver-1.0.14rc1
-
Replace
debian/rules
by follows.#!/usr/bin/make -f # Written by Steve Kowalik <> for the New Alsa-Source. # Loosely based on the rules file from pcmcia-cs and the old alsa-source. KSRC ?= /usr/src/linux KDREV ?= unknown KVERS ?= unknown ALSA_DEBUG_LEVEL ?= detect ifeq ($(KDEP),) KDEPC = else KDEPC = $(KDEP), endif # See if we can work out the compiler used ifeq ($(origin CC),default) ifneq "$(wildcard $(KSRC)/include/linux/compile.h)" "" CC = gcc-$(shell grep LINUX_COMPILER $(KSRC)/include/linux/compile.h | sed 's/.* \([0-9]\+\.[0-9]\+\).*/\1/') else CC = gcc endif endif # Special case gcc 2.7.2 ifeq ($(CC),gcc-2.7) CC = gcc272 endif # If they didn't set $(KVERS), see if we can do it for them. ifeq ($(KVERS),unknown) ifneq "$(wildcard $(KSRC)/include/linux/version.h)" "" KVERS = $(shell head -1 $(KSRC)/include/linux/version.h | sed 's/.*"\(.*\)"$$/\1/') endif endif # Clear root command if already root ifeq ($(shell id -u),0) ROOT_CMD= endif # Use updates/ subdirectory so that the modules in alsa-modules-$KVERS # are given priority (by depmod) over modules under kernel/. CONFIGURE_OPT = --prefix=/usr \ --with-kernel=$(KSRC) \ --with-build=$(KSRC) \ --with-moddir=/lib/modules/$(KVERS)/updates/alsa \ --with-sequencer=yes ifneq (,$(findstring 2.2.,$(KVERS))) MODULELOADERDEP = modutils (>= 2.3.5) PCMCIAMODULESSUG = kernel-pcmcia-modules-$(KVERS) | pcmcia-modules-$(KVERS) # See SF bug #550435 CONFIGURE_OPT += --disable-verbose-printk else ifneq (,$(findstring 2.4.,$(KVERS))) MODULELOADERDEP = modutils (>= 2.3.5) PCMCIAMODULESSUG = kernel-pcmcia-modules-$(KVERS) | pcmcia-modules-$(KVERS) else MODULELOADERDEP = module-init-tools (>= 3.1) PCMCIAMODULESSUG = endif endif # Read in config file, generated by debconf. ifeq (/etc/alsa/alsa-source.conf,$(wildcard /etc/alsa/alsa-source.conf)) include /etc/alsa/alsa-source.conf endif ifeq ($(HOME)/.alsa-source.conf,$(wildcard $(HOME)/.alsa-source.conf)) include $(HOME)/.alsa-source.conf endif ifeq ($(CURDIR)/debian/alsa-source.conf,$(wildcard $(CURDIR)/debian/alsa-source.conf)) include $(CURDIR)/debian/alsa-source.conf endif ifeq ($(ALSA_NOPNP),y) CONFIGURE_OPT += --with-isapnp=no else CONFIGURE_OPT += --with-isapnp=yes endif ifeq ($(ALSA_DEBUG),y) CONFIGURE_OPT += --with-debug=$(ALSA_DEBUG_LEVEL) endif ifneq ($(ALSA_CARDS),) CONFIGURE_OPT += --with-cards=$(ALSA_CARDS) endif ifneq ($(ALSA_CARD_OPTIONS),) CONFIGURE_OPT += --with-card-options=$(ALSA_CARD_OPTIONS) endif ifneq ($(ALSA_OPTS),) CONFIGURE_OPT += $(ALSA_OPTS) endif ifneq ($(CONCURRENCY_LEVEL),) MAKE_OPT = -j $(CONCURRENCY_LEVEL) endif VERSION = $(shell dpkg-parsechangelog | grep ^Vers | cut -d\ -f2) ifneq ($(KDREV),unknown) ifeq ($(findstring :,$(KDREV)),:) VERSION := $(subst :,:$(VERSION)+,$(KDREV)) else VERSION := $(VERSION)+$(KDREV) endif endif echo-vars: @echo "I've been configured using:" @echo " - Kernel source of $(KSRC)" @echo " - Kernel version of $(KVERS)" @echo " - Kernel revision of $(KDREV)" @echo " - C compiler of $(CC)" @echo " - Make options of $(MAKE_OPT)" @echo " - Version of $(VERSION)" configure: configure-stamp configure-stamp: @if [ ! -x /usr/bin/$(CC) ]; then echo "You don't have the compiler that your kernel was built with installed"; exit 1; fi CC="$(CC)" ./configure $(CONFIGURE_OPT) touch configure-stamp build: build-stamp build-stamp: configure-stamp $(MAKE) $(MAKE_OPT) compile install: install-stamp install-stamp: build-stamp $(MAKE) $(MAKE_OPT) DESTDIR=$(CURDIR)/debian/$(shell dh_listpackages) install-modules control-munge: for i in control postinst postrm ; do \ cp -p debian/$$i debian/$$i.orig; \ cat debian/$$i | sed \ -e 's/_KVERS_/$(KVERS)/g' \ -e 's/_KDEP_/$(KDEPC)/g' \ -e 's/_MODULELOADERDEP_/$(MODULELOADERDEP)/g' \ -e 's/_PCMCIAMODULESSUG_/$(PCMCIAMODULESSUG)/g' \ -e '/^Suggests:space:*$$/d' \ > debian/$$i.tmp; \ mv -f debian/$$i.tmp debian/$$i; \ done touch control-munge clean-control-munge: for i in control postinst postrm ; do \ if [ -f debian/$$i.orig ]; then \ mv -f debian/$$i.orig debian/$$i ; \ fi ; \ done -$(RM) control-munge clean: clean-control-munge -make mrproper $(RM) configure-stamp $(RM) build-stamp binary_modules: binary-modules binary-modules: configure-stamp build-stamp control-munge install-stamp dh_testdir dh_testroot dh_installdirs usr/share/bug/alsa-modules-$(KVERS) dh_installchangelogs debian/changelog.ALSA # alsa-modules-i386 adds changelog.alsa-driver.Debian if [ -f debian/changelog.alsa-driver.Debian ] ; then \ dh_installdocs debian/changelog.alsa-driver.Debian ; \ else \ dh_installdocs ; \ fi dh_install debian/bug/control usr/share/bug/alsa-modules-$(KVERS) dh_strip dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol -- -v"$(VERSION)" dh_md5sums ifeq "$(origin KPKG_DEST_DIR)" "undefined" ifeq "$(origin KMAINT)" "undefined" dh_builddeb --destdir=$(CURDIR)/.. else dh_builddeb --destdir=$(KSRC)/.. endif else dh_builddeb --destdir=$(KPKG_DEST_DIR) endif binary: @echo "Binary target not supported. Use binary-modules or make-kpkg." exit 1 # Targets that kernel-package uses. kdist_configure: configure-stamp kdist_config: configure-stamp kdist_image: $(ROOT_CMD) $(MAKE) -f debian/rules binary-modules $(ROOT_CMD) $(MAKE) -f debian/rules clean kdist_clean: clean kdist: $(ROOT_CMD) $(MAKE) -f debian/rules binary-modules .PHONY: configure build clean binary-modules binary_modules binary kdist_configure kdist_config kdist_image kdist_clean kdist
-
Build the package.
fakeroot ./debian/rules binary_modules KSRC=/usr/src/linux-headers-$(uname -r)/ KVERS=$(uname -r) ALSA_NOPNP=n ALSA_DEBUG=y ALSA_DEBUG_LEVEL=full ALSA_CARDS=intel8x0 ALSA_CARD_OPTIONS= ALSA_OPTS=--with-oss
-
You shoudl get
alsa-modules-2.6.17-10-386_1.0.14rc1-0ubuntu1_i386.deb
in parent directory so just install it.dpkg -i alsa-modules-2.6.17-10-386_1.0.14rc1-0ubuntu1_i386.deb
-
Reboot your laptop. After that you are able to unmute the speaker by following command.
$ sudo su - # echo 1 > /proc/asound/card0/codec97#0/ac97#0-0+regs
Yes!!! It works! Thanks ALSA and Conexant.
- sugree's blog
- 5600 reads
package
alsa-modules package for s52 on edgy
Get it here. Note that it is i386. If you would like to build it yourself, please tell me. I will upload the whole sources.
Hi, thanks for your
Hi can i please get in
Kernel
hi how do i change the
simply replace it
So basically by running the
Hi i seem to be having
different kernel
You kernel version is not the same to me.
Umm. I think it would be better to compile the driver yourself. You have to use my
debian/rules
to turn on debugging option. The default rules will only turn the option todetect
so it will just print out log during hardware probe. To modify registry, you need to specify debugging option tofull
. Above rules will let you specify debugging option at compile time, e.g.,ALSA_DEBUG_LEVEL=full
.As long as you build the driver using above
debian/rules
, the driver will be installed in another directory which has priority over the original driver. So you have to reboot to take effect.added
Hi i have tried copying the
alsa source
Oops! It might be my fault that not mentioning to install
alsa-source
first.Hi Sugree, I have tried
Hi Sugree, I think i have
Thanks so much!
There's a way no doing it on .deb???
I found the easy way =D
Help!
please point me to your e-mail or msn
At point number 6 I have
Post new comment