ALSA 0.5.10을 이용한 ThinkPad 600E 2645-3AU에서 사운드 연주.
거의 2틀을 고생한 끝에 결국은 성공을 해서 여기에 글을 올립니다. 먼저
참고한 것들을 올려 보면
http://www.alsa-project.org/~valentyn/Alsa-sound-mini-HOWTO.html http://www.cs.utexas.edu/users/kharker/linux-laptop/
이곳에 가면 여러가지 랩탑에서의 리눅스 설치 및 설정에 관한 정보들이 있습니다. 거의
모든 알려진 랩탑에 대해서 있다고 봐도 과언이 아닐 듯. 랩탑에 리눅스 쓰시는 분은 꼭 한
번 들러 보시길... http://panopticon.csustan.edu/thood/tp600lnx.htm 위 사이트는 IBM 600 or 600E기종을 쓰
시는 분은 꼭 보시면 많은 도움을 얻을 수 있습니다. 저도 여기서 많은 정보를 얻었는데 T
homas Hood 라는 사람의 홈페이지 입니다. 체계적으로 잘 정리가 되어 있습니다.
그럼 본론으로 들어가서, ALSA 0.5.10드라이버를 통해서 xmms에서 연주를 하기 까지.
1. 파일 받기
http://www.alsa-project.org 에 가시면 .5.10버전은 2000년 12월 25일 4pm현재 받으실 수 있습니다.
세가지로 구성이 되어 있는데요, 드라이버, 라이브러리, 유틸
2. 커널컴파일
전 한컴 1.2를 이용 했는데 다른 배포판이나 커널도 동일하리라 생각합니다.
다른 것은 제쳐두고 "PNP" 지원 부분을 disable 시키십시요. 이게 중요합니다.
첨엔 이걸 "ENABLE" 시키고 했다가 죽어도 드라이버 모듈이 로드가 안됐습니다.
두번째로 sond지원이 가능하도록 하되 다른 드라이버는 선택을 하지 말랩니다.
근데 전 아래와 같이 옵션을 주고 컴파일 했는데 잘 최소한 아직까진 xmms가 잘 연주되고
있습니다. 참, 커널은 2.2.18을 새로 받아서 했습니다.
# CONFIG_PNP is not set
컴파일시 Sound 부분 옵션
CONFI_SOUND=Y
CONFIG_SOUND_OSS=m
CONFIG_SOUND_CS4232=m
CONFIG_SOUND_OPL3SA2=m
CONFIG_SOUND_SOFTOSS=m
CONFIG_SOUND_NM256=m
3. ALSA드라이버 컴파일
ALSA-sound-mini-howto에 보면 드라이버 컴파일 시 --with-isapnp=yes를 주고 하라고 되어 있는데
전 오히려 이것 때문에 안됐던듯 싶습니다. 다른 600E 사용자도 이 옵션이 없이 성공을 했
다고 했습니다. 드라이버 컴파일시 "alsa-driver 디렉토리/.configure --with-debut=full --with-isapnp=no
--with-kernle= /usr/src/llinux source 디렉토리 " 위에서 isapnp옵션을 안주면 디폴트로 yes로 되는
것 같습니다. 컴파일 후 드라이버 디렉토리에서 ./snddevices 스크립트를 실행 해 주면 드라이
버가 설치됩니다. 라이브러리, utils순서로 컴파일 후 설치하시면 됩니다.
더 자세한 것은 mini-howto 참고 하시고요.
4. 모듈 로드하기.
Thomas Hood 라는 사람이 작성한 것을 쓰고 있습니다. 다른 것들도 위에서 말한 홈페이지에서
찾을 수가 있는데 드라이버가 로드가 되긴 하는데 소릴 들을 수가 없었습니다. 뭔가 좀 잘
못 된듯 싶어서 Thomas Hood씨의 modules.conf를 약간 수정해서 쓰고 있습니다.
#Thomas Hood's Configuration of ALSA 0.5 for Debian GNU/Linux
alias char-major-116 snd
alias char-major-14 soundcore
alias sound-service
0 snd-mixer-oss
alias sound-service
1 snd-seq-oss
alias sound-service
3 snd-pcm-oss
alias sound-service
8 snd-seq-oss
alias sound-service
12 snd-pcm-oss
#alias snd-card-0 snd-card-dummy
#alias snd-card-1 snd-card-serial
#alias snd-card-2 snd-card-share
#alias snd-card-3 snd-card-virmidi
alias sound-slot-0 snd-card-0
#alias sound-slot-1 snd-card-1
#alias sound-slot-2 snd-card-2
#alias sound-slot-3 snd-card-3
alias sound snd-card-0
alias snd-card-0 snd-card-cs4236
alias snd-minor-oss-0 snd-card-cs4236
alias snd-minor-oss-1 snd-opl3
alias snd-minor-oss-3 snd-pcm-oss
# (If you are using the original alsasound script, then do an "/usr/sbin/alsactl restore" here instead.)
#
# ALSA native device support
#
# group 29 is "audio"
options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 snd_device_gid=29 snd_device_uid=0
#
options snd-card-cs4236 snd_index=0 snd_id=Card1 snd_port=0x530 snd_cport=0x538 snd_mpu_port=0x330 snd_fm_port=0x388 snd
_sb_port=0x220 snd_irq=5 snd_dma1=0 snd_dma2=1 snd_mpu_irq=9 post-install snd-card-cs4236 /usr/sbin/alsactl restore
일단 여기까지 했으면 이제 모듈 로드를 해 봅니다
전 아래와 같은 스크립트를 써습니다. 그냥 명령어로 해도 문제는 없겠죠.
/sbin/modprobe snd-card-cs4236
/sbin/modprobe snd-pcm1-oss
스크립트도 아니죠?
근데 이게 필요한가요? 부팅될 때 modules.conf를 읽어서 로드를 하지 않나 싶은데 아직 확인
을 안해봐서리..
요걸 실행 할 때 modules.conf가 수정이 된 뒤면 /lib/modules/커널버전/modules.d
ep가 더 오래 됐다(?) 뭐 비슷한 에러가 나는 경우가 있는데 그땐 "/sbin/depmod -a 커널버전"
해 주시면 됩니다. 여기까지 했으면 로드가 제대로 됐는지 확인을 해야겟죠.
/proc/ioports, /proc/interrupts, /proc/dma등을 보면 사운드카드가 쓰고 있는 자원에 대한 정보가 기
록이 됩니다. 근데 이것들은 드라이버가 제대로 로드가 안되는 경우도 존재 할 수가 있다
느 군요. 확실한 것은 "/proc/asound/Card1/" 디렉토리밑에 midi***, pcm***, mixer*** 하는 파일 들이 있
으면 제대로 로드가 된거라네요.
모듈이 로드가 되는 데도 소리가 안난다. 이 경운 아직 볼륨조절이 안되서 그러니 다음 단
계로. 5. mixer set
기본적으로 소리가 "mute"가 되어 있다고 howto 나 메뉴얼에 나와 있습니다. 그래서 unmute를
해 줘야죠.
/usr/bin/alsamixer를 실행하면 막대그래프같은게 나타나는데 여기서 볼륨 조절을 해 주면 됩니
다. 아니면 /usr/bin/amixer 해 보시면 현재 설정된 값이 주르륵 나옵니다. 저도 자세한 것은
아직 잘 모르는데 볼륨을 조절 하는 방법은
/usr/bin/amixer set Master 100 unmute
amixer set PCM 60 unmute
amixer set FM 80 unmute등...
숫자는 볼륨의 퍼센트고 unmute는 소릴 내라는 뜻이겠죠.
amixer를 아 무 옵션 없이 실행하면 현재 설정값을 보여주는데 거기에 위에서 열거한
Master, PCM , FM 등의 그룹이 있습니다. 이걸 위에서와 같은 옵션을 줘서 조절 하죠.
그럼 설정 해 놓은 것을 저장해야 담에 또 쓰겠죠.
[root@phoenix 2.2.18]# /usr/sbin/alsactl store
h 하시면 /etc/asound.conf 가 생성이 됩니다. 그걸 한번 죽 읽어 보시면
대충 어떻게 볼륨이 현재 설정 되어 있는지 대충 아실 수 있을 겁니다.
저 위에 modules.conf의 맨 마지막 줄에 있는
post-install snd-card-cs4236 /usr/sbin/alsactl restore
이게 위에서 store옵션으로 저장된 값을 다시 불러다 쓰는 경우인것 같네요. 맞죠?
아니
면 지적 부탁합니다.
여기 까지 해서 xmms를 실행하면 드디어 소리가 나옵니다.
이거 하는데 거의 2틀 걸렸습니다.
혹 질문 있으시면 seonho at chonnam.ac.kr 로 메일 보내셔도 되고요. 단 바로 답장을 할 수 있을지
는 장담을 못드립니다.
어디다 퍼 옮기셔도 좋은데 누가 썼는진 밝히시겠죠.
상업적 매체는 게제시 저자한테 연락 바랍니다. 