몇년 전부터 c110 tabletpc를 사용해오고 있다. 가끔씩 리눅스를 사용할 필요가 있을 때 wubi를 이용해서 ubuntu를 설치하곤 했지만 그때마다 삭제해버렸다. 내 하드디스크 용량이 작은 이유도 있지만 무엇보다도 wireless 문제가 컸다. suspend 이 후에 무선랜이 작동을 중지해 버린다. 이 문제를 구글링해보았지만 한가지 방법밖에 없었다. acerhk라는 모듈을 사용하는 것. 이번에도 리눅스에서 프로그래밍을 할 일이 있어 ubuntu를 새로 깔았다. 아마도 한 동안 사용해야 할 것같아서 acerhk를 컴파일하기로 했다.

먼저 소스를 다운받는다.
http://www.cakey.de/acerhk/archives/acerhk-0.5.35.tar.bz2

사용하는 kernel의 header 파일을 설치한다. ubuntu 8.04 의 경우 2.6.24-19-generic를 설치하였다.
sudo apt-get install linux-headers-2.6.24-19-generic

이제 다운받은 소스를 압축을 풀고 컴파일을 한다.
tar xvfj acerhk-0.5.35.tar.bz2
cd acerhk-0.5.35
make
sudo make install
이 과정에서 컴파일 에러가 났다. 그래서 간단하게 아래와 같이 하니까 문제없이 컴파일되었다.
/usr/src/linux-headers-2.6.24-19-generic/scripts/Makefile.build 의 47-49번째 라인을 다음과 같이 comment out 하였다.
        #ifneq ("$(save-cflags)","$(CFLAGS)")
        #        $(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS)
        #endif

이제 아래와 같이 하면 자동으로 suspend에서 돌아올 때 무선랜이 작동된다고 하지만 내 경우에는 안되었다.
sudo echo "echo 1 > /proc/driver/acerhk/wirelessled" > /etc/acpi/resume.d/60-acer-wireless-led.sh

그냥 터미널에서 매번 위 명령을 내린다.
sudo echo 1 > /proc/driver/acerhk/wirelessled

이제 모든게 잘 작동된다.

----------------------------------------------------------------------
Feb. 2 2009
Ubuntu 8.04에서는 위와 같이 컴파일해도 문제가 없었는데 8.10에서 컴파일이 제대로 되지 않았다. 아래와 같은 에러를 계속 뿜었다. 구글링을 해보아도 여기에 대한 질문만 있지 답을 하는 사람은 아무도 없었다.

  CC [M]  /home/yonggun/acerhk-0.5.35/acerhk.o
/home/yonggun/acerhk-0.5.35/acerhk.c: In function ‘call_bios_6xx’:
/home/yonggun/acerhk-0.5.35/acerhk.c:581: error: bp cannot be used in asm here

결국 자포자기하는 심정으로 call_bios_6xx와 call_bios_52x 함수에서 asm부분을 모두 코멘트 처리를 해버렸다. 혹시나가 역시나인 듯 했으나... 일단 내 경우에는 작동을 한다. 아마 이 두 함수는 오래된 장치를 지원하는 코드인 듯하다.
아무튼 미션 완료... ^^
Posted by yonggun

댓글을 달아 주세요

  1. michaelyzy 2008.12.02 00:59  댓글주소  수정/삭제  댓글쓰기

    http://www.oesf.org/forum/index.php?showtopic=26368

    would you have time to solved this problem?