2016년 6월 30일 목요일

Opensips 설치 및 사용법

Opensips 설치 및 사용법

SIP proxy인 Opensips를 설치하고 UA(pjsua)와 연동하기위한 방법입니다.

2016년 6월 30일 신C

*Documents
 http://www.opensips.org/Documentation/Manual-2-2

*source download
 git clone https://github.com/OpenSIPS/opensips.git -b 2.2 opensips_2_2

* compile
 make all && make install

* opensipctlrc 수정
9 ## your SIP domain
10 SIP_DOMAIN=myopensips.org  // /etc/hosts 에 myopensips.org 등록.
11
12 ## chrooted directory
13 # $CHROOT_DIR="/path/to/chrooted/directory"
14
15 ## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, DBTEXT, or SQLITE
16 ## by default none is loaded
17 # If you want to setup a database with opensipsdbctl, you must at least specify
18 # this parameter.
19 # DBENGINE=MYSQL
20 DBENGINE=DBTEXT
21
22 ## database port (PostgreSQL=5432 default; MYSQL=3306 default)
23 DBPORT=3306
24
25 ## database host
26 DBHOST=localhost
27
28 ## database name (for ORACLE this is TNS name)
29 DBNAME=opensips
30
31 # database path used by dbtext, db_berkeley, or sqlite
32 DB_PATH="/usr/local/etc/opensips/dbtext"
33
34 ## database read/write user
35 DBRWUSER=opensips
36
37 ## password for database read/write user
38 DBRWPW="opensipsrw"
* Create DB
  1. Configuring DB Credentials
    sudo /usr/local/etc/opensips/opensipsctlrc  db_opensips
INFO: creating DBTEXT tables at: db_opensips ...
INFO: creating DBTEXT presence tables at: db_opensips ...
INFO: creating DBTEXT extra tables at: db_opensips ...

 -ERROR: database engine not specified, please setup one in the config script
 -> 환경파일에 접근권한이 없음, sudo로 수행할 것.

 - DB 파일패스 설정 스크립트: /usr/local/lib64/opensips/opensipsctl/opensipsdbctl.dbtext
 - DB 파일패스:/usr/local//share/opensips/dbtext/opensips/

*실행
- $opensips -l 192.168.1.17:5060
Listening on
            udp: 127.0.0.1 [127.0.0.1]:5060
    udp: 192.168.1.17 [192.168.1.17]:5060
Aliases:

- opensipsctl start|stop
 - ERROR: PID file /var/run/opensips.pid does not exist -- OpenSIPS start failed
 - TODO: 왜 안될까??

*사용자 계정등록
등록된 사용자 보기: $opensipsctl ul show
등록된 사용자 제거: $opensipsctl ul rm user_name


*pjsua실행시 등록을 위한 파라미터
 --id sip:paul@192.168.1.17
 --registrar sip:192.168.1.17
 --proxy sip:192.168.1.17;lr   :Route: <sip:192.168.1.17;lr> 로 전송된다.
 --realm *
 --username paul
 --password 1234

잘 등록됐는 지 확인:
 - $opensipsctl ul show paul
AOR:: paul
Contact:: sip:paul@192.168.1.11:5060;ob Q=
Expires:: 14
Callid:: 70e7b77c-3820-4176-aa4d-3726903b6db1
Cseq:: 57254
User-agent:: PJSUA v2.5 Linux-3.18/armv7l/glibc-2.22
State:: CS_NEW
Flags:: 0
Cflags::
Socket:: udp:192.168.1.17:5060
Methods:: 8063

*연동확인 한 UA: Linephone, microsip, pjsua

2016년 6월 21일 화요일

Amp Class

1. A 클래스 앰프
   가장 기본적인 반도체의 증폭 개념을 그대로 사용한 방식으로써,​ 출력소자에 항상 바이어스 전류가 흐르며 가장 왜율이 적고 가장 좋은 선형의 출력을 갖기는 하지만 효율이 낮은 방식 입니다.
   교류신호의 +, - 신호로 구성된 소스 신호를 인위적으로 모두 ‘+’ 로 인식시켜서 일괄 증폭하는 방식이고 이를 위해서는 소스 신호와 상관없이 + 로 들어올리는 바이어스(bias) 전압을 항상 걸어 놓게 되는데 이것은 +, - 신호를 별도로 증폭하는 트랜지스터의 구조적 한계를 극복하는 방식입니다.
   특히 +, - 가 빈번히 교차하는 고역 쪽으로 갈수록 매끄러운 재생이 돋보인다는 장점이 있습니다.
   즉, 원 신호의 찌그러짐이나 손상 없이 증폭이 된다는 것입니다.
   그래서 항상 전압이 걸리는 설계로 발열이 매우 심하고 고출력으로 설계하기 어렵다는 단점이 있습니다. (B클래스의 1/4 수준)
   예를들어 20W A클래스 앰프의 경우엔 스피커로 나가는 출력과 상관 없이 볼륨이 0인 상황에서도 앰프에 파워만 들어와 있으면 20W의 에너지가 그대로 방열판으로 나가게 됩니다. 
2. B 클래스 앰프
   위와 같이 A클래스 앰프의 발열 및 전력 소모가 큰 문제를 개선하기 위하여 에너지 효율을 중심으로 설된 방식이 B클래스입니다.
   효율을 중시한 보편적인 앰프의 증폭방식으로서 교류의 +, - 신호를 별도로 증폭한 다음 합쳐서 최종 출력하는 방식입니다. 소스 신호가 없으면 전류가 흐르지 않으며 신호가 유입되었을 때 작동을 하게됩니다.
   +와 – 신호의 상호 전환시에 순간 다른 트랜지스터가 작동하는 방식이라서 A클래스 방식에 비해 스위칭 왜곡이 발생하기 쉽고 음질 저하의 단점이 있습니다.
3. AB 클래스 앰프 
​   말그대로 A클래스와 B클래스의 장점을 절충한 방식입니다.
   기본적으로는 +, - 신호를 별도로 증폭하는 B클래스 방식이지만, 바이어스 전압을 낮게 걸어서 특정 출력까지는 A클래스처럼 작동하게 합니다.
   따라서 AB클래스는 그 설계 방식이 A클래스에 가까운지 B클래스에 가까운지에 따라서 AB1급 AB2급으로 세부 구분이 되기도 합니다.
   시간이 갈수록 상당수의 앰프들이 이 방식을 채택하고 있어서 하이파이앰프에서 가장 흔한 방식이 되었으며, 발열 및 전력소모에서 유리한 프리앰프는 A클래스, 파워앰프는 AB클래스로 구성하여 설계되는 경우가 많습니다.
   보통 A클래스 증폭이라고 하는 앰프도 자세히 살펴보면 AB클래스인 경우도 많다고 합니다.

4. D 클래스 앰프
   스위칭 또는 PWM(Pulse Width Modulation) 앰프입니다.
   PWM 이라는 변조 기술을 사용합니다. 변조는 일반적으로 입력 신호를 통신하기 좋은 형태로 변형시키는 것입니다.​
   이 방식은 스위칭 소자 들이 완전히 ON 또는 OFF 되어 출력 소자에서의 전력 손실을 크게 감소 시켜서 90 ~95%의 효율을 얻는 것이 가능하며, (A클래스의 경우 20%의 효율) 오디오 신호는 출력 소자를 구동하는 PWM 캐리어 신호를 변조시켜 종단에서 LPF로 고주파의 PWM 캐리어 주파수를 제거한다.​ (로우 패스 필터를 거치는 것으로 이해됩니다)
   이때 ​필터를 거치게 되면서 주파수 대역에 따라 왜곡율이 다르게 적용되기 때문에 소리의 왜곡이 생길 수 있다는 점이 단점이 됩니다. 대신 효율이 좋기에 작은 공간의 설계로 큰 출력을 얻을 수 있기에 최근 유행되고 있는 PC-FI등의 좁은 공간에서의 니어필드 환경에서 매우 적합한 방식이라고 생각됩니다.
​※ C급 증폭방식은 오디오용에는 사용되지 않고, 효율성이 극히 요구되는 경우에 사용되는 증폭 방식입니다. (무전기등..)
​부족하지만 글을 읽고 도움이 되셨으면 좋겠습니다.



CCL


5. D 클래스 장단점
전력효율이 80%에도 미치지 못하는 클래스 AB 앰프 역시 모바일 기기에 적용되기에는 전력 소모가 너무 크다. 그 결과 등장한 것이 클래스 D 앰프. 클래스 D 앰프는 아날로그 입력을 증폭하여 역시 아날로그 출력을 제공하는 클래스 A, B, AB 앰프와 달리 디지털 출력을 제공한다.
클래스 A, B, AB 앰프의 경우 트랜지스터에 의해 신호 증폭이 이루어지지만, 클래스 D 앰프는 신호 증폭 소자로 FET가 사용된다. FET는 트랜지스터에 비해서 상대적으로 작동 효율이 좋기 때문에 클래스 D 앰프는 85% 이상의 전력 효율을 제공한다. 따라서 현재 대부분의 모바일 기기의 오디오 시스템에서는 클래스 D 앰프를 적용한다. 최근 반도체 업체들이 제공하는 클래스 D 오디오 앰프 중에는 전력 효율이 95%에 육박하는 제품도 있다.
내셔널세미컨덕터의 아시아태평양 마케팅 담당 헨리 궉(Henry Kwok) 매니저는 "현재 대부분의 업체들이 공급하고 있는 클래스 D 앰프는 클래스 AB 앰프와 비교하여 동일한 수준의 음질을 제공하고 있다"면서, "따라서 같은 음질을 얻는다면 전력 소모 측면에서 유리한 클래스 D 앰프를 모바일 기기에 사용하는 것이 전력 특성 상 효과적"이라고 설명했다.
다만 클래스 D 앰프의 경우 PWM 변환에 고주파 신호가 필요하기 때문에 EMI 문제가 발생하게 된다. 헨리 매니저는 "가격 조건이나 신호 왜곡, 노이즈 문제 등에 관해서는 클래스 AB 앰프가 클래스 D 앰프에 비해 아직은 이점이 있는 것도 사실"이라고 조언했다.
클래스 D 앰프의 EMI, 즉 노이즈 신호를 줄이기 위한 해법으로 대부분의 아날로그 업체들이 SS(Spread Spectrum) 기술을 제공하고 있다.

6.  G 클래스

클래스 G 앰프는 여타 오디오 앰프들과 달리 입력되는 오디오 신호의 크기에 따라 앰프에 걸리는 바이어스 전압이 변화한다. 오디오 신호가 작을 때는 작은 전압, 오디오 신호가 클 때는 큰 전압이 걸리는 것이다. 이는 결국 오디오 신호에 따라서 전력 소모를 조절할 수 있다는 뜻이다. 
클래스 D 앰프의 음질이 향상되었다고는 하지만 아날로그 신호를 디지털로 변환하는 것과 아날로그 신호를 증폭만 하는 것에는 분명 차이가 존재한다. 따라서 클래스 AB의 음질을 유지하면서, 클래스 D 앰프와 비슷한 전력 효율을 얻기 위한 앰프가 등장한 것인데, 클래스 G 앰프가 바로 그것이다.

7.  W 클래스
 'WM8900' 클래스 G 제품군을 공급하고 있으며, 클래스 G의 가변 전압 구현을 위해 필요한 듀얼 입력 전압을 싱글 입력 전압으로 변형시킨 클래스 W 제품군도 선보였다.