AT 명령어

**AT 명령어** 또는 **헤이즈 명령어**(Hayes command set)는 데니스 헤이즈(Dennis Hayes)와 데일 히서링턴(Dale Heatherington)이 1981년에 출시된 300보 헤이즈 스마트모뎀(Hayes Smartmodem) 제어용으로 개발한 일련의 명령어 집합이다.accessdate=January 8, 2015 전화 걸기와 끊기, 연결 설정 변경 등의 작업을 위한 짧은 문자열로 구성되어 있다. 헤이즈 명령어 및 그 파생형은 대다수의 모뎀에서 사용되었다. 명령어 집합은 원래에는 초당 300비트 모뎀에 필요한 작업만을 포함했으며, 고속 모뎀이 등장하면서 새로운 기능을 제어하기 위하여 각각 제조사별의 독자적인 확장이 도입되었다. 기본 명령 구조와 문법은 공유하지만 헤이즈와 US 로보틱스에서는 `&`, 마이크로컴에서는 `\`와 같은 접두사가 붙은 새로운 명령이 추가되었다. 대부분의 확장 명령은 SupraFAXModem 14400 출시 이후 시장이 통합되면서 헤이즈 명령어의 확장 표준으로 포함되었다.
# 기본 명령어 집합
다음 명령은 AT 명령어를 지원하는 거의 모든 모뎀에서 지원한다. {| summary="기본 AT 명령어 집합" class="wikitable" ! 명령 ! 설명 ! 비고 |- | **A0**, **A** | 수신 호 응답 | |- | **A/** | 마지막 명령 반복 | 명령 앞에 **AT**를 입력할 필요가 없으며, 명령 뒤에 캐리지 리턴을 입력할 필요가 없다. 이를 입력하면 중단한다. |- | **D** | 호 발신 | 뒤따르는 번호로 호를 발신하며 핸드셰이크 과정을 거친다.
P: 펄스 다이얼
T: 톤 다이얼
W: 2차 다이얼 톤 대기
R: 다이얼 후 응답 대기 모드로 전환
@: 최대 30초까지 링백 대기
,: S8 레지스터에 정의된 시간만큼 대기(대개 2초)
;: 다이얼 후 명령 모드 유지
!: 스위치 훅
L: 마지막으로 건 번호 사용 |- | **E0** 또는 **E** | 에코 비활성화 | 입력한 명령어를 컴퓨터로 재전송하지 않음 |- | **E1** | 에코 활성화 | 입력한 명령어를 컴퓨터로 재전송함 |- | **H0** 또는 **H** | 훅 상태 | 온 훅. 전화를 끊으며 진행 중인 호를 단절한다. |- | **H1** | 훅 상태 | 오프 훅. 수화기를 들어서 다이얼 톤을 들을 수 있다. |- | **I0**부터 **I9**까지 | 질의 | 모뎀 모델, 펌웨어, 제조사 명칭과 같은 정보를 반환한다. 0부터 9까지 숫자는 모뎀 제조사별로 특정한 정보를 반환하며 정의되지 않았을 경우 ERROR를 반환한다. |- | **L0** 또는 **Ln** (n=1-3) | 스피커 음량. 스피커가 장착된 모뎀에서만 지원하며, 스피커가 없거나 사운드 카드로 음성을 전달하는 모뎀에서는 지원하지 않는다. | 0은 스피커를 끄며, 1부터 3까지는 음량을 설정한다. |- | **M0** 또는 **M** | 스피커 음소거, 전화 거는 중에 음성을 출력하지 않는다. | 일부 제조사에서는 **M3**을 사용하기도 한다. |- | **M1** | | 수신자 캐리어가 들릴 때까지 스피커 활성화(다이얼 과정과 모뎀 핸드셰이크까지 소리를 들을 수 있으며, 연결이 수립된 후 스피커가 음소거됨) |- | **M2** | | 스피커 항상 활성화(`CONNECT` 수신 이후에도 복조된 데이터 청취 가능) |- | **O** | 온라인으로 복귀 | "+++" 탈출 코드 수신 이후 연결된 상태로 복귀한다. |- | **Q0** 또는 **Q** | 조용한 모드 | 꺼짐: 결과 코드를 표시하며 사용자는 명령 응답을 받는다.(예:`OK`) |- | **Q1** | 조용한 모드 | 켜짐: 결과 코드를 표시하지 않으며 사용자는 명령 응답을 받지 않는다. |- | **S*`n`*** | rowspan="3" | 현재 레지스터 선택 **S*`n`***, **?**, =*`r`*은 독립된 명령 세 개이며, 단독 **AT** 명령으로도 수행할 수 있다. | 현재 레지스터를 *n*으로 선택 |- | **S*`n`*?** | 현재 레지스터를 *n*으로 선택하고 값을 조회한다. **?**만 입력하면 가장 마지막으로 선택한 레지스터를 조회한다. |- | **S*`n`*=*`r`*** | 현재 레지스터를 *n*으로 선택하고 *r*을 저장한다. **=*`r`***만 입력하면 가장 마지막으로 선택한 레지스터에 값을 저장한다. |- | **V0** or **V** | 자세히 | 숫자로 결과 코드 반환 |- | **V1** | | 문자열로 결과 코드 반환(예: `CONNECT`, `BUSY`, `NO CARRIER` 등) |- | **X0** or **X** | 스마트모뎀 | 헤이즈 Smartmodem 300 호환 결과 코드 |- | **X1** | | 기본 결과 코드 뒤에 연결 속도 추가(예: `CONNECT 1200`) |- | **X2** | | 다이얼 톤 감지 추가 |- | **X3** | | 대부분 통화 중 신호 감지 추가 |- | **X4** | | 대부분 통화 중 신호와 다이얼 톤 감지 추가 |- | **Z0** 또는 **Z** | 초기화 | 모뎀을 공장 설정으로 초기화하며 전원을 껐다 켜기도 한다. *Z0**, **Z1** 등은 저장된 여러 프로필 중 하나를 불러 온다. **&F*'는 NVRAM이 없는 모뎀에서 공장 설정으로 초기화하지만 모뎀을 재시작하지는 않는다. |} 대부분 명령은 캐리지 리턴(\r) 문자열로 끝난다.
# V.250
ITU-T는 1995년에 정의한 V.25 ter 표준에서 모뎀 명령어 표준화를 시도했다. 1998년에 V.250으로 개칭되었으며, 헤이즈 명령어에 포함되지 않은 명령을 다루었던 부속서는 V.251로 개칭되었다. V.250 호환 모뎀은 표준에서 정의한 A, D, E, H, I, L, M, N, O, P, Q, T, V, X, Z, &C;, &D;, &F; 명령을 구현한다. 또한 S 레지스터를 구현해야 하며 레지스터 S0, S3, S4, S5, S6, S7, S8, S10을 표준에 정의된 대로 사용해야 한다. "+" 기호 다음에 A-Z가 오는 확장 명령어는 ITU 권고안에 따라서 구현해야 한다. 모뎀 제조사는 기타 S 레지스터와 명령을 원하는 대로 구현할 수 있으며, 표준 명령에 옵션을 추가할 수 있다. {| class="wikitable" |+ V.250에 정의된 접두어 목록 ! 접두어 ! 명령어 유형 |- | +A || 호 제어 명령, 공통, PSTN, ISDN, ITU-T Rec. X.25, 교환식 디지털 |- | +C || 디지털 셀룰러 확장 |- | +D || 데이터 압축, ITU-T Rec. V.42 bis |- | +E || 오류 제어, ITU-T Rec. V.42 |- | +F || 팩스, ITU-T Rec. T.30 등 |- | +G || 식별과 기능 등 일반 명령 |- | +I || DTE-DCE 인터페이스 명령, ITU-T Rec. V.24 등 |- | +M || 복조, ITU-T Rec. V.32 bis 등. |- | +P || PCM DCE 명령, ITU-T Rec. V.92 |- | +S || 교환식 또는 동시 데이터 유형 |- | +T || 테스트 |- | +V || 음성 확장 |- | +W || 무선 확장 |}
# GSM
GSM 07.07(3GPP TS 27.007) 표준에서는 GSM 휴대폰 및 모뎀을 제어하는 AT 명령어를 정의한다. GSM 07.05(3GPP TS 27.005) 표준에서는 AT 명령어를 통하여 문자 메시지를 관리하는 기능을 정의한다. GSM AT 명령어의 예제는 다음과 같다.archive-date=2011-09-29 090505 developer.sonyericsson.comarchive-date=2011-07-14 090505 m2m-platforms.com {| class="wikitable" ! 명령어 !! 설명 |- | AT+CPIN=1234 || PIN 코드 입력 |- | AT+CPWD="SC","기존","신규" || PIN을 "기존"에서 "신규"로 변경 |- | AT+CLCK="SC",0,"1234" || PIN 코드 삭제 |- | AT&V; || 상태 |- | ATI || 상태(제조사, 모델, 리비전, IMEI, 모뎀 지원 기능) |- | AT+COPS=? || 사용 가능한 네트워크 목록 표시 |- | AT+CSQ || 신호 강도 표시. 응답: +CSQ: , |- | ATD*99# || 전화 접속 연결 |- | AT+CGDCONT=1,"IP","access.point.name" || PDP 콘텍스트 정의 |} GSM, 3G, 4G, 5G 모뎀은 대부분 3GPP TS 27.007에 정의된 명령어를 지원하며, 모뎀 제조사별로 고유 확장 명령어를 별도로 구현한다. 3G 이후의 모뎀은 성능상의 이유로 PPP 대신 가상 이더넷 인터페이스를 통하여 데이터를 전송하기도 한다. 이를 설정할 때에는 제조사별 AT 확장 명령어를 입력해야 할 수도 있다. 모뎀 제조사에 따라서 확장 명령어 명세를 자유롭게 공개하거나 NDA 하에 제공하기도 한다.url=http://blogs.gnome.org/dcbw/2009/03/20/thats-when-i-reach-for-my-revolver/