System Compleat.

RS232 to Bluetooth, BlueSnap-XP

Techs

( younjin.jeong@gmail.com, 정윤진 ) 


한해 한해 갈 수록 머리가 점점 더 나빠지나 보다. 힘들게 설정한 장치나 설정파일을 며칠만 지나면 홀랑 까먹어 버린다. Evernote 를 사용하여 적어 두기는 하는데, 미처 다 적지 못한 부분은 꼭 이전에 했던 삽질을 다시해야만 하는 비효율 적인 짓을 최근 들어 자주한다. 이건 필시 이렇게 저렇게 들이부은 술과 꾸역꾸역 피워온 담배 때문인듯. 



Network device console port



네트워크 장비의 초기 설정을 주로 하시는 분들이라면, 또 주로 설정하는 네트워크 장비가 Arista 의 ZTP 와 같은 기능을 제공하지 않는 경우라면 콘솔 포트의 사용은 매일 접하는 업무의 한 부분일 것이다. 비단 네트워크 장비 뿐 아니라, 바코드리더와 연결하는 Serial 포트의 사용이라던가, 임베디드 장비의 콘솔 아웃을 serial 을 통해 확인해야 한다던가 하는 일을 할때에는 이 RS-232가 매우 유용하게 사용된다. 이전의 두께 4Cm 이상의 노트북, 또는 일반 데스크탑에서는 COM 포트가 기본으로 달려있어 별 무리없이 연결하여 HyperTerminal 이나 putty, 또는 minicom 등을 사용하여 연결했지만, 최근의 대부분의 노트북에는 이 포트가 달려서 나오는 경우가 거의 없다. 더군다나 엄청나게 창궐하고 있는 애플의 노트북들은 당연히 이런 구시대적인 인터페이스는 지원하지 않는다. 



보통 윈도우만을 지원한다.

image from: http://serialio.com/products/adaptors/usb_serial_WinDesk.php



물론 USB to RS-232 또는 FTDI 와 같은 방법들이 존재하기는 하지만, 개인적으로 맥에서 호환되는 USB to RS-232 를 찾는건 쉽지 않았던 것 같다. 뭐 물론 덥썩 사서 사용해 보는 무대뽀 정신도 필요할 지는 모르겠지만, 주변의 대대수의 엔지니어분들이 맥을 들고다니면서 윈도우 VM 또는 부트캠프를 올리고, 거기서 드라이버를 설정해 사용하는 모습을 보며 안타까움을 금할 길이 없었다. 많은 분들이 윈도우에 익숙 할 테지만, 그렇다고 콘솔 터미널 접근을 위해 맥에서 윈도우를 돌려 USB 케이블과 장비로 연결된 콘솔 케이블을 주렁주렁 매단 채로 시끄러운 데이터 센터 안에서 장비를 설정하는 모습은 분명 아름답지는 않은 것이었다. 


원래 네트워크 장비를 그다지 자주 설정하지는 않지만, 최근 들어 요구가 발생하는 바람에 가볍고 예쁜 맥북 에어에서 좀더 멋지게 작업하는 방법이 없을까 하고 고민 하던 중, RS232 를 Bluetooth 신호로 전달 해 주는 장치를 찾았다. 국내에서 판매하는 장치는 가장 많이 검색되는 것이 http://wirelessall.co.kr/goods_detail.php?goodsIdx=7395 인데, Palo Alto에서 지내시는 지인분께서 한국에 들어 올 일이 있다 하여 염치 불구하고 http://serialio.com/products/adaptors/BlueSnapXP.php 를 구매하여 셔틀을 부탁했다. 


BlueSanp-XP with internal battery




BlueSnapXP 는, RS-232를 Bluetooth 로 전달해 주는데 배터리가 내장 되어 있어 노트북에 주렁주렁 케이블을 연결 할 필요가 없다. 더군다나 Bluetooth 를 사용하기 때문에 별도의 드라이버를 설치하거나 할 필요도 없게 된다. 만약 데이터 센터에서 작업을 하게 된다면, 그저 BlueSnap-XP 에 콘솔 케이블을 연결 해 두고 대상 장비만 변경 해서 연결 해 주면 되고, 노트북은 전혀 움직일 필요가 없어진다. 귀찮은 윈도우 가상 머신을 사용하지 않아도 되니 이 얼마나 아름다운 세상인가. 하이퍼 터미널이여 안녕. minicom 설정이 복잡하다고 머리를 쥐어뜯던 지난 날이여 안녕. 



일단 나의 경우 별도의 전원장치가 필요하지 않다라고 판단 하여, 다음의 제품을 구매했다. serialio.com 의 온라인 스토어에서 찾아 볼 수 있다. 


BlueSnapXP Bluetooth Dongle DTR mode 


다만 충전은 해야 할 것이 아닌가. 다음의 링크에서 USB 충전 케이블을 함께 구매 해 준다. 

https://serialio.com//store/product_info.php?cPath=72&products_id=565&osCsid=ostjslmp70t5qcsd0uhbqtp5q4


컴퓨터나 노트북의 USB 전원을 사용하여 충전한다. 

밥 주는 중




이 생소한 장비가 배달 되었을때, 이걸 어떻게 사용해야 하나 하고 한참을 고민 했더랬다. 사실 맨 처음 가졌던 생각은, 그냥 노트북과 블루투스 페어링을 잡아 주면, 일반 콘솔 어플리케이션에서 접근 할 수 있지 않겠나 싶었다. 결론 부터 말하자면 매우 삽질했다. ㅠㅠ  언제나 그렇지만 알고 나면 다 써있는건데, 알게 되기 까지 참 고생이 심하다. 멍청해서 그런가보다. 

몇가지 장치의 동작에 대해서 간략하게 설명 하면, 다음과 같다. 

1. 장치의 기본 동작은 "설정 모드" 와 "데이터 통신 모드" 가 있다. 
    - 설정모드의 진입은 장치를 껐다가 켠 이후, 60초 이내에 콘솔 어플리케이션으로 접근하여 $$$ <cr> (aka. 엔터) 를 쳐 준다. 
    - 설정모드에서 나오려면 장치를 reset 하던지, 아니면 --- <cr> 로 빠져 나온다. 

2. 블루투스 기반의 장치들은 그저 Slave 로 동작하는 것이 아니라, 경우에 따라 Master 로도 사용 하여 같은 장비들끼리 연결이 가능하다. 하지만 이 기능은 원래 사용하고자 하는 목적과 부합되지 않으므로 패스. 

3. 장치의 외부에 보면, 딥 스위치로 구성된 점퍼가 있다. 모두 이해하려면 머리 아프지만, 간단히 자주 쓰이는 설정은 다음과 같다. 
    - 1번 스위치 :  뭔가 잘못 설정 되었을때 초기 화 할때 사용한다. 
    - 초기화는 1번 점퍼 ON, 장치가 켜지면 Off / On / Off 2회 반복. 
    - 2번 스위치 : 일반적으로 많이 사용되는 기능. 장치의 자동 검색, 연결이 가능하도록 한다. 
    - 3번 스위치 : Master 모드로 다른 BlueSnap 장치의 마스터로서 설정하는 경우에 사용한다. 
                        점퍼를 올리기 전 설정 모드에서 SR 커맨드를 사용하여 리모트를 지정해 주어야 한다. 
                        또는, 2 번 스위치와 함께 사용하여 Auto discover 할 수도 있다. 
    - 4번 스위치 : 기본적으로 장치의 Baud rate 는 115200, 이 스위치를 올리면 9600 으로 동작. 


이 정도가 간단한 삽질의 핵심이다. 접근에 사용한 도구는 맥에 기본으로 포함된 터미널 어플리케이션이었는데, 설정 모드에서 종종 타이핑한 글자가 보이지 않아 따로 하나 구했다.  http://www.w7ay.net/site/Applications/Serial%20Tools/index.html  

먼저, 일반 네트워크 장비용으로 사용하고자 하는 경우에는 설정모드에서 커맨드를 통해 Baud Rate 를 9600 으로 세팅해 주어야 한다. 그 외에 장치의 이름이나 페어링에 사용할 패스워드의 변경, 기타 확장 명령도 사용이 가능하다. 설정은 다음의 순서. 

1. 장치를 켜고, OSX의 System preferences 의 Bluetooth 메뉴를 이용하여 페어링을 설정. 

2. 위 링크의 Serial tool 을 다운로드, 실행. 

3. 장치를 껐다가 다시 켠다. 그리고 Serial tool 에서 장치를 선택, Connect 버튼을 누른다. 
    - 페어링이 성공적으로 완료 되었다면, BlueSnap-XP-XXXX-SPP 와 같은 이름을 볼 수 있을 것이다.
    - 9600-8-none-1, cr/if 버튼에 체크. 이 외의 RTS/DTR 등의 체크박스는 uncheck 상태로 둔다. 

Serial tools




4. Connect 버튼을 누른다. 사실 이전에는 장치는 미리 페어링 되어 있지 않은 상태에서, 버튼을 누르면 장치를 찾고 블루투스를 연결하기 때문에 실패 할 수도 있다. 3번 까지 적당한 간격으로 연결이 될 때까지 눌러주면 된다. 

5. 연결이 완료 되었다면, 60초가 지나기 전에 $$$ 엔터 를 눌러 설정 모드로 진입한다. 성공적으로 진입 하였다면, CMD 의 문자열을 볼 수 있다. 

6. 기본 커맨드는 D ( 기본 설정 확인 ), E ( 확장 설정 확인 ), h ( 도움말 ) 등이 있다. 설정 명령의 형태는 기본적으로 2 캐릭터로된 문자열 뒤에 콤마 (,) 이후 공백없이 알맞은 값을 넣어주면 된다. 보다 디테일한 설명은 홈페이지의 표를 참조하면 된다. 

7. 설정을 마친 뒤에는 R,1 으로 장치를 재부팅한다. 재부팅이 완료되면 장치를 종료하고, 점퍼의 2번을 ON 상태로 변경한다. 

8. 스위치 등에 연결하여 정상 동작 확인. 



6번에서 설정의 내용은 다음과 같다. 


$$$CMD
h
*** SET COMMANDS ***
SA,<1,0>   - Authentication
SB,   - Send Break
SC,   - Service Class
SD,   - Device Class
SE,<1,0>   - Encryption
SF,1       - Factory Defaults
SI,   - Inquiry Scan Window
SJ,   - Page Scan Window
SL, - Parity
SM,<0-5>   - Mode (0=slav,1=mstr,2=trig,3=auto,4=DTR,5=Any)
SN,  - Name
SO,  - conn/discon Status
SP,  - Pin Code
SR,   - Remote Address
SS,  - Service Name
ST,   - Config Timer
SU,  - Baudrate
SW,   - Sniff Rate
SX,<1,0>   - Bonding
SY,   - TX power
SZ,   - Raw Baudrate
S7,<0-1>   - 7bit data
S~,<0-3>   - Profile (0=SPP,1=DCE,2=DTE,3=MDM,4=D&S
S?,<0-1>   - role switch
S$,  - CMD mode char
S@,   - io port dir
S&,   - io port val
S%,   - io boot dir
S^,   - io boot val
S*,   - pio(8-11) set
S|,   - low power timers
*** DISPLAY      ***
D     - Basic Settings
E     - Extended Settings
G  - Stored setting
GB    - BT Address
GK    - Connect Status
G&    - I/O Ports
V     - Firmare version
*** OTHER        ***
C,    - Connect
F,1        - Fast Mode
I,


어떤 부분이 커맨드고 어떤 부분이 아웃풋인지 구분하기가 힘들것이다. XX,0 이런 스타일로 된 부분이 커맨드이며, 설정값이 정상인 경우 AOK 를 보여준다. 만약 설정 값에 문제가 있거나 정해진 문자열의 길이를 넘는다면, ERR 메세지를 볼 수 있을 것이다. 


위와 같이 설정이 완료 되었다면, 이제 장치를 끄고, 스위치에 연결된 콘솔 포트의 RS-232에 연결 한 다음, 장치를 켜자. 그리고 맥에 기본 내장 되어있는 터미널을 실행 하고, 다음의 커맨드를 날려준다. 


screen /dev/tty.YZ-SnapXP-SPP



모든 설정이 정상적으로 완료 되었다면, 예전 하이퍼 터미널에서 보던 것과 같은 콘솔 메세지를 확인 할 수 있다. 지금까지의 과정에서 무언가 잘못 되었거나, 실수로 마스터 모드등으로 설정한 경우라면 위에 소개된 점퍼 1번을 통해 공장 초기화를 진행하면 된다. 


네트워크 가상화가 유행이기는 하지만, 어떠한 형태로든 망의 물리적인 연결은 필요하다. 이러한 망 설정의 첫 단계인 콘솔의 사용 에 있어 인터페이스의 제한을 핑계로 윈도우에 묶여 있지 말고, 간지나는 맥북 에어를 들고 센터에 가자. 



Connexion



별 내용도 아닌데 한참 삽질 한게 억울해 쓰다보니 괜시리 길어진듯. 


( younjin.jeong@gmail.com , 정윤진 )