搞定NB摄像头驱动、挂载优盘、耳机听音乐。。。(2008-04-09)

本文分享了解决Linux系统中常见问题的经验,包括安装摄像头驱动、解决耳机无声问题以及USB设备自动识别。通过更新驱动和配置文件,作者成功克服了这些挑战。
     今天心血来潮,突然想把系统剩下的几个无关痛痒的问题解决掉,这也许是我追求完美的性格所致。仅仅用了一下午,三个问题就解决掉了,回想起来觉得是自己的linux书平提高了,解决问题也就越来越顺畅了。

    说起来,今天也算是无心而为之,在google的时候,就把第一个问题(摄像头驱动)输进去搜了一下,查了查各位linux同胞的帖子,搞了搞还真的驱起 来了。虽然在make和make install的时候也出现了点小错误,不过无关大局。用的驱动包就是stk11xx 1.3.1版本的,就如达人所讲的那样,"make -f Makefile-syntekdriver"和"sudo make -f Makefile-syntekdriver install"两条命令就可以了。不过编译有错误还是生成了stk11xx.ko,安装就安不上了。可以手动cp到/lib/modules /<kernel version>/kernel/drivers/media/video0,大概是这个路径,找到过一个帖子这样说,但是重新编译内核后,就忘记 了,media/video0这个目录及子目录没有可以建一个。这样每次系统启动的时候,就会自动加载模块。不过我懒得让它自动启动,干脆把 stk11xx.ko拷贝出来,放到一旁,什么时候想用了,就"sudo insmod stk11xx.ko",这样就可以使用视频驱动了。
    第二个问题是解决无法使用耳机听声音的问题。这个问题在刚开始做LFS的时候就存在,一直也没解决,当时也是比较菜,有点蒙。现在觉得NB只能用喇叭发 声,实在不爽,干脆还是找找办法解决它。一直想是不是因为alsa 1.0.13的版本太低导致的,在成功后回想了一下,好像不是,应该还是配置文件的问题。以前将声卡驱动直接编译进了内核,这是毫无问题的,今天干脆把 alsa作为module编译了。跑到realtek找到了个它发布的linux下的驱动包,下载解压后一看,好家伙,这不就是alsa-project 上的驱动嘛!realtek也够可以的。算了不和它一般计较,发现它提供的那个脚本还真挺方便,省得我自己写了,拿过来改了改,轻松地就将从 realtek下载回来的alsa 1.0.15替换成了1.0.16(当前最新的驱动),这个爽啊,一条命令就完活了。需要把这个脚本发布一下:
#!/bin/sh

######## VERSION 1.0 ########

KERNEL_VER=`uname -r`

. ./version

echo ".....Decompress ALSA Driver source v$ver"
tar xvpfj alsa-driver-1.0.16.tar.bz2 > /dev/null 2>&1
echo ".....Decompress ALSA Library source v$ver"
tar xvpfj alsa-lib-1.0.16.tar.bz2 > /dev/null 2>&1
echo ".....Decompress ALSA Utility v$ver"
tar xvpfj alsa-utils-1.0.16.tar.bz2 >/dev/null 2>&1

sync

echo "Remove old sound driver"
if [ -d /lib/modules/$KERNEL_VER/kernel/sound ]; then
   rm -rf /lib/modules/$KERNEL_VER/kernel/sound/pci > /dev/null 2>&1
   rm -rf /lib/modules/$KERNEL_VER/kernel/sound/acore > /dev/null 2>&1
   rm -rf /lib/modules/$KERNEL_VER/kernel/sound/core > /dev/null 2>&1
fi

## remove driver modules
if [ -f /etc/rc.d/init.d/alsasound ]; then
   /etc/init.d/alsasound stop
   rmmod snd-page-alloc > /dev/null 2>&1
   rmmod soundcore > /dev/null 2>&1
fi

sleep 2

echo "Compile Driver........"
cd alsa-driver-1.0.16
./configure --with-cards=hda-intel --with-sequencer=yes
make
make install
./snddevices
cd ..

## for x86
echo "Remove old alsa library"
rm -rf /lib/libasound.* > /dev/null 2>&1
rm -rf /lib64/libasound.* > /dev/null 2>&1
rm -rf /usr/lib/libasound.* > /dev/null 2>&1
rm -rf /usr/lib64/libasound.* > /dev/null 2>&1

echo "Compile ALSA Library....."
cd alsa-lib-1.0.16
./configure
make
make install
cd ..

echo "Compile ALSA Utility......"
cd alsa-utils-1.0.16
./configure
make
make install
cd ..

#echo "Comiple XrealMixer......"
#cd ./

## for x86_64
if [ -d /usr/lib64 ]; then
  cp -lf /usr/lib/libasound.* /usr/lib64
  cp -lf /usr/lib/pkgconfig/alsa.pc /usr/lib64/pkgconfig
  ldconfig -n /usr/lib64
fi

sleep 1

## del audio stat file
if [ -f /etc/asound.state ]; then
   rm -rf /etc/asound.state > /dev/null 2>&1
fi

## alsa driver sndstat file relink
rm -rf /dev/sndstat > /dev/null 2>&1
ln -s /proc/asound/oss/sndstat /dev/sndstat

## sample wave
if [ -d /usr/share/sounds/alsa ]; then
     bzip2 -d test.wav.bz2
     cp -f test.wav /usr/share/sounds/alsa
     bzip2 test.wav
else
     mkdir /usr/share/sounds/alsa
     bzip2 -d test.wav.bz2
     cp -f test.wav /usr/share/sounds/alsa
     bzip2 test.wav
fi

echo "Remove Folder....."
rm -rf alsa-driver-1.0.16 > /dev/null
rm -rf alsa-lib-1.0.16 > /dev/null
rm -rf alsa-utils-1.0.16 > /dev/null
alsaconf

     此时,运行了alsaconf之后,配置完就差不多了。但是还是和以前一样,耳机是发不了音的,这就是我说为什么感觉不是alsa 1.0.13版本低的问题的原因。还是配置文件的问题了,找帖子终于搞定,办法是将下面一段加入到/etc/modprobe.conf:
# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-hda-intel
options snd-hda-intel model=z71v position_fix=1
# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
# card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
 
     上面的这段完全可以替换掉alsaconf自动配置在/etc/modprobe.conf的文字。重启后,success。
     第三个问题是解决usb不能自动识别出来的问题,也就是在/dev下没有找到用来挂载的优盘文件。这个问题的解决是重新配置了内核,将scsi device support加了进去,至少是需要这个的。以前配置的时候,没注意到usb storage 那个地方有提示说depend on scsi support。当然了,需要看help。我又随手在block support那项里选了两个,具体忘记了,这两个和usb有没有直接的联系,现在是测不出来了,要测的话,那就是自找麻烦,会疯的。还有就是将ohci 去掉了,只留了uhci和ehci,uhci是支持usb 1.x的,ehci是支持2.0的。也在2.6.24.4内核新支持的sandisk闪存两项上选择了,不过估计不选也没事。就这样,重新编译完内核后, 顺便把ATI的驱动、内核版本、FUSE、ndiswrapper都搞到了当前最新的版本,这下爽了,重启了之后,一切ok。
     插上usb优盘的时候,发现了/dev/uba1,说来也奇怪了,发行版的默认基本上都是/dev/sda1,在我这变成了uba1,新鲜。呵呵,无所谓 了,总之是使用了没问题了。"sudo mount -t vfat /dev/uba1 /mnt/usb -o rw,iocharset=utf8" 之后, 读写、显示中文就都没问题了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值