어쩌라구..?? ㅡㅡa..

Posted
Filed under Linux/system
참조 링크 : http://wiki.bluez.org/wiki/HOWTO/AudioDevices

내가 사용중인 블루투스 동글은 웨이브시스텍 BT-2000S 모델이고
헤드셋은 Jabra BT620S를 사용중이다.
혹시나 리눅스에서 동작하는 동글 찾는사람 있을까봐 미리 적는다.

환경은 우분투 7.10 gutsy 에서 설정한 내용이다.
다른 배포판이라도 bluez-util 라이브러리 버전이
3.16이상이면 모두 동일하게 설정할 수 있다고 한다.
설정법도 매우 간단하다.

일단 블루투스 장치를 활성화 시키고 블루투스 장치를 인식했다는 메세지를 확인한다.
그리고 홈 디렉토리에 .asoundrc 파일을 만든다. 기본으로 파일이 없다.
pcm.bluetooth {
  type bluetooth
  device 00:13:17:72:4E:13  # User's headset address
}

pcm.!default {
  type plug
  slave.pcm "bluetooth"
}

#pcm.!default {
#  type route
#    slave.pcm "bluetooth"
#    ttable {
#      0.1 = 1
#      1.0 = 1
#    }
#}

파일 내용을 좀 들여다 보면,
pcm.bluetooth 항목에서 device 번호를 사용자에 맞도록 설정해 주어야 한다.
헤드셋을 페어링 상태로 두고 쉘에서 hcitool scan 명령을 실행시켜 검색해보면
헤드셋의 주소를 알 수 있고, 그 값을 적어주면 된다.

나머지 두 항목은 디폴트 출력 장치를 설정하는 부분인데,
주석(#)으로 묶여있는 항목은 헤드셋의 좌.우를 바꾸는 설정이다.
어떤 모듈인지는 모르겠으나, 블루투스로 들으면 좌.우가 바뀌어 나오는 경우가 있다고 한다.
이런 현상이 있으면 주석을 이용해서 바꿔 주면 해결된다.

그리고 디폴트 항목을 둘 다 주석처리하면
원래 사운드 장치로 출력을 되돌릴수 있다.

설정을 마쳤으면 alsa 시스템을 재시작시킨다.
$ sudo /etc/init.d/alsa-utils restart
그리고 헤드셋을 페어링 모드로 바꾸고 음악을 재생하면
페어링 키 값을 넣으라는 메세지가 뜬다.
키 값을 넣고 정상적으로 연결되면 음악이 잘 나오는걸 확인할 수 있을것이다.
2007/12/13 06:38 2007/12/13 06:38
Posted
Filed under Linux/system
일단 다운로드부터 시작하자.11월 30일부터 배포하기 시작한 PXA255-PRO1 보드용 2.6커널 부트로더가 동작하지 않았다.
부트로더가 전에는 blob이었는데 이번에 u-boot로 바뀌었다.

그런데 배포하는 부트로더를 올리니까 내 경우에는 아예 화면이 출력되지 않았다.
시리얼 라인으로 아무런 신호가 없는 것이다.
수많은 삽질 결과 시리얼 초기화 코드에서 blob과 u-boot의 차이점을 발견했다.

패치를 첨부하니, 이 글을 읽고 무슨말인지 알만한 사람은 써먹을 수 있으리라 믿는다.
단! 아래 박스는 참고만 하고. 패치가 필요하면 첨부파일을 받아 사용하라.
--- ub/cpu/pxa/serial.c    2007-02-22 20:40:58.000000000 +0900
+++ u-boot-1.2.0-proX/cpu/pxa/serial.c    2007-12-01 16:02:48.000000000 +0900
@@ -63,11 +63,13 @@
     FFIER = 0;                    /* Disable for now */
     FFFCR = 0;                    /* No fifos enabled */
 
+    FFLCR = LCR_WLS0 | LCR_WLS1 | LCR_DLAB;    /* enable access to the latch registers */
     /* set baud rate */
-    FFLCR = LCR_WLS0 | LCR_WLS1 | LCR_DLAB;
     FFDLL = quot & 0xff;
     FFDLH = quot >> 8;
-    FFLCR = LCR_WLS0 | LCR_WLS1;
+        // reset fifos
+        FFFCR = FCR_RESETTF | FCR_RESETRF;
+    FFLCR = LCR_WLS0 | LCR_WLS1;        /* disable to latch reg */
 
     FFIER = IER_UUE;            /* Enable FFUART */
 
2007/12/02 01:38 2007/12/02 01:38
Posted
Filed under Linux/system
거창한 강좌를 쓰는건 아니고,
우분투에서 디렉토리 공유 툴은 잘 되어 있는데,
문제는 공유를 해 놓고 프로세스가 돌아도 연결이 안된다는거..

공유 걸어놓고 윈도에서 연결하면 id/pass 창이 뜨는데
분명히 제대로 연결해도 계속 id/pass 만 묻는다. ㅡㅡ;

이건 우분투 7.10 버그이고 해결법은 다음의 명령을 쉘에서 입력한다.
$ sudo smbpasswd username -a
명령에서 username은 자기가 로그인할 아이디로 바꿔주면 되고,
그  다음부터는 윈도에서 정상적으로 연결이 된다.

문제는 윈도에서 암호화된 패스워드를 전송하는데,
우분투의 패스워드 목록에 저 사용자가 없기 때문이고,
7.10에서 툴을 잘못 만들거나 시스템을 잘못 설계하지 않았나 생각된다.
이전 버전까지는 이 문제가 없었다고 한다. 안해봐서 잘 모르겠지만서도..

추신 :
이전 버전 삼바서버 설치 문서를 보니
예전부터 수동으로 사용자 추가 하라고 되어 있었다.
불편하긴 하지만 보안을 위해서는 좋은 것이라고 생각하긴 하나
GUI로 서버를 설정할수 있게 한다면
사용자도 GUI로 설정할 수 있도록 하는것이 좋지 않을까 싶다.
2007/11/05 14:46 2007/11/05 14:46
Posted
Filed under Linux/system
난 이걸 폰에서 사진 다운받을 목적으로 쓰고 있다.
블루투스간 파일 전송을 위해선 누군가 서버가 되어줘야 하는데
우분투에는 기본으로 서버가 들어있지 않다. 블루투스 스택은 들어있지만 말이다.
폰에서 사진 전송하려고 블루투스 장치를 검색해보면
컴터가 보이기는 하나 연결은 안된다. 응답이 없다고 나온다.

설치하는건 간단하다.
$ sudo apt-get install gnome-bluetooth

이거 한방이면 설치는 끝난다.
설치 후 '프로그램->보조 프로그램->Bluetooth File Sharing'이 생길것이고
이것이 파일전송 서버이다.

실행시키면 트레이에 아이콘이 하나 생기고
폰에서 사진 전송하려고 하면 연결을 허용하겠느냐고 묻는다.

적절히 응답하면 파일 전송이 시작된다. 파일 잘 날아온다.
옵션도 없고 무척이나 사용법이 간단하다.
사용법은 여기까지다.


이 프로그램에서 보이는 문제점이 몇가지가 있는데,
일단 옵션창이 없다는 것 이다.
소스코드를 좀 디벼 보면 옵션이 전혀 없지는 않다.
문제는 그 옵션을 설정할 수 있는 옵션 창이 없다는것이다.
개발자도 TODO에서 그 문제를 얘기 하고 있다.
이로 인해 생기는 불편함은 전송된 파일이 저장될 곳을 지정할 수 없다는것이고,
파일 하나하나마다 전송 후 확인 창이 뜬다는것이다.

수동으로 이 옵션을 바꾸고 싶으면, gconf-editor를 띄워서
'/apps/gnome-obex-server'항목으로 가서 그 안의 값들을 수정해주면 된다.
다운로드 경로와 확인창 여부를 지정할 수 있다.

이 프로그램의 다른 문제는 처음 파일을 전송할때
always accept를 선택할 수 있는데,
이렇게 신뢰하도록 지정된 장치의 목록을 알 수 없다는것이다.
이것도 gconf-editor에서 수정할 수는 있는데 '/system/bluetooth/device/'아래에 있다.
각 블루투스 장치의 mac어드레스가 나오고 그 안에 신뢰 여부가 들어있는데,
permisson 필드의 값이 2라면 신뢰한다는것이다.
그 값을 지워버리면 파일 전송할때 다시 전송하겠느냐고 묻는다.

이 신뢰 여부는 파일 전송 서버에서 관리하는게 아닌걸로 보이는데
이 설정을 어디에서 할 수 있는지는 모르겠다.

지금까지 알아낸 정보는 여기까지.
2007/10/26 05:51 2007/10/26 05:51
Posted
Filed under Linux/system
X 윈도우는 서버/클라이언트 모델로 동작한다.

서버는 화면을 그려주고 키보드, 마우스 입력을 받는다.
클라이언트는 프로세스이다. 웹 브라우저, 에디터, 기타 등등의 프로그램들이 클라이언트가 된다.

클라이언트가 서버에게 입력을 요청하고, 화면 출력을 요청한다.
서버는 이를 받아 디스플레이에 그려주거나 클라이언트가 요청한 반응을 보인다.

이 개념이 그닥 쉽게 다가오지는 않는다. 프로그램이 화면을 그리라고 시키고, 입력을 달라고 시키는데, 이거 뭔가 뒤바뀐게 아닌가?
근데 이렇게 생각하면 조금 이해가 쉬울지도 모르겠다.
X 윈도우를 떠나서 생각해 보면, (웹을 예로 들어) 항상 켜 있고 대기중이면서 클라이언트(브라우저)의 연결을 기다리고 있는 녀석이 서버이고, 필요에 따라 실행되고 원하는 서버에 접속하는 녀석이 클라이언트이다.

여기까지 이해가 되는가? 부디 이해가 되면 좋겠다.
맨날 대기중이어서 아무때나 연결을 받아들이는 녀석이 서버이고,
필요에 따라 서버에 연결을 하는 녀석이 클라이언트라고 했을때
X 윈도우에서는 누가 항상 대기중인 녀석인가 생각해보면 이해가 될 것이다.
응용 프로세스가 화면을 그리라고 시키는 녀석이긴 하지만,
조금 더 파헤쳐 보면 프로세스가 실행 되고 대기중인 서버에 접속해서 화면 그리라고 시키는것이다.
그렇다면 접속하는 녀석이 프로세스이므로 클라이언트가 맞지 않은가?

서버/클라이언트 얘기는 여기까지 하고,
이 글의 주제는 그렇다면 X 윈도우 서버와 클라이언트가 다른 컴퓨터에 있어도 되지 않겠는가에 대한 생각이다.
물론 가능하다. 내 로컬 컴퓨터에 X 서버가 있다면 다른 컴퓨터에는 클라이언트만 있어도 된다는 말이다.
MS윈도의 터미널 클라이언트 처럼 화면을 통째로 가져다 놓는것이 아니라,
한 프로그램의 화면 출력을 이쪽 컴퓨터로 끌어오는 것이다.
프로세스는 다른 컴퓨터에 있고, 디스플레이와 입/출력은 이쪽에서 한다.
띄워 놓으면 상당히 쓰기 편하다. ssh나 telnet과 비교해 봤을때.
ssh는 아무리 용 써봐야 CLI다. 그러나 그 ssh를 통해 GUI를 사용 할 수 있다.

사설이 길었다. 이제 방법을 얘기 하자면,
이 글에서 가정한 환경은 서버/클라이언트(X윈도우 말고..) OS는 모두 ubuntu이다.
서버에는 openssh 서버가 돌고 있고, 로컬 컴퓨터에 ssh 클라이언트가 깔려 있다.
서버에는 X윈도우가 없고, 로컬에는 당근 X윈도우가 돌면서 웹도 쓰고 오피스도 쓰고 한다.
이정도는 흔히들 쓰고 있을 환경일 것이다. 서버에 왜 X윈도우가 깔려 있겠는가?

이 상황에서 서버쪽에는 X 서버가 없지만, 그렇다고 해서 X 클라이언트가 돌지 말라는 법은 없다.
서버에 ssh를 이용하여 접속하고, X 응용 프로그램을 깔고 돌려보자.
$ sudo apt-get install vim-gtk
$ gvim
당연히 실행 안된다. 디스플레이가 없다고 에러 낸다.
디스플레이라는것이 X 서버를 말하는것인데, 당연히 안되는것이 정상이다.
이때 X 서버로 연결을 ssh를 통하여 터널링 시키는것이다.

ssh 연결을 끊고 다시 접속하는데 이번에는 -X 옵션을 주고 연결하자.
옵션의 -X는 반드시 대문자를 사용할것. 이 옵션이 X윈도우 연결을 터널링 해주는 옵션이다.
소문자 x를 사용하면 연결 할 수 있어도 하지 말라는 옵션이다. 당연히 연결 안된다.
$ ssh -X 어딘가.있는.서버
(로그인 과정 생략)
$ gvim
뜨는가? 글쎄.. 안될것이다. 또 디스플레이 못 찾는다고 투덜거리고 CLI vi에디터가 뜰 것이다.
이제내가 알아낸 방법을 써 먹을때가 되었다. 캬캬~

다음 명령을 서버에서 실행시키자.
$ sudo apt-get install xauth
설치가 끝나면 ssh 연결을 끊고 -X 옵션을 주고 다시 연결하자.
그리고 gvim 띄우면 이제는 로컬에 gvim이 나타날 것이다. 아름답지 않은가?
실행 속도도 그다지 느리지 않다. 적어도 터미널 클라이언트에 비하면 수십배 빠르다.

이제는 사족이다. 서버에 X 포워딩을 이용하여 연결했을때
자동으로 이를 감지하여 vi라고 실행시켜도 gvim이 뜨면 편할것이다.
이를 위하여 다음의 코드를 ~/.bashrc에 집어넣는다.
어디 넣어야 하는지 모르겠다면 맨 끝에 때려넣어라.
# if X window server available
if [ ! -z $DISPLAY ]; then
  alias vi='gvim'
fi
이거 해석할 수 있는 사람이면 원하는거 추가도 할 수 있겠지?


마지막으로 변명이다. ㅡㅡ;
gvim의 경우 vim-gnome을 설치하면 좀 더 이쁜 화면을 볼 수 있으나,
서버에 gnome시스템이 없는 관계로 저걸 설치하면 용량이 수십배 더 많이 든다.
gtk버전이 그나마 용량을 적게 사용해서 gtk버전을 설치했다.
그래도 이정도면 봐줄만 하지 않은가? ㅡㅡ
2007/09/17 07:44 2007/09/17 07:44